Il 20/02/2013 15:49, Peter Maydell ha scritto: > On 20 February 2013 14:43, Laszlo Ersek <ler...@redhat.com> wrote: >> On 02/20/13 14:43, Paolo Bonzini wrote: >>> QEMU system emulation has been thread-safe for a long time > > Says who? cpu_interrupt() calls tcg_handle_interrupt() > which calls cpu_unlink_tb() which makes changes to the > TB datastructure with no kind of locking at all.
But in system emulation mode, cpu_interrupt is always running under the iothread lock. cpu_exit is more interesting because it calls cpu_unlink_tb() outside the iothread lock. However, it does this in a signal handler running in the CPU thread (or, in Windows, wrapped with SuspendThread/ResumeThread). So it "only" needs to be async-signal-safe, not thread-safe. Paolo > I'm actually working on a patchset which fixes this > (by having every TCG TB check the exit_request flag at > the start and exit if set, so we can throw out cpu_unlink_tb() > entirely), but as of right now the codebase is definitely > not threadsafe.