]> git.proxmox.com Git - mirror_qemu.git/commit
cpus-common: lock-free fast path for cpu_exec_start/end
authorPaolo Bonzini <pbonzini@redhat.com>
Wed, 31 Aug 2016 19:33:58 +0000 (21:33 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 27 Sep 2016 09:57:30 +0000 (11:57 +0200)
commitc265e976f4669fd65f5b47e6865f50d1cb66bd02
treeb80f5c8500bd6ad92ee0474bce2b4186dd2540c5
parent3359baad36889b83df40b637ed993a4b816c4906
cpus-common: lock-free fast path for cpu_exec_start/end

Set cpu->running without taking the cpu_list lock, only requiring it if
there is a concurrent exclusive section.  This requires adding a new
field to CPUState, which records whether a running CPU is being counted
in pending_cpus.

When an exclusive section is started concurrently with cpu_exec_start,
cpu_exec_start can use the new field to determine if it has to wait for
the end of the exclusive section.  Likewise, cpu_exec_end can use it to
see if start_exclusive is waiting for that CPU.

This a separate patch for easier bisection of issues.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
cpus-common.c
docs/tcg-exclusive.promela
include/qom/cpu.h