Browse Source

powerpc/mpic: Limit NR_CPUS loop to 32 bit

mpic_physmask was looping NR_CPUS times over a mask that was passed as
a u32. Since mpic is architecturaly limited to 32 physical cpus, clamp
the logical cpus to 32 when compiling (we could also clamp at runtime
to nr_cpu_ids).

Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Milton Miller 14 years ago
parent
commit
ebc0421510
1 changed files with 1 additions and 1 deletions
  1. 1 1
      arch/powerpc/sysdev/mpic.c

+ 1 - 1
arch/powerpc/sysdev/mpic.c

@@ -631,7 +631,7 @@ static inline u32 mpic_physmask(u32 cpumask)
 	int i;
 	int i;
 	u32 mask = 0;
 	u32 mask = 0;
 
 
-	for (i = 0; i < NR_CPUS; ++i, cpumask >>= 1)
+	for (i = 0; i < min(32, NR_CPUS); ++i, cpumask >>= 1)
 		mask |= (cpumask & 1) << get_hard_smp_processor_id(i);
 		mask |= (cpumask & 1) << get_hard_smp_processor_id(i);
 	return mask;
 	return mask;
 }
 }