[PULL,5/5] qdev: Provide qdev_get_bus_hotplug_handler()
diff mbox series

Message ID 20190306184101.9974-6-ehabkost@redhat.com
State New
Headers show
Series
  • [PULL,1/5] qdev/core: fix qbus_is_full()
Related show

Commit Message

Eduardo Habkost March 6, 2019, 6:41 p.m. UTC
From: David Hildenbrand <david@redhat.com>

Let's use a wrapper instead of looking it up manually. This function can
than be reused when we explicitly want to have the bus hotplug handler
(e.g. when the bus hotplug handler was overwritten by the machine
hotplug handler).

Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20190228122849.4296-4-david@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 include/hw/qdev-core.h |  1 +
 hw/core/qdev.c         | 10 +++++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

Patch
diff mbox series

diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index ea4c1f60ed..17f09aac72 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -281,6 +281,7 @@  DeviceState *qdev_try_create(BusState *bus, const char *name);
 void qdev_init_nofail(DeviceState *dev);
 void qdev_set_legacy_instance_id(DeviceState *dev, int alias_id,
                                  int required_for_version);
+HotplugHandler *qdev_get_bus_hotplug_handler(DeviceState *dev);
 HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev);
 /**
  * qdev_get_hotplug_handler: Get handler responsible for device wiring
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 71c7facf60..512ce7ca7a 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -236,12 +236,20 @@  HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev)
     return NULL;
 }
 
+HotplugHandler *qdev_get_bus_hotplug_handler(DeviceState *dev)
+{
+    if (dev->parent_bus) {
+        return dev->parent_bus->hotplug_handler;
+    }
+    return NULL;
+}
+
 HotplugHandler *qdev_get_hotplug_handler(DeviceState *dev)
 {
     HotplugHandler *hotplug_ctrl = qdev_get_machine_hotplug_handler(dev);
 
     if (hotplug_ctrl == NULL && dev->parent_bus) {
-        hotplug_ctrl = dev->parent_bus->hotplug_handler;
+        hotplug_ctrl = qdev_get_bus_hotplug_handler(dev);
     }
     return hotplug_ctrl;
 }