Vivek Goyal
1a75a3f068
[PATCH] i386 kdump timer vector lockup fix
...
Porting the patch I posted for x86_64 to i386.
http://marc.theaimsgroup.com/?l=linux-kernel&m=114178139610707&w=2
o While using kdump, after a system crash when second kernel boots, timer
vector gets (0x31) locked and CPU does not see timer interrupts
travelling from IOAPIC to APIC. Currently it does not lead to boot
failure in second kernel as timer interrupts continues to come as ExtInt
through LAPIC directly, but fixing it is good in case some boards do not
support the other mode.
o After a system crash, it is not safe to service interrupts any more,
hence interrupts are disabled. This leads to pending interrupts at
LAPIC. LAPIC sends these interrupts to the CPU during early boot of
second kernel. Other pending interrupts are discarded saying unexpected
trap but timer interrupt is serviced and CPU does not issue an LAPIC EOI
because it think this interrupt came from i8259 and sends ack to 8259.
This leads to vector 0x31 locking as LAPIC does not clear respective ISR
and keeps on waiting for EOI.
o This patch issues extra EOI for the pending interrupts who have ISR set.
o Though today only timer seems to be the special case because in early
boot it thinks interrupts are coming from i8259 and uses
mask_and_ack_8259A() as ack handler and does not issue LAPIC EOI. But
probably doing it in generic manner for all vectors makes sense.
Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Andi Kleen <ak@muc.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-31 12:18:50 -08:00
..
mach-bigsmp
[PATCH] x86: convert bigsmp to use flat physical mode
2006-01-06 08:33:37 -08:00
mach-default
[PATCH] RTC: Fix up some RTC whitespace and style
2006-03-28 09:16:01 -08:00
mach-es7000
[PATCH] Compilation fix for ES7000 when no ACPI is specified in config (i386)
2006-03-23 07:38:04 -08:00
mach-generic
[PATCH] x86: sutomatically enable bigsmp when we have more than 8 CPUs
2005-09-05 00:06:10 -07:00
mach-numaq
[PATCH] Do not enforce unique IO_APIC_ID check for xAPIC systems (i386)
2005-06-23 09:45:09 -07:00
mach-summit
[PATCH] USB: Always do usb-handoff
2005-10-28 16:47:49 -07:00
mach-visws
[PATCH] i386: fix uses of user_mode() vs. user_mode_vm()
2006-03-23 07:38:05 -08:00
mach-voyager
[PATCH] i386: fix uses of user_mode() vs. user_mode_vm()
2006-03-23 07:38:05 -08:00
8253pit.h
a.out.h
acpi.h
[PATCH] don't call check_acpi_pci() on x86 with ACPI disabled
2006-03-22 07:53:54 -08:00
agp.h
[PATCH] i386: inline asm cleanup
2005-09-05 00:06:11 -07:00
alternative.h
[PATCH] x86: SMP alternatives
2006-03-23 07:38:04 -08:00
apic.h
[PATCH] i386: port ATI timer fix from x86_64 to i386 II
2006-03-08 18:10:31 -08:00
apicdef.h
[PATCH] i386 kdump timer vector lockup fix
2006-03-31 12:18:50 -08:00
arch_hooks.h
[PATCH] x86: early printk handling fixes
2006-03-23 07:38:05 -08:00
atomic.h
[PATCH] atomic: add_unless cmpxchg optimise
2006-03-23 07:38:17 -08:00
auxvec.h
[PATCH] auxiliary vector cleanups
2005-09-07 16:57:21 -07:00
bitops.h
[PATCH] bitops: i386: use generic bitops
2006-03-26 08:57:12 -08:00
boot.h
bug.h
bugs.h
[PATCH] i386: move SIMD initialization
2006-01-06 08:33:34 -08:00
byteorder.h
cache.h
[PATCH] Move read_mostly definition to asm/cache.h
2006-03-23 07:38:10 -08:00
cacheflush.h
[PATCH] x86/x86_64: mark rodata section read only: x86 parts
2006-01-06 08:33:36 -08:00
checksum.h
[NET]: Fix ipl=>ihl typo in ip_fast_csum
2005-08-29 16:02:48 -07:00
cpu.h
[PATCH] i386 CPU hotplug
2005-06-25 16:24:29 -07:00
cpufeature.h
[PATCH] x86: SMP alternatives
2006-03-23 07:38:04 -08:00
cputime.h
current.h
[PATCH] mark several functions __always_inline
2006-01-14 18:27:15 -08:00
debugreg.h
delay.h
desc.h
[PATCH] x86: fix broken SMP boot sequence
2006-02-24 14:31:38 -08:00
div64.h
[PATCH] include/asm-i386/: "extern inline" -> "static inline"
2005-09-10 10:06:34 -07:00
dma-mapping.h
[PATCH] i386: make pci_map_single/pci_map_sg warn for zero length.
2006-01-11 19:04:56 -08:00
dma.h
dmi.h
[PATCH] x86_64: Implement early DMI scanning
2006-03-25 09:10:55 -08:00
e820.h
edac.h
[PATCH] EDAC: core EDAC support code
2006-01-18 19:20:31 -08:00
elf.h
[PATCH] fix remaining missing includes
2005-11-07 07:53:41 -08:00
emergency-restart.h
[PATCH] i386: Implement machine_emergency_reboot
2005-07-26 14:35:42 -07:00
errno.h
fcntl.h
[PATCH] Clean up struct flock64 definitions
2005-09-07 16:57:38 -07:00
fixmap.h
[ACPI] delete CONFIG_ACPI_BOOT
2005-08-24 12:08:54 -04:00
floppy.h
[PATCH] Remove long dead i386 floppy asm code
2006-03-31 12:18:50 -08:00
futex.h
[PATCH] lightweight robust futexes updates
2006-03-27 08:44:49 -08:00
genapic.h
[PATCH] Do not enforce unique IO_APIC_ID check for xAPIC systems (i386)
2005-06-23 09:45:09 -07:00
hardirq.h
highmem.h
[PATCH] kdump: Routines for copying dump pages
2005-06-25 16:24:53 -07:00
hpet.h
hw_irq.h
Revert "i386: move apic init in init_IRQs"
2005-10-31 19:16:17 -08:00
i387.h
[PATCH] i386: task_thread_info()
2006-01-12 09:08:51 -08:00
i8253.h
[PATCH] x86: i8253/i8259A lock cleanup
2005-06-30 08:45:10 -07:00
i8259.h
ide.h
[PATCH] ide: explain the PCI bus test we do in <asm-i386/ide.h>
2005-11-10 00:10:37 +01:00
io.h
[PATCH] remove ISA legacy functions: remove the helpers
2006-03-24 07:33:19 -08:00
io_apic.h
[ACPI] delete CONFIG_ACPI_BOOT
2005-08-24 12:08:54 -04:00
ioctl.h
[PATCH] Generic ioctl.h
2006-01-10 08:01:34 -08:00
ioctls.h
ipc.h
ipcbuf.h
irq.h
[PATCH] Make vm86 support optional
2006-01-08 20:14:11 -08:00
ist.h
kdebug.h
[PATCH] Notifier chain update: API changes
2006-03-27 08:44:50 -08:00
kexec.h
[PATCH] Kdump: i386 compiler warning fix
2006-01-10 08:01:27 -08:00
kmap_types.h
kprobes.h
[PATCH] x86: kprobes-booster
2006-03-26 08:57:04 -08:00
ldt.h
linkage.h
local.h
math_emu.h
mc146818rtc.h
mca.h
mca_dma.h
mman.h
[PATCH] add asm-generic/mman.h
2006-02-15 15:32:22 -08:00
mmu.h
mmu_context.h
mmx.h
mmzone.h
[PATCH] unify pfn_to_page: i386 pfn_to_page
2006-03-27 08:44:44 -08:00
module.h
[PATCH] Base support for AMD Geode GX/LX processors
2006-01-06 08:33:38 -08:00
mpspec.h
[PATCH] i386: remove duplicate declaration of mp_bus_id_to_pci_bus
2006-03-23 07:38:04 -08:00
mpspec_def.h
[PATCH] mpspec: remove unneeded packed attribute
2006-01-06 08:33:39 -08:00
msgbuf.h
msi.h
[PATCH] PCI: Change MSI to use physical delivery mode always
2005-11-10 16:09:18 -08:00
msr.h
[PATCH] x86: more asm cleanups
2005-09-05 00:06:12 -07:00
mtrr.h
[PATCH] Fix the imlicit declaration of mtrr_centaur_report_mcr in arch/i386/kernel/cpu/centaur.c
2006-03-23 07:38:06 -08:00
mutex.h
[PATCH] x86: SMP alternatives
2006-03-23 07:38:04 -08:00
namei.h
nmi.h
node.h
numa.h
[PATCH] x86-64: Use ACPI PXM to parse PCI<->node assignments
2005-09-12 10:49:57 -07:00
numaq.h
numnodes.h
page.h
[PATCH] unify pfn_to_page: i386 pfn_to_page
2006-03-27 08:44:44 -08:00
param.h
[PATCH] Avoid namespace pollution in <asm/param.h>
2006-01-02 08:38:38 -08:00
parport.h
pci-direct.h
pci.h
Revert PCIBIOS_MIN_IO changes for 2.6.13
2005-08-14 18:21:30 -07:00
percpu.h
pgalloc.h
pgtable-2level-defs.h
pgtable-2level.h
[PATCH] i386: actively synchronize vmalloc area when registering certain callbacks
2006-03-23 07:38:05 -08:00
pgtable-3level-defs.h
pgtable-3level.h
[PATCH] i386: actively synchronize vmalloc area when registering certain callbacks
2006-03-23 07:38:05 -08:00
pgtable.h
[PATCH] Enable mprotect on huge pages
2006-03-22 07:54:03 -08:00
poll.h
[PATCH] POLLRDHUP/EPOLLRDHUP handling for half-closed devices notifications
2006-03-25 08:22:56 -08:00
posix_types.h
processor.h
[PATCH] arch/i386/kernel/microcode.c: remove the obsolete microcode_ioctl
2006-03-28 09:16:06 -08:00
ptrace.h
[PATCH] PTRACE_SYSEMU is only for i386 and clashes with other ptrace codes of other archs
2006-01-08 20:14:04 -08:00
resource.h
rtc.h
rwlock.h
[PATCH] x86: SMP alternatives
2006-03-23 07:38:04 -08:00
rwsem.h
[PATCH] add sem_is_read/write_locked()
2005-10-29 21:40:35 -07:00
scatterlist.h
seccomp.h
sections.h
segment.h
[PATCH] x86: Pnp segments in segment h
2006-01-06 08:33:34 -08:00
semaphore.h
[PATCH] x86: SMP alternatives
2006-03-23 07:38:04 -08:00
sembuf.h
serial.h
[PATCH] Serial: Split 8250 port table (part 2)
2005-06-29 18:45:19 +01:00
setup.h
[PATCH] unify PFN_* macros
2006-03-27 08:44:48 -08:00
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
[PATCH] Handle TIF_RESTORE_SIGMASK for i386
2006-01-18 19:20:29 -08:00
smp.h
[PATCH] PCI: Change MSI to use physical delivery mode always
2005-11-10 16:09:18 -08:00
socket.h
[NET]: Introduce SO_{SND,RCV}BUFFORCE socket options
2005-08-29 15:31:35 -07:00
sockios.h
sparsemem.h
[PATCH] sparsemem memory model for i386
2005-06-23 09:45:05 -07:00
spinlock.h
[PATCH] i386 spinlocks: disable interrupts only if we enabled them
2006-03-23 07:38:06 -08:00
spinlock_types.h
[PATCH] spinlock consolidation
2005-09-10 10:06:21 -07:00
srat.h
stat.h
[PATCH] 2TB files: st_blocks is invalid when calling stat64
2006-03-26 08:57:00 -08:00
statfs.h
string.h
[PATCH] mark several functions __always_inline
2006-01-14 18:27:15 -08:00
suspend.h
system.h
[PATCH] kill include/linux/platform.h, default_idle() cleanup
2006-03-24 07:33:21 -08:00
termbits.h
termios.h
thread_info.h
[PATCH] i386: fix singlestepping though a syscall
2006-02-17 08:55:21 -08:00
timer.h
[PATCH] add suspend/resume for timer
2005-09-05 00:06:18 -07:00
timex.h
[PATCH] x86: cpu_khz type fix
2005-06-23 09:45:11 -07:00
tlb.h
tlbflush.h
[PATCH] seccomp: tsc disable
2005-06-27 15:11:44 -07:00
topology.h
[PATCH] sched: new sched domain for representing multi-core
2006-03-27 08:44:43 -08:00
types.h
[PATCH] 2TB files: add blkcnt_t
2006-03-26 08:57:00 -08:00
uaccess.h
[PATCH] i386: Add a temporary to make put_user more type safe
2006-03-23 07:38:04 -08:00
ucontext.h
unaligned.h
unistd.h
[PATCH] Introduce sys_splice() system call
2006-03-30 12:28:18 -08:00
user.h
vga.h
vic.h
vm86.h
[PATCH] Make vm86 support optional
2006-01-08 20:14:11 -08:00
voyager.h
xor.h
[PATCH] i386: inline asm cleanup
2005-09-05 00:06:11 -07:00