Skip to content

Commit

Permalink
Merge tag 'irq-drivers-2025-03-23' of git://git.kernel.org/pub/scm/li…
Browse files Browse the repository at this point in the history
…nux/kernel/git/tip/tip

Pull irq driver updates from Thomas Gleixner:

 - Support for hard indices on RISC-V. The hart index identifies a hart
   (core) within a specific interrupt domain in RISC-V's Priviledged
   Architecture.

 - Rework of the RISC-V MSI driver

   This moves the driver over to the generic MSI library and solves the
   affinity problem of unmaskable PCI/MSI controllers. Unmaskable
   PCI/MSI controllers are prone to lose interrupts when the MSI message
   is updated to change the affinity because the message write consists
   of three 32-bit subsequent writes, which update address and data. As
   these writes are non-atomic versus the device raising an interrupt,
   the device can observe a half written update and issue an interrupt
   on the wrong vector. This is mitiated by a carefully orchestrated
   step by step update and the observation of an eventually pending
   interrupt on the CPU which issues the update. The algorithm follows
   the well established method of the X86 MSI driver.

 - A new driver for the RISC-V Sophgo SG2042 MSI controller

 - Overhaul of the Renesas RZQ2L driver

   Simplification of the probe function by using devm_*() mechanisms,
   which avoid the endless list of error prone gotos in the failure
   paths.

 - Expand the Renesas RZV2H driver to support RZ/G3E SoCs

 - A workaround for Rockchip 3568002 erratum in the GIC-V3 driver to
   ensure that the addressing is limited to the lower 32-bit of the
   physical address space.

 - Add support for the Allwinner AS23 NMI controller

 - Expand the IMX irqsteer driver to handle up to 960 input interrupts

 - The usual small updates, cleanups and device tree changes

* tag 'irq-drivers-2025-03-23' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (40 commits)
  irqchip/imx-irqsteer: Support up to 960 input interrupts
  irqchip/sunxi-nmi: Support Allwinner A523 NMI controller
  dt-bindings: irq: sun7i-nmi: Document the Allwinner A523 NMI controller
  irqchip/davinci-cp-intc: Remove public header
  irqchip/renesas-rzv2h: Add RZ/G3E support
  irqchip/renesas-rzv2h: Update macros ICU_TSSR_TSSEL_{MASK,PREP}
  irqchip/renesas-rzv2h: Update TSSR_TIEN macro
  irqchip/renesas-rzv2h: Add field_width to struct rzv2h_hw_info
  irqchip/renesas-rzv2h: Add max_tssel to struct rzv2h_hw_info
  irqchip/renesas-rzv2h: Add struct rzv2h_hw_info with t_offs variable
  irqchip/renesas-rzv2h: Use devm_pm_runtime_enable()
  irqchip/renesas-rzv2h: Use devm_reset_control_get_exclusive_deasserted()
  irqchip/renesas-rzv2h: Simplify rzv2h_icu_init()
  irqchip/renesas-rzv2h: Drop irqchip from struct rzv2h_icu_priv
  irqchip/renesas-rzv2h: Fix wrong variable usage in rzv2h_tint_set_type()
  dt-bindings: interrupt-controller: renesas,rzv2h-icu: Document RZ/G3E SoC
  riscv: sophgo: dts: Add msi controller for SG2042
  irqchip: Add the Sophgo SG2042 MSI interrupt controller
  dt-bindings: interrupt-controller: Add Sophgo SG2042 MSI
  arm64: dts: rockchip: rk356x: Move PCIe MSI to use GIC ITS instead of MBI
  ...
  • Loading branch information
Linus Torvalds committed Mar 25, 2025
2 parents 36f5f02 + 7db5fd6 commit 0f40464
Show file tree
Hide file tree
Showing 39 changed files with 1,047 additions and 497 deletions.
2 changes: 2 additions & 0 deletions Documentation/arch/arm64/silicon-errata.rst
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,8 @@ stable kernels.
+----------------+-----------------+-----------------+-----------------------------+
| Rockchip | RK3588 | #3588001 | ROCKCHIP_ERRATUM_3588001 |
+----------------+-----------------+-----------------+-----------------------------+
| Rockchip | RK3568 | #3568002 | ROCKCHIP_ERRATUM_3568002 |
+----------------+-----------------+-----------------+-----------------------------+
+----------------+-----------------+-----------------+-----------------------------+
| Fujitsu | A64FX | E#010001 | FUJITSU_ERRATUM_010001 |
+----------------+-----------------+-----------------+-----------------------------+
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ properties:
deprecated: true
- const: allwinner,sun7i-a20-sc-nmi
- const: allwinner,sun9i-a80-nmi
- const: allwinner,sun55i-a523-nmi
- items:
- enum:
- allwinner,sun8i-v3s-nmi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
$id: http://devicetree.org/schemas/interrupt-controller/renesas,rzv2h-icu.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Renesas RZ/V2H(P) Interrupt Control Unit
title: Renesas RZ/{G3E,V2H(P)} Interrupt Control Unit

