qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH] Deprecate QMP `cpu-add`


From: Kashyap Chamarthy
Subject: [Qemu-devel] [PATCH] Deprecate QMP `cpu-add`
Date: Thu, 20 Sep 2018 13:44:06 +0200

The intended functionality of QMP command `cpu-add` is replaced by
`device_add` (and `query-hotpluggable-cpus`).  So let's deprecate
`cpu-add`.

A complete example of vCPU hotplug with the recommended way, using
`device_add`:

(1) Launch QEMU as follows (note that the "maxcpus" is mandatory to
    allow vCPU hotplug):

    $ qemu-system-x86_64 -display none -no-user-config -m 2048 \
        -nodefaults -monitor stdio -machine pc,accel=kvm,usb=off \
        -smp 1,maxcpus=2 -cpu IvyBridge-IBRS \
        -blockdev 
node-name=node-Base,driver=qcow2,file.driver=file,file.filename=./base.qcow2 \
        -device virtio-blk,drive=node-Base,id=virtio0 -qmp 
unix:/tmp/qmp-sock,server,nowait

(2) Run 'qmp-shell' (located in the source tree) to connect to the
    just-launched QEMU:

    $> ./qmp/qmp-shell -p -v /tmp/qmp-sock
    [...]
    (QEMU)

(3) Check which socket is free to allow hotplugging a CPU:

    (QEMU) query-hotpluggable-cpus
    {
      "execute":"query-hotpluggable-cpus",
      "arguments":{

      }
    }
    {
      "return":[
        {
          "type":"IvyBridge-IBRS-x86_64-cpu",
          "vcpus-count":1,
          "props":{
            "socket-id":1,
            "core-id":0,
            "thread-id":0
          }
        },
        {
          "qom-path":"/machine/unattached/device[0]",
          "type":"IvyBridge-IBRS-x86_64-cpu",
          "vcpus-count":1,
          "props":{
            "socket-id":0,
            "core-id":0,
            "thread-id":0
          }
        }
      ]
    }
    (QEMU)

(4) We can see that socket 1 is free, so use `device_add` to hotplug
    "IvyBridge-IBRS-x86_64-cpu":

    (QEMU) device_add id=cpu-2 driver=IvyBridge-IBRS-x86_64-cpu socket-id=1 
core-id=0 thread-id=0
    {
        "execute": "device_add",
        "arguments": {
            "socket-id": 1,
            "driver": "IvyBridge-IBRS-x86_64-cpu",
            "id": "cpu-2",
            "core-id": 0,
            "thread-id": 0
        }
    }
    {
        "return": {}
    }
    (QEMU)

(5) Optionally, run QMP `query-cpus-fast` for some details about the
    vCPUs.

Suggested-by: Eduardo Habkost <address@hidden
Signed-off-by: Kashyap Chamarthy <address@hidden>
---
Also shouldn't we update tests/cpu-plug-test.c to make it use
`device_add`.  Can take a stab at it, if you'd like me to.
---
 qapi/misc.json       | 6 +++++-
 qemu-deprecated.texi | 5 +++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/qapi/misc.json b/qapi/misc.json
index d450cfef21..83bc9ad0ee 100644
--- a/qapi/misc.json
+++ b/qapi/misc.json
@@ -1104,7 +1104,11 @@
 ##
 # @cpu-add:
 #
-# Adds CPU with specified ID
+# Adds CPU with specified ID.
+#
+# Notes: This command is deprecated.  The `device_add` command should be
+#        used instead.  See the `query-hotpluggable-cpus` command for
+#        details.
 #
 # @id: ID of CPU to be created, valid values [0..max_cpus)
 #
diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
index 1b9c007f12..9c6d70d43a 100644
--- a/qemu-deprecated.texi
+++ b/qemu-deprecated.texi
@@ -155,6 +155,11 @@ The ``query-cpus'' command is replaced by the 
``query-cpus-fast'' command.
 The ``arch'' output member of the ``query-cpus-fast'' command is
 replaced by the ``target'' output member.
 
address@hidden cpu-add (since 3.1)
+
+The intended functionality of ``cpu-add'' command, which is the ability
+to hot-plug vCPUs, can now be achieved by the ``device_add'' command.
+
 @section System emulator devices
 
 @subsection ivshmem (since 2.6.0)
-- 
2.17.1




reply via email to

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