Skip to content

Commit c1d6105

Browse files
Ley Foon Tanpalmer-dabbelt
authored andcommitted
riscv: Move call to init_cpu_topology() to later initialization stage
If "capacity-dmips-mhz" is present in a CPU DT node, topology_parse_cpu_capacity() will fail to allocate memory. arm64, with which this code path is shared, does not call topology_parse_cpu_capacity() until later in boot where memory allocation is available. While "capacity-dmips-mhz" is not yet a valid property on RISC-V, invalid properties should be ignored rather than cause issues. Move init_cpu_topology(), which calls topology_parse_cpu_capacity(), to a later initialization stage, to match arm64. As a side effect of this change, RISC-V is "protected" from changes to core topology code that would work on arm64 where memory allocation is safe but on RISC-V isn't. Fixes: 03f11f0 ("RISC-V: Parse cpu topology during boot.") Reviewed-by: Conor Dooley <[email protected]> Reviewed-by: Andrew Jones <[email protected]> Signed-off-by: Ley Foon Tan <[email protected]> Link: https://lore.kernel.org/r/[email protected] [Palmer: use Conor's commit text] Link: https://lore.kernel.org/linux-riscv/[email protected]/T/#me592d4c8b9508642954839f0077288a353b0b9b2 Signed-off-by: Palmer Dabbelt <[email protected]>
1 parent ca02549 commit c1d6105

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

arch/riscv/kernel/smpboot.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ static DECLARE_COMPLETION(cpu_running);
3939

4040
void __init smp_prepare_boot_cpu(void)
4141
{
42-
init_cpu_topology();
4342
}
4443

4544
void __init smp_prepare_cpus(unsigned int max_cpus)
@@ -48,6 +47,8 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
4847
int ret;
4948
unsigned int curr_cpuid;
5049

50+
init_cpu_topology();
51+
5152
curr_cpuid = smp_processor_id();
5253
store_cpu_topology(curr_cpuid);
5354
numa_store_cpu_info(curr_cpuid);

0 commit comments

Comments
 (0)