maintainers:
- Fabrizio Castro <fabrizio.castro.jz@renesas.com>
Expand All @@ -20,7 +20,9 @@ description:

properties:
compatible:
const: renesas,r9a09g057-icu # RZ/V2H(P)
enum:
- renesas,r9a09g047-icu # RZ/G3E
- renesas,r9a09g057-icu # RZ/V2H(P)

'#interrupt-cells':
description: The first cell is the SPI number of the NMI or the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,14 @@ properties:
Firmware must configure interrupt delegation registers based on
interrupt delegation list.

riscv,hart-indexes:
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 1
maxItems: 16384
description:
A list of hart indexes that APLIC should use to address each hart
that is mentioned in the "interrupts-extended"

dependencies:
riscv,delegation: [ "riscv,children" ]

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interrupt-controller/sophgo,sg2042-msi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Sophgo SG2042 MSI Controller

maintainers:
- Chen Wang <unicorn_wang@outlook.com>

description:
This interrupt controller is in Sophgo SG2042 for transforming interrupts from
PCIe MSI to PLIC interrupts.

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

properties:
compatible:
const: sophgo,sg2042-msi

reg:
items:
- description: clear register
- description: msi doorbell address

reg-names:
items:
- const: clr
- const: doorbell

msi-controller: true

msi-ranges:
maxItems: 1

"#msi-cells":
const: 0

required:
- compatible
- reg
- reg-names
- msi-controller
- msi-ranges
- "#msi-cells"

unevaluatedProperties: false

examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
msi-controller@30000000 {
compatible = "sophgo,sg2042-msi";
reg = <0x30000000 0x4>, <0x30000008 0x4>;
reg-names = "clr", "doorbell";
msi-controller;
#msi-cells = <0>;
msi-ranges = <&plic 64 IRQ_TYPE_LEVEL_HIGH 32>;
};
1 change: 0 additions & 1 deletion arch/arm/mach-davinci/da830.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#include <linux/gpio.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/irqchip/irq-davinci-cp-intc.h>

#include <clocksource/timer-davinci.h>

Expand Down
9 changes: 9 additions & 0 deletions arch/arm64/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1302,6 +1302,15 @@ config NVIDIA_CARMEL_CNP_ERRATUM

If unsure, say Y.

config ROCKCHIP_ERRATUM_3568002
bool "Rockchip 3568002: GIC600 can not access physical addresses higher than 4GB"
default y
help
The Rockchip RK3566 and RK3568 GIC600 SoC integrations have AXI
addressing limited to the first 32bit of physical address space.

If unsure, say Y.

config ROCKCHIP_ERRATUM_3588001
bool "Rockchip 3588001: GIC600 can not support shareability attributes"
default y
Expand Down
14 changes: 13 additions & 1 deletion arch/arm64/boot/dts/rockchip/rk356x-base.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,18 @@
mbi-alias = <0x0 0xfd410000>;
mbi-ranges = <296 24>;
msi-controller;
ranges;
#address-cells = <2>;
#size-cells = <2>;
dma-noncoherent;

its: msi-controller@fd440000 {
compatible = "arm,gic-v3-its";
reg = <0x0 0xfd440000 0 0x20000>;
dma-noncoherent;
msi-controller;
#msi-cells = <1>;
};
};

usb_host0_ehci: usb@fd800000 {
Expand Down Expand Up @@ -957,7 +969,7 @@
num-ib-windows = <6>;
num-ob-windows = <2>;
max-link-speed = <2>;
msi-map = <0x0 &gic 0x0 0x1000>;
msi-map = <0x0 &its 0x0 0x1000>;
num-lanes = <1>;
phys = <&combphy2 PHY_TYPE_PCIE>;
phy-names = "pcie-phy";
Expand Down
1 change: 1 addition & 0 deletions arch/riscv/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ config RISCV
select GENERIC_IRQ_SHOW
select GENERIC_IRQ_SHOW_LEVEL
select GENERIC_LIB_DEVMEM_IS_ALLOWED
select GENERIC_PENDING_IRQ if SMP
select GENERIC_PCI_IOMAP
select GENERIC_PTDUMP if MMU
select GENERIC_SCHED_CLOCK
Expand Down
10 changes: 10 additions & 0 deletions arch/riscv/boot/dts/sophgo/sg2042.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,16 @@
#clock-cells = <1>;
};

msi: msi-controller@7030010304 {
compatible = "sophgo,sg2042-msi";
reg = <0x70 0x30010304 0x0 0x4>,
<0x70 0x30010300 0x0 0x4>;
reg-names = "clr", "doorbell";
msi-controller;
#msi-cells = <0>;
msi-ranges = <&intc 64 IRQ_TYPE_LEVEL_HIGH 32>;
};

rpgate: clock-controller@7030010368 {
compatible = "sophgo,sg2042-rpgate";
reg = <0x70 0x30010368 0x0 0x98>;
Expand Down
Loading

0 comments on commit 0f40464

Please sign in to comment.