diff mbox series

docs/system/cpu-hotplug: Update example's socket-id/core-id

Message ID 20240819144303.37852-1-peter.maydell@linaro.org (mailing list archive)
State New, archived
Headers show
Series docs/system/cpu-hotplug: Update example's socket-id/core-id | expand

Commit Message

Peter Maydell Aug. 19, 2024, 2:43 p.m. UTC
At some point the way we allocate socket-id and core-id to CPUs
by default changed; update the example of how to do CPU hotplug
and unplug so the example commands work again. The differences
in the sample input and output are:
 * the second CPU is now socket-id=0 core-id=1,
   not socket-id=1 core-id=0
 * the order of fields from the qmp_shell is different (it seems
   to now always be in alphabetical order)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
I noticed this while I was playing around with vcpu hotplug trying to
demonstrate a memory leak I want to fix...

 docs/system/cpu-hotplug.rst | 54 ++++++++++++++++++-------------------
 1 file changed, 26 insertions(+), 28 deletions(-)

Comments

Peter Maydell Sept. 6, 2024, 3:13 p.m. UTC | #1
On Mon, 19 Aug 2024 at 15:43, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> At some point the way we allocate socket-id and core-id to CPUs
> by default changed; update the example of how to do CPU hotplug
> and unplug so the example commands work again. The differences
> in the sample input and output are:
>  * the second CPU is now socket-id=0 core-id=1,
>    not socket-id=1 core-id=0
>  * the order of fields from the qmp_shell is different (it seems
>    to now always be in alphabetical order)
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> I noticed this while I was playing around with vcpu hotplug trying to
> demonstrate a memory leak I want to fix...

Ping for review on this one, please?

thanks
-- PMM


