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