git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git]
/
arch
/
powerpc
/
kernel
/
crash.c
diff --git
a/arch/powerpc/kernel/crash.c
b/arch/powerpc/kernel/crash.c
index
778f22f
..
dbcb859
100644
(file)
--- a/
arch/powerpc/kernel/crash.c
+++ b/
arch/powerpc/kernel/crash.c
@@
-22,6
+22,7
@@
#include <linux/elf.h>
#include <linux/elfcore.h>
#include <linux/init.h>
#include <linux/elf.h>
#include <linux/elfcore.h>
#include <linux/init.h>
+#include <linux/irq.h>
#include <linux/types.h>
#include <asm/processor.h>
#include <linux/types.h>
#include <asm/processor.h>
@@
-174,6
+175,8
@@
static void crash_kexec_prepare_cpus(void)
void default_machine_crash_shutdown(struct pt_regs *regs)
{
void default_machine_crash_shutdown(struct pt_regs *regs)
{
+ unsigned int irq;
+
/*
* This function is only called after the system
* has paniced or is otherwise in a critical state.
/*
* This function is only called after the system
* has paniced or is otherwise in a critical state.
@@
-186,6
+189,16
@@
void default_machine_crash_shutdown(struct pt_regs *regs)
*/
local_irq_disable();
*/
local_irq_disable();
+ for_each_irq(irq) {
+ struct irq_desc *desc = irq_descp(irq);
+
+ if (desc->status & IRQ_INPROGRESS)
+ desc->handler->end(irq);
+
+ if (!(desc->status & IRQ_DISABLED))
+ desc->handler->disable(irq);
+ }
+
if (ppc_md.kexec_cpu_down)
ppc_md.kexec_cpu_down(1, 0);
if (ppc_md.kexec_cpu_down)
ppc_md.kexec_cpu_down(1, 0);