qemu/system
Paolo Bonzini 37fb26601d bql: check that the BQL is not dropped within marked sections
The Big QEMU Lock (BQL) is used to provide interior mutability to Rust
code.  While BqlCell performs indivisible accesses, an equivalent of
RefCell will allow the borrower to hold to the interior content for a
long time.  If the BQL is dropped, another thread could come and mutate
the data from C code (Rust code would panic on borrow_mut() instead).
In order to prevent this, add a new BQL primitive that can mark
BQL-atomic sections and aborts if the BQL is dropped within them.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2024-12-10 18:49:25 +01:00
..
arch_init.c system: Rename softmmu/ directory as system/ 2023-10-08 21:08:08 +02:00
async-teardown.c qemu/osdep: Add excluded fd parameter to qemu_close_all_open_fd() 2024-08-05 08:21:59 +10:00
balloon.c balloon: Fix a misleading error message 2023-11-17 10:07:52 +01:00
bootdevice.c system/bootdevice: Don't unregister reset handler in restore_boot_order() 2024-02-27 13:01:42 +00:00
cpu-timers.c migration: Move cpu-throttle.c from system to migration 2024-10-31 15:48:18 -04:00
cpus.c bql: check that the BQL is not dropped within marked sections 2024-12-10 18:49:25 +01:00
datadir.c system: Rename softmmu/ directory as system/ 2023-10-08 21:08:08 +02:00
device_tree-stub.c kconfig: allow compiling out QEMU device tree code per target 2024-05-10 15:45:15 +02:00
device_tree.c kconfig: allow compiling out QEMU device tree code per target 2024-05-10 15:45:15 +02:00
dirtylimit.c migration: migration_thread_is_self 2024-03-11 16:28:59 -04:00
dma-helpers.c system/dma-helpers.c: Move trace events to system/trace-events 2024-11-19 14:14:13 +00:00
globals.c vl.c: Remove pxa2xx-specific -portrait and -rotate options 2024-10-15 15:16:17 +01:00
ioport.c exec/ioport: Add portio_list_set_enabled() 2024-02-14 06:09:32 -05:00
main.c softmmu: pass the main loop status to gdb "Wxx" packet 2023-10-12 12:33:24 +10:00
memory.c memory: notify hypervisor of all eventfds during listener (de)registration 2024-10-08 15:28:55 -04:00
memory_ldst.c.inc system: Move memory_ldst.c.inc to system 2024-02-13 10:59:25 +03:00
memory_mapping.c system/memory_mapping: make range overlap check more readable 2024-07-23 20:30:36 +02:00
meson.build migration: Move cpu-throttle.c from system to migration 2024-10-31 15:48:18 -04:00
physmem.c softmmu/physmem.c: Keep transaction attribute in address_space_map() 2024-09-18 14:27:39 -04:00
qdev-monitor.c qdev-monitor: avoid QemuOpts in QMP device_add 2024-11-25 11:03:42 +01:00
qemu-seccomp.c seccomp: Remove check for CRIS host 2024-09-13 20:11:13 +02:00
qtest.c qtest: move qtest_{get, set}_virtual_clock to accel/qtest/qtest.c 2024-06-24 10:14:56 +01:00
rtc.c system: replace assert(0) with g_assert_not_reached() 2024-09-13 20:12:16 +02:00
runstate-action.c system: Rename softmmu/ directory as system/ 2023-10-08 21:08:08 +02:00
runstate-hmp-cmds.c system: Rename softmmu/ directory as system/ 2023-10-08 21:08:08 +02:00
runstate.c reset: Use ResetType for qemu_devices_reset() and MachineClass::reset() 2024-09-24 11:33:34 +02:00
tpm-hmp-cmds.c system: Rename softmmu/ directory as system/ 2023-10-08 21:08:08 +02:00
tpm.c * util/log: re-allow switching away from stderr log file 2023-10-09 10:11:18 -04:00
trace-events system/dma-helpers.c: Move trace events to system/trace-events 2024-11-19 14:14:13 +00:00
trace.h system: Rename softmmu/ directory as system/ 2023-10-08 21:08:08 +02:00
vl.c system: Select HVF by default when no other accelerator is available 2024-12-03 12:28:06 +01:00
watchpoint.c system/watchpoint: Move TCG specific code to accel/tcg/ 2024-01-19 12:28:59 +01:00