diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-03 18:16:33 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-03 18:16:33 -0400 |
commit | 22da317629bad23816f3fa26d657fb46e7af21c7 (patch) | |
tree | ea9e97afd3aca46c16b77468ef91e5e39d36ed7f /arch/powerpc/kernel | |
parent | 3e847423bf029c2170692c75580a856debed617b (diff) | |
parent | 67439b76f29cb278bb3412fc873b980fc65110c9 (diff) |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:
[POWERPC] Fixes for the SLB shadow buffer code
[POWERPC] Fix a compile warning in powermac/feature.c
[POWERPC] Fix a compile warning in pci_32.c
[POWERPC] Fix parse_drconf_memory() for 64-bit start addresses
[POWERPC] Fix num_cpus calculation in smp_call_function_map()
[POWERPC] ps3: Fix section mismatch in ps3/setup.c
[POWERPC] spufs: Fix affinity after introduction of node_allowed() calls
[POWERPC] Fix special PTE code for secondary hash bucket
[POWERPC] Expand RPN field to 34 bits when using 64k pages
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 3 | ||||
-rw-r--r-- | arch/powerpc/kernel/pci_32.c | 5 | ||||
-rw-r--r-- | arch/powerpc/kernel/smp.c | 9 |
3 files changed, 10 insertions, 7 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 9ef28da2c7fe..952eba6701f4 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -389,8 +389,11 @@ BEGIN_FTR_SECTION | |||
389 | ld r9,PACA_SLBSHADOWPTR(r13) | 389 | ld r9,PACA_SLBSHADOWPTR(r13) |
390 | li r12,0 | 390 | li r12,0 |
391 | std r12,SLBSHADOW_STACKESID(r9) /* Clear ESID */ | 391 | std r12,SLBSHADOW_STACKESID(r9) /* Clear ESID */ |
392 | eieio | ||
392 | std r7,SLBSHADOW_STACKVSID(r9) /* Save VSID */ | 393 | std r7,SLBSHADOW_STACKVSID(r9) /* Save VSID */ |
394 | eieio | ||
393 | std r0,SLBSHADOW_STACKESID(r9) /* Save ESID */ | 395 | std r0,SLBSHADOW_STACKESID(r9) /* Save ESID */ |
396 | eieio | ||
394 | 397 | ||
395 | slbie r6 | 398 | slbie r6 |
396 | slbie r6 /* Workaround POWER5 < DD2.1 issue */ | 399 | slbie r6 /* Workaround POWER5 < DD2.1 issue */ |
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c index cd35c969bb28..04a3109ae3c6 100644 --- a/arch/powerpc/kernel/pci_32.c +++ b/arch/powerpc/kernel/pci_32.c | |||
@@ -581,8 +581,11 @@ pcibios_assign_resources(void) | |||
581 | if ((r->flags & IORESOURCE_UNSET) && r->end && | 581 | if ((r->flags & IORESOURCE_UNSET) && r->end && |
582 | (!ppc_md.pcibios_enable_device_hook || | 582 | (!ppc_md.pcibios_enable_device_hook || |
583 | !ppc_md.pcibios_enable_device_hook(dev, 1))) { | 583 | !ppc_md.pcibios_enable_device_hook(dev, 1))) { |
584 | int rc; | ||
585 | |||
584 | r->flags &= ~IORESOURCE_UNSET; | 586 | r->flags &= ~IORESOURCE_UNSET; |
585 | pci_assign_resource(dev, idx); | 587 | rc = pci_assign_resource(dev, idx); |
588 | BUG_ON(rc); | ||
586 | } | 589 | } |
587 | } | 590 | } |
588 | 591 | ||
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index 087c92f2a3eb..1ea43160f543 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c | |||
@@ -212,11 +212,6 @@ int smp_call_function_map(void (*func) (void *info), void *info, int nonatomic, | |||
212 | atomic_set(&data.finished, 0); | 212 | atomic_set(&data.finished, 0); |
213 | 213 | ||
214 | spin_lock(&call_lock); | 214 | spin_lock(&call_lock); |
215 | /* Must grab online cpu count with preempt disabled, otherwise | ||
216 | * it can change. */ | ||
217 | num_cpus = num_online_cpus() - 1; | ||
218 | if (!num_cpus) | ||
219 | goto done; | ||
220 | 215 | ||
221 | /* remove 'self' from the map */ | 216 | /* remove 'self' from the map */ |
222 | if (cpu_isset(smp_processor_id(), map)) | 217 | if (cpu_isset(smp_processor_id(), map)) |
@@ -224,7 +219,9 @@ int smp_call_function_map(void (*func) (void *info), void *info, int nonatomic, | |||
224 | 219 | ||
225 | /* sanity check the map, remove any non-online processors. */ | 220 | /* sanity check the map, remove any non-online processors. */ |
226 | cpus_and(map, map, cpu_online_map); | 221 | cpus_and(map, map, cpu_online_map); |
227 | if (cpus_empty(map)) | 222 | |
223 | num_cpus = cpus_weight(map); | ||
224 | if (!num_cpus) | ||
228 | goto done; | 225 | goto done; |
229 | 226 | ||
230 | call_data = &data; | 227 | call_data = &data; |