Hi, This RFC patch set aims to provide the basic framework for MTTCG. I've tried to pull together the non-contentious bits that other trees can then build on. This is because we have multiple potential solutions for things like deferring work and handling atomics. The idea being that those bits could be added on and when a given architecture combo is ready multi-threading can be turned on automatically for known good combinations. Without the additional work just blindly turning on MTTCG is likely to fail horribly ;-)
The branch can be found at: https://github.com/stsquad/qemu/tree/mttcg/base-patches-v1 It has Serge's tcg-cleanups branch as it's base as those are TCG clean-ups not directly tied to MTTCG which will hopefully get merged in due course well before these patches. The main changes I've made from Fred's last tree are: - a new option -tcg mttcg=on|off - the kick timer to prevent lock clean-ups breaking single-threaded -smp - pulled in a fix from Emilio for locking interrupt handling Where I've made tweaks to existing patches I've added [] comments and some revision history below the ---. What's left =========== This series still boots a full virtio based Debian arm in single threaded mode although currently "shutdown -h now" hangs once the guest is shutdown as the iowait hangs on the final condition. There are a few checkpatch things that need to be addressed with regards to barrier comments. Any comments welcome, does this look like a sane approach? Can we agree a common base on which everything else can be built on? Cheers, Alex Alex Bennée (3): target-arm/psci.c: wake up sleeping CPUs tcg: cpus rm tcg_exec_all() tcg: add kick timer for single-threaded vCPU emulation Emilio G. Cota (1): tcg: grab iothread lock in cpu-exec interrupt handling KONRAD Frederic (5): tcg: move tb_find_fast outside the tb_lock critical section tcg: protect TBContext with tb_lock. tcg: add options for enabling MTTCG tcg: drop global lock during TCG code execution tcg: enable thread-per-vCPU Paolo Bonzini (2): cpu-exec: elide more icount code if CONFIG_USER_ONLY tcg: comment on which functions have to be called with tb_lock held cpu-exec-common.c | 1 - cpu-exec.c | 128 +++++++++++++------ cpus.c | 323 +++++++++++++++++++++++++++++++----------------- cputlb.c | 4 + exec.c | 16 +++ hw/i386/kvmvapic.c | 6 + include/exec/exec-all.h | 5 +- include/qom/cpu.h | 20 +++ include/sysemu/cpus.h | 2 + qemu-options.hx | 14 +++ softmmu_template.h | 17 +++ target-arm/psci.c | 2 + tcg/tcg.h | 3 + translate-all.c | 110 +++++++++++++---- vl.c | 12 +- 15 files changed, 477 insertions(+), 186 deletions(-) -- 2.7.3