diff mbox series

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

Message ID 20240819144303.37852-1-peter.maydell@linaro.org
State New
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
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": {}