[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 12/20] qdev: add to BusState "hotplug-handler" link
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 12/20] qdev: add to BusState "hotplug-handler" link |
Date: |
Mon, 10 Feb 2014 18:48:21 +0200 |
From: Igor Mammedov <address@hidden>
It will allow to reuse field with different BUSes,
reducing code duplication. Field is intended for
replacing 'hotplug_qdev' field in PCIBus and also
will allow to avoid adding equivalent field to
DimmBus with possiblitity to refactor other BUSes
to use it instead of custom field.
In addition once all users of allow_hotplug field
are converted to new API, link could replace
allow_hotplug field in qdev hotplug code.
Signed-off-by: Igor Mammedov <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
include/hw/qdev-core.h | 12 ++++++++++++
hw/core/qdev.c | 4 ++++
2 files changed, 16 insertions(+)
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index 2c4f140..41ec533 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -8,6 +8,7 @@
#include "qom/object.h"
#include "hw/irq.h"
#include "qapi/error.h"
+#include "hw/hotplug.h"
enum {
DEV_NVECTORS_UNSPECIFIED = -1,
@@ -180,14 +181,18 @@ typedef struct BusChild {
QTAILQ_ENTRY(BusChild) sibling;
} BusChild;
+#define QDEV_HOTPLUG_HANDLER_PROPERTY "hotplug-handler"
+
/**
* BusState:
+ * @hotplug_device: link to a hotplug device associated with bus.
*/
struct BusState {
Object obj;
DeviceState *parent;
const char *name;
int allow_hotplug;
+ HotplugHandler *hotplug_handler;
int max_index;
QTAILQ_HEAD(ChildrenHead, BusChild) children;
QLIST_ENTRY(BusState) sibling;
@@ -321,4 +326,11 @@ extern int qdev_hotplug;
char *qdev_get_dev_path(DeviceState *dev);
+static inline void qbus_set_hotplug_handler(BusState *bus, DeviceState
*handler,
+ Error **errp)
+{
+ object_property_set_link(OBJECT(bus), OBJECT(handler),
+ QDEV_HOTPLUG_HANDLER_PROPERTY, errp);
+ bus->allow_hotplug = 1;
+}
#endif
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 82a9123..c9f0c33 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -32,6 +32,7 @@
#include "qapi/visitor.h"
#include "qapi/qmp/qjson.h"
#include "monitor/monitor.h"
+#include "hw/hotplug.h"
int qdev_hotplug = 0;
static bool qdev_hot_added = false;
@@ -870,6 +871,9 @@ static void qbus_initfn(Object *obj)
BusState *bus = BUS(obj);
QTAILQ_INIT(&bus->children);
+ object_property_add_link(obj, QDEV_HOTPLUG_HANDLER_PROPERTY,
+ TYPE_HOTPLUG_HANDLER,
+ (Object **)&bus->hotplug_handler, NULL);
}
static char *default_bus_get_fw_dev_path(DeviceState *dev)
--
MST
- [Qemu-devel] [PULL 03/20] pcihp: make PCI hotplug mmio handlers indifferent to PCI_HOTPLUG_ADDR, (continued)
- [Qemu-devel] [PULL 03/20] pcihp: make PCI hotplug mmio handlers indifferent to PCI_HOTPLUG_ADDR, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 04/20] pcihp: make pci_read() mmio calback compatible with legacy ACPI hotplug, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 02/20] pcihp: replace enable|disable_device() with oneliners, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 06/20] hw:piix4:acpi: reuse pcihp code for legacy PCI hotplug, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 05/20] pcihp: remove unused AcpiPciHpPciStatus.device_present field, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 07/20] qtest: don't report signals if qtest driver enabled, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 08/20] pc_piix: enable legacy hotplug for Xen, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 10/20] loader: document that errno is set, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 09/20] pc.c: better error message on initrd sizing failure, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 11/20] define hotplug interface, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 12/20] qdev: add to BusState "hotplug-handler" link,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 13/20] qdev: add "hotpluggable" property to Device, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 14/20] hw/acpi: move typeinfo to the file end, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 15/20] qdev:pci: refactor PCIDevice to use generic "hotpluggable" property, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 16/20] acpi/piix4pm: convert ACPI PCI hotplug to use hotplug-handler API, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 17/20] pci/shpc: convert SHPC hotplug to use hotplug-handler API, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 18/20] pci/pcie: convert PCIE hotplug to use hotplug-handler API, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 19/20] hw/pci: switch to a generic hotplug handling for PCIDevice, Michael S. Tsirkin, 2014/02/10
- [Qemu-devel] [PULL 20/20] ACPI: Remove commented-out code from HPET._CRS, Michael S. Tsirkin, 2014/02/10