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