• Milton Miller's avatar
    powerpc/xics: EOI unmapped irqs after disabling them · 8767e9ba
    Milton Miller authored
    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: default avatarMilton Miller <miltonm@bga.com>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    8767e9ba
xics.c 19.1 KB