[PATCH v12 00/16] machine: smp parsing fixes and improvement

Yanan Wang posted 16 patches 2 years, 7 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210929025816.21076-1-wangyanan55@huawei.com
docs/about/deprecated.rst  |  15 +++
hw/arm/virt.c              |   1 +
hw/core/machine.c          | 206 ++++++++++++++++++++++++++-----------
hw/i386/pc.c               |  63 +-----------
hw/i386/pc_piix.c          |   1 +
hw/i386/pc_q35.c           |   1 +
hw/ppc/spapr.c             |   1 +
hw/s390x/s390-virtio-ccw.c |   1 +
include/hw/boards.h        |  23 +++--
qapi/machine.json          |   2 +-
qemu-options.hx            |  24 +++--
tests/qtest/numa-test.c    |   6 +-
12 files changed, 201 insertions(+), 143 deletions(-)
[PATCH v12 00/16] machine: smp parsing fixes and improvement
Posted by Yanan Wang 2 years, 7 months ago
Hi,

This is a new version (v12) with minor update suggested by Daniel
and Philippe. Two new commits (#1 and #16) are added. Thanks!

Summary of v12:
1) Specifying a CPU topology parameter as zero was implicitly allowed
but undocumented before, while now it's explicitly deprecated.

2) Refactor/fixes of the smp parsers.

3) For consistency, maxcpus is now uniformly used to calculate the
omitted topology members.

4) Improve the error reporting of the parsers.

5) It's also suggested that we should start to prefer cores over sockets
over threads on the newer machine types, which will make the computed
virtual topology more reflective of the real hardware. Related discussion
can be found in [1].
[1] https://lore.kernel.org/qemu-devel/YNIgInK00yNNI4Dy@redhat.com/

6) In order to reduce code duplication and ease the code maintenance,
smp_parse() is converted into a generic enough parser for all arches,
so that the arch-specific ones (e.g. pc_smp_parse) can be removed.
It's also convenient to introduce more topology members to the generic
parser in the future. Related discussions can be found in [2] and [3].
[2] https://lore.kernel.org/qemu-devel/20210630115602.txmvmfe2jrzu7o67@gator.home/
[3] https://lore.kernel.org/qemu-devel/YPFN83pKBt7F97kW@redhat.com/

Changelogs:

v11->v12:
- add an extra commit 16/16 to make smp_parse() return a boolean (Philippe)
- split the machine.json Doc fix out into a separate patch 01/16 (Daniel)
- add R-bs for the series from Daniel and Philippe, thanks!
- v11: https://lore.kernel.org/qemu-devel/20210928035755.11684-1-wangyanan55@huawei.com/

v10->v11:
- only update patch 11/14
  use GString APIs to build the cpu topology hierarchy string (Daniel)
  refine the comments of smp_parse()
- v10: https://lore.kernel.org/qemu-devel/20210926084541.17352-1-wangyanan55@huawei.com/

v9->v10:
- rebased on latest upstream commit 11a1199846.
  there is no change of the patches in v10, except minor update
  in 08/14 to resolve merge conflict with master.
- To make this series more acceptable, drop the last two patches
  about SMP unit test, since the scalability of the test is not
  optimally designed after rethinking of it. So I will resend the
  test related patches separately after refining them.
- v9: https://lore.kernel.org/qemu-devel/20210910073025.16480-1-wangyanan55@huawei.com/

