qemu/hw/core
Maxim Levitsky a23151e8cc device-core: use atomic_set on .realized property
Some code might race with placement of new devices on a bus.
We currently first place a (unrealized) device on the bus
and then realize it.

As a workaround, users that scan the child device list, can
check the realized property to see if it is safe to access such a device.
Use an atomic write here too to aid with this.

A separate discussion is what to do with devices that are unrealized:
It looks like for this case we only call the hotplug handler's unplug
callback and its up to it to unrealize the device.
An atomic operation doesn't cause harm for this code path though.

Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20200913160259.32145-6-mlevitsk@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20201006123904.610658-10-mlevitsk@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-10-12 11:50:51 -04:00
..
bus.c device-core: use RCU for list of children of a bus 2020-10-12 11:50:50 -04:00
clock-vmstate.c hw/core/clock-vmstate: define a vmstate entry for clock state 2020-04-30 15:35:40 +01:00
clock.c hw/clock: Let clock_set() return boolean value 2020-08-28 10:02:44 +01:00
cpu.c machine + QOM queue, 2020-10-06 2020-10-08 11:32:54 +01:00
fw-path-provider.c
generic-loader.c qdev: Unrealize must not fail 2020-05-15 07:08:14 +02:00
hotplug.c
irq.c Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
Kconfig hw/core: Add a config switch for the generic loader device 2019-08-20 09:11:17 +02:00
loader-fit.c hw/core: Fix fit_load_fdt() error API violations 2019-12-18 08:36:15 +01:00
loader.c hw/core: properly terminate loading .hex on EOF record 2020-04-07 16:19:49 +01:00
machine-hmp-cmds.c monitor: Add Monitor parameter to monitor_get_cpu_index() 2020-10-09 07:08:19 +02:00
machine-qmp-cmds.c cphp: remove deprecated cpu-add command(s) 2020-09-29 02:14:30 -04:00
machine.c numa: drop support for '-numa node' (without memory specified) 2020-09-30 19:09:20 +02:00
meson.build hw/core: Move the creation of the library to the main meson.build 2020-10-12 11:50:19 -04:00
nmi.c
null-machine.c hw/core/null-machine: Do not initialize unused chardev backends 2020-07-10 18:02:16 -04:00
numa.c numa: hmat: require parent cache description before the next level one 2020-10-06 11:09:41 -04:00
or-irq.c hw/core/or-irq: Fix incorrect assert forbidding num-lines == MAX_OR_LINES 2020-01-30 16:02:01 +00:00
platform-bus.c qom: Crash more nicely on object_property_get_link() failure 2020-07-10 15:18:08 +02:00
ptimer.c cpu-timers, icount: new modules 2020-10-05 16:41:22 +02:00
qdev-clock.c hw/qdev-clock: Avoid calling qdev_connect_clock_in after DeviceRealize 2020-08-28 10:02:46 +01:00
qdev-fw.c
qdev-prop-internal.h hw/core/qdev-properties: Export some integer-related functions 2020-10-06 11:09:35 -04:00
qdev-properties-system.c hw/core/qdev-properties: Extract system-mode specific properties 2020-10-06 11:09:35 -04:00
qdev-properties.c hw/core/qdev-properties: Extract system-mode specific properties 2020-10-06 11:09:35 -04:00
qdev.c device-core: use atomic_set on .realized property 2020-10-12 11:50:51 -04:00
register.c core/register: Specify instance_size in the TypeInfo 2020-09-25 16:52:24 -07:00
reset.c
resettable.c hw/core: deprecate old reset functions and introduce new ones 2020-01-30 16:02:04 +00:00
split-irq.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
stream.c hw/core: stream: Add an end-of-packet flag 2020-05-14 13:44:35 +02:00
sysbus.c qom: simplify object_find_property / object_class_find_property 2020-09-22 16:45:16 -04:00
trace-events hw/misc/empty_slot: Move the 'hw/misc' and cover in MAINTAINERS 2020-06-09 06:59:44 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
uboot_image.h
vm-change-state-handler.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
vmstate-if.c vmstate: add qom interface to get id 2020-01-06 18:41:32 +04:00