Skip to content
  • Marc Zyngier's avatar
    genirq: Work around __irq_set_handler vs stacked domains ordering issues · f86eff22
    Marc Zyngier authored
    
    
    With the introduction of stacked domains, we have the issue that,
    depending on where in the stack this is called, __irq_set_handler
    will succeed or fail: If this is called from the inner irqchip,
    __irq_set_handler() will fail, as it will look at the outer domain
    as the (desc->irq_data.chip == &no_irq_chip) test fails (we haven't
    set the top level yet).
    
    This patch implements the following: "If there is at least one
    valid irqchip in the domain, it will probably sort itself out".
    This is clearly not ideal, but it is far less confusing then
    crashing because the top-level domain is not up yet.
    
    [ tglx: Added comment and a protection against chained interrupts in
      	that context ]
    
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Cc: Yingjoe Chen <yingjoe.chen@mediatek.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Jiang Liu <jiang.liu@linux.intel.com>
    Link: http://lkml.kernel.org/r/1416048553-29289-3-git-send-email-marc.zyngier@arm.com
    
    
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    f86eff22