qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v4 4/7] qdev: add hotpluggable to DeviceState


From: Gerd Hoffmann
Subject: [Qemu-devel] [PATCH v4 4/7] qdev: add hotpluggable to DeviceState
Date: Mon, 19 Feb 2018 12:14:55 +0100

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 <address@hidden>
---
 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]