Yanan Wang (16):
  qapi/machine: Fix an incorrect comment of SMPConfiguration
  machine: Deprecate "parameter=0" SMP configurations
  machine: Minor refactor/fix for the smp parsers
  machine: Uniformly use maxcpus to calculate the omitted parameters
  machine: Set the value of cpus to match maxcpus if it's omitted
  machine: Improve the error reporting of smp parsing
  qtest/numa-test: Use detailed -smp CLIs in pc_dynamic_cpu_cfg
  qtest/numa-test: Use detailed -smp CLIs in test_def_cpu_split
  machine: Prefer cores over sockets in smp parsing since 6.2
  machine: Use ms instead of global current_machine in sanity-check
  machine: Tweak the order of topology members in struct CpuTopology
  machine: Make smp_parse generic enough for all arches
  machine: Remove smp_parse callback from MachineClass
  machine: Move smp_prefer_sockets to struct SMPCompatProps
  machine: Put all sanity-check in the generic SMP parser
  machine: Make smp_parse return a boolean

 docs/about/deprecated.rst  |  15 +++
 hw/arm/virt.c              |   1 +
 hw/core/machine.c          | 206 ++++++++++++++++++++++++++-----------
 hw/i386/pc.c               |  63 +-----------
 hw/i386/pc_piix.c          |   1 +
 hw/i386/pc_q35.c           |   1 +
 hw/ppc/spapr.c             |   1 +
 hw/s390x/s390-virtio-ccw.c |   1 +
 include/hw/boards.h        |  23 +++--
 qapi/machine.json          |   2 +-
 qemu-options.hx            |  24 +++--
 tests/qtest/numa-test.c    |   6 +-
 12 files changed, 201 insertions(+), 143 deletions(-)

--
2.19.1


Re: [PATCH v12 00/16] machine: smp parsing fixes and improvement
Posted by Paolo Bonzini 2 years, 7 months ago
On 29/09/21 04:58, Yanan Wang wrote:
> Hi,
> 
> This is a new version (v12) with minor update suggested by Daniel
> and Philippe. Two new commits (#1 and #16) are added. Thanks!

Queued, thanks!

Paolo

> Summary of v12:
> 1) Specifying a CPU topology parameter as zero was implicitly allowed
> but undocumented before, while now it's explicitly deprecated.
> 
> 2) Refactor/fixes of the smp parsers.
> 
> 3) For consistency, maxcpus is now uniformly used to calculate the
> omitted topology members.
> 
> 4) Improve the error reporting of the parsers.
> 
> 5) It's also suggested that we should start to prefer cores over sockets
> over threads on the newer machine types, which will make the computed
> virtual topology more reflective of the real hardware. Related discussion
> can be found in [1].
> [1] https://lore.kernel.org/qemu-devel/YNIgInK00yNNI4Dy@redhat.com/
> 
> 6) In order to reduce code duplication and ease the code maintenance,
> smp_parse() is converted into a generic enough parser for all arches,
> so that the arch-specific ones (e.g. pc_smp_parse) can be removed.
> It's also convenient to introduce more topology members to the generic
> parser in the future. Related discussions can be found in [2] and [3].
> [2] https://lore.kernel.org/qemu-devel/20210630115602.txmvmfe2jrzu7o67@gator.home/
> [3] https://lore.kernel.org/qemu-devel/YPFN83pKBt7F97kW@redhat.com/
> 
> Changelogs:
> 
> v11->v12:
> - add an extra commit 16/16 to make smp_parse() return a boolean (Philippe)
> - split the machine.json Doc fix out into a separate patch 01/16 (Daniel)
> - add R-bs for the series from Daniel and Philippe, thanks!
> - v11: https://lore.kernel.org/qemu-devel/20210928035755.11684-1-wangyanan55@huawei.com/
> 
> v10->v11:
> - only update patch 11/14
>    use GString APIs to build the cpu topology hierarchy string (Daniel)
>    refine the comments of smp_parse()
> - v10: https://lore.kernel.org/qemu-devel/20210926084541.17352-1-wangyanan55@huawei.com/
> 
> v9->v10:
> - rebased on latest upstream commit 11a1199846.
>    there is no change of the patches in v10, except minor update
>    in 08/14 to resolve merge conflict with master.
> - To make this series more acceptable, drop the last two patches
>    about SMP unit test, since the scalability of the test is not
>    optimally designed after rethinking of it. So I will resend the
>    test related patches separately after refining them.
> - v9: https://lore.kernel.org/qemu-devel/20210910073025.16480-1-wangyanan55@huawei.com/
> 
> Yanan Wang (16):
>    qapi/machine: Fix an incorrect comment of SMPConfiguration
>    machine: Deprecate "parameter=0" SMP configurations
>    machine: Minor refactor/fix for the smp parsers
>    machine: Uniformly use maxcpus to calculate the omitted parameters
>    machine: Set the value of cpus to match maxcpus if it's omitted
>    machine: Improve the error reporting of smp parsing
>    qtest/numa-test: Use detailed -smp CLIs in pc_dynamic_cpu_cfg
>    qtest/numa-test: Use detailed -smp CLIs in test_def_cpu_split
>    machine: Prefer cores over sockets in smp parsing since 6.2
>    machine: Use ms instead of global current_machine in sanity-check
>    machine: Tweak the order of topology members in struct CpuTopology
>    machine: Make smp_parse generic enough for all arches
>    machine: Remove smp_parse callback from MachineClass
>    machine: Move smp_prefer_sockets to struct SMPCompatProps
>    machine: Put all sanity-check in the generic SMP parser
>    machine: Make smp_parse return a boolean
> 
>   docs/about/deprecated.rst  |  15 +++
>   hw/arm/virt.c              |   1 +
>   hw/core/machine.c          | 206 ++++++++++++++++++++++++++-----------
>   hw/i386/pc.c               |  63 +-----------
>   hw/i386/pc_piix.c          |   1 +
>   hw/i386/pc_q35.c           |   1 +
>   hw/ppc/spapr.c             |   1 +
>   hw/s390x/s390-virtio-ccw.c |   1 +
>   include/hw/boards.h        |  23 +++--
>   qapi/machine.json          |   2 +-
>   qemu-options.hx            |  24 +++--
>   tests/qtest/numa-test.c    |   6 +-
>   12 files changed, 201 insertions(+), 143 deletions(-)
> 
> --
> 2.19.1
> 
> 


