On 12/08/2015 18:40, Paolo Bonzini wrote:
Hi, this is my attempt at 1) extracting upstreamable parts out of Fred's MTTCG,
Can you take this one as well after the replace spinlock by QemuMutex: "remove unused spinlock." Thanks, Fred
and 2) documenting what's going on in user-mode MTTCG 3) fix one bug in the process. I couldn't find any other locking problem from reading the code. The final two patches are not really upstreamable because they add some still unnecessary locks to system emulation, but I included them to show what's going on. With this locking logic I do not need tb_lock to be recursive anymore. Paolo KONRAD Frederic (4): cpus: protect work list with work_mutex cpus: remove tcg_halt_cond global variable. replace spinlock by QemuMutex. tcg: protect TBContext with tb_lock. Paolo Bonzini (8): exec-all: remove non-TCG stuff from exec-all.h header. cpu-exec: elide more icount code if CONFIG_USER_ONLY tcg: code_bitmap is not used by user-mode emulation tcg: comment on which functions have to be called with mmap_lock held tcg: add memory barriers in page_find_alloc accesses exec: make mmap_lock/mmap_unlock globally available cpu-exec: fix lock hierarchy for user-mode emulation tcg: comment on which functions have to be called with tb_lock held bsd-user/qemu.h | 2 - cpu-exec.c | 107 +++++++++++++++++++++---------- cpus.c | 34 ++++++---- exec.c | 4 ++ hw/i386/kvmvapic.c | 2 + include/exec/exec-all.h | 19 +++--- include/exec/ram_addr.h | 1 + include/qom/cpu.h | 9 ++- include/sysemu/sysemu.h | 3 + linux-user/main.c | 6 +- linux-user/qemu.h | 2 - qom/cpu.c | 1 + target-i386/cpu.h | 3 + target-i386/mem_helper.c | 25 +++++++- target-i386/translate.c | 2 + tcg/tcg.h | 6 ++ translate-all.c | 161 +++++++++++++++++++++++++++++++++++++---------- 17 files changed, 290 insertions(+), 97 deletions(-)