diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2015-09-22 16:51:36 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2015-09-22 16:51:37 +0100 |
commit | 482d7c0854423608e20e56b5824b7340bd3af7df (patch) | |
tree | c035d32bede1323bd40a53aaa39dd4528904f89d | |
parent | 6138fbdebd72f6822367e88d14ddc635b5a5ddfb (diff) | |
parent | abadcbc838a3b256819fd8932c34a4af41ec187f (diff) | |
download | qemu-482d7c0854423608e20e56b5824b7340bd3af7df.tar.gz qemu-482d7c0854423608e20e56b5824b7340bd3af7df.tar.bz2 qemu-482d7c0854423608e20e56b5824b7340bd3af7df.zip |
Merge remote-tracking branch 'remotes/armbru/tags/pull-monitor-2015-09-22' into staging
Monitor patches
# gpg: Signature made Tue 22 Sep 2015 10:33:34 BST using RSA key ID EB918653
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
# gpg: aka "Markus Armbruster <armbru@pond.sub.org>"
* remotes/armbru/tags/pull-monitor-2015-09-22:
hmp: Restore "info pci"
monitor: allow device_del to accept QOM paths
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | hmp-commands-info.hx | 14 | ||||
-rw-r--r-- | hmp-commands.hx | 3 | ||||
-rw-r--r-- | qapi-schema.json | 2 | ||||
-rw-r--r-- | qdev-monitor.c | 20 | ||||
-rw-r--r-- | qmp-commands.hx | 7 |
5 files changed, 38 insertions, 8 deletions
diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx index 9f5a15826c..94a2afefd5 100644 --- a/hmp-commands-info.hx +++ b/hmp-commands-info.hx @@ -183,6 +183,20 @@ STEXI Show i8259 (PIC) state. ETEXI + { + .name = "pci", + .args_type = "", + .params = "", + .help = "show PCI info", + .mhandler.cmd = hmp_info_pci, + }, + +STEXI +@item info pci +@findex pci +Show PCI information. +ETEXI + #if defined(TARGET_I386) || defined(TARGET_SH4) || defined(TARGET_SPARC) || \ defined(TARGET_PPC) || defined(TARGET_XTENSA) { diff --git a/hmp-commands.hx b/hmp-commands.hx index a511004434..3a4ae3950a 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -676,7 +676,8 @@ ETEXI STEXI @item device_del @var{id} @findex device_del -Remove device @var{id}. +Remove device @var{id}. @var{id} may be a short ID +or a QOM object path. ETEXI { diff --git a/qapi-schema.json b/qapi-schema.json index 821362d637..527690dfe0 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -1951,7 +1951,7 @@ # # Remove a device from a guest # -# @id: the name of the device +# @id: the name or QOM path of the device # # Returns: Nothing on success # If @id is not a valid device, DeviceNotFound diff --git a/qdev-monitor.c b/qdev-monitor.c index 0bf7f83a1d..eb7aef2c81 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -771,12 +771,17 @@ void qmp_device_add(QDict *qdict, QObject **ret_data, Error **errp) void qmp_device_del(const char *id, Error **errp) { Object *obj; - char *root_path = object_get_canonical_path(qdev_get_peripheral()); - char *path = g_strdup_printf("%s/%s", root_path, id); - g_free(root_path); - obj = object_resolve_path_type(path, TYPE_DEVICE, NULL); - g_free(path); + if (id[0] == '/') { + obj = object_resolve_path(id, NULL); + } else { + char *root_path = object_get_canonical_path(qdev_get_peripheral()); + char *path = g_strdup_printf("%s/%s", root_path, id); + + g_free(root_path); + obj = object_resolve_path_type(path, TYPE_DEVICE, NULL); + g_free(path); + } if (!obj) { error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND, @@ -784,6 +789,11 @@ void qmp_device_del(const char *id, Error **errp) return; } + if (!object_dynamic_cast(obj, TYPE_DEVICE)) { + error_setg(errp, "%s is not a hotpluggable device", id); + return; + } + qdev_unplug(DEVICE(obj), errp); } diff --git a/qmp-commands.hx b/qmp-commands.hx index 66f03007ec..d2ba800d5e 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -321,13 +321,18 @@ Remove a device. Arguments: -- "id": the device's ID (json-string) +- "id": the device's ID or QOM path (json-string) Example: -> { "execute": "device_del", "arguments": { "id": "net1" } } <- { "return": {} } +Example: + +-> { "execute": "device_del", "arguments": { "id": "/machine/peripheral-anon/device[0]" } } +<- { "return": {} } + EQMP { |