If the unlinking does not happen. ( i.e., interrupt checking in every
TB is used instead of unlinking and force an exit). is the lock still
needed ?


Thanks


Xin


On Sat, Jan 21, 2012 at 2:55 PM, Peter Maydell <peter.mayd...@linaro.org> wrote:
> On 21 January 2012 19:39, Xin Tong <xerox.time.t...@gmail.com> wrote:
>> There is a TB lock in the cpu-exec.c. It is held before a vcpu is
>> trying to find the next tb it is trying to execute. I am wondering
>> what this lock is for. Currently, qemu is time multiplexing on a host
>> cpu to emulate smp. No other vcpu can be running while the tb
>> lookup/translation is performed.
>
> The thing that needs to be locked is (a) cpu thread is in this
> cpu-exec.c code doing a lookup for a TB (b) another thread (io
> thread) or signal handler (linux-user case) calls cpu_exit(),
> which manipulates the TB links.
>
> Unfortunately the tb_lock doesn't actually achieve this purpose;
> it is just broken and there are race conditions here.
>
> -- PMM

Reply via email to