qemu/include/system
Phil Dennis-Jordan e7bc0204e5 system/runstate: Fix regression, clarify BQL status of exit notifiers
By changing the way the main QEMU event loop is invoked, I inadvertently
changed the BQL status of exit notifiers: some of them implicitly
assumed they would be called with the BQL held; the BQL is however
not held during the exit(status) call in qemu_default_main().

Instead of attempting to ensuring we always call exit() from the BQL -
including any transitive calls - this change adds a BQL lock guard to
qemu_run_exit_notifiers, ensuring the BQL will always be held in the
exit notifiers.

Additionally, the BQL promise is now documented at the
qemu_{add,remove}_exit_notifier() declarations.

Fixes: f5ab12caba ("ui & main loop: Redesign of system-specific main
thread event handling")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2771
Reported-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu>
Tested-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
2025-01-15 18:05:19 +00:00
..
accel-blocker.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
accel-ops.h system/accel-ops: Remove unnecessary 'exec/cpu-common.h' header 2024-12-20 17:44:57 +01:00
arch_init.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
balloon.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
block-backend-common.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
block-backend-global-state.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
block-backend-io.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
block-backend.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
block-ram-registrar.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
blockdev.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
confidential-guest-support.h system: Move 'exec/confidential-guest-support.h' to system/ 2024-12-20 17:44:56 +01:00
cpu-throttle.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cpu-timers-internal.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cpu-timers.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cpus.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cryptodev-vhost-user.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cryptodev-vhost.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
cryptodev.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
device_tree.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
dirtylimit.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
dirtyrate.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
dma.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
dump-arch.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
dump.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
event-loop-base.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
host_iommu_device.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
hostmem.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
hvf.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
hvf_int.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
hw_accel.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
iommufd.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
iothread.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
kvm.h Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
kvm_int.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
kvm_xen.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
memory_mapping.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
numa.h system/numa: Remove unnecessary 'exec/cpu-common.h' header 2024-12-20 17:44:57 +01:00
nvmm.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
os-posix.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
os-win32.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
qtest.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
replay.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
reset.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
rng-random.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
rng.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
rtc.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
runstate-action.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
runstate.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
seccomp.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
spdm-socket.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
stats.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
system.h system/runstate: Fix regression, clarify BQL status of exit notifiers 2025-01-15 18:05:19 +00:00
tcg.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
tpm.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
tpm_backend.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
tpm_util.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
vhost-user-backend.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
watchdog.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
whpx.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
xen-mapcache.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
xen.h include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00