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 dd6c141f166..df7e20c191c 100644 --- a/arch/powerpc/kernel/machine_kexec.c +++ b/arch/powerpc/kernel/machine_kexec.c @@ -14,10 +14,34 @@  #include <linux/threads.h>  #include <linux/memblock.h>  #include <linux/of.h> +#include <linux/irq.h> +  #include <asm/machdep.h>  #include <asm/prom.h>  #include <asm/sections.h> +void machine_kexec_mask_interrupts(void) { +	unsigned int i; + +	for_each_irq(i) { +		struct irq_desc *desc = irq_to_desc(i); + +		if (!desc || !desc->chip) +			continue; + +		if (desc->chip->eoi && +		    desc->status & IRQ_INPROGRESS) +			desc->chip->eoi(i); + +		if (desc->chip->mask) +			desc->chip->mask(i); + +		if (desc->chip->disable && +		    !(desc->status & IRQ_DISABLED)) +			desc->chip->disable(i); +	} +} +  void machine_crash_shutdown(struct pt_regs *regs)  {  	if (ppc_md.machine_crash_shutdown)  |