Skip to content
  • Linus Torvalds's avatar
    91552ab8
    Merge tag 'irq-core-2021-04-26' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 91552ab8
    Linus Torvalds authored
    Pull irq updates from Thomas Gleixner:
     "The usual updates from the irq departement:
    
      Core changes:
    
       - Provide IRQF_NO_AUTOEN as a flag for request*_irq() so drivers can
         be cleaned up which either use a seperate mechanism to prevent
         auto-enable at request time or have a racy mechanism which disables
         the interrupt right after request.
    
       - Get rid of the last usage of irq_create_identity_mapping() and
         remove the interface.
    
       - An overhaul of tasklet_disable().
    
         Most usage sites of tasklet_disable() are in task context and
         usually in cleanup, teardown code pathes. tasklet_disable()
         spinwaits for a tasklet which is currently executed. That's not
         only a problem for PREEMPT_RT where this can lead to a live lock
         when the disabling task preempts the softirq thread. It's also
         problematic in context of virtualization when the vCPU which runs
         the tasklet is scheduled out and the disabling code has to spin
         wait until it's scheduled back in.
    
         There are a few code pathes which invoke tasklet_disable() from
         non-sleepable context. For these a new disable variant which still
         spinwaits is provided which allows to switch tasklet_disable() to a
         sleep wait mechanism. For the atomic use cases this does not solve
         the live lock issue on PREEMPT_RT. That is mitigated by blocking on
         the RT specific softirq lock.
    
       - The PREEMPT_RT specific implementation of softirq processing and
         local_bh_disable/enable().
    
         On RT enabled kernels soft interrupt processing happens always in
         task context and all interrupt handlers, which are not explicitly
         marked to be invoked in hard interrupt context are forced into task
         context as well. This allows to protect against softirq processing
         with a per CPU lock, which in turn allows to make BH disabled
         regions preemptible.
    
         Most of the softirq handling code is still shared. The RT/non-RT
         specific differences are addressed with a set of inline functions
         which provide the context specific functionality. The
         local_bh_disable() / local_bh_enable() mechanism are obviously
         seperate.
    
       - The usual set of small improvements and cleanups
    
      Driver changes:
    
       - New drivers for Nuvoton WPCM450 and DT 79rc3243x interrupt
         controllers
    
       - Extended functionality for MStar, STM32 and SC7280 irq chips
    
       - Enhanced robustness for ARM GICv3/4.1 drivers
    
       - The usual set of cleanups and improvements all over the place"
    
    * tag 'irq-core-2021-04-26' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (53 commits)
      irqchip/xilinx: Expose Kconfig option for Zynq/ZynqMP
      irqchip/gic-v3: Do not enable irqs when handling spurious interrups
      dt-bindings: interrupt-controller: Add IDT 79RC3243x Interrupt Controller
      irqchip: Add support for IDT 79rc3243x interrupt controller
      irqdomain: Drop references to recusive irqdomain setup
      irqdomain: Get rid of irq_create_strict_mappings()
      irqchip/jcore-aic: Kill use of irq_create_strict_mappings()
      ARM: PXA: Kill use of irq_create_strict_mappings()
      irqchip/gic-v4.1: Disable vSGI upon (GIC CPUIF < v4.1) detection
      irqchip/tb10x: Use 'fallthrough' to eliminate a warning
      genirq: Reduce irqdebug cacheline bouncing
      kernel: Initialize cpumask before parsing
      irqchip/wpcm450: Drop COMPILE_TEST
      irqchip/irq-mst: Support polarity configuration
      irqchip: Add driver for WPCM450 interrupt controller
      dt-bindings: interrupt-controller: Add nuvoton, wpcm450-aic
      dt-bindings: qcom,pdc: Add compatible for sc7280
      irqchip/stm32: Add usart instances exti direct event support
      irqchip/gic-v3: Fix OF_BAD_ADDR error handling
      irqchip/sifive-plic: Mark two global variables __ro_after_init
      ...
    91552ab8
    Merge tag 'irq-core-2021-04-26' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
    Linus Torvalds authored
    Pull irq updates from Thomas Gleixner:
     "The usual updates from the irq departement:
    
      Core changes:
    
       - Provide IRQF_NO_AUTOEN as a flag for request*_irq() so drivers can
         be cleaned up which either use a seperate mechanism to prevent
         auto-enable at request time or have a racy mechanism which disables
         the interrupt right after request.
    
       - Get rid of the last usage of irq_create_identity_mapping() and
         remove the interface.
    
       - An overhaul of tasklet_disable().
    
         Most usage sites of tasklet_disable() are in task context and
         usually in cleanup, teardown code pathes. tasklet_disable()
         spinwaits for a tasklet which is currently executed. That's not
         only a problem for PREEMPT_RT where this can lead to a live lock
         when the disabling task preempts the softirq thread. It's also
         problematic in context of virtualization when the vCPU which runs
         the tasklet is scheduled out and the disabling code has to spin
         wait until it's scheduled back in.
    
         There are a few code pathes which invoke tasklet_disable() from
         non-sleepable context. For these a new disable variant which still
         spinwaits is provided which allows to switch tasklet_disable() to a
         sleep wait mechanism. For the atomic use cases this does not solve
         the live lock issue on PREEMPT_RT. That is mitigated by blocking on
         the RT specific softirq lock.
    
       - The PREEMPT_RT specific implementation of softirq processing and
         local_bh_disable/enable().
    
         On RT enabled kernels soft interrupt processing happens always in
         task context and all interrupt handlers, which are not explicitly
         marked to be invoked in hard interrupt context are forced into task
         context as well. This allows to protect against softirq processing
         with a per CPU lock, which in turn allows to make BH disabled
         regions preemptible.
    
         Most of the softirq handling code is still shared. The RT/non-RT
         specific differences are addressed with a set of inline functions
         which provide the context specific functionality. The
         local_bh_disable() / local_bh_enable() mechanism are obviously
         seperate.
    
       - The usual set of small improvements and cleanups
    
      Driver changes:
    
       - New drivers for Nuvoton WPCM450 and DT 79rc3243x interrupt
         controllers
    
       - Extended functionality for MStar, STM32 and SC7280 irq chips
    
       - Enhanced robustness for ARM GICv3/4.1 drivers
    
       - The usual set of cleanups and improvements all over the place"
    
    * tag 'irq-core-2021-04-26' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (53 commits)
      irqchip/xilinx: Expose Kconfig option for Zynq/ZynqMP
      irqchip/gic-v3: Do not enable irqs when handling spurious interrups
      dt-bindings: interrupt-controller: Add IDT 79RC3243x Interrupt Controller
      irqchip: Add support for IDT 79rc3243x interrupt controller
      irqdomain: Drop references to recusive irqdomain setup
      irqdomain: Get rid of irq_create_strict_mappings()
      irqchip/jcore-aic: Kill use of irq_create_strict_mappings()
      ARM: PXA: Kill use of irq_create_strict_mappings()
      irqchip/gic-v4.1: Disable vSGI upon (GIC CPUIF < v4.1) detection
      irqchip/tb10x: Use 'fallthrough' to eliminate a warning
      genirq: Reduce irqdebug cacheline bouncing
      kernel: Initialize cpumask before parsing
      irqchip/wpcm450: Drop COMPILE_TEST
      irqchip/irq-mst: Support polarity configuration
      irqchip: Add driver for WPCM450 interrupt controller
      dt-bindings: interrupt-controller: Add nuvoton, wpcm450-aic
      dt-bindings: qcom,pdc: Add compatible for sc7280
      irqchip/stm32: Add usart instances exti direct event support
      irqchip/gic-v3: Fix OF_BAD_ADDR error handling
      irqchip/sifive-plic: Mark two global variables __ro_after_init
      ...
Loading