diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-29 11:29:30 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-29 11:29:30 -0500 |
commit | 547598d3a91f11b1f802bf0b122f777c3c22f26d (patch) | |
tree | b2177817268babf6755e151b6e3c5d385d1748a7 /arch | |
parent | 5ad587283cc15f71bb0e9cb9e0933dd8ebd66e1c (diff) | |
parent | be71716e464f4ea38f08034dc666f2feb55535d9 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
[SPARC64]: Adjust kernel PC validation test in fault handler.
[SPARC64]: Loosen checks in exception table handling.
[SPARC64]: Fix section mismatch from kernel_map_range
[SPARC64]: Fix section mismatchs from dr_cpu_data
[SPARC]: Fix build in arch/sparc/kernel/led.c
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sparc/kernel/led.c | 3 | ||||
-rw-r--r-- | arch/sparc64/kernel/ds.c | 14 | ||||
-rw-r--r-- | arch/sparc64/kernel/mdesc.c | 2 | ||||
-rw-r--r-- | arch/sparc64/mm/fault.c | 14 | ||||
-rw-r--r-- | arch/sparc64/mm/init.c | 3 |
5 files changed, 16 insertions, 20 deletions
diff --git a/arch/sparc/kernel/led.c b/arch/sparc/kernel/led.c index 313d1620ae8e..59e9344e7a0d 100644 --- a/arch/sparc/kernel/led.c +++ b/arch/sparc/kernel/led.c | |||
@@ -3,6 +3,9 @@ | |||
3 | #include <linux/init.h> | 3 | #include <linux/init.h> |
4 | #include <linux/proc_fs.h> | 4 | #include <linux/proc_fs.h> |
5 | #include <linux/string.h> | 5 | #include <linux/string.h> |
6 | #include <linux/jiffies.h> | ||
7 | #include <linux/timer.h> | ||
8 | #include <linux/uaccess.h> | ||
6 | 9 | ||
7 | #include <asm/auxio.h> | 10 | #include <asm/auxio.h> |
8 | 11 | ||
diff --git a/arch/sparc64/kernel/ds.c b/arch/sparc64/kernel/ds.c index eeb5a2fc788d..bd76482077be 100644 --- a/arch/sparc64/kernel/ds.c +++ b/arch/sparc64/kernel/ds.c | |||
@@ -525,10 +525,10 @@ static void dr_cpu_mark(struct ds_data *resp, int cpu, int ncpus, | |||
525 | } | 525 | } |
526 | } | 526 | } |
527 | 527 | ||
528 | static int dr_cpu_configure(struct ds_info *dp, | 528 | static int __cpuinit dr_cpu_configure(struct ds_info *dp, |
529 | struct ds_cap_state *cp, | 529 | struct ds_cap_state *cp, |
530 | u64 req_num, | 530 | u64 req_num, |
531 | cpumask_t *mask) | 531 | cpumask_t *mask) |
532 | { | 532 | { |
533 | struct ds_data *resp; | 533 | struct ds_data *resp; |
534 | int resp_len, ncpus, cpu; | 534 | int resp_len, ncpus, cpu; |
@@ -623,9 +623,9 @@ static int dr_cpu_unconfigure(struct ds_info *dp, | |||
623 | return 0; | 623 | return 0; |
624 | } | 624 | } |
625 | 625 | ||
626 | static void dr_cpu_data(struct ds_info *dp, | 626 | static void __cpuinit dr_cpu_data(struct ds_info *dp, |
627 | struct ds_cap_state *cp, | 627 | struct ds_cap_state *cp, |
628 | void *buf, int len) | 628 | void *buf, int len) |
629 | { | 629 | { |
630 | struct ds_data *data = buf; | 630 | struct ds_data *data = buf; |
631 | struct dr_cpu_tag *tag = (struct dr_cpu_tag *) (data + 1); | 631 | struct dr_cpu_tag *tag = (struct dr_cpu_tag *) (data + 1); |
diff --git a/arch/sparc64/kernel/mdesc.c b/arch/sparc64/kernel/mdesc.c index 856659bb1311..910083589569 100644 --- a/arch/sparc64/kernel/mdesc.c +++ b/arch/sparc64/kernel/mdesc.c | |||
@@ -758,7 +758,7 @@ static void __devinit get_mondo_data(struct mdesc_handle *hp, u64 mp, | |||
758 | get_one_mondo_bits(val, &tb->nonresum_qmask, 2); | 758 | get_one_mondo_bits(val, &tb->nonresum_qmask, 2); |
759 | } | 759 | } |
760 | 760 | ||
761 | void __devinit mdesc_fill_in_cpu_data(cpumask_t mask) | 761 | void __cpuinit mdesc_fill_in_cpu_data(cpumask_t mask) |
762 | { | 762 | { |
763 | struct mdesc_handle *hp = mdesc_grab(); | 763 | struct mdesc_handle *hp = mdesc_grab(); |
764 | u64 mp; | 764 | u64 mp; |
diff --git a/arch/sparc64/mm/fault.c b/arch/sparc64/mm/fault.c index e2027f27c0fe..2650d0d33ac2 100644 --- a/arch/sparc64/mm/fault.c +++ b/arch/sparc64/mm/fault.c | |||
@@ -244,16 +244,8 @@ static void do_kernel_fault(struct pt_regs *regs, int si_code, int fault_code, | |||
244 | if (regs->tstate & TSTATE_PRIV) { | 244 | if (regs->tstate & TSTATE_PRIV) { |
245 | const struct exception_table_entry *entry; | 245 | const struct exception_table_entry *entry; |
246 | 246 | ||
247 | if (asi == ASI_P && (insn & 0xc0800000) == 0xc0800000) { | 247 | entry = search_exception_tables(regs->tpc); |
248 | if (insn & 0x2000) | 248 | if (entry) { |
249 | asi = (regs->tstate >> 24); | ||
250 | else | ||
251 | asi = (insn >> 5); | ||
252 | } | ||
253 | |||
254 | /* Look in asi.h: All _S asis have LS bit set */ | ||
255 | if ((asi & 0x1) && | ||
256 | (entry = search_exception_tables(regs->tpc))) { | ||
257 | regs->tpc = entry->fixup; | 249 | regs->tpc = entry->fixup; |
258 | regs->tnpc = regs->tpc + 4; | 250 | regs->tnpc = regs->tpc + 4; |
259 | return; | 251 | return; |
@@ -294,7 +286,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs) | |||
294 | unsigned long tpc = regs->tpc; | 286 | unsigned long tpc = regs->tpc; |
295 | 287 | ||
296 | /* Sanity check the PC. */ | 288 | /* Sanity check the PC. */ |
297 | if ((tpc >= KERNBASE && tpc < (unsigned long) _etext) || | 289 | if ((tpc >= KERNBASE && tpc < (unsigned long) __init_end) || |
298 | (tpc >= MODULES_VADDR && tpc < MODULES_END)) { | 290 | (tpc >= MODULES_VADDR && tpc < MODULES_END)) { |
299 | /* Valid, no problems... */ | 291 | /* Valid, no problems... */ |
300 | } else { | 292 | } else { |
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index 9e6bca266d88..b5c30416fdac 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c | |||
@@ -1010,7 +1010,8 @@ static struct linux_prom64_registers pall[MAX_BANKS] __initdata; | |||
1010 | static int pall_ents __initdata; | 1010 | static int pall_ents __initdata; |
1011 | 1011 | ||
1012 | #ifdef CONFIG_DEBUG_PAGEALLOC | 1012 | #ifdef CONFIG_DEBUG_PAGEALLOC |
1013 | static unsigned long kernel_map_range(unsigned long pstart, unsigned long pend, pgprot_t prot) | 1013 | static unsigned long __ref kernel_map_range(unsigned long pstart, |
1014 | unsigned long pend, pgprot_t prot) | ||
1014 | { | 1015 | { |
1015 | unsigned long vstart = PAGE_OFFSET + pstart; | 1016 | unsigned long vstart = PAGE_OFFSET + pstart; |
1016 | unsigned long vend = PAGE_OFFSET + pend; | 1017 | unsigned long vend = PAGE_OFFSET + pend; |