All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 00/16] machine: smp parsing fixes and improvement
@ 2021-08-19  3:10 Yanan Wang
  2021-08-19  3:10 ` [PATCH v6 01/16] docs/about/removed-features: Remove duplicated doc about -smp Yanan Wang
                   ` (15 more replies)
  0 siblings, 16 replies; 24+ messages in thread
From: Yanan Wang @ 2021-08-19  3:10 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Andrew Jones, Cornelia Huck,
	Daniel P . Berrangé,
	Eduardo Habkost, Pierre Morel, Michael S . Tsirkin, Pankaj Gupta,
	Richard Henderson, Greg Kurz, Halil Pasic, wanghaibin.wang,
	Thomas Huth, Paolo Bonzini, Yanan Wang, David Gibson

Rebased on upstream v6.1.0-rc4 with two more patches added.

This series introduces some fixes and improvement for the SMP parsing.
Behavior of specifying a CPU topology parameter as zero was implicitly
allowed but undocumented before, while now it's explicitly deprecated.
maxcpus is now uniformly used to calculate the omitted topology members.
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.

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.

A unit test for the SMP parsing is added. In the test, all possible
collections of the topology parameters and the corresponding expected
results are listed, including the valid and invalid ones. The preference
of sockets over cores and the preference of cores over sockets, and the
support of dies are also taken into consideration.

---

Changelogs:

v5->v6:
- deprecate "parameter=0" SMP configurations (patch #1 and #2 added)
- rebased on upstream v6.1.0-rc4
- v6: https://lore.kernel.org/qemu-devel/20210813023912.105880-1-wangyanan55@huawei.com/

v4->v5:
- refactor out the duplicated "threads == 0" case in patch #6 (Pankaj)
- pick up more R-b tags from v4 (thanks very much for the review!)
- v4: https://lore.kernel.org/qemu-devel/20210803080527.156556-1-wangyanan55@huawei.com/

v3->v4:
- put all the sanity check into the parser
- refine the unit test and add it back to the series
- add the R-b/A-b tags for the reviewed/acked patches
- v3: https://lore.kernel.org/qemu-devel/20210728034848.75228-1-wangyanan55@huawei.com/

v2->v3:
- apply the calculation improvement to smp_parse and pc_smp_parse
  separately and then convert the finally improved parsers into a
  generic one, so that patches can be reviewed separately.
- to ease review, drop the unit test part for a while until we have
  a good enough generic parser.
- send the patch "machine: Disallow specifying topology parameters as zero"
  for 6.1 separately.
- v2: https://lore.kernel.org/qemu-devel/20210719032043.25416-1-wangyanan55@huawei.com/

v1->v2:
- disallow "anything=0" in the smp configuration (Andrew)
- make function smp_parse() a generic helper for all arches
- improve the error reporting in the parser
- start to prefer cores over sockets since 6.2 (Daniel)
- add a unit test for the smp parsing (Daniel)
- v1: https://lore.kernel.org/qemu-devel/20210702100739.13672-1-wangyanan55@huawei.com/

---

Yanan Wang (16):
  docs/about/removed-features: Remove duplicated doc about -smp
  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
  hw: Add compat machines for 6.2
  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: Split out the smp parsing code
  tests/unit: Add a unit test for smp parsing

 MAINTAINERS                     |   2 +
 docs/about/deprecated.rst       |  15 +
 docs/about/removed-features.rst |  21 +-
 hw/arm/virt.c                   |  10 +-
 hw/core/machine-smp.c           | 200 ++++++++
 hw/core/machine.c               |  93 +---
 hw/core/meson.build             |   1 +
 hw/i386/pc.c                    |  66 +--
 hw/i386/pc_piix.c               |  15 +-
 hw/i386/pc_q35.c                |  14 +-
 hw/ppc/spapr.c                  |  16 +-
 hw/s390x/s390-virtio-ccw.c      |  15 +-
 include/hw/boards.h             |  27 +-
 include/hw/i386/pc.h            |   3 +
 qapi/machine.json               |   2 +-
 qemu-options.hx                 |  24 +-
 tests/unit/meson.build          |   1 +
 tests/unit/test-smp-parse.c     | 866 ++++++++++++++++++++++++++++++++
 18 files changed, 1205 insertions(+), 186 deletions(-)
 create mode 100644 hw/core/machine-smp.c
 create mode 100644 tests/unit/test-smp-parse.c

--
2.19.1



^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2021-08-20  2:00 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-19  3:10 [PATCH v6 00/16] machine: smp parsing fixes and improvement Yanan Wang
2021-08-19  3:10 ` [PATCH v6 01/16] docs/about/removed-features: Remove duplicated doc about -smp Yanan Wang
2021-08-19 11:26   ` Cornelia Huck
2021-08-19 12:20     ` wangyanan (Y)
2021-08-19 13:39   ` [PATCH, updated 1/2] " Yanan Wang
2021-08-19 13:50     ` [PATCH,updated " Cornelia Huck
2021-08-20  1:59       ` wangyanan (Y)
2021-08-19 13:39   ` [PATCH,updated 2/2] docs/about: Unify the subject format Yanan Wang
2021-08-19  3:10 ` [PATCH v6 02/16] machine: Deprecate "parameter=0" SMP configurations Yanan Wang
2021-08-19 11:42   ` Cornelia Huck
2021-08-19  3:10 ` [PATCH v6 03/16] machine: Minor refactor/fix for the smp parsers Yanan Wang
2021-08-19  3:10 ` [PATCH v6 04/16] machine: Uniformly use maxcpus to calculate the omitted parameters Yanan Wang
2021-08-19  3:10 ` [PATCH v6 05/16] machine: Set the value of cpus to match maxcpus if it's omitted Yanan Wang
2021-08-19  3:10 ` [PATCH v6 06/16] machine: Improve the error reporting of smp parsing Yanan Wang
2021-08-19  3:10 ` [PATCH v6 07/16] hw: Add compat machines for 6.2 Yanan Wang
2021-08-19  3:10 ` [PATCH v6 08/16] machine: Prefer cores over sockets in smp parsing since 6.2 Yanan Wang
2021-08-19  3:10 ` [PATCH v6 09/16] machine: Use ms instead of global current_machine in sanity-check Yanan Wang
2021-08-19  3:10 ` [PATCH v6 10/16] machine: Tweak the order of topology members in struct CpuTopology Yanan Wang
2021-08-19  3:10 ` [PATCH v6 11/16] machine: Make smp_parse generic enough for all arches Yanan Wang
2021-08-19  3:10 ` [PATCH v6 12/16] machine: Remove smp_parse callback from MachineClass Yanan Wang
2021-08-19  3:10 ` [PATCH v6 13/16] machine: Move smp_prefer_sockets to struct SMPCompatProps Yanan Wang
2021-08-19  3:10 ` [PATCH v6 14/16] machine: Put all sanity-check in the generic SMP parser Yanan Wang
2021-08-19  3:10 ` [PATCH v6 15/16] machine: Split out the smp parsing code Yanan Wang
2021-08-19  3:10 ` [PATCH v6 16/16] tests/unit: Add a unit test for smp parsing Yanan Wang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.