diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-09 22:39:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-09 22:39:03 -0400 |
commit | a24d025a08c90355bd39e95a34dbc4c806ff1d25 (patch) | |
tree | 26491d935ad27c5a3e5322121152b2843e14a5c9 /arch/mips/kernel | |
parent | 3ee72ca99288f1de95ec9c570e43f531c8799f06 (diff) | |
parent | 8742cd23471635f8b069bf9a6806200a77397ddb (diff) |
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus: (29 commits)
MIPS: Call oops_enter, oops_exit in die
staging/octeon: Software should check the checksum of no tcp/udp packets
MIPS: Octeon: Enable C0_UserLocal probing.
MIPS: No branches in delay slots for huge pages in handle_tlbl
MIPS: Don't clobber CP0_STATUS value for CONFIG_MIPS_MT_SMTC
MIPS: Octeon: Select CONFIG_HOLES_IN_ZONE
MIPS: PM: Use struct syscore_ops instead of sysdevs for PM (v2)
MIPS: Compat: Use 32-bit wrapper for compat_sys_futex.
MIPS: Do not use EXTRA_CFLAGS
MIPS: Alchemy: DB1200: Disable cascade IRQ in handler
SERIAL: Lantiq: Set timeout in uart_port
MIPS: Lantiq: Fix setting the PCI bus speed on AR9
MIPS: Lantiq: Fix external interrupt sources
MIPS: tlbex: Fix build error in R3000 code.
MIPS: Alchemy: Include Au1100 in PM code.
MIPS: Alchemy: Fix typo in MAC0 registration
MIPS: MSP71xx: Fix build error.
MIPS: Handle __put_user() sleeping.
MIPS: Allow forced irq threading
MIPS: i8259: Mark cascade interrupt non-threaded
...
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r-- | arch/mips/kernel/ftrace.c | 39 | ||||
-rw-r--r-- | arch/mips/kernel/i8259.c | 3 | ||||
-rw-r--r-- | arch/mips/kernel/linux32.c | 7 | ||||
-rw-r--r-- | arch/mips/kernel/scall64-n32.S | 2 | ||||
-rw-r--r-- | arch/mips/kernel/scall64-o32.S | 2 | ||||
-rw-r--r-- | arch/mips/kernel/signal.c | 3 | ||||
-rw-r--r-- | arch/mips/kernel/traps.c | 16 | ||||
-rw-r--r-- | arch/mips/kernel/vpe.c | 2 |
8 files changed, 47 insertions, 27 deletions
diff --git a/arch/mips/kernel/ftrace.c b/arch/mips/kernel/ftrace.c index feb8021a305f..6a2d758dd8e9 100644 --- a/arch/mips/kernel/ftrace.c +++ b/arch/mips/kernel/ftrace.c | |||
@@ -19,6 +19,26 @@ | |||
19 | 19 | ||
20 | #include <asm-generic/sections.h> | 20 | #include <asm-generic/sections.h> |
21 | 21 | ||
22 | #if defined(KBUILD_MCOUNT_RA_ADDRESS) && defined(CONFIG_32BIT) | ||
23 | #define MCOUNT_OFFSET_INSNS 5 | ||
24 | #else | ||
25 | #define MCOUNT_OFFSET_INSNS 4 | ||
26 | #endif | ||
27 | |||
28 | /* | ||
29 | * Check if the address is in kernel space | ||
30 | * | ||
31 | * Clone core_kernel_text() from kernel/extable.c, but doesn't call | ||
32 | * init_kernel_text() for Ftrace doesn't trace functions in init sections. | ||
33 | */ | ||
34 | static inline int in_kernel_space(unsigned long ip) | ||
35 | { | ||
36 | if (ip >= (unsigned long)_stext && | ||
37 | ip <= (unsigned long)_etext) | ||
38 | return 1; | ||
39 | return 0; | ||
40 | } | ||
41 | |||
22 | #ifdef CONFIG_DYNAMIC_FTRACE | 42 | #ifdef CONFIG_DYNAMIC_FTRACE |
23 | 43 | ||
24 | #define JAL 0x0c000000 /* jump & link: ip --> ra, jump to target */ | 44 | #define JAL 0x0c000000 /* jump & link: ip --> ra, jump to target */ |
@@ -54,20 +74,6 @@ static inline void ftrace_dyn_arch_init_insns(void) | |||
54 | #endif | 74 | #endif |
55 | } | 75 | } |
56 | 76 | ||
57 | /* | ||
58 | * Check if the address is in kernel space | ||
59 | * | ||
60 | * Clone core_kernel_text() from kernel/extable.c, but doesn't call | ||
61 | * init_kernel_text() for Ftrace doesn't trace functions in init sections. | ||
62 | */ | ||
63 | static inline int in_kernel_space(unsigned long ip) | ||
64 | { | ||
65 | if (ip >= (unsigned long)_stext && | ||
66 | ip <= (unsigned long)_etext) | ||
67 | return 1; | ||
68 | return 0; | ||
69 | } | ||
70 | |||
71 | static int ftrace_modify_code(unsigned long ip, unsigned int new_code) | 77 | static int ftrace_modify_code(unsigned long ip, unsigned int new_code) |
72 | { | 78 | { |
73 | int faulted; | 79 | int faulted; |
@@ -112,11 +118,6 @@ static int ftrace_modify_code(unsigned long ip, unsigned int new_code) | |||
112 | * 1: offset = 4 instructions | 118 | * 1: offset = 4 instructions |
113 | */ | 119 | */ |
114 | 120 | ||
115 | #if defined(KBUILD_MCOUNT_RA_ADDRESS) && defined(CONFIG_32BIT) | ||
116 | #define MCOUNT_OFFSET_INSNS 5 | ||
117 | #else | ||
118 | #define MCOUNT_OFFSET_INSNS 4 | ||
119 | #endif | ||
120 | #define INSN_B_1F (0x10000000 | MCOUNT_OFFSET_INSNS) | 121 | #define INSN_B_1F (0x10000000 | MCOUNT_OFFSET_INSNS) |
121 | 122 | ||
122 | int ftrace_make_nop(struct module *mod, | 123 | int ftrace_make_nop(struct module *mod, |
diff --git a/arch/mips/kernel/i8259.c b/arch/mips/kernel/i8259.c index 5c74eb797f08..32b397b646ee 100644 --- a/arch/mips/kernel/i8259.c +++ b/arch/mips/kernel/i8259.c | |||
@@ -229,7 +229,7 @@ static void i8259A_shutdown(void) | |||
229 | */ | 229 | */ |
230 | if (i8259A_auto_eoi >= 0) { | 230 | if (i8259A_auto_eoi >= 0) { |
231 | outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ | 231 | outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ |
232 | outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-1 */ | 232 | outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */ |
233 | } | 233 | } |
234 | } | 234 | } |
235 | 235 | ||
@@ -295,6 +295,7 @@ static void init_8259A(int auto_eoi) | |||
295 | static struct irqaction irq2 = { | 295 | static struct irqaction irq2 = { |
296 | .handler = no_action, | 296 | .handler = no_action, |
297 | .name = "cascade", | 297 | .name = "cascade", |
298 | .flags = IRQF_NO_THREAD, | ||
298 | }; | 299 | }; |
299 | 300 | ||
300 | static struct resource pic1_io_resource = { | 301 | static struct resource pic1_io_resource = { |
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c index 876a75cc376f..922a554cd108 100644 --- a/arch/mips/kernel/linux32.c +++ b/arch/mips/kernel/linux32.c | |||
@@ -349,3 +349,10 @@ SYSCALL_DEFINE6(32_fanotify_mark, int, fanotify_fd, unsigned int, flags, | |||
349 | return sys_fanotify_mark(fanotify_fd, flags, merge_64(a3, a4), | 349 | return sys_fanotify_mark(fanotify_fd, flags, merge_64(a3, a4), |
350 | dfd, pathname); | 350 | dfd, pathname); |
351 | } | 351 | } |
352 | |||
353 | SYSCALL_DEFINE6(32_futex, u32 __user *, uaddr, int, op, u32, val, | ||
354 | struct compat_timespec __user *, utime, u32 __user *, uaddr2, | ||
355 | u32, val3) | ||
356 | { | ||
357 | return compat_sys_futex(uaddr, op, val, utime, uaddr2, val3); | ||
358 | } | ||
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S index f9296e894e46..6de1f598346e 100644 --- a/arch/mips/kernel/scall64-n32.S +++ b/arch/mips/kernel/scall64-n32.S | |||
@@ -315,7 +315,7 @@ EXPORT(sysn32_call_table) | |||
315 | PTR sys_fremovexattr | 315 | PTR sys_fremovexattr |
316 | PTR sys_tkill | 316 | PTR sys_tkill |
317 | PTR sys_ni_syscall | 317 | PTR sys_ni_syscall |
318 | PTR compat_sys_futex | 318 | PTR sys_32_futex |
319 | PTR compat_sys_sched_setaffinity /* 6195 */ | 319 | PTR compat_sys_sched_setaffinity /* 6195 */ |
320 | PTR compat_sys_sched_getaffinity | 320 | PTR compat_sys_sched_getaffinity |
321 | PTR sys_cacheflush | 321 | PTR sys_cacheflush |
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S index 4d7c9827706f..1d813169e453 100644 --- a/arch/mips/kernel/scall64-o32.S +++ b/arch/mips/kernel/scall64-o32.S | |||
@@ -441,7 +441,7 @@ sys_call_table: | |||
441 | PTR sys_fremovexattr /* 4235 */ | 441 | PTR sys_fremovexattr /* 4235 */ |
442 | PTR sys_tkill | 442 | PTR sys_tkill |
443 | PTR sys_sendfile64 | 443 | PTR sys_sendfile64 |
444 | PTR compat_sys_futex | 444 | PTR sys_32_futex |
445 | PTR compat_sys_sched_setaffinity | 445 | PTR compat_sys_sched_setaffinity |
446 | PTR compat_sys_sched_getaffinity /* 4240 */ | 446 | PTR compat_sys_sched_getaffinity /* 4240 */ |
447 | PTR compat_sys_io_setup | 447 | PTR compat_sys_io_setup |
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c index dbbe0ce48d89..f8524003676a 100644 --- a/arch/mips/kernel/signal.c +++ b/arch/mips/kernel/signal.c | |||
@@ -8,6 +8,7 @@ | |||
8 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. | 8 | * Copyright (C) 1999, 2000 Silicon Graphics, Inc. |
9 | */ | 9 | */ |
10 | #include <linux/cache.h> | 10 | #include <linux/cache.h> |
11 | #include <linux/irqflags.h> | ||
11 | #include <linux/sched.h> | 12 | #include <linux/sched.h> |
12 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
13 | #include <linux/personality.h> | 14 | #include <linux/personality.h> |
@@ -658,6 +659,8 @@ static void do_signal(struct pt_regs *regs) | |||
658 | asmlinkage void do_notify_resume(struct pt_regs *regs, void *unused, | 659 | asmlinkage void do_notify_resume(struct pt_regs *regs, void *unused, |
659 | __u32 thread_info_flags) | 660 | __u32 thread_info_flags) |
660 | { | 661 | { |
662 | local_irq_enable(); | ||
663 | |||
661 | /* deal with pending signal delivery */ | 664 | /* deal with pending signal delivery */ |
662 | if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK)) | 665 | if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK)) |
663 | do_signal(regs); | 666 | do_signal(regs); |
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index b7517e3abc85..cbea618af0b4 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/bug.h> | 14 | #include <linux/bug.h> |
15 | #include <linux/compiler.h> | 15 | #include <linux/compiler.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/kernel.h> | ||
17 | #include <linux/mm.h> | 18 | #include <linux/mm.h> |
18 | #include <linux/module.h> | 19 | #include <linux/module.h> |
19 | #include <linux/sched.h> | 20 | #include <linux/sched.h> |
@@ -364,21 +365,26 @@ static int regs_to_trapnr(struct pt_regs *regs) | |||
364 | return (regs->cp0_cause >> 2) & 0x1f; | 365 | return (regs->cp0_cause >> 2) & 0x1f; |
365 | } | 366 | } |
366 | 367 | ||
367 | static DEFINE_SPINLOCK(die_lock); | 368 | static DEFINE_RAW_SPINLOCK(die_lock); |
368 | 369 | ||
369 | void __noreturn die(const char *str, struct pt_regs *regs) | 370 | void __noreturn die(const char *str, struct pt_regs *regs) |
370 | { | 371 | { |
371 | static int die_counter; | 372 | static int die_counter; |
372 | int sig = SIGSEGV; | 373 | int sig = SIGSEGV; |
373 | #ifdef CONFIG_MIPS_MT_SMTC | 374 | #ifdef CONFIG_MIPS_MT_SMTC |
374 | unsigned long dvpret = dvpe(); | 375 | unsigned long dvpret; |
375 | #endif /* CONFIG_MIPS_MT_SMTC */ | 376 | #endif /* CONFIG_MIPS_MT_SMTC */ |
376 | 377 | ||
378 | oops_enter(); | ||
379 | |||
377 | if (notify_die(DIE_OOPS, str, regs, 0, regs_to_trapnr(regs), SIGSEGV) == NOTIFY_STOP) | 380 | if (notify_die(DIE_OOPS, str, regs, 0, regs_to_trapnr(regs), SIGSEGV) == NOTIFY_STOP) |
378 | sig = 0; | 381 | sig = 0; |
379 | 382 | ||
380 | console_verbose(); | 383 | console_verbose(); |
381 | spin_lock_irq(&die_lock); | 384 | raw_spin_lock_irq(&die_lock); |
385 | #ifdef CONFIG_MIPS_MT_SMTC | ||
386 | dvpret = dvpe(); | ||
387 | #endif /* CONFIG_MIPS_MT_SMTC */ | ||
382 | bust_spinlocks(1); | 388 | bust_spinlocks(1); |
383 | #ifdef CONFIG_MIPS_MT_SMTC | 389 | #ifdef CONFIG_MIPS_MT_SMTC |
384 | mips_mt_regdump(dvpret); | 390 | mips_mt_regdump(dvpret); |
@@ -387,7 +393,9 @@ void __noreturn die(const char *str, struct pt_regs *regs) | |||
387 | printk("%s[#%d]:\n", str, ++die_counter); | 393 | printk("%s[#%d]:\n", str, ++die_counter); |
388 | show_registers(regs); | 394 | show_registers(regs); |
389 | add_taint(TAINT_DIE); | 395 | add_taint(TAINT_DIE); |
390 | spin_unlock_irq(&die_lock); | 396 | raw_spin_unlock_irq(&die_lock); |
397 | |||
398 | oops_exit(); | ||
391 | 399 | ||
392 | if (in_interrupt()) | 400 | if (in_interrupt()) |
393 | panic("Fatal exception in interrupt"); | 401 | panic("Fatal exception in interrupt"); |
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c index 2cd50ad0d5c6..3efcb065f78a 100644 --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c | |||
@@ -192,7 +192,7 @@ static struct tc *get_tc(int index) | |||
192 | } | 192 | } |
193 | spin_unlock(&vpecontrol.tc_list_lock); | 193 | spin_unlock(&vpecontrol.tc_list_lock); |
194 | 194 | ||
195 | return NULL; | 195 | return res; |
196 | } | 196 | } |
197 | 197 | ||
198 | /* allocate a vpe and associate it with this minor (or index) */ | 198 | /* allocate a vpe and associate it with this minor (or index) */ |