mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
[PATCH] more for_each_cpu() conversions
When we stop allocating percpu memory for not-possible CPUs we must not touch the percpu data for not-possible CPUs at all. The correct way of doing this is to test cpu_possible() or to use for_each_cpu(). This patch is a kernel-wide sweep of all instances of NR_CPUS. I found very few instances of this bug, if any. But the patch converts lots of open-coded test to use the preferred helper macros. Cc: Mikael Starvik <[email protected]> Cc: David Howells <[email protected]> Acked-by: Kyle McMartin <[email protected]> Cc: Anton Blanchard <[email protected]> Cc: Benjamin Herrenschmidt <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Martin Schwidefsky <[email protected]> Cc: Heiko Carstens <[email protected]> Cc: Paul Mundt <[email protected]> Cc: "David S. Miller" <[email protected]> Cc: William Lee Irwin III <[email protected]> Cc: Andi Kleen <[email protected]> Cc: Christian Zankel <[email protected]> Cc: Philippe Elie <[email protected]> Cc: Nathan Scott <[email protected]> Cc: Jens Axboe <[email protected]> Cc: Eric Dumazet <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
63872f87a1
commit
394e3902c5
42 changed files with 137 additions and 222 deletions
|
|
@ -68,9 +68,8 @@ int show_interrupts(struct seq_file *p, void *v)
|
|||
|
||||
if (i == 0) {
|
||||
seq_printf(p, " ");
|
||||
for (j=0; j<NR_CPUS; j++)
|
||||
if (cpu_online(j))
|
||||
seq_printf(p, "CPU%d ",j);
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "CPU%d ",j);
|
||||
seq_putc(p, '\n');
|
||||
}
|
||||
|
||||
|
|
@ -83,9 +82,8 @@ int show_interrupts(struct seq_file *p, void *v)
|
|||
#ifndef CONFIG_SMP
|
||||
seq_printf(p, "%10u ", kstat_irqs(i));
|
||||
#else
|
||||
for (j = 0; j < NR_CPUS; j++)
|
||||
if (cpu_online(j))
|
||||
seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
|
||||
#endif
|
||||
seq_printf(p, " %14s", irq_desc[i].handler->typename);
|
||||
seq_printf(p, " %s", action->name);
|
||||
|
|
|
|||
|
|
@ -167,8 +167,8 @@ int smp_call_function (void (*func) (void *info), void *info, int retry,
|
|||
mb();
|
||||
|
||||
/* Send a message to all other CPUs and wait for them to respond */
|
||||
for (i = 0; i < NR_CPUS; i++)
|
||||
if (cpu_online(i) && i != cpu)
|
||||
for_each_online_cpu(i)
|
||||
if (i != cpu)
|
||||
core_send_ipi(i, SMP_CALL_FUNCTION);
|
||||
|
||||
/* Wait for response */
|
||||
|
|
|
|||
|
|
@ -88,12 +88,9 @@ static inline int find_level(cpuid_t *cpunum, int irq)
|
|||
{
|
||||
int cpu, i;
|
||||
|
||||
for (cpu = 0; cpu <= NR_CPUS; cpu++) {
|
||||
for_each_online_cpu(cpu) {
|
||||
struct slice_data *si = cpu_data[cpu].data;
|
||||
|
||||
if (!cpu_online(cpu))
|
||||
continue;
|
||||
|
||||
for (i = BASE_PCI_IRQ; i < LEVELS_PER_SLICE; i++)
|
||||
if (si->level_to_irq[i] == irq) {
|
||||
*cpunum = cpu;
|
||||
|
|
|
|||
Loading…
Reference in a new issue