From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, peter.maydell@linaro.org,
peter.crosthwaite@xilinx.com, stefanha@redhat.com,
mst@redhat.com, jan.kiszka@siemens.com, marcel.a@redhat.com,
armbru@redhat.com, blauwirbel@gmail.com,
alex.williamson@redhat.com, kraxel@redhat.com,
aliguori@amazon.com, pbonzini@redhat.com, afaerber@suse.de
Subject: [Qemu-devel] [PATCH v5 2/9] qdev: add to BusState "hotplug-handler" link
Date: Mon, 3 Feb 2014 16:57:03 +0100 [thread overview]
Message-ID: <1391443030-8662-3-git-send-email-imammedo@redhat.com> (raw)
In-Reply-To: <1391443030-8662-1-git-send-email-imammedo@redhat.com>
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 <imammedo@redhat.com>
---
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);
}
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
--
1.7.1
next prev parent reply other threads:[~2014-02-03 16:03 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-03 15:57 [Qemu-devel] [PATCH v5 0/9] Refactor PCI/SHPC/PCIE hotplug to use a more generic hotplug API Igor Mammedov
2014-02-03 15:57 ` [Qemu-devel] [PATCH v5 1/9] define hotplug interface Igor Mammedov
2014-02-03 19:28 ` Eric Blake
2014-02-03 15:57 ` Igor Mammedov [this message]
2014-02-03 19:30 ` [Qemu-devel] [PATCH v5 2/9] qdev: add to BusState "hotplug-handler" link Eric Blake
2014-02-03 20:38 ` Igor Mammedov
2014-02-03 20:50 ` Eric Blake
2014-02-04 8:43 ` Igor Mammedov
2014-02-03 15:57 ` [Qemu-devel] [PATCH v5 3/9] qdev: add "hotpluggable" property to Device Igor Mammedov
2014-02-03 19:31 ` Eric Blake
2014-02-03 15:57 ` [Qemu-devel] [PATCH v5 4/9] hw/acpi: move typeinfo to the file end Igor Mammedov
2014-02-03 19:32 ` Eric Blake
2014-02-03 15:57 ` [Qemu-devel] [PATCH v5 5/9] qdev:pci: refactor PCIDevice to use generic "hotpluggable" property Igor Mammedov
2014-02-03 15:57 ` [Qemu-devel] [PATCH v5 6/9] acpi/piix4pm: convert ACPI PCI hotplug to use hotplug-handler API Igor Mammedov
2014-02-03 19:34 ` Eric Blake
2014-02-03 15:57 ` [Qemu-devel] [PATCH v5 7/9] pci/shpc: convert SHPC " Igor Mammedov
2014-02-03 15:57 ` [Qemu-devel] [PATCH v5 8/9] pci/pcie: convert PCIE " Igor Mammedov
2014-02-03 15:57 ` [Qemu-devel] [PATCH v5 9/9] hw/pci: switch to a generic hotplug handling for PCIDevice Igor Mammedov
2014-02-03 19:37 ` [Qemu-devel] [PATCH v5 0/9] Refactor PCI/SHPC/PCIE hotplug to use a more generic hotplug API Eric Blake
2014-02-03 20:42 ` Igor Mammedov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1391443030-8662-3-git-send-email-imammedo@redhat.com \
--to=imammedo@redhat.com \
--cc=afaerber@suse.de \
--cc=alex.williamson@redhat.com \
--cc=aliguori@amazon.com \
--cc=armbru@redhat.com \
--cc=blauwirbel@gmail.com \
--cc=jan.kiszka@siemens.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=marcel.a@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.crosthwaite@xilinx.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).