Commit ac7473a1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'irq-core-2024-07-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull interrupt subsystem updates from Thomas Gleixner:
 "Core:

   - Provide a new mechanism to create interrupt domains. The existing
     interfaces have already too many parameters and it's a pain to
     expand any of this for new required functionality.

     The new function takes a pointer to a data structure as argument.
     The data structure combines all existing parameters and allows for
     easy extension.

     The first extension for this is to handle the instantiation of
     generic interrupt chips at the core level and to allow drivers to
     provide extra init/exit callbacks.

     This is necessary to do the full interrupt chip initialization
     before the new domain is published, so that concurrent usage sites
     won't see a half initialized interrupt domain. Similar problems
     exist on teardown.

     This has turned out to be a real problem due to the deferred and
     parallel probing which was added in recent years.

     Handling this at the core level allows to remove quite some accrued
     boilerplate code in existing drivers and avoids horrible
     workarounds at the driver level.

   - The usual small improvements all over the place

  Drivers:

   - Add support for LAN966x OIC and RZ/Five SoC

   - Split the STM ExtI driver into a microcontroller and a SMP version
     to allow building the latter as a module for multi-platform
     kernels

   - Enable MSI support for Armada 370XP on platforms which do not
     support IPIs

   - The usual small fixes and enhancements all over the place"

* tag 'irq-core-2024-07-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (59 commits)
  irqdomain: Fix the kernel-doc and plug it into Documentation
  genirq: Set IRQF_COND_ONESHOT in request_irq()
  irqchip/imx-irqsteer: Handle runtime power management correctly
  irqchip/gic-v3: Pass #redistributor-regions to gic_of_setup_kvm_info()
  irqchip/bcm2835: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND
  irqchip/gic-v4: Make sure a VPE is locked when VMAPP is issued
  irqchip/gic-v4: Substitute vmovp_lock for a per-VM lock
  irqchip/gic-v4: Always configure affinity on VPE activation
  Revert "irqchip/dw-apb-ictl: Support building as module"
  Revert "Loongarch: Support loongarch avec"
  arm64: Kconfig: Allow build irq-stm32mp-exti driver as module
  ARM: stm32: Allow build irq-stm32mp-exti driver as module
  irqchip/stm32mp-exti: Allow building as module
  irqchip/stm32mp-exti: Rename internal symbols
  irqchip/stm32-exti: Split MCU and MPU code
  arm64: Kconfig: Select STM32MP_EXTI on STM32 platforms
  ARM: stm32: Use different EXTI driver on ARMv7m and ARMv7a
  irqchip/stm32-exti: Add CONFIG_STM32MP_EXTI
  irqchip/dw-apb-ictl: Support building as module
  irqchip/riscv-aplic: Simplify the initialization code
  ...
parents a362ade8 b7b37733
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -410,6 +410,8 @@ which are used in the generic IRQ layer.
.. kernel-doc:: include/linux/interrupt.h
   :internal:

.. kernel-doc:: include/linux/irqdomain.h

Public Functions Provided
=========================

+55 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interrupt-controller/microchip,lan966x-oic.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Microchip LAN966x outband interrupt controller

maintainers:
  - Herve Codina <herve.codina@bootlin.com>

allOf:
  - $ref: /schemas/interrupt-controller.yaml#

description: |
  The Microchip LAN966x outband interrupt controller (OIC) maps the internal
  interrupt sources of the LAN966x device to an external interrupt.
  When the LAN966x device is used as a PCI device, the external interrupt is
  routed to the PCI interrupt.

properties:
  compatible:
    const: microchip,lan966x-oic

  '#interrupt-cells':
    const: 2

  interrupt-controller: true

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

required:
  - compatible
  - '#interrupt-cells'
  - interrupt-controller
  - interrupts
  - reg

additionalProperties: false

examples:
  - |
    interrupt-controller@e00c0120 {
        compatible = "microchip,lan966x-oic";
        reg = <0xe00c0120 0x190>;
        #interrupt-cells = <2>;
        interrupt-controller;
        interrupts = <0>;
        interrupt-parent = <&intc>;
    };
...
+10 −7
Original line number Diff line number Diff line
@@ -21,7 +21,8 @@ description: |

properties:
  compatible:
    items:
    oneOf:
      - items:
          - enum:
              - renesas,r9a07g043u-irqc    # RZ/G2UL
              - renesas,r9a07g044-irqc     # RZ/G2{L,LC}
@@ -29,6 +30,8 @@ properties:
              - renesas,r9a08g045-irqc     # RZ/G3S
          - const: renesas,rzg2l-irqc

      - const: renesas,r9a07g043f-irqc     # RZ/Five

  '#interrupt-cells':
    description: The first cell should contain a macro RZG2L_{NMI,IRQX} included in the
                 include/dt-bindings/interrupt-controller/irqc-rzg2l.h and the second
+6 −0
Original line number Diff line number Diff line
@@ -14942,6 +14942,12 @@ L: netdev@vger.kernel.org
S:	Maintained
F:	drivers/net/ethernet/microchip/lan966x/*
MICROCHIP LAN966X OIC DRIVER
M:	Herve Codina <herve.codina@bootlin.com>
S:	Maintained
F:	Documentation/devicetree/bindings/interrupt-controller/microchip,lan966x-oic.yaml
F:	drivers/irqchip/irq-lan966x-oic.c
MICROCHIP LCDFB DRIVER
M:	Nicolas Ferre <nicolas.ferre@microchip.com>
L:	linux-fbdev@vger.kernel.org
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ menuconfig ARCH_STM32
	select CLKSRC_STM32
	select PINCTRL
	select RESET_CONTROLLER
	select STM32_EXTI
	select STM32_EXTI if ARM_SINGLE_ARMV7M
	select STM32_FIREWALL
	help
	  Support for STMicroelectronics STM32 processors.
Loading