diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-12-04 03:07:19 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-04 03:07:19 -0500 |
commit | b8307db2477f9c551e54e0c7b643ea349a3349cd (patch) | |
tree | 88654f8bd73857bbd40f75013ce41d8882d16ce6 /arch/powerpc/kernel | |
parent | f0461d0146ee30927bc7efa2ae24ea8c6693b725 (diff) | |
parent | 061e41fdb5047b1fb161e89664057835935ca1d2 (diff) |
Merge commit 'v2.6.28-rc7' into tracing/core
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/cpu_setup_44x.S | 7 | ||||
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 8 | ||||
-rw-r--r-- | arch/powerpc/kernel/prom_parse.c | 7 | ||||
-rw-r--r-- | arch/powerpc/kernel/sysfs.c | 2 |
4 files changed, 20 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/entry_64.S b/arch/powerpc/kernel/entry_64.S index b00982e0d1ee..383ed6eb0085 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) |
59 | 1: std r10,0(r1) | 59 | 1: 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 bc1fb27368af..a11d68976dc8 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) { |