diff options
author | Akihiko Odaki <akihiko.odaki@daynix.com> | 2024-02-18 15:57:11 +0900 |
---|---|---|
committer | Philippe Mathieu-Daudé <philmd@linaro.org> | 2025-01-13 17:16:03 +0100 |
commit | f2694f1b1a1a38c586ee6f00e88b729828012d3a (patch) | |
tree | 3024c33ef52b147596979c1e6783e464d73bffe0 | |
parent | 206d602e9b73d9079449b44899d572624d57390a (diff) | |
download | qemu-f2694f1b1a1a38c586ee6f00e88b729828012d3a.zip qemu-f2694f1b1a1a38c586ee6f00e88b729828012d3a.tar.gz qemu-f2694f1b1a1a38c586ee6f00e88b729828012d3a.tar.bz2 |
hw/qdev: Introduce qdev_hotplug_unplug_allowed_common()
Introduce qdev_hotplug_unplug_allowed_common() to hold
common code between checking hot-plug/unplug is allowed.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
[PMD: Split from bigger patch, part 3/6]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Message-Id: <20250110091908.64454-4-philmd@linaro.org>
-rw-r--r-- | hw/core/qdev-hotplug.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/hw/core/qdev-hotplug.c b/hw/core/qdev-hotplug.c index dc35110..168d796 100644 --- a/hw/core/qdev-hotplug.c +++ b/hw/core/qdev-hotplug.c @@ -30,12 +30,22 @@ HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev) return NULL; } +static bool qdev_hotplug_unplug_allowed_common(DeviceState *dev, BusState *bus, + Error **errp) +{ + return true; +} + bool qdev_hotplug_allowed(DeviceState *dev, BusState *bus, Error **errp) { MachineState *machine; MachineClass *mc; Object *m_obj = qdev_get_machine(); + if (!qdev_hotplug_unplug_allowed_common(dev, bus, errp)) { + return false; + } + if (object_dynamic_cast(m_obj, TYPE_MACHINE)) { machine = MACHINE(m_obj); mc = MACHINE_GET_CLASS(machine); @@ -49,7 +59,8 @@ bool qdev_hotplug_allowed(DeviceState *dev, BusState *bus, Error **errp) bool qdev_hotunplug_allowed(DeviceState *dev, Error **errp) { - return !qdev_unplug_blocked(dev, errp); + return !qdev_unplug_blocked(dev, errp) && + qdev_hotplug_unplug_allowed_common(dev, dev->parent_bus, errp); } HotplugHandler *qdev_get_bus_hotplug_handler(DeviceState *dev) |