diff options
author | David S. Miller <davem@davemloft.net> | 2009-05-26 19:00:54 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-06-11 20:01:15 -0700 |
commit | dd6e9d0e69839cba3122a036e77cac5d217100e9 (patch) | |
tree | 8a0828b42e42696ab02cf5877b9520a1108a4807 /arch/sparc64/kernel | |
parent | 9c0ec2384c31df111f4029eabd7957692c115260 (diff) | |
download | linux-stable-dd6e9d0e69839cba3122a036e77cac5d217100e9.tar.gz |
sparc64: Reschedule KGDB capture to a software interrupt.
[ Upstream commit 42cc77c861e8e850e86252bb5b1e12e006261973 ]
Otherwise it might interrupt switch_to() midstream and use
half-cooked register window state.
Reported-by: Chris Torek <chris.torek@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'arch/sparc64/kernel')
-rw-r--r-- | arch/sparc64/kernel/kgdb.c | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/ttable.S | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/arch/sparc64/kernel/kgdb.c b/arch/sparc64/kernel/kgdb.c index fefbe6dc51be..f5a0fd490b59 100644 --- a/arch/sparc64/kernel/kgdb.c +++ b/arch/sparc64/kernel/kgdb.c @@ -108,7 +108,7 @@ void gdb_regs_to_pt_regs(unsigned long *gdb_regs, struct pt_regs *regs) } #ifdef CONFIG_SMP -void smp_kgdb_capture_client(struct pt_regs *regs) +void smp_kgdb_capture_client(int irq, struct pt_regs *regs) { unsigned long flags; diff --git a/arch/sparc64/kernel/ttable.S b/arch/sparc64/kernel/ttable.S index 1ade3d6fb7fc..89bf6467f494 100644 --- a/arch/sparc64/kernel/ttable.S +++ b/arch/sparc64/kernel/ttable.S @@ -63,7 +63,13 @@ tl0_irq6: TRAP_IRQ(smp_call_function_single_client, 6) #else tl0_irq6: BTRAP(0x46) #endif -tl0_irq7: BTRAP(0x47) BTRAP(0x48) BTRAP(0x49) +tl0_irq7: BTRAP(0x47) +#ifdef CONFIG_KGDB +tl0_irq8: TRAP_IRQ(smp_kgdb_capture_client, 8) +#else +tl0_irq8: BTRAP(0x48) +#endif +tl0_irq9: BTRAP(0x49) tl0_irq10: BTRAP(0x4a) BTRAP(0x4b) BTRAP(0x4c) BTRAP(0x4d) tl0_irq14: TRAP_IRQ(timer_interrupt, 14) tl0_irq15: TRAP_IRQ(handler_irq, 15) |