| From 5d7a87217de48b234b3c8ff8a73059947d822e07 Mon Sep 17 00:00:00 2001 |
| From: Anton Blanchard <anton@samba.org> |
| Date: Mon, 10 May 2010 16:27:38 +0000 |
| Subject: powerpc/kdump: Use chip->shutdown to disable IRQs |
| |
| From: Anton Blanchard <anton@samba.org> |
| |
| commit 5d7a87217de48b234b3c8ff8a73059947d822e07 upstream. |
| |
| I saw this in a kdump kernel: |
| |
| IOMMU table initialized, virtual merging enabled |
| Interrupt 155954 (real) is invalid, disabling it. |
| Interrupt 155953 (real) is invalid, disabling it. |
| |
| ie we took some spurious interrupts. default_machine_crash_shutdown tries |
| to disable all interrupt sources but uses chip->disable which maps to |
| the default action of: |
| |
| static void default_disable(unsigned int irq) |
| { |
| } |
| |
| If we use chip->shutdown, then we actually mask the IRQ: |
| |
| static void default_shutdown(unsigned int irq) |
| { |
| struct irq_desc *desc = irq_to_desc(irq); |
| |
| desc->chip->mask(irq); |
| desc->status |= IRQ_MASKED; |
| } |
| |
| Not sure why we don't implement a ->disable action for xics.c, or why |
| default_disable doesn't mask the interrupt. |
| |
| Signed-off-by: Anton Blanchard <anton@samba.org> |
| Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> |
| Signed-off-by: Kamalesh babulal <kamalesh@linux.vnet.ibm.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| arch/powerpc/kernel/crash.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/powerpc/kernel/crash.c |
| +++ b/arch/powerpc/kernel/crash.c |
| @@ -381,7 +381,7 @@ void default_machine_crash_shutdown(stru |
| desc->chip->eoi(i); |
| |
| if (!(desc->status & IRQ_DISABLED)) |
| - desc->chip->disable(i); |
| + desc->chip->shutdown(i); |
| } |
| |
| /* |