qemu-e2k/target/i386
Jan Kiszka 8d04fb55de tcg: drop global lock during TCG code execution
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: Jan 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: KONRAD Frederic <fred.konrad@greensocs.com>
[EGC: fixed iothread lock for cpu-exec IRQ handling]
Signed-off-by: Emilio G. Cota <cota@braap.org>
[AJB: -smp single-threaded fix, clean commit msg, BQL fixes]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Reviewed-by: Pranith Kumar <bobby.prani@gmail.com>
[PM: target-arm changes]
Acked-by: Peter Maydell <peter.maydell@linaro.org>
2017-02-24 10:32:45 +00:00
..
arch_dump.c
arch_memory_mapping.c x86: implement la57 paging mode 2016-12-22 16:01:04 +01:00
bpt_helper.c target-i386: Fix eflags.TF/#DB handling of syscall/sysret insns 2016-12-22 16:01:04 +01:00
cc_helper_template.h
cc_helper.c target-i386: Use ctpop helper 2017-01-10 08:49:59 -08:00
cpu-qom.h i386: Return migration-safe field on query-cpu-definitions 2017-01-23 21:25:36 -02:00
cpu.c report guest crash information in GUEST_PANICKED event 2017-02-16 15:30:49 +01:00
cpu.h target-i386: correctly propagate retaddr into SVM helpers 2017-02-16 18:37:01 +01:00
excp_helper.c target-i386: correctly propagate retaddr into SVM helpers 2017-02-16 18:37:01 +01:00
fpu_helper.c cputlb: drop flush_global flag from tlb_flush 2017-01-13 14:24:37 +00:00
gdbstub.c x86: Fix x86_64 'g' packet response to gdb from 32-bit mode. 2016-12-22 16:00:25 +01:00
hax-all.c target/i386: Add Intel HAX files 2017-01-19 22:07:46 +01:00
hax-darwin.c hax: add Darwin support 2017-01-19 22:07:46 +01:00
hax-darwin.h hax: add Darwin support 2017-01-19 22:07:46 +01:00
hax-i386.h hax: add Darwin support 2017-01-19 22:07:46 +01:00
hax-interface.h target/i386: Add Intel HAX files 2017-01-19 22:07:46 +01:00
hax-mem.c target/i386: Add Intel HAX files 2017-01-19 22:07:46 +01:00
hax-windows.c target/i386: Add Intel HAX files 2017-01-19 22:07:46 +01:00
hax-windows.h target/i386: Add Intel HAX files 2017-01-19 22:07:46 +01:00
helper.c * QOM interface fix (Eduardo) 2017-01-20 16:42:07 +00:00
helper.h target-i386: correctly propagate retaddr into SVM helpers 2017-02-16 18:37:01 +01:00
hyperv.c event_notifier: cleanups around event_notifier_set_handler 2017-01-16 17:52:35 +01:00
hyperv.h
int_helper.c target-i386: Use clz and ctz opcodes 2017-01-10 08:06:11 -08:00
kvm_i386.h kvmclock: reduce kvmclock difference on migration 2016-12-22 16:00:56 +01:00
kvm-stub.c
kvm.c x86-KVM: Supply TSC and APIC clock rates to guest like VMWare 2017-01-27 18:07:57 +01:00
machine.c migration: extend VMStateInfo 2017-01-24 17:54:47 +00:00
Makefile.objs hax: add Darwin support 2017-01-19 22:07:46 +01:00
mem_helper.c
misc_helper.c target-i386: correctly propagate retaddr into SVM helpers 2017-02-16 18:37:01 +01:00
monitor.c monitor: Fix crashes when using HMP commands without CPU 2017-02-21 18:29:01 +00:00
mpx_helper.c
ops_sse_header.h target-i386: Use ctpop helper 2017-01-10 08:49:59 -08:00
ops_sse.h target-i386: Use ctpop helper 2017-01-10 08:49:59 -08:00
seg_helper.c target-i386: correctly propagate retaddr into SVM helpers 2017-02-16 18:37:01 +01:00
shift_helper_template.h
smm_helper.c tcg: drop global lock during TCG code execution 2017-02-24 10:32:45 +00:00
svm_helper.c target-i386: correctly propagate retaddr into SVM helpers 2017-02-16 18:37:01 +01:00
svm.h
TODO
trace-events
translate.c x86 and machine queue, 2017-01-17 2017-01-13 14:38:21 +00:00