Skip to content

Commit

Permalink
[PATCH] for_each_possible_cpu: sparc64
Browse files Browse the repository at this point in the history
for_each_cpu() actually iterates across all possible CPUs.  We've had mistakes
in the past where people were using for_each_cpu() where they should have been
iterating across only online or present CPUs.  This is inefficient and
possibly buggy.

We're renaming for_each_cpu() to for_each_possible_cpu() to avoid this in the
future.

This patch replaces for_each_cpu with for_each_possible_cpu.
for sparc64.

Signed-off-by: KAMEZAWA Hiroyuki <[email protected]>
Acked-by: "David S. Miller" <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
hkamezawa authored and Linus Torvalds committed Apr 11, 2006
1 parent fff8efe commit a283a52
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 6 deletions.
2 changes: 1 addition & 1 deletion arch/sparc64/kernel/pci_sun4v.c
Original file line number Diff line number Diff line change
Expand Up @@ -1092,7 +1092,7 @@ void sun4v_pci_init(int node, char *model_name)
}
}

for_each_cpu(i) {
for_each_possible_cpu(i) {
unsigned long page = get_zeroed_page(GFP_ATOMIC);

if (!page)
Expand Down
2 changes: 1 addition & 1 deletion arch/sparc64/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,7 @@ static int __init topology_init(void)
while (!cpu_find_by_instance(ncpus_probed, NULL, NULL))
ncpus_probed++;

for_each_cpu(i) {
for_each_possible_cpu(i) {
struct cpu *p = kzalloc(sizeof(*p), GFP_KERNEL);
if (p) {
register_cpu(p, i, NULL);
Expand Down
6 changes: 3 additions & 3 deletions arch/sparc64/kernel/smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1280,7 +1280,7 @@ int setup_profiling_timer(unsigned int multiplier)
return -EINVAL;

spin_lock_irqsave(&prof_setup_lock, flags);
for_each_cpu(i)
for_each_possible_cpu(i)
prof_multiplier(i) = multiplier;
current_tick_offset = (timer_tick_offset / multiplier);
spin_unlock_irqrestore(&prof_setup_lock, flags);
Expand Down Expand Up @@ -1308,12 +1308,12 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
}
}

for_each_cpu(i) {
for_each_possible_cpu(i) {
if (tlb_type == hypervisor) {
int j;

/* XXX get this mapping from machine description */
for_each_cpu(j) {
for_each_possible_cpu(j) {
if ((j >> 2) == (i >> 2))
cpu_set(j, cpu_sibling_map[i]);
}
Expand Down
2 changes: 1 addition & 1 deletion include/asm-sparc64/percpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ register unsigned long __local_per_cpu_offset asm("g5");
#define percpu_modcopy(pcpudst, src, size) \
do { \
unsigned int __i; \
for_each_cpu(__i) \
for_each_possible_cpu(__i) \
memcpy((pcpudst)+__per_cpu_offset(__i), \
(src), (size)); \
} while (0)
Expand Down

0 comments on commit a283a52

Please sign in to comment.