[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 2/9] qdev: add to BusState "hotplug-handler"
From: |
Andreas Färber |
Subject: |
Re: [Qemu-devel] [PATCH v6 2/9] qdev: add to BusState "hotplug-handler" link |
Date: |
Wed, 05 Feb 2014 16:52:27 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 |
Am 05.02.2014 16:36, schrieb Igor Mammedov:
> 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>
> ---
> hw/core/qdev.c | 4 ++++
> include/hw/qdev-core.h | 12 ++++++++++++
> 2 files changed, 16 insertions(+), 0 deletions(-)
>
> 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);
Will/should the user ever change that property? If not, we could drop
this hunk and change the inline link-setting below to just do it the C
way. Otherwise it should probably be using &error_abort instead of NULL.
Regards,
Andreas
> }
>
> 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 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
>
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
- [Qemu-devel] [PATCH v6 0/9] Refactor PCI/SHPC/PCIE hotplug to use a more generic hotplug API, Igor Mammedov, 2014/02/05
- [Qemu-devel] [PATCH v6 2/9] qdev: add to BusState "hotplug-handler" link, Igor Mammedov, 2014/02/05
- Re: [Qemu-devel] [PATCH v6 2/9] qdev: add to BusState "hotplug-handler" link,
Andreas Färber <=
- [Qemu-devel] [PATCH v6 1/9] define hotplug interface, Igor Mammedov, 2014/02/05
- [Qemu-devel] [PATCH v6 3/9] qdev: add "hotpluggable" property to Device, Igor Mammedov, 2014/02/05
- [Qemu-devel] [PATCH v6 4/9] hw/acpi: move typeinfo to the file end, Igor Mammedov, 2014/02/05
- [Qemu-devel] [PATCH v6 5/9] qdev:pci: refactor PCIDevice to use generic "hotpluggable" property, Igor Mammedov, 2014/02/05
- [Qemu-devel] [PATCH v6 7/9] pci/shpc: convert SHPC hotplug to use hotplug-handler API, Igor Mammedov, 2014/02/05
- [Qemu-devel] [PATCH v6 8/9] pci/pcie: convert PCIE hotplug to use hotplug-handler API, Igor Mammedov, 2014/02/05
- [Qemu-devel] [PATCH v6 6/9] acpi/piix4pm: convert ACPI PCI hotplug to use hotplug-handler API, Igor Mammedov, 2014/02/05
- [Qemu-devel] [PATCH v6 9/9] hw/pci: switch to a generic hotplug handling for PCIDevice, Igor Mammedov, 2014/02/05