On Wed, Feb 21, 2024 at 01:41:35PM +0100, Markus Armbruster wrote: > Date: Wed, 21 Feb 2024 13:41:35 +0100 > From: Markus Armbruster <armbru@xxxxxxxxxx> > Subject: Re: [PATCH v8 00/21] Introduce smp.modules for x86 in QEMU > > Zhao Liu <zhao1.liu@xxxxxxxxxxxxxxx> writes: > > > From: Zhao Liu <zhao1.liu@xxxxxxxxx> > > > > Hi list, > > > > This is the our v8 patch series, rebased on the master branch at the > > commit 11be70677c70 ("Merge tag 'pull-vfio-20240129' of > > https://github.com/legoater/qemu into staging"). > > > > Compared with v7 [1], v8 mainly has the following changes: > > * Introduced smp.modules for x86 instead of reusing current > > smp.clusters. > > * Reworte the CPUID[0x1F] encoding. > > > > Given the code change, I dropped the most previously gotten tags > > (Acked-by/Reviewed-by/Tested-by from Michael & Babu, thanks for your > > previous reviews and tests!) in v8. > > > > With the description of the new modules added to x86 arch code in v7 [1] > > cover letter, the following sections are mainly the description of > > the newly added smp.modules (since v8) as supplement. > > > > Welcome your comments! > > > > > > Why We Need a New CPU Topology Level > > ==================================== > > > > For the discussion in v7 about whether we should reuse current > > smp.clusters for x86 module, the core point is what's the essential > > differences between x86 module and general cluster. > > > > Since, cluster (for ARM/riscv) lacks a comprehensive and rigorous > > hardware definition, and judging from the description of smp.clusters > > [2] when it was introduced by QEMU, x86 module is very similar to > > general smp.clusters: they are all a layer above existing core level > > to organize the physical cores and share L2 cache. > > > > However, after digging deeper into the description and use cases of > > cluster in the device tree [3], I realized that the essential > > difference between clusters and modules is that cluster is an extremely > > abstract concept: > > * Cluster supports nesting though currently QEMU doesn't support > > nested cluster topology. However, modules will not support nesting. > > * Also due to nesting, there is great flexibility in sharing resources > > on clusters, rather than narrowing cluster down to sharing L2 (and > > L3 tags) as the lowest topology level that contains cores. > > * Flexible nesting of cluster allows it to correspond to any level > > between the x86 package and core. > > > > Based on the above considerations, and in order to eliminate the naming > > confusion caused by the mapping between general cluster and x86 module > > in v7, we now formally introduce smp.modules as the new topology level. > > > > > > Where to Place Module in Existing Topology Levels > > ================================================= > > > > The module is, in existing hardware practice, the lowest layer that > > contains the core, while the cluster is able to have a higher topological > > scope than the module due to its nesting. > > > > Thereby, we place the module between the cluster and the core, viz: > > > > drawer/book/socket/die/cluster/module/core/thread > > > > > > Additional Consideration on CPU Topology > > ======================================== > > > > Beyond this patchset, nowadays, different arches have different topology > > requirements, and maintaining arch-agnostic general topology in SMP > > becomes to be an increasingly difficult thing due to differences in > > sharing resources and special flexibility (e.g., nesting): > > * It becomes difficult to put together all CPU topology hierarchies of > > different arches to define complete topology order. > > * It also becomes complex to ensure the correctness of the topology > > calculations. > > - Now the max_cpus is calculated by multiplying all topology > > levels, and too many topology levels can easily cause omissions. > > > > Maybe we should consider implementing arch-specfic topology hierarchies. > > > > > > [1]: https://lore.kernel.org/qemu-devel/20240108082727.420817-1-zhao1.liu@xxxxxxxxxxxxxxx/ > > [2]: https://lists.gnu.org/archive/html/qemu-devel/2023-02/msg04051.html > > [3]: https://www.kernel.org/doc/Documentation/devicetree/bindings/cpu/cpu-topology.txt > > Have you considered putting an abridged version of your lovely rationale > into a commit message, so it can be found later more easily? > Sure, I'll. Thanks for helping me improve my commit message. ;-) Regards, Zhao