qemu-devel
[Top][All Lists]
Advanced

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

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


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH] Deprecate QMP `cpu-add`
Date: Thu, 20 Sep 2018 14:27:02 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

Kashyap Chamarthy <address@hidden> writes:

> 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)

When I try this, JSON gets formatted slightly differently:

    {
        "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
                }
            }
        ]
    }

How come?

>
> (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.

Publishing this in a commit message is much better than not publishing
it.  Still, can we find a better home somewhere under docs/?

> 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.

Yes, please.

> ---
>  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)
>  #

Eduardo pointed out that query-hotpluggable-cpus's documentation is
lacking.  Add a suitable TODO there?

> 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.
> +

For me, "now" suggests device_add can achieve this since 3.1.  Scratch
"now"?

>  @section System emulator devices
>  
>  @subsection ivshmem (since 2.6.0)



reply via email to

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