diff options
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 6 | ||||
-rw-r--r-- | arch/powerpc/kernel/firmware.c | 4 | ||||
-rw-r--r-- | arch/powerpc/kernel/pci_64.c | 1 | ||||
-rw-r--r-- | arch/powerpc/kernel/process.c | 4 | ||||
-rw-r--r-- | arch/powerpc/kernel/signal_64.c | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/sysfs.c | 6 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/inode.c | 4 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/setup.c | 4 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/firmware.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/hvconsole.c | 5 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/ras.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/setup.c | 2 |
12 files changed, 29 insertions, 13 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 1060155d84c3..19ad5c6b1818 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -617,6 +617,12 @@ _GLOBAL(enter_rtas) | |||
617 | mfsrr1 r10 | 617 | mfsrr1 r10 |
618 | std r10,_SRR1(r1) | 618 | std r10,_SRR1(r1) |
619 | 619 | ||
620 | /* Temporary workaround to clear CR until RTAS can be modified to | ||
621 | * ignore all bits. | ||
622 | */ | ||
623 | li r0,0 | ||
624 | mtcr r0 | ||
625 | |||
620 | /* There is no way it is acceptable to get here with interrupts enabled, | 626 | /* There is no way it is acceptable to get here with interrupts enabled, |
621 | * check it with the asm equivalent of WARN_ON | 627 | * check it with the asm equivalent of WARN_ON |
622 | */ | 628 | */ |
diff --git a/arch/powerpc/kernel/firmware.c b/arch/powerpc/kernel/firmware.c index 4d37a3cb80f6..0bfe9061720a 100644 --- a/arch/powerpc/kernel/firmware.c +++ b/arch/powerpc/kernel/firmware.c | |||
@@ -14,7 +14,9 @@ | |||
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include <linux/config.h> | 16 | #include <linux/config.h> |
17 | #include <linux/module.h> | ||
17 | 18 | ||
18 | #include <asm/firmware.h> | 19 | #include <asm/firmware.h> |
19 | 20 | ||
20 | unsigned long ppc64_firmware_features; | 21 | unsigned long powerpc_firmware_features; |
22 | EXPORT_SYMBOL_GPL(powerpc_firmware_features); | ||
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c index ba92bab7cc2c..4c4449be81ce 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c | |||
@@ -78,6 +78,7 @@ int global_phb_number; /* Global phb counter */ | |||
78 | 78 | ||
79 | /* Cached ISA bridge dev. */ | 79 | /* Cached ISA bridge dev. */ |
80 | struct pci_dev *ppc64_isabridge_dev = NULL; | 80 | struct pci_dev *ppc64_isabridge_dev = NULL; |
81 | EXPORT_SYMBOL_GPL(ppc64_isabridge_dev); | ||
81 | 82 | ||
82 | static void fixup_broken_pcnet32(struct pci_dev* dev) | 83 | static void fixup_broken_pcnet32(struct pci_dev* dev) |
83 | { | 84 | { |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index c6e81bbd615c..706090c99f47 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -770,7 +770,7 @@ out: | |||
770 | return error; | 770 | return error; |
771 | } | 771 | } |
772 | 772 | ||
773 | static int validate_sp(unsigned long sp, struct task_struct *p, | 773 | int validate_sp(unsigned long sp, struct task_struct *p, |
774 | unsigned long nbytes) | 774 | unsigned long nbytes) |
775 | { | 775 | { |
776 | unsigned long stack_page = (unsigned long)task_stack_page(p); | 776 | unsigned long stack_page = (unsigned long)task_stack_page(p); |
@@ -808,6 +808,8 @@ static int validate_sp(unsigned long sp, struct task_struct *p, | |||
808 | #define FRAME_MARKER 2 | 808 | #define FRAME_MARKER 2 |
809 | #endif | 809 | #endif |
810 | 810 | ||
811 | EXPORT_SYMBOL(validate_sp); | ||
812 | |||
811 | unsigned long get_wchan(struct task_struct *p) | 813 | unsigned long get_wchan(struct task_struct *p) |
812 | { | 814 | { |
813 | unsigned long ip, sp; | 815 | unsigned long ip, sp; |
diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c index 82ec2f3f6713..27f65b95184d 100644 --- a/arch/powerpc/kernel/signal_64.c +++ b/arch/powerpc/kernel/signal_64.c | |||
@@ -212,7 +212,7 @@ static inline void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs | |||
212 | /* Default to using normal stack */ | 212 | /* Default to using normal stack */ |
213 | newsp = regs->gpr[1]; | 213 | newsp = regs->gpr[1]; |
214 | 214 | ||
215 | if (ka->sa.sa_flags & SA_ONSTACK) { | 215 | if ((ka->sa.sa_flags & SA_ONSTACK) && current->sas_ss_size) { |
216 | if (! on_sig_stack(regs->gpr[1])) | 216 | if (! on_sig_stack(regs->gpr[1])) |
217 | newsp = (current->sas_ss_sp + current->sas_ss_size); | 217 | newsp = (current->sas_ss_sp + current->sas_ss_size); |
218 | } | 218 | } |
diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c index 0f0c3a9ae2e5..aca2f09cd842 100644 --- a/arch/powerpc/kernel/sysfs.c +++ b/arch/powerpc/kernel/sysfs.c | |||
@@ -65,11 +65,11 @@ static int __init smt_setup(void) | |||
65 | unsigned int cpu; | 65 | unsigned int cpu; |
66 | 66 | ||
67 | if (!cpu_has_feature(CPU_FTR_SMT)) | 67 | if (!cpu_has_feature(CPU_FTR_SMT)) |
68 | return 1; | 68 | return -ENODEV; |
69 | 69 | ||
70 | options = find_path_device("/options"); | 70 | options = find_path_device("/options"); |
71 | if (!options) | 71 | if (!options) |
72 | return 1; | 72 | return -ENODEV; |
73 | 73 | ||
74 | val = (unsigned int *)get_property(options, "ibm,smt-snooze-delay", | 74 | val = (unsigned int *)get_property(options, "ibm,smt-snooze-delay", |
75 | NULL); | 75 | NULL); |
@@ -78,7 +78,7 @@ static int __init smt_setup(void) | |||
78 | per_cpu(smt_snooze_delay, cpu) = *val; | 78 | per_cpu(smt_snooze_delay, cpu) = *val; |
79 | } | 79 | } |
80 | 80 | ||
81 | return 1; | 81 | return 0; |
82 | } | 82 | } |
83 | __initcall(smt_setup); | 83 | __initcall(smt_setup); |
84 | 84 | ||
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index dc06305eecf5..61e70d35d808 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -442,7 +442,7 @@ static struct file_system_type spufs_type = { | |||
442 | .kill_sb = kill_litter_super, | 442 | .kill_sb = kill_litter_super, |
443 | }; | 443 | }; |
444 | 444 | ||
445 | static int spufs_init(void) | 445 | static int __init spufs_init(void) |
446 | { | 446 | { |
447 | int ret; | 447 | int ret; |
448 | ret = -ENOMEM; | 448 | ret = -ENOMEM; |
@@ -472,7 +472,7 @@ out: | |||
472 | } | 472 | } |
473 | module_init(spufs_init); | 473 | module_init(spufs_init); |
474 | 474 | ||
475 | static void spufs_exit(void) | 475 | static void __exit spufs_exit(void) |
476 | { | 476 | { |
477 | spu_sched_exit(); | 477 | spu_sched_exit(); |
478 | unregister_spu_syscalls(&spufs_calls); | 478 | unregister_spu_syscalls(&spufs_calls); |
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c index fa4550611c11..155aa690e4bb 100644 --- a/arch/powerpc/platforms/iseries/setup.c +++ b/arch/powerpc/platforms/iseries/setup.c | |||
@@ -680,8 +680,8 @@ static int __init iseries_probe(int platform) | |||
680 | if (PLATFORM_ISERIES_LPAR != platform) | 680 | if (PLATFORM_ISERIES_LPAR != platform) |
681 | return 0; | 681 | return 0; |
682 | 682 | ||
683 | ppc64_firmware_features |= FW_FEATURE_ISERIES; | 683 | powerpc_firmware_features |= FW_FEATURE_ISERIES; |
684 | ppc64_firmware_features |= FW_FEATURE_LPAR; | 684 | powerpc_firmware_features |= FW_FEATURE_LPAR; |
685 | 685 | ||
686 | return 1; | 686 | return 1; |
687 | } | 687 | } |
diff --git a/arch/powerpc/platforms/pseries/firmware.c b/arch/powerpc/platforms/pseries/firmware.c index 989f4bc136cb..c01d8f0cbe6d 100644 --- a/arch/powerpc/platforms/pseries/firmware.c +++ b/arch/powerpc/platforms/pseries/firmware.c | |||
@@ -91,7 +91,7 @@ void __init fw_feature_init(void) | |||
91 | continue; | 91 | continue; |
92 | 92 | ||
93 | /* we have a match */ | 93 | /* we have a match */ |
94 | ppc64_firmware_features |= | 94 | powerpc_firmware_features |= |
95 | firmware_features_table[i].val; | 95 | firmware_features_table[i].val; |
96 | break; | 96 | break; |
97 | } | 97 | } |
diff --git a/arch/powerpc/platforms/pseries/hvconsole.c b/arch/powerpc/platforms/pseries/hvconsole.c index 138e128a3886..ba6befd96636 100644 --- a/arch/powerpc/platforms/pseries/hvconsole.c +++ b/arch/powerpc/platforms/pseries/hvconsole.c | |||
@@ -62,6 +62,11 @@ int hvc_put_chars(uint32_t vtermno, const char *buf, int count) | |||
62 | unsigned long *lbuf = (unsigned long *) buf; | 62 | unsigned long *lbuf = (unsigned long *) buf; |
63 | long ret; | 63 | long ret; |
64 | 64 | ||
65 | |||
66 | /* hcall will ret H_PARAMETER if 'count' exceeds firmware max.*/ | ||
67 | if (count > MAX_VIO_PUT_CHARS) | ||
68 | count = MAX_VIO_PUT_CHARS; | ||
69 | |||
65 | ret = plpar_hcall_norets(H_PUT_TERM_CHAR, vtermno, count, lbuf[0], | 70 | ret = plpar_hcall_norets(H_PUT_TERM_CHAR, vtermno, count, lbuf[0], |
66 | lbuf[1]); | 71 | lbuf[1]); |
67 | if (ret == H_Success) | 72 | if (ret == H_Success) |
diff --git a/arch/powerpc/platforms/pseries/ras.c b/arch/powerpc/platforms/pseries/ras.c index b046bcf7443d..9639c66b453d 100644 --- a/arch/powerpc/platforms/pseries/ras.c +++ b/arch/powerpc/platforms/pseries/ras.c | |||
@@ -132,7 +132,7 @@ static int __init init_ras_IRQ(void) | |||
132 | of_node_put(np); | 132 | of_node_put(np); |
133 | } | 133 | } |
134 | 134 | ||
135 | return 1; | 135 | return 0; |
136 | } | 136 | } |
137 | __initcall(init_ras_IRQ); | 137 | __initcall(init_ras_IRQ); |
138 | 138 | ||
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index 213bf983242f..f736234db9b2 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c | |||
@@ -385,7 +385,7 @@ static int __init pSeries_probe(int platform) | |||
385 | */ | 385 | */ |
386 | 386 | ||
387 | if (platform == PLATFORM_PSERIES_LPAR) | 387 | if (platform == PLATFORM_PSERIES_LPAR) |
388 | ppc64_firmware_features |= FW_FEATURE_LPAR; | 388 | powerpc_firmware_features |= FW_FEATURE_LPAR; |
389 | 389 | ||
390 | return 1; | 390 | return 1; |
391 | } | 391 | } |