aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2008-12-03 04:11:06 -0500
committerPaul Mackerras <paulus@samba.org>2008-12-03 04:11:06 -0500
commit527491885554002837b5742202adc0ab5f536e54 (patch)
tree6d9c44776e0b4368eccd414b92b957fac3c5a4c6 /arch/powerpc/kernel
parentcea555d384b85271035814c5adad23e6c7fc5d2a (diff)
parent2434bbb30e79468c49cff3cff6005236f55ed188 (diff)
Merge branch 'merge'
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r--arch/powerpc/kernel/cpu_setup_44x.S7
-rw-r--r--arch/powerpc/kernel/dma.c1
-rw-r--r--arch/powerpc/kernel/entry_64.S8
-rw-r--r--arch/powerpc/kernel/prom_parse.c7
-rw-r--r--arch/powerpc/kernel/sysfs.c2
5 files changed, 21 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/cpu_setup_44x.S b/arch/powerpc/kernel/cpu_setup_44x.S
index 80cac984d85d..31c18b52affb 100644
--- a/arch/powerpc/kernel/cpu_setup_44x.S
+++ b/arch/powerpc/kernel/cpu_setup_44x.S
@@ -34,7 +34,12 @@ _GLOBAL(__setup_cpu_440grx)
34 blr 34 blr
35_GLOBAL(__setup_cpu_460ex) 35_GLOBAL(__setup_cpu_460ex)
36_GLOBAL(__setup_cpu_460gt) 36_GLOBAL(__setup_cpu_460gt)
37 b __init_fpu_44x 37 mflr r4
38 bl __init_fpu_44x
39 bl __fixup_440A_mcheck
40 mtlr r4
41 blr
42
38_GLOBAL(__setup_cpu_440gx) 43_GLOBAL(__setup_cpu_440gx)
39_GLOBAL(__setup_cpu_440spe) 44_GLOBAL(__setup_cpu_440spe)
40 b __fixup_440A_mcheck 45 b __fixup_440A_mcheck
diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c
index 1562daf8839a..3a6eaa876ee1 100644
--- a/arch/powerpc/kernel/dma.c
+++ b/arch/powerpc/kernel/dma.c
@@ -75,6 +75,7 @@ static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl,
75 for_each_sg(sgl, sg, nents, i) { 75 for_each_sg(sgl, sg, nents, i) {
76 sg->dma_address = sg_phys(sg) + get_dma_direct_offset(dev); 76 sg->dma_address = sg_phys(sg) + get_dma_direct_offset(dev);
77 sg->dma_length = sg->length; 77 sg->dma_length = sg->length;
78 __dma_sync_page(sg_page(sg), sg->offset, sg->length, direction);
78 } 79 }
79 80
80 return nents; 81 return nents;
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index e6d52845854f..e0bcf9354286 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -57,12 +57,18 @@ system_call_common:
57 beq- 1f 57 beq- 1f
58 ld r1,PACAKSAVE(r13) 58 ld r1,PACAKSAVE(r13)
591: std r10,0(r1) 591: std r10,0(r1)
60 crclr so
61 std r11,_NIP(r1) 60 std r11,_NIP(r1)
62 std r12,_MSR(r1) 61 std r12,_MSR(r1)
63 std r0,GPR0(r1) 62 std r0,GPR0(r1)
64 std r10,GPR1(r1) 63 std r10,GPR1(r1)
65 ACCOUNT_CPU_USER_ENTRY(r10, r11) 64 ACCOUNT_CPU_USER_ENTRY(r10, r11)
65 /*
66 * This "crclr so" clears CR0.SO, which is the error indication on
67 * return from this system call. There must be no cmp instruction
68 * between it and the "mfcr r9" below, otherwise if XER.SO is set,
69 * CR0.SO will get set, causing all system calls to appear to fail.
70 */
71 crclr so
66 std r2,GPR2(r1) 72 std r2,GPR2(r1)
67 std r3,GPR3(r1) 73 std r3,GPR3(r1)
68 std r4,GPR4(r1) 74 std r4,GPR4(r1)
diff --git a/arch/powerpc/kernel/prom_parse.c b/arch/powerpc/kernel/prom_parse.c
index 2a1c02c56967..8c1335566089 100644
--- a/arch/powerpc/kernel/prom_parse.c
+++ b/arch/powerpc/kernel/prom_parse.c
@@ -250,8 +250,11 @@ int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq)
250 * parsing 250 * parsing
251 */ 251 */
252 dn = pci_device_to_OF_node(pdev); 252 dn = pci_device_to_OF_node(pdev);
253 if (dn) 253 if (dn) {
254 return of_irq_map_one(dn, 0, out_irq); 254 rc = of_irq_map_one(dn, 0, out_irq);
255 if (!rc)
256 return rc;
257 }
255 258
256 /* Ok, we don't, time to have fun. Let's start by building up an 259 /* Ok, we don't, time to have fun. Let's start by building up an
257 * interrupt spec. we assume #interrupt-cells is 1, which is standard 260 * interrupt spec. we assume #interrupt-cells is 1, which is standard
diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c
index 86a2ffccef25..20885a38237a 100644
--- a/arch/powerpc/kernel/sysfs.c
+++ b/arch/powerpc/kernel/sysfs.c
@@ -717,9 +717,11 @@ static void unregister_cpu_online(unsigned int cpu)
717 717
718 BUG_ON(!c->hotpluggable); 718 BUG_ON(!c->hotpluggable);
719 719
720#ifdef CONFIG_PPC64
720 if (!firmware_has_feature(FW_FEATURE_ISERIES) && 721 if (!firmware_has_feature(FW_FEATURE_ISERIES) &&
721 cpu_has_feature(CPU_FTR_SMT)) 722 cpu_has_feature(CPU_FTR_SMT))
722 sysdev_remove_file(s, &attr_smt_snooze_delay); 723 sysdev_remove_file(s, &attr_smt_snooze_delay);
724#endif
723 725
724 /* PMC stuff */ 726 /* PMC stuff */
725 switch (cur_cpu_spec->pmc_type) { 727 switch (cur_cpu_spec->pmc_type) {