qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Yanan Wang <wangyanan55@huawei.com>
To: <qemu-devel@nongnu.org>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Andrew Jones" <drjones@redhat.com>,
	"Cornelia Huck" <cohuck@redhat.com>,
	"Daniel P . Berrangé" <berrange@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Pierre Morel" <pmorel@linux.ibm.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	"Pankaj Gupta" <pankaj.gupta.linux@gmail.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Greg Kurz" <groug@kaod.org>, "Halil Pasic" <pasic@linux.ibm.com>,
	wanghaibin.wang@huawei.com, "Thomas Huth" <thuth@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Yanan Wang" <wangyanan55@huawei.com>,
	"David Gibson" <david@gibson.dropbear.id.au>
Subject: [PATCH v7 00/15] machine: smp parsing fixes and improvement
Date: Mon, 23 Aug 2021 20:27:49 +0800	[thread overview]
Message-ID: <20210823122804.7692-1-wangyanan55@huawei.com> (raw)

This new version is based on upstream v6.1.0-rc4.
Now all patches in the series have been reviewed (tagged with R-b/A-b).

Description:
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:

v6->v7:
- drop the two docs/about clean-up patches and they have been resent separately
- v7: https://lore.kernel.org/qemu-devel/20210819031027.41104-1-wangyanan55@huawei.com/

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 (15):
  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 +
 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 ++++++++++++++++++++++++++++++++++++
 17 files changed, 1201 insertions(+), 169 deletions(-)
 create mode 100644 hw/core/machine-smp.c
 create mode 100644 tests/unit/test-smp-parse.c

--
2.19.1



             reply	other threads:[~2021-08-23 12:31 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-23 12:27 Yanan Wang [this message]
2021-08-23 12:27 ` [PATCH v7 01/15] machine: Deprecate "parameter=0" SMP configurations Yanan Wang
2021-08-23 12:27 ` [PATCH v7 02/15] machine: Minor refactor/fix for the smp parsers Yanan Wang
2021-08-23 12:27 ` [PATCH v7 03/15] machine: Uniformly use maxcpus to calculate the omitted parameters Yanan Wang
2021-08-23 12:27 ` [PATCH v7 04/15] machine: Set the value of cpus to match maxcpus if it's omitted Yanan Wang
2021-08-23 12:27 ` [PATCH v7 05/15] machine: Improve the error reporting of smp parsing Yanan Wang
2021-08-23 13:17   ` Philippe Mathieu-Daudé
2021-08-24  4:51     ` wangyanan (Y)
2021-08-24  7:29       ` Philippe Mathieu-Daudé
2021-08-24  8:23         ` wangyanan (Y)
2021-08-23 12:27 ` [PATCH v7 06/15] hw: Add compat machines for 6.2 Yanan Wang
2021-08-23 12:27 ` [PATCH v7 07/15] machine: Prefer cores over sockets in smp parsing since 6.2 Yanan Wang
2021-08-23 12:27 ` [PATCH v7 08/15] machine: Use ms instead of global current_machine in sanity-check Yanan Wang
2021-08-23 12:27 ` [PATCH v7 09/15] machine: Tweak the order of topology members in struct CpuTopology Yanan Wang
2021-08-23 12:27 ` [PATCH v7 10/15] machine: Make smp_parse generic enough for all arches Yanan Wang
2021-08-23 13:19   ` Philippe Mathieu-Daudé
2021-08-23 12:28 ` [PATCH v7 11/15] machine: Remove smp_parse callback from MachineClass Yanan Wang
2021-08-23 12:28 ` [PATCH v7 12/15] machine: Move smp_prefer_sockets to struct SMPCompatProps Yanan Wang
2021-08-23 12:28 ` [PATCH v7 13/15] machine: Put all sanity-check in the generic SMP parser Yanan Wang
2021-08-23 12:28 ` [PATCH v7 14/15] machine: Split out the smp parsing code Yanan Wang
2021-08-23 12:28 ` [PATCH v7 15/15] tests/unit: Add a unit test for smp parsing Yanan Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210823122804.7692-1-wangyanan55@huawei.com \
    --to=wangyanan55@huawei.com \
    --cc=berrange@redhat.com \
    --cc=cohuck@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=drjones@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=groug@kaod.org \
    --cc=mst@redhat.com \
    --cc=pankaj.gupta.linux@gmail.com \
    --cc=pasic@linux.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=pmorel@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=thuth@redhat.com \
    --cc=wanghaibin.wang@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).