[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v9 08/25] tcg: drop global lock during TCG code
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH v9 08/25] tcg: drop global lock during TCG code execution |
Date: |
Fri, 3 Feb 2017 10:09:52 +0000 |
On 1 February 2017 at 15:05, Alex Bennée <address@hidden> wrote:
> From: Jan Kiszka <address@hidden>
>
> 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 <address@hidden>
> Message-Id: <address@hidden>
> [FK: Rebase, fix qemu_devices_reset deadlock, rm address_space_* mutex]
> Signed-off-by: KONRAD Frederic <address@hidden>
> [EGC: fixed iothread lock for cpu-exec IRQ handling]
> Signed-off-by: Emilio G. Cota <address@hidden>
> [AJB: -smp single-threaded fix, clean commit msg, BQL fixes]
> Signed-off-by: Alex Bennée <address@hidden>
> Reviewed-by: Richard Henderson <address@hidden>
> Reviewed-by: Pranith Kumar <address@hidden>
target/arm changes:
Acked-by: Peter Maydell <address@hidden>
-- PMM
- [Qemu-devel] [PATCH v9 01/25] docs: new design document multi-thread-tcg.txt, (continued)
- [Qemu-devel] [PATCH v9 01/25] docs: new design document multi-thread-tcg.txt, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 07/25] tcg: rename tcg_current_cpu to tcg_current_rr_cpu, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 11/25] tcg: enable thread-per-vCPU, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 09/25] tcg: remove global exit_request, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 05/25] tcg: add options for enabling MTTCG, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 13/25] cputlb: add assert_cpu_is_self checks, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 14/25] cputlb: tweak qemu_ram_addr_from_host_nofail reporting, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 12/25] tcg: handle EXCP_ATOMIC exception for system emulation, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 10/25] tcg: enable tb_lock() for SoftMMU, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 08/25] tcg: drop global lock during TCG code execution, Alex Bennée, 2017/02/01
- Re: [Qemu-devel] [PATCH v9 08/25] tcg: drop global lock during TCG code execution,
Peter Maydell <=
- [Qemu-devel] [PATCH v9 19/25] cputlb: introduce tlb_flush_*_all_cpus[_synced], Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 16/25] cputlb and arm/sparc targets: convert mmuidx flushes from varg to bitmap, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 15/25] cputlb: introduce tlb_flush_* async work., Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 23/25] target-arm: introduce ARM_CP_EXIT_PC, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 17/25] cputlb: add tlb_flush_by_mmuidx async routines, Alex Bennée, 2017/02/01
- [Qemu-devel] [PATCH v9 24/25] target-arm: ensure all cross vCPUs TLB flushes complete, Alex Bennée, 2017/02/01