Message ID | 20210910073025.16480-1-wangyanan55@huawei.com |
---|---|
Headers | show |
Series | machine: smp parsing fixes and improvement | expand |
ping... Hello maintainers, Is this series mature enough to be accepted? Now each one patch in this version has been Reviewd/Acked. Considering that I have another patchset on list that depends on this series, and AFAIK there is another s390 patch series caring about the SMP changes too, so I would appreciate your feedback. If there is still something to fix I can do the work in time. Sorry for bothering. 😉 Thanks, Yanan On 2021/9/10 15:30, Yanan Wang wrote: > Hello, > > This is a new version v9 rebased on latest upstream commit bd662023e6. > There are two more patches (#6 and #7) added to optimize qtest/numa-test > to avoid affect from -smp parsing changes. Please review. > > This series has been tested locally on x86_64 and aarch64 machines, > which are available for me. > > Description: > This series introduces some fixes and improvement for the SMP parsing. > > 1) Specifying a CPU topology parameter as zero was implicitly allowed > but undocumented before, while now it's explicitly deprecated. > > 2) To keep consistency, maxcpus is now uniformly used to calculate the > omitted topology members. > > 3) Improve the error reporting. > > 4) 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/ > > 5) 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/ > > 6) 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: > > v8->v9: > - rebased on latest upstream commit bd662023e6, only updated patch 01/16 > to resolve code conflict, no change in the others. > - added two more patches (06/16 and 07/16) to optimize qtest/numa-test.c > to avoid affect from -smp parsing changes. > - v8: https://lore.kernel.org/qemu-devel/20210902110330.18036-1-wangyanan55@huawei.com/ > > v7->v8: > - merge patch (hw: Add compat machines for 6.2) separately > - rebased on upstream commit 079b1252e9 > - v7: https://lore.kernel.org/qemu-devel/20210823122804.7692-1-wangyanan55@huawei.com/ > > v6->v7: > - drop the two docs/about clean-up patches and they have been resent separately > - v6: 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 > - v5: 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): > 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 CLI 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: 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 | 1 + > hw/core/machine-smp.c | 200 +++++++++ > hw/core/machine.c | 90 +--- > hw/core/meson.build | 1 + > 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 | 24 +- > qapi/machine.json | 2 +- > qemu-options.hx | 24 +- > tests/qtest/numa-test.c | 6 +- > tests/unit/meson.build | 1 + > tests/unit/test-smp-parse.c | 866 ++++++++++++++++++++++++++++++++++++ > 17 files changed, 1134 insertions(+), 165 deletions(-) > create mode 100644 hw/core/machine-smp.c > create mode 100644 tests/unit/test-smp-parse.c > > -- > 2.23.0 > > .