[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RESEND PATCH v3 8/8] monitor: Add memory hot unplug suppor
From: |
Tang Chen |
Subject: |
[Qemu-devel] [RESEND PATCH v3 8/8] monitor: Add memory hot unplug support for device_del command. |
Date: |
Wed, 27 Aug 2014 16:08:39 +0800 |
From: Hu Tao <address@hidden>
Implement find_peripheral_device() to find bus-less device, and call it in
qmp_device_del() so that device_del command will be able to remove memory
device.
Signed-off-by: Hu Tao <address@hidden>
Signed-off-by: Tang Chen <address@hidden>
---
include/qom/object.h | 1 +
qdev-monitor.c | 23 +++++++++++++++++++++++
qom/object.c | 2 +-
3 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/include/qom/object.h b/include/qom/object.h
index 8a05a81..a352beb 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -1300,5 +1300,6 @@ int object_child_foreach(Object *obj, int (*fn)(Object
*child, void *opaque),
*/
Object *container_get(Object *root, const char *path);
+bool object_property_is_child(ObjectProperty *prop);
#endif
diff --git a/qdev-monitor.c b/qdev-monitor.c
index fb9ee24..effd928 100644
--- a/qdev-monitor.c
+++ b/qdev-monitor.c
@@ -24,6 +24,7 @@
#include "qmp-commands.h"
#include "sysemu/arch_init.h"
#include "qemu/config-file.h"
+#include "qom/object.h"
/*
* Aliases were a bad idea from the start. Let's keep them
@@ -683,12 +684,34 @@ int do_device_add(Monitor *mon, const QDict *qdict,
QObject **ret_data)
return 0;
}
+static DeviceState *find_peripheral_device(const char *id)
+{
+ Object *peripheral = qdev_get_peripheral();
+ DeviceState *dev = NULL;
+ ObjectProperty *prop;
+
+ QTAILQ_FOREACH(prop, &peripheral->properties, node) {
+ if (object_property_is_child(prop)) {
+ dev = DEVICE(prop->opaque);
+ if (!strcmp(dev->id, id)) {
+ return dev;
+ }
+ }
+ }
+
+ return NULL;
+}
+
void qmp_device_del(const char *id, Error **errp)
{
DeviceState *dev;
dev = qdev_find_recursive(sysbus_get_default(), id);
if (!dev) {
+ dev = find_peripheral_device(id);
+ }
+
+ if (!dev) {
error_set(errp, QERR_DEVICE_NOT_FOUND, id);
return;
}
diff --git a/qom/object.c b/qom/object.c
index 0e8267b..1183e5d 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -351,7 +351,7 @@ void object_initialize(void *data, size_t size, const char
*typename)
object_initialize_with_type(data, size, type);
}
-static inline bool object_property_is_child(ObjectProperty *prop)
+bool object_property_is_child(ObjectProperty *prop)
{
return strstart(prop->type, "child<", NULL);
}
--
1.8.4.2
- [Qemu-devel] [RESEND PATCH v3 0/8] QEmu memory hot unplug support., Tang Chen, 2014/08/27
- [Qemu-devel] [RESEND PATCH v3 1/8] acpi, piix4: Add memory hot unplug support for piix4., Tang Chen, 2014/08/27
- [Qemu-devel] [RESEND PATCH v3 2/8] acpi, ich9: Add memory hot unplug support for ich9., Tang Chen, 2014/08/27
- [Qemu-devel] [RESEND PATCH v3 3/8] pc: Add memory hot unplug support for pc machine., Tang Chen, 2014/08/27
- [Qemu-devel] [RESEND PATCH v3 4/8] qdev: Add memory hot unplug support for bus-less devices., Tang Chen, 2014/08/27
- [Qemu-devel] [RESEND PATCH v3 5/8] pc-dimm: Add pc_dimm_unrealize() for memory hot unplug support., Tang Chen, 2014/08/27
- [Qemu-devel] [RESEND PATCH v3 6/8] acpi: Add hardware implementation for memory hot unplug., Tang Chen, 2014/08/27
- [Qemu-devel] [RESEND PATCH v3 7/8] pc, acpi bios: Add memory hot unplug interface., Tang Chen, 2014/08/27
- [Qemu-devel] [RESEND PATCH v3 8/8] monitor: Add memory hot unplug support for device_del command.,
Tang Chen <=