APPLIED: [Oneiric] [PATCH 0/1] x86, kdump, ioapic: Reset remote-IRR in clear_IO_APIC
Tim Gardner
tim.gardner at canonical.com
Fri Dec 9 13:51:31 UTC 2011
On 12/08/2011 12:24 PM, Brad Figg wrote:
> BugLink: http://bugs.launchpad.net/bugs/901830
>
> In the kdump scenario mentioned below, we can have a case where
> the device using level triggered interrupt will not generate any
> interrupts in the kdump kernel.
>
> 1. IO-APIC sends a level triggered interrupt to the CPU's local APIC.
>
> 2. Kernel crashed before the CPU services this interrupt, leaving
> the remote-IRR in the IO-APIC set.
>
> 3. kdump kernel boot sequence does clear_IO_APIC() as part of IO-APIC
> initialization. But this fails to reset remote-IRR bit of the
> IO-APIC RTE as the remote-IRR bit is read-only.
>
> 4. Device using that level triggered entry can't generate any
> more interrupts because of the remote-IRR bit.
>
> In clear_IO_APIC_pin(), check if the remote-IRR bit is set and if
> so do an explicit attempt to clear it (by doing EOI write on
> modern io-apic's and changing trigger mode to edge/level on
> older io-apic's). Also before doing the explicit EOI to the
> io-apic, ensure that the trigger mode is indeed set to level.
> This will enable the explicit EOI to the io-apic to reset the
> remote-IRR bit.
>
> Suresh Siddha (1):
> x86, kdump, ioapic: Reset remote-IRR in clear_IO_APIC
>
> arch/x86/kernel/apic/io_apic.c | 48 +++++++++++++++++++++++++++++++++++++++-
> 1 files changed, 47 insertions(+), 1 deletions(-)
>
--
Tim Gardner tim.gardner at canonical.com
More information about the kernel-team
mailing list