• J
    tcg: drop global lock during TCG code execution · 8d04fb55
    Jan Kiszka 提交于
    This finally allows TCG to benefit from the iothread introduction: Drop
    the global mutex while running pure TCG CPU code. Reacquire the lock
    when entering MMIO or PIO emulation, or when leaving the TCG loop.
    
    We have to revert a few optimization for the current TCG threading
    model, namely kicking the TCG thread in qemu_mutex_lock_iothread and not
    kicking it in qemu_cpu_kick. We also need to disable RAM block
    reordering until we have a more efficient locking mechanism at hand.
    
    Still, a Linux x86 UP guest and my Musicpal ARM model boot fine here.
    These numbers demonstrate where we gain something:
    
    20338 jan       20   0  331m  75m 6904 R   99  0.9   0:50.95 qemu-system-arm
    20337 jan       20   0  331m  75m 6904 S   20  0.9   0:26.50 qemu-system-arm
    
    The guest CPU was fully loaded, but the iothread could still run mostly
    independent on a second core. Without the patch we don't get beyond
    
    32206 jan       20   0  330m  73m 7036 R   82  0.9   1:06.00 qemu-system-arm
    32204 jan       20   0  330m  73m 7036 S   21  0.9   0:17.03 qemu-system-arm
    
    We don't benefit significantly, though, when the guest is not fully
    loading a host CPU.
    Signed-off-by: NJan Kiszka <jan.kiszka@siemens.com>
    Message-Id: <1439220437-23957-10-git-send-email-fred.konrad@greensocs.com>
    [FK: Rebase, fix qemu_devices_reset deadlock, rm address_space_* mutex]
    Signed-off-by: NKONRAD Frederic <fred.konrad@greensocs.com>
    [EGC: fixed iothread lock for cpu-exec IRQ handling]
    Signed-off-by: NEmilio G. Cota <cota@braap.org>
    [AJB: -smp single-threaded fix, clean commit msg, BQL fixes]
    Signed-off-by: NAlex Bennée <alex.bennee@linaro.org>
    Reviewed-by: NRichard Henderson <rth@twiddle.net>
    Reviewed-by: NPranith Kumar <bobby.prani@gmail.com>
    [PM: target-arm changes]
    Acked-by: NPeter Maydell <peter.maydell@linaro.org>
    8d04fb55
cpu-exec.c 21.1 KB