Skip to content
Snippets Groups Projects
  1. Jan 24, 2018
  2. Jul 14, 2017
  3. May 22, 2017
  4. Mar 31, 2016
  5. Oct 13, 2015
  6. Apr 01, 2015
  7. Nov 23, 2014
    • Jiang Liu's avatar
      irqdomain: Introduce new interfaces to support hierarchy irqdomains · f8264e34
      Jiang Liu authored
      
      We plan to use hierarchy irqdomain to suppport CPU vector assignment,
      interrupt remapping controller, IO-APIC controller, MSI interrupt
      and hypertransport interrupt etc on x86 platforms. So extend irqdomain
      interfaces to support hierarchy irqdomain.
      
      There are already many clients of current irqdomain interfaces.
      To minimize the changes, we choose to introduce new version 2 interfaces
      to support hierarchy instead of extending existing irqdomain interfaces.
      
      According to Thomas's suggestion, the most important design decision is
      to build hierarchy struct irq_data to support hierarchy irqdomain, so
      hierarchy irqdomain related data could be saved in struct irq_data.
      With support of hierarchy irq_data, we could also support stacked
      irq_chips. This is most useful in case of set_affinity().
      
      The new hierarchy irqdomain introduces following interfaces:
      1) irq_domain_alloc_irqs()/irq_domain_free_irqs(): allocate/release IRQ
         and related resources.
      2) __irq_domain_alloc_irqs(): a special version to support legacy IRQs.
      3) irq_domain_activate_irq()/irq_domain_deactivate_irq(): program
         interrupt controllers to activate/deactivate interrupt.
      
      There are also several help functions to ease irqdomain implemenations:
      1) irq_domain_get_irq_data(): get irq_data associated with a specific
         irqdomain.
      2) irq_domain_set_hwirq_and_chip(): save irqdomain specific data into
         irq_data.
      3) irq_domain_alloc_irqs_parent()/irq_domain_free_irqs_parent(): invoke
         parent irqdomain's alloc/free callbacks.
      
      We also changed irq_startup()/irq_shutdown() to invoke
      irq_domain_activate_irq()/irq_domain_deactivate_irq() to program
      interrupt controller when start/stop interrupts.
      
      [ tglx: Folded parts of the later patch series in ]
      
      Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Grant Likely <grant.likely@linaro.org>
      Cc: Marc Zyngier <marc.zyngier@arm.com>
      Cc: Yingjoe Chen <yingjoe.chen@mediatek.com>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      f8264e34
  8. May 27, 2014
  9. Dec 02, 2013
  10. Dec 05, 2012
  11. Jul 11, 2012
    • Mark Brown's avatar
      irq_domain: Standardise legacy/linear domain selection · 781d0f46
      Mark Brown authored
      
      A large proportion of interrupt controllers that support legacy mappings
      do so because non-DT systems need to use fixed IRQ numbers when registering
      devices via buses but can otherwise use a linear mapping. The interrupt
      controller itself typically is not affected by the mapping used and best
      practice is to use a linear mapping where possible so drivers frequently
      select at runtime depending on if a legacy range has been allocated to
      them.
      
      Standardise this behaviour by providing irq_domain_register_simple() which
      will allocate a linear mapping unless a positive first_irq is provided in
      which case it will fall back to a legacy mapping. This helps make best
      practice for irq_domain adoption clearer.
      
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      781d0f46
  12. Feb 14, 2012
Loading