• G
    irq_domain/powerpc: eliminate irq_map; use irq_alloc_desc() instead · 4bbdd45a
    Grant Likely 提交于
    This patch drops the powerpc-specific irq_map table and replaces it with
    directly using the irq_alloc_desc()/irq_free_desc() interfaces for allocating
    and freeing irq_desc structures.
    
    This patch is a preparation step for generalizing the powerpc-specific virq
    infrastructure to become irq_domains.
    
    As part of this change, the irq_big_lock is changed to a mutex from a raw
    spinlock.  There is no longer any need to use a spin lock since the irq_desc
    allocation code is now responsible for the critical section of finding
    an unused range of irq numbers.
    
    The radix lookup table is also changed to store the irq_data pointer instead
    of the irq_map entry since the irq_map is removed.  This should end up being
    functionally equivalent since only allocated irq_descs are ever added to the
    radix tree.
    
    v5: - Really don't ever allocate virq 0.  The previous version could still
          do it if hint == 0
        - Respect irq_virq_count setting for NOMAP.  Some NOMAP domains cannot
          use virq values above irq_virq_count.
        - Use numa_node_id() when allocating irq_descs.  Ideally the API should
          obtain that value from the caller, but that touches a lot of call sites
          so will be deferred to a follow-on patch.
        - Fix irq_find_mapping() to include irq numbers lower than
          NUM_ISA_INTERRUPTS.  With the switch to irq_alloc_desc*(), the lowest
          possible allocated irq is now returned by arch_probe_nr_irqs().
    v4: - Fix incorrect access to irq_data structure in debugfs code
        - Don't ever allocate virq 0
    Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Milton Miller <miltonm@bga.com>
    Tested-by: NOlof Johansson <olof@lixom.net>
    4bbdd45a
irq.h 7.8 KB