diff options
Diffstat (limited to 'arch/arm/kernel/setup.c')
| -rw-r--r-- | arch/arm/kernel/setup.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index a15848f8b0f..f739fb1d217 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -426,13 +426,14 @@ int __cpu_logical_map[NR_CPUS];  void __init smp_setup_processor_id(void)  {  	int i; -	u32 cpu = is_smp() ? read_cpuid_mpidr() & 0xff : 0; +	u32 mpidr = is_smp() ? read_cpuid_mpidr() & MPIDR_HWID_BITMASK : 0; +	u32 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);  	cpu_logical_map(0) = cpu; -	for (i = 1; i < NR_CPUS; ++i) +	for (i = 1; i < nr_cpu_ids; ++i)  		cpu_logical_map(i) = i == cpu ? 0 : i; -	printk(KERN_INFO "Booting Linux on physical CPU %d\n", cpu); +	printk(KERN_INFO "Booting Linux on physical CPU 0x%x\n", mpidr);  }  static void __init setup_processor(void) @@ -758,6 +759,7 @@ void __init setup_arch(char **cmdline_p)  	unflatten_device_tree(); +	arm_dt_init_cpu_maps();  #ifdef CONFIG_SMP  	if (is_smp()) {  		smp_set_ops(mdesc->smp);  |