Commit 18d7f152 authored by Lorenzo Pieralisi's avatar Lorenzo Pieralisi Committed by Russell King

ARM: 7763/1: kernel: fix __cpu_logical_map default initialization

The __cpu_logical_map array is statically initialized to 0, which is a valid
MPIDR value. To prevent issues with the current implementation, this patch
defines an MPIDR_INVALID value, and statically initializes the
__cpu_logical_map[] array to it. Entries in the arm_dt_init_cpu_maps()
tmp_map array used to stash DT reg properties while parsing DT are initialized
with the MPIDR_INVALID value as well for consistency.
Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: default avatarNicolas Pitre <nico@linaro.org>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 1ba9bf0a
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
#define MPIDR_HWID_BITMASK 0xFFFFFF #define MPIDR_HWID_BITMASK 0xFFFFFF
#define MPIDR_INVALID (~MPIDR_HWID_BITMASK)
#define MPIDR_LEVEL_BITS 8 #define MPIDR_LEVEL_BITS 8
#define MPIDR_LEVEL_MASK ((1 << MPIDR_LEVEL_BITS) - 1) #define MPIDR_LEVEL_MASK ((1 << MPIDR_LEVEL_BITS) - 1)
......
...@@ -49,7 +49,7 @@ static inline int cache_ops_need_broadcast(void) ...@@ -49,7 +49,7 @@ static inline int cache_ops_need_broadcast(void)
/* /*
* Logical CPU mapping. * Logical CPU mapping.
*/ */
extern int __cpu_logical_map[]; extern u32 __cpu_logical_map[];
#define cpu_logical_map(cpu) __cpu_logical_map[cpu] #define cpu_logical_map(cpu) __cpu_logical_map[cpu]
/* /*
* Retrieve logical cpu index corresponding to a given MPIDR[23:0] * Retrieve logical cpu index corresponding to a given MPIDR[23:0]
......
...@@ -82,7 +82,7 @@ void __init arm_dt_init_cpu_maps(void) ...@@ -82,7 +82,7 @@ void __init arm_dt_init_cpu_maps(void)
u32 i, j, cpuidx = 1; u32 i, j, cpuidx = 1;
u32 mpidr = is_smp() ? read_cpuid_mpidr() & MPIDR_HWID_BITMASK : 0; u32 mpidr = is_smp() ? read_cpuid_mpidr() & MPIDR_HWID_BITMASK : 0;
u32 tmp_map[NR_CPUS] = { [0 ... NR_CPUS-1] = UINT_MAX }; u32 tmp_map[NR_CPUS] = { [0 ... NR_CPUS-1] = MPIDR_INVALID };
bool bootcpu_valid = false; bool bootcpu_valid = false;
cpus = of_find_node_by_path("/cpus"); cpus = of_find_node_by_path("/cpus");
......
...@@ -444,7 +444,7 @@ void notrace cpu_init(void) ...@@ -444,7 +444,7 @@ void notrace cpu_init(void)
: "r14"); : "r14");
} }
int __cpu_logical_map[NR_CPUS]; u32 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = MPIDR_INVALID };
void __init smp_setup_processor_id(void) void __init smp_setup_processor_id(void)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment