|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v5 0/4] xen/arm: Device Tree based CPU topology support
Hi Hirokazu, Please use the add_maintainers.pl script before sending to make sure the right maintainers are in copy of your patches otherwise some might miss your patches. https://xen.readthedocs.io/en/latest/contribute-xen/submit-patch.html#step-2-use-add-maintainers-pl-or-get-maintainer-pl Cheers Bertrand > On 10 Jul 2026, at 00:05, Hirokazu Takahashi <taka@xxxxxxxxxxxxx> wrote: > > Hello, > > This patch series introduces CPU topology support based on > Device-Tree and ACPI PPTT for ARM Xen. > > In v5, I added code to parse the ACPI PPTT and reflect it in the CPU > topology information. > > Future Work: > - Support for the "credit2_runqueue=cluster" option. > - CPU topology support for RISC-V and PPC (once SMP support is available). > > Changes in v5: > - Extracted CPU topology information from the ACPI PPTT. > - Corrected the erroneous use of CONFIG_CPU_TOPOLOGY to > CONFIG_GENERIC_CPU_TOPOLOGY. > > Changes in v4: > - Only display the CPU topology configuration prompt in common/Kconfig > if the architecture defines HAS_GENERIC_CPU_TOPOLOGY. > - Move the definition of the global 'cpu_topology' pointer to > common/cpu-topology.c. > - Update the Makefile to explicitly build objects as .init.o when all > functions and data within a file are annotated with __init/__initdata, > ensuring their memory is reclaimed after system initialization. > - Add an error log in the CPU-to-node mapping function for out-of-bounds > cases. > - Use ARRAY_SIZE() instead of raw macros when guarding array accesses. > - Rename variables and functions to avoid ambiguous or misleading terms: > - Avoid 'cpuid' to prevent confusion with x86 CPUID features/instructions. > - Avoid 'node' where it could be confused with a NUMA node, explicitly > renaming them to clarify they refer to a Device Tree node. > - Move local variable declarations into the narrowest possible scope. > - Replace the unsupported "%pOF" printk format specifier with "%s" and > explicit node name retrieval. > - Remove #include <dt-cpu-topology.h> from cpu-topology.h, and ensure > the header directly includes only what its definitions require. > - Remove #include <xen/device_tree.h> from dt-cpu-topology.h, replacing > it with a forward declaration of 'struct dt_device_node'. > - Use 'const' qualifiers for pointer declarations where the pointed-to > structure is not modified. > - Explicitly #include <asm/processor.h> in cpu-topology.h to guarantee > that arch-specific definitions of cpu_to_core() and cpu_to_socket() > take precedence over the generic fallbacks. > - Introduce inline initialization functions for cpu_sibling_mask and > cpu_core_mask in cpu-topology.h, providing separate variants for both > when CONFIG_GENERIC_CPU_TOPOLOGY is enabled and disabled. > > Changes in v3: > - Use (nr_cpu_ids - 1) as the maximum CPU ID here. The fix for the sparse > map mismatch issue on ARM Xen has been split out into a separate patch. > - Switch topology sibling masks to cpumask_var_t for dynamic allocation. > - Allow the system to keep running with a degraded fallback even if > the topology table allocation fails. > - Remove the temporary definitions of cpu_to_core() and cpu_to_socket() > from RISC-V and PPC processor.h. > - Minimize the use of #ifdef blocks, leveraging compiler Dead Code > Elimination (DCE) where possible. > - Clean up the code to follow the Xen coding style. Please let me know > if I missed any style nits! > - Verify successful builds across x86, RISC-V, and PPC environments. > > Changes in v2: > - Generate topology information even when ACPI is enabled. Note that > this is a temporary implementation and doesn't yet parse the PPTT > (Processor Properties Topology Table). > - Added support for cpu-map node in Device Tree that doesn't contain > explicit cluster node definitions. > > Changes in v1 from the previous series "Introduce Device Tree based NUMA > support for ARM Xen": > > 1. Optimized Memory Allocation: > The series now allocates only the minimum required memory area to manage > the essential data for the CPUs. > > 2. Flexible Device Tree Parsing: > The parsing logic no longer depends on the definition order of the 'cpu' > nodes and 'cpu-map' nodes in the Device Tree. They can now be read > correctly even if their orders do not match. > > 3. CPU Hotplug Readiness: > To support future CPU hotplug, the system assumes that inactive CPUs are > also described in the Device Tree. Xen will pre-load and generate the > topology information for these inactive CPUs during the boot phase so > it stays available in memory. > > Thank you, > Hirokazu Takahashi > > Hirokazu Takahashi (4): > xen/device-tree: Parse 'cpu-map' node for CPU topology exploration > xen/sched: Link CPU topology to scheduler > xen/sched: Make cpu_nr_siblings() architecture-specific > arm/acpi: Parse PPTT to initialize CPU topology > > xen/arch/arm/Kconfig | 1 + > xen/arch/arm/acpi/boot.c | 2 + > xen/arch/arm/include/asm/acpi.h | 2 + > xen/arch/arm/include/asm/processor.h | 4 - > xen/arch/arm/smpboot.c | 15 +- > xen/arch/ppc/include/asm/processor.h | 4 - > xen/arch/riscv/include/asm/processor.h | 4 - > xen/arch/x86/include/asm/processor.h | 1 + > xen/common/Kconfig | 15 + > xen/common/Makefile | 1 + > xen/common/cpu-topology.c | 62 ++++ > xen/common/device-tree/Makefile | 1 + > xen/common/device-tree/cpu-topology.c | 406 +++++++++++++++++++++++++ > xen/common/sched/credit2.c | 21 +- > xen/common/sysctl.c | 1 + > xen/drivers/acpi/Kconfig | 3 + > xen/drivers/acpi/Makefile | 1 + > xen/drivers/acpi/topology.c | 255 ++++++++++++++++ > xen/include/acpi/actbl3.h | 30 ++ > xen/include/xen/acpi.h | 18 ++ > xen/include/xen/cpu-topology.h | 83 +++++ > xen/include/xen/dt-cpu-topology.h | 29 ++ > 22 files changed, 923 insertions(+), 36 deletions(-) > create mode 100644 xen/common/cpu-topology.c > create mode 100644 xen/common/device-tree/cpu-topology.c > create mode 100644 xen/drivers/acpi/topology.c > create mode 100644 xen/include/xen/cpu-topology.h > create mode 100644 xen/include/xen/dt-cpu-topology.h > > -- > 2.43.0 > >
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |