Fix weird uses of num_online_cpus().
This may be OK in archs with contiguous CPU numbers and without hotplug CPUs, but it sets a terrible example. And open-coding it like drivers/scsi/hpsa.c is just weird. BTRFS has a weird comparison with num_online_cpus() too, but since BTRFS just screwed up my test machines' root partition, I'm not touching it :) Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Reported-by: Oleg Drokin <green@linuxhacker.ru>
This commit is contained in:
parent
2f0f267ea0
commit
c8ed00107b
5 changed files with 8 additions and 10 deletions
|
@ -376,7 +376,7 @@ void __init smp_cpus_done(unsigned int max_cpus)
|
|||
if (!cpumask_equal(&cpu_callin_map, cpu_online_mask))
|
||||
BUG();
|
||||
|
||||
for (cpu_id = 0 ; cpu_id < num_online_cpus() ; cpu_id++)
|
||||
for_each_online_cpu(cpu_id)
|
||||
show_cpu_info(cpu_id);
|
||||
|
||||
/*
|
||||
|
|
|
@ -99,7 +99,7 @@ static inline int init_new_context(struct task_struct *tsk,
|
|||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < num_online_cpus(); i++)
|
||||
for_each_online_cpu(i)
|
||||
cpu_context(i, mm) = NO_CONTEXT;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -363,7 +363,7 @@ void flush_tlb_mm(struct mm_struct *mm)
|
|||
smp_call_function(flush_tlb_mm_ipi, (void *)mm, 1);
|
||||
} else {
|
||||
int i;
|
||||
for (i = 0; i < num_online_cpus(); i++)
|
||||
for_each_online_cpu(i)
|
||||
if (smp_processor_id() != i)
|
||||
cpu_context(i, mm) = 0;
|
||||
}
|
||||
|
@ -400,7 +400,7 @@ void flush_tlb_range(struct vm_area_struct *vma,
|
|||
smp_call_function(flush_tlb_range_ipi, (void *)&fd, 1);
|
||||
} else {
|
||||
int i;
|
||||
for (i = 0; i < num_online_cpus(); i++)
|
||||
for_each_online_cpu(i)
|
||||
if (smp_processor_id() != i)
|
||||
cpu_context(i, mm) = 0;
|
||||
}
|
||||
|
@ -443,7 +443,7 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
|
|||
smp_call_function(flush_tlb_page_ipi, (void *)&fd, 1);
|
||||
} else {
|
||||
int i;
|
||||
for (i = 0; i < num_online_cpus(); i++)
|
||||
for_each_online_cpu(i)
|
||||
if (smp_processor_id() != i)
|
||||
cpu_context(i, vma->vm_mm) = 0;
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ void smp_send_stop(void)
|
|||
int i;
|
||||
|
||||
printk(KERN_INFO "Stopping all CPUs...");
|
||||
for (i = 0; i < num_online_cpus(); i++) {
|
||||
for_each_online_cpu(i) {
|
||||
if (i == current_thread->cpu)
|
||||
continue;
|
||||
os_write_file(cpu_data[i].ipi_pipe[1], "S", 1);
|
||||
|
|
|
@ -6632,14 +6632,12 @@ static void fail_all_outstanding_cmds(struct ctlr_info *h)
|
|||
|
||||
static void set_lockup_detected_for_all_cpus(struct ctlr_info *h, u32 value)
|
||||
{
|
||||
int i, cpu;
|
||||
int cpu;
|
||||
|
||||
cpu = cpumask_first(cpu_online_mask);
|
||||
for (i = 0; i < num_online_cpus(); i++) {
|
||||
for_each_online_cpu(cpu) {
|
||||
u32 *lockup_detected;
|
||||
lockup_detected = per_cpu_ptr(h->lockup_detected, cpu);
|
||||
*lockup_detected = value;
|
||||
cpu = cpumask_next(cpu, cpu_online_mask);
|
||||
}
|
||||
wmb(); /* be sure the per-cpu variables are out to memory */
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue