aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-08-03 18:16:33 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-08-03 18:16:33 -0400
commit22da317629bad23816f3fa26d657fb46e7af21c7 (patch)
treeea9e97afd3aca46c16b77468ef91e5e39d36ed7f /arch/powerpc/kernel
parent3e847423bf029c2170692c75580a856debed617b (diff)
parent67439b76f29cb278bb3412fc873b980fc65110c9 (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.S3
-rw-r--r--arch/powerpc/kernel/pci_32.c5
-rw-r--r--arch/powerpc/kernel/smp.c9
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;