• Grant Likely's avatar
    irqdomain: eliminate slow-path revmap lookups · 4c0946c4
    Grant Likely authored
    With the current state of irq_domain, the reverse map is always updated
    when new IRQs get mapped.  This means that the irq_find_mapping() function
    can be simplified to execute the revmap lookup functions unconditionally
    
    This patch adds lookup functions for the revmaps that don't yet have one
    and removes the slow path lookup code path.
    
    v8: Broke out unrelated changes into separate patches.  Rebased on Paul's irq
        association patches.
    v7: Rebased to irqdomain/next for v3.4 and applied before the removal of 'hint'
    v6: Remove the slow path entirely.  The only place where the slow path
        could get called is for a linear mapping if the hwirq number is larger
        than the linear revmap size.  There shouldn't be any interrupt
        controllers that do that.
    v5: rewrite to not use a ->revmap() callback.  It is simpler, smaller,
        safer and faster to open code each of the revmap lookups directly into
        irq_find_mapping() via a switch statement.
    v4: Fix build failure on incorrect variable reference.
    Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Milton Miller <miltonm@bga.com>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Cc: Rob Herring <rob.herring@calxeda.com>
    4c0946c4
irqdomain.c 24.7 KB