>
>  docs/system/cpu-hotplug.rst | 54 ++++++++++++++++++-------------------
>  1 file changed, 26 insertions(+), 28 deletions(-)
>
> diff --git a/docs/system/cpu-hotplug.rst b/docs/system/cpu-hotplug.rst
> index 015ce2b6ec3..443ff226b90 100644
> --- a/docs/system/cpu-hotplug.rst
> +++ b/docs/system/cpu-hotplug.rst
> @@ -33,23 +33,23 @@ vCPU hotplug
>        {
>            "return": [
>                {
> -                  "type": "IvyBridge-IBRS-x86_64-cpu",
> -                  "vcpus-count": 1,
>                    "props": {
> -                      "socket-id": 1,
> -                      "core-id": 0,
> +                      "core-id": 1,
> +                      "socket-id": 0,
>                        "thread-id": 0
> -                  }
> +                  },
> +                  "type": "IvyBridge-IBRS-x86_64-cpu",
> +                  "vcpus-count": 1
>                },
>                {
> +                  "props": {
> +                      "core-id": 0,
> +                      "socket-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
> -                  }
> +                  "vcpus-count": 1
>                }
>            ]
>        }
> @@ -58,18 +58,18 @@ vCPU hotplug
>  (4) The ``query-hotpluggable-cpus`` command returns an object for CPUs
>      that are present (containing a "qom-path" member) or which may be
>      hot-plugged (no "qom-path" member).  From its output in step (3), we
> -    can see that ``IvyBridge-IBRS-x86_64-cpu`` is present in socket 0,
> -    while hot-plugging a CPU into socket 1 requires passing the listed
> +    can see that ``IvyBridge-IBRS-x86_64-cpu`` is present in socket 0 core 0,
> +    while hot-plugging a CPU into socket 0 core 1 requires passing the listed
>      properties to QMP ``device_add``::
>
>        (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,
> +              "core-id": 1,
>                "driver": "IvyBridge-IBRS-x86_64-cpu",
>                "id": "cpu-2",
> -              "core-id": 0,
> +              "socket-id": 0,
>                "thread-id": 0
>            }
>        }
> @@ -83,34 +83,32 @@ vCPU hotplug
>
>        (QEMU) query-cpus-fast
>        {
> -          "execute": "query-cpus-fast",
>            "arguments": {}
> +          "execute": "query-cpus-fast",
>        }
>        {
>            "return": [
>                {
> -                  "qom-path": "/machine/unattached/device[0]",
> -                  "target": "x86_64",
> -                  "thread-id": 11534,
>                    "cpu-index": 0,
>                    "props": {
> -                      "socket-id": 0,
>                        "core-id": 0,
> +                      "socket-id": 0,
>                        "thread-id": 0
>                    },
> -                  "arch": "x86"
> +                  "qom-path": "/machine/unattached/device[0]",
> +                  "target": "x86_64",
> +                  "thread-id": 28957
>                },
>                {
> -                  "qom-path": "/machine/peripheral/cpu-2",
> -                  "target": "x86_64",
> -                  "thread-id": 12106,
>                    "cpu-index": 1,
>                    "props": {
> -                      "socket-id": 1,
> -                      "core-id": 0,
> +                      "core-id": 1,
> +                      "socket-id": 0,
>                        "thread-id": 0
>                    },
> -                  "arch": "x86"
> +                  "qom-path": "/machine/peripheral/cpu-2",
> +                  "target": "x86_64",
> +                  "thread-id": 29095
>                }
>            ]
>        }
> @@ -123,10 +121,10 @@ From the 'qmp-shell', invoke the QMP ``device_del`` command::
>
>        (QEMU) device_del id=cpu-2
>        {
> -          "execute": "device_del",
>            "arguments": {
>                "id": "cpu-2"
>            }
> +          "execute": "device_del",
>        }
>        {
>            "return": {}
> --
> 2.34.1
>
Igor Mammedov Sept. 10, 2024, 9:03 a.m. UTC | #2
On Mon, 19 Aug 2024 15:43:03 +0100
Peter Maydell <peter.maydell@linaro.org> wrote:

> At some point the way we allocate socket-id and core-id to CPUs
> by default changed; update the example of how to do CPU hotplug
> and unplug so the example commands work again. The differences
> in the sample input and output are:
>  * the second CPU is now socket-id=0 core-id=1,
>    not socket-id=1 core-id=0
>  * the order of fields from the qmp_shell is different (it seems
>    to now always be in alphabetical order)
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> I noticed this while I was playing around with vcpu hotplug trying to
> demonstrate a memory leak I want to fix...
> 
>  docs/system/cpu-hotplug.rst | 54 ++++++++++++++++++-------------------
>  1 file changed, 26 insertions(+), 28 deletions(-)
> 
> diff --git a/docs/system/cpu-hotplug.rst b/docs/system/cpu-hotplug.rst
> index 015ce2b6ec3..443ff226b90 100644
> --- a/docs/system/cpu-hotplug.rst
> +++ b/docs/system/cpu-hotplug.rst
> @@ -33,23 +33,23 @@ vCPU hotplug
>        {
>            "return": [
>                {
> -                  "type": "IvyBridge-IBRS-x86_64-cpu",
> -                  "vcpus-count": 1,
>                    "props": {
> -                      "socket-id": 1,
> -                      "core-id": 0,
> +                      "core-id": 1,
> +                      "socket-id": 0,
>                        "thread-id": 0
> -                  }
> +                  },
> +                  "type": "IvyBridge-IBRS-x86_64-cpu",
> +                  "vcpus-count": 1
>                },
>                {
> +                  "props": {
> +                      "core-id": 0,
> +                      "socket-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
> -                  }
> +                  "vcpus-count": 1
>                }
>            ]
>        }
> @@ -58,18 +58,18 @@ vCPU hotplug
>  (4) The ``query-hotpluggable-cpus`` command returns an object for CPUs
>      that are present (containing a "qom-path" member) or which may be
>      hot-plugged (no "qom-path" member).  From its output in step (3), we
> -    can see that ``IvyBridge-IBRS-x86_64-cpu`` is present in socket 0,
> -    while hot-plugging a CPU into socket 1 requires passing the listed
> +    can see that ``IvyBridge-IBRS-x86_64-cpu`` is present in socket 0 core 0,
> +    while hot-plugging a CPU into socket 0 core 1 requires passing the listed
>      properties to QMP ``device_add``::
>  

