• Prarit Bhargava's avatar
    x86/irq: Fix fixup_irqs() error handling · fb24da80
    Prarit Bhargava authored
    Several patches to fix cpu hotplug and the down'd cpu's irq
    relocations have been submitted in the past month or so.  The
    patches should resolve the problems with cpu hotplug and irq
    relocation, however, there is always a possibility that a bug
    still exists.  The big problem with debugging these irq
    reassignments is that the cpu down completes and then we get
    random stack traces from drivers for which irqs have not been
    properly assigned to a new cpu.  The stack traces are a mix of
    storage, network, and other kernel subsystem (I once saw the
    serial port stop working ...) warnings and failures.
    
    The problem with these failures is that they are difficult to
    diagnose. There is no warning in the cpu hotplug down path to
    indicate that an IRQ has failed to be assigned to a new cpu, and
    all we are left with is a stack trace from a driver, or a
    non-functional device.  If we had some information on the
    console debugging these situations would be much easier; after
    all we can map an IRQ to a device by simply using lspci or
    /proc/interrupts.
    
    The current code, fixup_irqs(), which migrates IRQs from the
    down'd cpu and is called close to the end of the cpu down path,
    calls chip->set_irq_affinity which eventually calls
    __assign_irq_vector(). Errors are not propogated back from this
    function call and this results in silent irq relocation
    failures.
    
    This patch fixes this issue by returning the error codes up the
    call stack and prints out a warning if there is a relocation
    failure.
    Signed-off-by: default avatarPrarit Bhargava <prarit@redhat.com>
    Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Rui Wang <rui.y.wang@intel.com>
    Cc: Liu Ping Fan <kernelfans@gmail.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Yoshihiro YUNOMAE <yoshihiro.yunomae.ez@hitachi.com>
    Cc: Lv Zheng <lv.zheng@intel.com>
    Cc: Seiji Aguchi <seiji.aguchi@hds.com>
    Cc: Yang Zhang <yang.z.zhang@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
    Cc: Li Fei <fei.li@intel.com>
    Cc: gong.chen@linux.intel.com
    Link: http://lkml.kernel.org/r/1396440673-18286-1-git-send-email-prarit@redhat.com
    [ Made small cleanliness tweaks. ]
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    fb24da80
irq.c 12.3 KB