[PATCH v4 4/7] qdev: add hotpluggable to DeviceState
Gerd Hoffmann
kraxel at redhat.com
Mon Feb 19 11:14:55 UTC 2018
vfio display support wants disable hotplug for certain devices, because
qemu doesn't support hotplugging display devices and qemu consoles.
Add a hotpluggable bool to DeviceState, initialize it from
DeviceClass->hotpluggable, update device_get_hotpluggable accordingly.
Devices can flip the new variable from true to false if needed.
Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
---
include/hw/qdev-core.h | 1 +
hw/core/qdev.c | 5 +++--
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index fc9d617a76..37d86f26e5 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -154,6 +154,7 @@ struct DeviceState {
const char *id;
char *canonical_path;
bool realized;
+ bool hotpluggable;
bool pending_deleted_event;
QemuOpts *opts;
int hotplugged;
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 7ed1f431f0..89e03c7b47 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -946,8 +946,8 @@ static bool device_get_hotpluggable(Object *obj, Error **errp)
DeviceClass *dc = DEVICE_GET_CLASS(obj);
DeviceState *dev = DEVICE(obj);
- return dc->hotpluggable && (dev->parent_bus == NULL ||
- qbus_is_hotpluggable(dev->parent_bus));
+ return dc->hotpluggable && dev->hotpluggable &&
+ (dev->parent_bus == NULL || qbus_is_hotpluggable(dev->parent_bus));
}
static bool device_get_hotplugged(Object *obj, Error **err)
@@ -988,6 +988,7 @@ static void device_initfn(Object *obj)
class = object_class_get_parent(class);
} while (class != object_class_by_name(TYPE_DEVICE));
+ dev->hotpluggable = DEVICE_CLASS(class)->hotpluggable;
object_property_add_link(OBJECT(dev), "parent_bus", TYPE_BUS,
(Object **)&dev->parent_bus, NULL, 0,
&error_abort);
--
2.9.3
More information about the intel-gvt-dev
mailing list