]> Git Repo - J-linux.git/commitdiff
Merge tag 'irqchip-5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm...
authorThomas Gleixner <[email protected]>
Tue, 15 Dec 2020 09:48:07 +0000 (10:48 +0100)
committerThomas Gleixner <[email protected]>
Tue, 15 Dec 2020 09:48:07 +0000 (10:48 +0100)
Pull irqchip updates for 5.11 from Marc Zyngier:

  - Preliminary support for managed interrupts on platform devices
  - Correctly identify allocation of MSIs proxyied by another device
  - Remove the fasteoi IPI flow which has been proved useless
  - Generalise the Ocelot support to new SoCs
  - Improve GICv4.1 vcpu entry, matching the corresponding KVM optimisation
  - Work around spurious interrupts on Qualcomm PDC
  - Random fixes and cleanups

Link: https://lore.kernel.org/r/[email protected]
1  2 
include/linux/irq.h
kernel/irq/Kconfig
kernel/irq/chip.c

diff --combined include/linux/irq.h
index 79ce314a603bce136decff6aad636d16a6a29a4e,ca26bec51cecfa9cad83324e59b472a6b6091b74..c332871d59da979f504f9fd0ddbbdf92d8b53447
@@@ -647,7 -647,6 +647,6 @@@ static inline int irq_set_parent(int ir
   */
  extern void handle_level_irq(struct irq_desc *desc);
  extern void handle_fasteoi_irq(struct irq_desc *desc);
- extern void handle_percpu_devid_fasteoi_ipi(struct irq_desc *desc);
  extern void handle_edge_irq(struct irq_desc *desc);
  extern void handle_edge_eoi_irq(struct irq_desc *desc);
  extern void handle_simple_irq(struct irq_desc *desc);
@@@ -954,6 -953,21 +953,6 @@@ static inline void irq_free_desc(unsign
        irq_free_descs(irq, 1);
  }
  
 -#ifdef CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ
 -unsigned int irq_alloc_hwirqs(int cnt, int node);
 -static inline unsigned int irq_alloc_hwirq(int node)
 -{
 -      return irq_alloc_hwirqs(1, node);
 -}
 -void irq_free_hwirqs(unsigned int from, int cnt);
 -static inline void irq_free_hwirq(unsigned int irq)
 -{
 -      return irq_free_hwirqs(irq, 1);
 -}
 -int arch_setup_hwirq(unsigned int irq, int node);
 -void arch_teardown_hwirq(unsigned int irq);
 -#endif
 -
  #ifdef CONFIG_GENERIC_IRQ_LEGACY
  void irq_init_desc(unsigned int irq);
  #endif
diff --combined kernel/irq/Kconfig
index f2cda6b0057f5ae2b0ddda74c3a4881d186206f0,164a031cfdb66e8fd4240ace61f1bbd5d1d7e884..d79ef2493a281ebf26c2c5b5e07bb35c3b13c846
@@@ -26,6 -26,11 +26,6 @@@ config GENERIC_IRQ_SHOW_LEVE
  config GENERIC_IRQ_EFFECTIVE_AFF_MASK
         bool
  
 -# Facility to allocate a hardware interrupt. This is legacy support
 -# and should not be used in new code. Use irq domains instead.
 -config GENERIC_IRQ_LEGACY_ALLOC_HWIRQ
 -       bool
 -
  # Support for delayed migration from interrupt context
  config GENERIC_PENDING_IRQ
        bool
@@@ -77,6 -82,7 +77,7 @@@ config IRQ_FASTEOI_HIERARCHY_HANDLER
  # Generic IRQ IPI support
  config GENERIC_IRQ_IPI
        bool
+       select IRQ_DOMAIN_HIERARCHY
  
  # Generic MSI interrupt support
  config GENERIC_MSI_IRQ
diff --combined kernel/irq/chip.c
index df75c3573dcbd2c5080930a29dc22d095d552f71,0ae308efa60469ad2fd75279efe058900f630d7b..6d89e33fe3aa5463a042ab0989d907635d967aaa
@@@ -61,7 -61,7 +61,7 @@@ int irq_set_chip(unsigned int irq, stru
  EXPORT_SYMBOL(irq_set_chip);
  
  /**
 - *    irq_set_type - set the irq trigger type for an irq
 + *    irq_set_irq_type - set the irq trigger type for an irq
   *    @irq:   irq number
   *    @type:  IRQ_TYPE_{LEVEL,EDGE}_* value - see include/linux/irq.h
   */
@@@ -944,33 -944,6 +944,6 @@@ void handle_percpu_devid_irq(struct irq
                chip->irq_eoi(&desc->irq_data);
  }
  
- /**
-  * handle_percpu_devid_fasteoi_ipi - Per CPU local IPI handler with per cpu
-  *                                 dev ids
-  * @desc:     the interrupt description structure for this irq
-  *
-  * The biggest difference with the IRQ version is that the interrupt is
-  * EOIed early, as the IPI could result in a context switch, and we need to
-  * make sure the IPI can fire again. We also assume that the arch code has
-  * registered an action. If not, we are positively doomed.
-  */
- void handle_percpu_devid_fasteoi_ipi(struct irq_desc *desc)
- {
-       struct irq_chip *chip = irq_desc_get_chip(desc);
-       struct irqaction *action = desc->action;
-       unsigned int irq = irq_desc_get_irq(desc);
-       irqreturn_t res;
-       __kstat_incr_irqs_this_cpu(desc);
-       if (chip->irq_eoi)
-               chip->irq_eoi(&desc->irq_data);
-       trace_irq_handler_entry(irq, action);
-       res = action->handler(irq, raw_cpu_ptr(action->percpu_dev_id));
-       trace_irq_handler_exit(irq, action, res);
- }
  /**
   * handle_percpu_devid_fasteoi_nmi - Per CPU local NMI handler with per cpu
   *                                 dev ids
This page took 0.124176 seconds and 4 git commands to generate.