Re: [PATCH v12 00/16] machine: smp parsing fixes and improvement
Posted by Markus Armbruster 2 years, 7 months ago
Paolo Bonzini <pbonzini@redhat.com> writes:

> On 29/09/21 04:58, Yanan Wang wrote:
>> Hi,
>> This is a new version (v12) with minor update suggested by Daniel
>> and Philippe. Two new commits (#1 and #16) are added. Thanks!
>
> Queued, thanks!

Could you amend PATCH 16 to drop ERRP_GUARD() in machine_set_smp()?


Re: [PATCH v12 00/16] machine: smp parsing fixes and improvement
Posted by Paolo Bonzini 2 years, 7 months ago
On 29/09/21 16:46, Markus Armbruster wrote:
> Paolo Bonzini <pbonzini@redhat.com> writes:
> 
>> On 29/09/21 04:58, Yanan Wang wrote:
>>> Hi,
>>> This is a new version (v12) with minor update suggested by Daniel
>>> and Philippe. Two new commits (#1 and #16) are added. Thanks!
>>
>> Queued, thanks!
> 
> Could you amend PATCH 16 to drop ERRP_GUARD() in machine_set_smp()?
> 
> 

Sure.

Paolo


Re: [PATCH v12 00/16] machine: smp parsing fixes and improvement
Posted by wangyanan (Y) 2 years, 7 months ago
On 2021/9/29 22:57, Paolo Bonzini wrote:
> On 29/09/21 16:46, Markus Armbruster wrote:
>> Paolo Bonzini <pbonzini@redhat.com> writes:
>>
>>> On 29/09/21 04:58, Yanan Wang wrote:
>>>> Hi,
>>>> This is a new version (v12) with minor update suggested by Daniel
>>>> and Philippe. Two new commits (#1 and #16) are added. Thanks!
>>>
>>> Queued, thanks!
>>
>> Could you amend PATCH 16 to drop ERRP_GUARD() in machine_set_smp()?
>>
>>
>
> Sure.
>
>
Ah, sorry, I missed that one line. Thank you for fixing it locally.

Yanan
.