| From e44ef891e9e68b6ce7d3fd3bac73b7d5433050ae Mon Sep 17 00:00:00 2001 |
| From: Sudeep Holla <sudeep.holla@arm.com> |
| Date: Wed, 8 Jan 2014 18:24:21 +0100 |
| Subject: ARM: 7934/1: DT/kernel: fix arch_match_cpu_phys_id to avoid erroneous match |
| |
| From: Sudeep Holla <sudeep.holla@arm.com> |
| |
| 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 | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/arm/kernel/devtree.c |
| +++ b/arch/arm/kernel/devtree.c |
| @@ -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); |
| } |
| |
| /** |