• David Daney's avatar
    MIPS: Octeon: Fix broken interrupt controller code. · 87161ccd
    David Daney authored
    Since 3.6.0-rc1,  We are getting many messages like:
    
    WARNING: at kernel/irq/irqdomain.c:444 irq_domain_associate_many+0x23c/0x260()
    Modules linked in:
    Call Trace:
    [<ffffffff814cb698>] dump_stack+0x8/0x34
    [<ffffffff81133d00>] warn_slowpath_common+0x78/0xa8
    [<ffffffff81187e44>] irq_domain_associate_many+0x23c/0x260
    [<ffffffff81187f38>] irq_create_mapping+0xd0/0x220
    [<ffffffff81188104>] irq_create_of_mapping+0x7c/0x158
    [<ffffffff813e5f08>] irq_of_parse_and_map+0x28/0x40
    .
    .
    .
    
    Both the CIU and GPIO interrupt domains were somewhat screwed up.
    
    For the CIU domain, we need to call irq_domain_associate() for each of
    the preassigned irq numbers.  For the GPIO domain, we were applying
    the register bit offset in octeon_irq_gpio_xlat, but it should be done
    in octeon_irq_gpio_map instead.
    
    Also: Reserve all 8 'core' irqs for the 'core' irq_chip so that they
    don't get used by the other domains.  Remove unused OCTEON_IRQ_*
    symbols.
    Signed-off-by: default avatarDavid Daney <david.daney@cavium.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/4190/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    87161ccd
irq.h 1.36 KB