Messages in this thread | | | Date | Mon, 07 Nov 2022 22:11:17 +1000 | From | "Nicholas Piggin" <> | Subject | Re: [PATCH 1/2] powerpc: export the CPU node count |
| |
On Sat Oct 29, 2022 at 2:00 AM AEST, Laurent Dufour wrote: > At boot time, the FDT is parsed to compute the number of CPUs. > In addition count the number of CPU nodes and export it. > > This is useful when building the FDT for a kexeced kernel since we need to > take in account the CPU node added since the boot time during CPU hotplug > operations.
It would be nice if it just realloced memory in this case, but that looks like a bigger change.
But these patches look okay to me, if you can solve the compile bug.
Thanks, Nick
> > Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com> > --- > arch/powerpc/include/asm/kexec_ranges.h | 2 ++ > arch/powerpc/kernel/prom.c | 4 ++++ > 2 files changed, 6 insertions(+) > > diff --git a/arch/powerpc/include/asm/kexec_ranges.h b/arch/powerpc/include/asm/kexec_ranges.h > index f83866a19e87..bf35d00ddd09 100644 > --- a/arch/powerpc/include/asm/kexec_ranges.h > +++ b/arch/powerpc/include/asm/kexec_ranges.h > @@ -22,4 +22,6 @@ int add_rtas_mem_range(struct crash_mem **mem_ranges); > int add_opal_mem_range(struct crash_mem **mem_ranges); > int add_reserved_mem_ranges(struct crash_mem **mem_ranges); > > +extern unsigned int boot_cpu_node_count; > + > #endif /* _ASM_POWERPC_KEXEC_RANGES_H */ > diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c > index 1eed87d954ba..d326148fd5a4 100644 > --- a/arch/powerpc/kernel/prom.c > +++ b/arch/powerpc/kernel/prom.c > @@ -56,6 +56,7 @@ > #include <asm/drmem.h> > #include <asm/ultravisor.h> > #include <asm/prom.h> > +#include <asm/kexec_ranges.h> > > #include <mm/mmu_decl.h> > > @@ -72,6 +73,7 @@ int __initdata iommu_is_off; > int __initdata iommu_force_on; > unsigned long tce_alloc_start, tce_alloc_end; > u64 ppc64_rma_size; > +unsigned int boot_cpu_node_count __ro_after_init; > #endif > static phys_addr_t first_memblock_size; > static int __initdata boot_cpu_count; > @@ -335,6 +337,8 @@ static int __init early_init_dt_scan_cpus(unsigned long node, > if (type == NULL || strcmp(type, "cpu") != 0) > return 0; > > + boot_cpu_node_count++; > + > /* Get physical cpuid */ > intserv = of_get_flat_dt_prop(node, "ibm,ppc-interrupt-server#s", &len); > if (!intserv) > -- > 2.38.1
| |