[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 04/11] qdev: add to BusState "hotplug-handler" l
From: |
Peter Crosthwaite |
Subject: |
Re: [Qemu-devel] [PATCH 04/11] qdev: add to BusState "hotplug-handler" link |
Date: |
Sat, 14 Dec 2013 17:05:57 +1000 |
On Fri, Dec 13, 2013 at 10:44 PM, Igor Mammedov <address@hidden> wrote:
> It will allow to reuse field with different BUSes, reducing code duplication.
> Field is intended fot 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 in qdev hotplug code.
>
> Signed-off-by: Igor Mammedov <address@hidden>
> ---
> hw/core/qdev.c | 4 ++++
> include/hw/qdev-core.h | 5 +++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index e374a93..25c2d2c 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;
> @@ -868,6 +869,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);
I think failure of this is fatal. When the patches go through,
probably want to &error_abort.
> }
>
> static char *default_bus_get_fw_dev_path(DeviceState *dev)
> diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
> index f2043a6..684a5da 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,
> @@ -169,14 +170,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;
> --
> 1.8.3.1
>
>
- [Qemu-devel] [PATCH 00/11 v3] Refactor PCI/SHPC/PCIE hotplug to use a more generic hotplug API, Igor Mammedov, 2013/12/13
- [Qemu-devel] [PATCH 06/11] hw/acpi: move typeinfo to the file end, Igor Mammedov, 2013/12/13
- [Qemu-devel] [PATCH 07/11] qdev:pci: refactor PCIDevice to use generic "hotpluggable" property, Igor Mammedov, 2013/12/13
- [Qemu-devel] [PATCH 08/11] acpi/piix4pm: convert ACPI PCI hotplug to use hotplug-handler API, Igor Mammedov, 2013/12/13
- [Qemu-devel] [PATCH 05/11] qdev: add "hotpluggable" property to Device, Igor Mammedov, 2013/12/13
- [Qemu-devel] [PATCH 09/11] pci/shpc: convert SHPC hotplug to use hotplug-handler API, Igor Mammedov, 2013/12/13