8767e9badc
When reciving an irq vector that does not have a linux mapping, the kernel prints a message and calls RTAS to disable the irq source. Previously the kernel did not EOI the interrupt, causing the source to think it is still being processed by software. While this does add an additional layer of protection against interrupt storms had RTAS failed to disable the source, it also prevents the interrupt from working when a driver later enables it. (We could alternatively send an EOI on startup, but that strategy would likely fail on an emulated xics.) All interrupts should be disabled when the kernel starts, but this can be observed if a driver does not shutdown an interrupt in its reboot hook before starting a new kernel with kexec. Michael reports this can be reproduced trivially by banging the keyboard while kexec'ing on a P5 LPAR: even though the hvc_console driver request's the console irq later in boot, the console is non-functional because we're receiving no console interrupts. Reported-By: Michael Ellerman Signed-off-by: Milton Miller <miltonm@bga.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> |
||
---|---|---|
.. | ||
cmm.c | ||
eeh.c | ||
eeh_cache.c | ||
eeh_driver.c | ||
eeh_event.c | ||
eeh_sysfs.c | ||
firmware.c | ||
hotplug-cpu.c | ||
hotplug-memory.c | ||
hvCall.S | ||
hvCall_inst.c | ||
hvconsole.c | ||
hvcserver.c | ||
iommu.c | ||
Kconfig | ||
kexec.c | ||
lpar.c | ||
Makefile | ||
msi.c | ||
nvram.c | ||
pci.c | ||
pci_dlpar.c | ||
phyp_dump.c | ||
plpar_wrappers.h | ||
power.c | ||
pseries.h | ||
ras.c | ||
reconfig.c | ||
rtasd.c | ||
scanlog.c | ||
setup.c | ||
smp.c | ||
xics.c | ||
xics.h |