ARM: 7934/1: DT/kernel: fix arch_match_cpu_phys_id to avoid erroneous match
authorSudeep Holla <sudeep.holla@arm.com>
Wed, 8 Jan 2014 17:24:21 +0000 (18:24 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 25 Jan 2014 16:49:29 +0000 (08:49 -0800)
commit e44ef891e9e68b6ce7d3fd3bac73b7d5433050ae upstream.

The MPIDR contains specific bitfields(MPIDR.Aff{2..0}) which uniquely
identify a CPU, in addition to some non-identifying information and
reserved bits. The ARM cpu binding defines the 'reg' property to only
contain the affinity bits, and any cpu nodes with other bits set in
their 'reg' entry are skipped.

As such it is not necessary to mask the phys_id with MPIDR_HWID_BITMASK,
and doing so could lead to matching erroneous CPU nodes in the device
tree. This patch removes the masking of the physical identifier.

Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm/kernel/devtree.c

index f35906b3d8c9eb5b7ebcb915c1d6ec77585aef3e..41960fb0daff2b207d14417894b3b0efac6491f1 100644 (file)
@@ -171,7 +171,7 @@ void __init arm_dt_init_cpu_maps(void)
 
 bool arch_match_cpu_phys_id(int cpu, u64 phys_id)
 {
-       return (phys_id & MPIDR_HWID_BITMASK) == cpu_logical_map(cpu);
+       return phys_id == cpu_logical_map(cpu);
 }
 
 /**