>        (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,
> +              "core-id": 1,
>                "driver": "IvyBridge-IBRS-x86_64-cpu",
>                "id": "cpu-2",
> -              "core-id": 0,
> +              "socket-id": 0,
>                "thread-id": 0

after above changes device_add doesn't match comment nor 'execute' output

>            }
>        }
> @@ -83,34 +83,32 @@ vCPU hotplug
>  
>        (QEMU) query-cpus-fast
>        {
> -          "execute": "query-cpus-fast",
>            "arguments": {}
> +          "execute": "query-cpus-fast",
>        }
>        {
>            "return": [
>                {
> -                  "qom-path": "/machine/unattached/device[0]",
> -                  "target": "x86_64",
> -                  "thread-id": 11534,
>                    "cpu-index": 0,
>                    "props": {
> -                      "socket-id": 0,
>                        "core-id": 0,
> +                      "socket-id": 0,
>                        "thread-id": 0
>                    },
> -                  "arch": "x86"
> +                  "qom-path": "/machine/unattached/device[0]",
> +                  "target": "x86_64",
> +                  "thread-id": 28957
>                },
>                {
> -                  "qom-path": "/machine/peripheral/cpu-2",
> -                  "target": "x86_64",
> -                  "thread-id": 12106,
>                    "cpu-index": 1,
>                    "props": {
> -                      "socket-id": 1,
> -                      "core-id": 0,
> +                      "core-id": 1,
> +                      "socket-id": 0,
>                        "thread-id": 0
>                    },
> -                  "arch": "x86"
> +                  "qom-path": "/machine/peripheral/cpu-2",
> +                  "target": "x86_64",
> +                  "thread-id": 29095
>                }

beside reordering, which seems fine, this hunk also introduces target change
perhaps a separate patch for that?

>            ]
>        }
> @@ -123,10 +121,10 @@ From the 'qmp-shell', invoke the QMP ``device_del`` command::
>  
>        (QEMU) device_del id=cpu-2
>        {
> -          "execute": "device_del",
>            "arguments": {
>                "id": "cpu-2"
>            }
> +          "execute": "device_del",
>        }
>        {
>            "return": {}
Peter Maydell Sept. 10, 2024, 9:38 a.m. UTC | #3
On Tue, 10 Sept 2024 at 10:03, Igor Mammedov <imammedo@redhat.com> wrote:
>
> On Mon, 19 Aug 2024 15:43:03 +0100
> Peter Maydell <peter.maydell@linaro.org> wrote:
>
> > At some point the way we allocate socket-id and core-id to CPUs
> > by default changed; update the example of how to do CPU hotplug
> > and unplug so the example commands work again. The differences
> > in the sample input and output are:
> >  * the second CPU is now socket-id=0 core-id=1,
> >    not socket-id=1 core-id=0
> >  * the order of fields from the qmp_shell is different (it seems
> >    to now always be in alphabetical order)
> >
> > Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> > ---
> > I noticed this while I was playing around with vcpu hotplug trying to
> > demonstrate a memory leak I want to fix...
> >
> >  docs/system/cpu-hotplug.rst | 54 ++++++++++++++++++-------------------
> >  1 file changed, 26 insertions(+), 28 deletions(-)
> >
> > diff --git a/docs/system/cpu-hotplug.rst b/docs/system/cpu-hotplug.rst
> > index 015ce2b6ec3..443ff226b90 100644
> > --- a/docs/system/cpu-hotplug.rst
> > +++ b/docs/system/cpu-hotplug.rst
> > @@ -33,23 +33,23 @@ vCPU hotplug
> >        {
> >            "return": [
> >                {
> > -                  "type": "IvyBridge-IBRS-x86_64-cpu",
> > -                  "vcpus-count": 1,
> >                    "props": {
> > -                      "socket-id": 1,
> > -                      "core-id": 0,
> > +                      "core-id": 1,
> > +                      "socket-id": 0,
> >                        "thread-id": 0
> > -                  }
> > +                  },
> > +                  "type": "IvyBridge-IBRS-x86_64-cpu",
> > +                  "vcpus-count": 1
> >                },
> >                {
> > +                  "props": {
> > +                      "core-id": 0,
> > +                      "socket-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
> > -                  }
> > +                  "vcpus-count": 1
> >                }
> >            ]
> >        }
> > @@ -58,18 +58,18 @@ vCPU hotplug
> >  (4) The ``query-hotpluggable-cpus`` command returns an object for CPUs
> >      that are present (containing a "qom-path" member) or which may be
> >      hot-plugged (no "qom-path" member).  From its output in step (3), we
> > -    can see that ``IvyBridge-IBRS-x86_64-cpu`` is present in socket 0,
> > -    while hot-plugging a CPU into socket 1 requires passing the listed
> > +    can see that ``IvyBridge-IBRS-x86_64-cpu`` is present in socket 0 core 0,
> > +    while hot-plugging a CPU into socket 0 core 1 requires passing the listed
> >      properties to QMP ``device_add``::
> >
>
> >        (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,
> > +              "core-id": 1,
> >                "driver": "IvyBridge-IBRS-x86_64-cpu",
> >                "id": "cpu-2",
> > -              "core-id": 0,
> > +              "socket-id": 0,
> >                "thread-id": 0
>
> after above changes device_add doesn't match comment nor 'execute' output

Oops, yes. The device_add line should be changed too
("socket-id=0 core-id=1 thread-id=0").

>
> >            }
> >        }
> > @@ -83,34 +83,32 @@ vCPU hotplug
> >
> >        (QEMU) query-cpus-fast
> >        {
> > -          "execute": "query-cpus-fast",
> >            "arguments": {}
> > +          "execute": "query-cpus-fast",
> >        }
> >        {
> >            "return": [
> >                {
> > -                  "qom-path": "/machine/unattached/device[0]",
> > -                  "target": "x86_64",
> > -                  "thread-id": 11534,
> >                    "cpu-index": 0,
> >                    "props": {
> > -                      "socket-id": 0,
> >                        "core-id": 0,
> > +                      "socket-id": 0,
> >                        "thread-id": 0
> >                    },
> > -                  "arch": "x86"
> > +                  "qom-path": "/machine/unattached/device[0]",
> > +                  "target": "x86_64",
> > +                  "thread-id": 28957
> >                },
> >                {
> > -                  "qom-path": "/machine/peripheral/cpu-2",
> > -                  "target": "x86_64",
> > -                  "thread-id": 12106,
> >                    "cpu-index": 1,
> >                    "props": {
> > -                      "socket-id": 1,
> > -                      "core-id": 0,
> > +                      "core-id": 1,
> > +                      "socket-id": 0,
> >                        "thread-id": 0
> >                    },
> > -                  "arch": "x86"
> > +                  "qom-path": "/machine/peripheral/cpu-2",
> > +                  "target": "x86_64",
> > +                  "thread-id": 29095
> >                }
>
> beside reordering, which seems fine, this hunk also introduces target change
> perhaps a separate patch for that?

What target change? It all says "target": "x86_64" both before
and after.

thanks
-- PMM
Peter Maydell Sept. 19, 2024, 12:34 p.m. UTC | #4
On Tue, 10 Sept 2024 at 10:38, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> On Tue, 10 Sept 2024 at 10:03, Igor Mammedov <imammedo@redhat.com> wrote:
> >
> > On Mon, 19 Aug 2024 15:43:03 +0100
> > Peter Maydell <peter.maydell@linaro.org> wrote:
> > > @@ -83,34 +83,32 @@ vCPU hotplug
> > >
> > >        (QEMU) query-cpus-fast
> > >        {
> > > -          "execute": "query-cpus-fast",
> > >            "arguments": {}
> > > +          "execute": "query-cpus-fast",
> > >        }
> > >        {
> > >            "return": [
> > >                {
> > > -                  "qom-path": "/machine/unattached/device[0]",
> > > -                  "target": "x86_64",
> > > -                  "thread-id": 11534,
> > >                    "cpu-index": 0,
> > >                    "props": {
> > > -                      "socket-id": 0,
> > >                        "core-id": 0,
> > > +                      "socket-id": 0,
> > >                        "thread-id": 0
> > >                    },
> > > -                  "arch": "x86"
> > > +                  "qom-path": "/machine/unattached/device[0]",
> > > +                  "target": "x86_64",
> > > +                  "thread-id": 28957
> > >                },
> > >                {
> > > -                  "qom-path": "/machine/peripheral/cpu-2",
> > > -                  "target": "x86_64",
> > > -                  "thread-id": 12106,
> > >                    "cpu-index": 1,
> > >                    "props": {
> > > -                      "socket-id": 1,
> > > -                      "core-id": 0,
> > > +                      "core-id": 1,
> > > +                      "socket-id": 0,
> > >                        "thread-id": 0
> > >                    },
> > > -                  "arch": "x86"
> > > +                  "qom-path": "/machine/peripheral/cpu-2",
> > > +                  "target": "x86_64",
> > > +                  "thread-id": 29095
> > >                }
> >
> > beside reordering, which seems fine, this hunk also introduces target change
> > perhaps a separate patch for that?
>
> What target change? It all says "target": "x86_64" both before
> and after.

Hi Igor, would you mind clarifying what you meant here?
I'm happy to respin, but I don't understand what change you're
asking for.

thanks
-- PMM
Igor Mammedov Sept. 20, 2024, 10:45 a.m. UTC | #5
On Thu, 19 Sep 2024 13:34:54 +0100
Peter Maydell <peter.maydell@linaro.org> wrote:

> On Tue, 10 Sept 2024 at 10:38, Peter Maydell <peter.maydell@linaro.org> wrote:
> >
> > On Tue, 10 Sept 2024 at 10:03, Igor Mammedov <imammedo@redhat.com> wrote:  
> > >
> > > On Mon, 19 Aug 2024 15:43:03 +0100
> > > Peter Maydell <peter.maydell@linaro.org> wrote:  
> > > > @@ -83,34 +83,32 @@ vCPU hotplug
> > > >
> > > >        (QEMU) query-cpus-fast
> > > >        {
> > > > -          "execute": "query-cpus-fast",
> > > >            "arguments": {}
> > > > +          "execute": "query-cpus-fast",
> > > >        }
> > > >        {
> > > >            "return": [
> > > >                {
> > > > -                  "qom-path": "/machine/unattached/device[0]",
> > > > -                  "target": "x86_64",
> > > > -                  "thread-id": 11534,
> > > >                    "cpu-index": 0,
> > > >                    "props": {
> > > > -                      "socket-id": 0,
> > > >                        "core-id": 0,
> > > > +                      "socket-id": 0,
> > > >                        "thread-id": 0
> > > >                    },
> > > > -                  "arch": "x86"
> > > > +                  "qom-path": "/machine/unattached/device[0]",
> > > > +                  "target": "x86_64",
> > > > +                  "thread-id": 28957
> > > >                },
> > > >                {
> > > > -                  "qom-path": "/machine/peripheral/cpu-2",
> > > > -                  "target": "x86_64",
> > > > -                  "thread-id": 12106,
> > > >                    "cpu-index": 1,
> > > >                    "props": {
> > > > -                      "socket-id": 1,
> > > > -                      "core-id": 0,
> > > > +                      "core-id": 1,
> > > > +                      "socket-id": 0,
> > > >                        "thread-id": 0
> > > >                    },
> > > > -                  "arch": "x86"
> > > > +                  "qom-path": "/machine/peripheral/cpu-2",
> > > > +                  "target": "x86_64",
> > > > +                  "thread-id": 29095
> > > >                }  
> > >
> > > beside reordering, which seems fine, this hunk also introduces target change
> > > perhaps a separate patch for that?  
> >
> > What target change? It all says "target": "x86_64" both before
> > and after. 

my mistake,
I should've said  '"arch": "x86"' instead, which is gone after the patch

> 
> Hi Igor, would you mind clarifying what you meant here?
> I'm happy to respin, but I don't understand what change you're
> asking for.
> 
> thanks
> -- PMM
>
Peter Maydell Oct. 3, 2024, 2:54 p.m. UTC | #6
On Fri, 20 Sept 2024 at 11:45, Igor Mammedov <imammedo@redhat.com> wrote:
>
> On Thu, 19 Sep 2024 13:34:54 +0100
> Peter Maydell <peter.maydell@linaro.org> wrote:
>
> > On Tue, 10 Sept 2024 at 10:38, Peter Maydell <peter.maydell@linaro.org> wrote:
> > >
> > > On Tue, 10 Sept 2024 at 10:03, Igor Mammedov <imammedo@redhat.com> wrote:
> > > >
> > > > On Mon, 19 Aug 2024 15:43:03 +0100
> > > > Peter Maydell <peter.maydell@linaro.org> wrote:
> > > > > @@ -83,34 +83,32 @@ vCPU hotplug
> > > > >
> > > > >        (QEMU) query-cpus-fast
> > > > >        {
> > > > > -          "execute": "query-cpus-fast",
> > > > >            "arguments": {}
> > > > > +          "execute": "query-cpus-fast",
> > > > >        }
> > > > >        {
> > > > >            "return": [
> > > > >                {
> > > > > -                  "qom-path": "/machine/unattached/device[0]",
> > > > > -                  "target": "x86_64",
> > > > > -                  "thread-id": 11534,
> > > > >                    "cpu-index": 0,
> > > > >                    "props": {
> > > > > -                      "socket-id": 0,
> > > > >                        "core-id": 0,
> > > > > +                      "socket-id": 0,
> > > > >                        "thread-id": 0
> > > > >                    },
> > > > > -                  "arch": "x86"
> > > > > +                  "qom-path": "/machine/unattached/device[0]",
> > > > > +                  "target": "x86_64",
> > > > > +                  "thread-id": 28957
> > > > >                },
> > > > >                {
> > > > > -                  "qom-path": "/machine/peripheral/cpu-2",
> > > > > -                  "target": "x86_64",
> > > > > -                  "thread-id": 12106,
> > > > >                    "cpu-index": 1,
> > > > >                    "props": {
> > > > > -                      "socket-id": 1,
> > > > > -                      "core-id": 0,
> > > > > +                      "core-id": 1,
> > > > > +                      "socket-id": 0,
> > > > >                        "thread-id": 0
> > > > >                    },
> > > > > -                  "arch": "x86"
> > > > > +                  "qom-path": "/machine/peripheral/cpu-2",
> > > > > +                  "target": "x86_64",
> > > > > +                  "thread-id": 29095
> > > > >                }
> > > >
> > > > beside reordering, which seems fine, this hunk also introduces target change
> > > > perhaps a separate patch for that?
> > >
> > > What target change? It all says "target": "x86_64" both before
> > > and after.
>
> my mistake,
> I should've said  '"arch": "x86"' instead, which is gone after the patch

This is because the "arch" output member was removed
from the query-cpus-fast output in QEMU 6.0. If we
mention this also in the commit message, is that OK?

======
docs/system/cpu-hotplug: Update example to match current QEMU

The example of how to do vCPU hotplug and hot-unlpug in the
cpu-hotplug documentation no longer works, because the way
we allocate socket-id and core-id to CPUs by default has
changed at some point. The output also no longer matches what
current QEMU produces in some more cosmetic ways.

Update the example to match current QEMU. The differences are:
 * the second CPU is now socket-id=0 core-id=1,
   not socket-id=1 core-id=0
 * the order of fields from the qmp_shell is now in
   alphabetical order
 * the "arch" member is no longer present in the query-cpus-fast
   output (it was removed in QEMU 6.0)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
======

If that seems OK to you I'll send out a v2 with the updated
commit message and the fix to the device_add line.

thanks
-- PMM
Igor Mammedov Oct. 7, 2024, 12:04 p.m. UTC | #7
On Thu, 3 Oct 2024 15:54:45 +0100
Peter Maydell <peter.maydell@linaro.org> wrote:

> On Fri, 20 Sept 2024 at 11:45, Igor Mammedov <imammedo@redhat.com> wrote:
> >
> > On Thu, 19 Sep 2024 13:34:54 +0100
> > Peter Maydell <peter.maydell@linaro.org> wrote:
> >  
> > > On Tue, 10 Sept 2024 at 10:38, Peter Maydell <peter.maydell@linaro.org> wrote:  
> > > >
> > > > On Tue, 10 Sept 2024 at 10:03, Igor Mammedov <imammedo@redhat.com> wrote:  
> > > > >
> > > > > On Mon, 19 Aug 2024 15:43:03 +0100
> > > > > Peter Maydell <peter.maydell@linaro.org> wrote:  
> > > > > > @@ -83,34 +83,32 @@ vCPU hotplug
> > > > > >
> > > > > >        (QEMU) query-cpus-fast
> > > > > >        {
> > > > > > -          "execute": "query-cpus-fast",
> > > > > >            "arguments": {}
> > > > > > +          "execute": "query-cpus-fast",
> > > > > >        }
> > > > > >        {
> > > > > >            "return": [
> > > > > >                {
> > > > > > -                  "qom-path": "/machine/unattached/device[0]",
> > > > > > -                  "target": "x86_64",
> > > > > > -                  "thread-id": 11534,
> > > > > >                    "cpu-index": 0,
> > > > > >                    "props": {
> > > > > > -                      "socket-id": 0,
> > > > > >                        "core-id": 0,
> > > > > > +                      "socket-id": 0,
> > > > > >                        "thread-id": 0
> > > > > >                    },
> > > > > > -                  "arch": "x86"
> > > > > > +                  "qom-path": "/machine/unattached/device[0]",
> > > > > > +                  "target": "x86_64",
> > > > > > +                  "thread-id": 28957
> > > > > >                },
> > > > > >                {
> > > > > > -                  "qom-path": "/machine/peripheral/cpu-2",
> > > > > > -                  "target": "x86_64",
> > > > > > -                  "thread-id": 12106,
> > > > > >                    "cpu-index": 1,
> > > > > >                    "props": {
> > > > > > -                      "socket-id": 1,
> > > > > > -                      "core-id": 0,
> > > > > > +                      "core-id": 1,
> > > > > > +                      "socket-id": 0,
> > > > > >                        "thread-id": 0
> > > > > >                    },
> > > > > > -                  "arch": "x86"
> > > > > > +                  "qom-path": "/machine/peripheral/cpu-2",
> > > > > > +                  "target": "x86_64",
> > > > > > +                  "thread-id": 29095
> > > > > >                }  
> > > > >
> > > > > beside reordering, which seems fine, this hunk also introduces target change
> > > > > perhaps a separate patch for that?  
> > > >
> > > > What target change? It all says "target": "x86_64" both before
> > > > and after.  
> >
> > my mistake,
> > I should've said  '"arch": "x86"' instead, which is gone after the patch  
> 
> This is because the "arch" output member was removed
> from the query-cpus-fast output in QEMU 6.0. If we
> mention this also in the commit message, is that OK?
> 
> ======
> docs/system/cpu-hotplug: Update example to match current QEMU
> 
> The example of how to do vCPU hotplug and hot-unlpug in the
> cpu-hotplug documentation no longer works, because the way
> we allocate socket-id and core-id to CPUs by default has
> changed at some point. The output also no longer matches what
> current QEMU produces in some more cosmetic ways.
> 
> Update the example to match current QEMU. The differences are:
>  * the second CPU is now socket-id=0 core-id=1,
>    not socket-id=1 core-id=0
>  * the order of fields from the qmp_shell is now in
>    alphabetical order
>  * the "arch" member is no longer present in the query-cpus-fast
>    output (it was removed in QEMU 6.0)
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ======

Acked-by: Igor Mammedov <imammedo@redhat.com>

> 
> If that seems OK to you I'll send out a v2 with the updated
> commit message and the fix to the device_add line.
> 
> thanks
> -- PMM
>
diff mbox series

Patch

diff --git a/docs/system/cpu-hotplug.rst b/docs/system/cpu-hotplug.rst
index 015ce2b6ec3..443ff226b90 100644
--- a/docs/system/cpu-hotplug.rst
+++ b/docs/system/cpu-hotplug.rst
@@ -33,23 +33,23 @@  vCPU hotplug
       {
           "return": [
               {
-                  "type": "IvyBridge-IBRS-x86_64-cpu",
-                  "vcpus-count": 1,
                   "props": {
-                      "socket-id": 1,
-                      "core-id": 0,
+                      "core-id": 1,
+                      "socket-id": 0,
                       "thread-id": 0
-                  }
+                  },
+                  "type": "IvyBridge-IBRS-x86_64-cpu",
+                  "vcpus-count": 1
               },
               {
+                  "props": {
+                      "core-id": 0,
+                      "socket-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
-                  }
+                  "vcpus-count": 1
               }
           ]
       }
@@ -58,18 +58,18 @@  vCPU hotplug
 (4) The ``query-hotpluggable-cpus`` command returns an object for CPUs
     that are present (containing a "qom-path" member) or which may be
     hot-plugged (no "qom-path" member).  From its output in step (3), we
-    can see that ``IvyBridge-IBRS-x86_64-cpu`` is present in socket 0,
-    while hot-plugging a CPU into socket 1 requires passing the listed
+    can see that ``IvyBridge-IBRS-x86_64-cpu`` is present in socket 0 core 0,
+    while hot-plugging a CPU into socket 0 core 1 requires passing the listed
     properties to QMP ``device_add``::
 
       (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,
+              "core-id": 1,
               "driver": "IvyBridge-IBRS-x86_64-cpu",
               "id": "cpu-2",
-              "core-id": 0,
+              "socket-id": 0,
               "thread-id": 0
           }
       }
@@ -83,34 +83,32 @@  vCPU hotplug
 
       (QEMU) query-cpus-fast
       {
-          "execute": "query-cpus-fast",
           "arguments": {}
+          "execute": "query-cpus-fast",
       }
       {
           "return": [
               {
-                  "qom-path": "/machine/unattached/device[0]",
-                  "target": "x86_64",
-                  "thread-id": 11534,
                   "cpu-index": 0,
                   "props": {
-                      "socket-id": 0,
                       "core-id": 0,
+                      "socket-id": 0,
                       "thread-id": 0
                   },
-                  "arch": "x86"
+                  "qom-path": "/machine/unattached/device[0]",
+                  "target": "x86_64",
+                  "thread-id": 28957
               },
               {
-                  "qom-path": "/machine/peripheral/cpu-2",
-                  "target": "x86_64",
-                  "thread-id": 12106,
                   "cpu-index": 1,
                   "props": {
-                      "socket-id": 1,
-                      "core-id": 0,
+                      "core-id": 1,
+                      "socket-id": 0,
                       "thread-id": 0
                   },
-                  "arch": "x86"
+                  "qom-path": "/machine/peripheral/cpu-2",
+                  "target": "x86_64",
+                  "thread-id": 29095
               }
           ]
       }
@@ -123,10 +121,10 @@  From the 'qmp-shell', invoke the QMP ``device_del`` command::
 
       (QEMU) device_del id=cpu-2
       {
-          "execute": "device_del",
           "arguments": {
               "id": "cpu-2"
           }
+          "execute": "device_del",
       }
       {
           "return": {}