diff options
Diffstat (limited to 'arch/powerpc/kernel/machine_kexec.c')
| -rw-r--r-- | arch/powerpc/kernel/machine_kexec.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/machine_kexec.c b/arch/powerpc/kernel/machine_kexec.c index dd6c141f1662..df7e20c191cd 100644 --- a/arch/powerpc/kernel/machine_kexec.c +++ b/arch/powerpc/kernel/machine_kexec.c | |||
| @@ -14,10 +14,34 @@ | |||
| 14 | #include <linux/threads.h> | 14 | #include <linux/threads.h> |
| 15 | #include <linux/memblock.h> | 15 | #include <linux/memblock.h> |
| 16 | #include <linux/of.h> | 16 | #include <linux/of.h> |
| 17 | #include <linux/irq.h> | ||
| 18 | |||
| 17 | #include <asm/machdep.h> | 19 | #include <asm/machdep.h> |
| 18 | #include <asm/prom.h> | 20 | #include <asm/prom.h> |
| 19 | #include <asm/sections.h> | 21 | #include <asm/sections.h> |
| 20 | 22 | ||
| 23 | void machine_kexec_mask_interrupts(void) { | ||
| 24 | unsigned int i; | ||
| 25 | |||
| 26 | for_each_irq(i) { | ||
| 27 | struct irq_desc *desc = irq_to_desc(i); | ||
| 28 | |||
| 29 | if (!desc || !desc->chip) | ||
| 30 | continue; | ||
| 31 | |||
| 32 | if (desc->chip->eoi && | ||
| 33 | desc->status & IRQ_INPROGRESS) | ||
| 34 | desc->chip->eoi(i); | ||
| 35 | |||
| 36 | if (desc->chip->mask) | ||
| 37 | desc->chip->mask(i); | ||
| 38 | |||
| 39 | if (desc->chip->disable && | ||
| 40 | !(desc->status & IRQ_DISABLED)) | ||
| 41 | desc->chip->disable(i); | ||
| 42 | } | ||
| 43 | } | ||
| 44 | |||
| 21 | void machine_crash_shutdown(struct pt_regs *regs) | 45 | void machine_crash_shutdown(struct pt_regs *regs) |
| 22 | { | 46 | { |
| 23 | if (ppc_md.machine_crash_shutdown) | 47 | if (ppc_md.machine_crash_shutdown) |
