]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: dts: renesas: r8a78000: Fix GIC-720AE View 1 Redistributor description
authorMarek Vasut <marek.vasut+renesas@mailbox.org>
Thu, 14 May 2026 12:53:06 +0000 (14:53 +0200)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Sun, 31 May 2026 08:49:18 +0000 (10:49 +0200)
The Renesas R-Car X5H (R8A78000) SoC contains Arm CoreLink GIC-720AE
Generic Interrupt Controller with Multi View capability. Firmware has
access to configuration View 0, Linux kernel has access to View 1.

The Arm CoreLink GIC-720AE Generic Interrupt Controller Technical
Reference Manual, currently latest r2p1 [1], chapter "5. Programmers
model for GIC-720AE", subchapter "5.4 Redistributor registers
for control and physical LPIs summary", part "5.4.3 GICR_TYPER,
Redistributor Type Register", "Table 5-50: GICR_TYPER bit descriptions"
on page 200, clarifies register "GICR_TYPER" bit 4 "Last" behavior
in Multi View setup as follows:

    Last
    Last Redistributor:

    0 ... This Redistributor is not the last Redistributor on the chip.
    1 ... This Redistributor is the last Redistributor on the chip.
  When GICD_CFGID.VIEW == 1, for views 1, 2, or 3 this bit
  always returns 1.

On this SoC, GICD_CFGID.VIEW is 1 and the Linux kernel has access to
View 1, therefore Linux kernel GICv3 driver will interpret register
"GICR_TYPER" bit 4 "Last" = 1 in the first Redistributor in continuous
Redistributor page as that first Redistributor being the one and only
Redistributor and will stop processing the continuous Redistributor
page further. This will prevent the other Redistributors from being
recognized by the system and used for other PEs.

Because the hardware indicates that the continuous Redistributor page
is not continuous for View 1, 2, or 3, describe every Redistributor
separately in the DT. This makes all Redistributors for all cores
accessible in Linux.

[1] https://documentation-service.arm.com/static/69ef3c1cd35efd294e335c43
    ArmĀ® CoreLinkā„¢ GIC-720AE Generic Interrupt Controller
    Revision: r2p1 / Issue 12 / 102666_0201_12_en

Fixes: 63500d12cf76 ("arm64: dts: renesas: Add R8A78000 SoC support")
Acked-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/20260514125328.20954-1-marek.vasut+renesas@mailbox.org
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
arch/arm64/boot/dts/renesas/r8a78000.dtsi

index 5e8fdc818256cf09eb2a445e9b58e3b43506c186..d14f0cc0ad3601ff5d7f99df3c4019ffd2c056fc 100644 (file)
                        #interrupt-cells = <3>;
                        #address-cells = <0>;
                        interrupt-controller;
-                       reg = <0 0x39000000 0 0x10000>,
-                             <0 0x39080000 0 0x800000>;
+                       #redistributor-regions = <32>;
+                       reg = <0x0 0x39000000 0x0 0x10000>,
+                             <0x0 0x39080000 0x0 0x40000>,
+                             <0x0 0x390c0000 0x0 0x40000>,
+                             <0x0 0x39100000 0x0 0x40000>,
+                             <0x0 0x39140000 0x0 0x40000>,
+                             <0x0 0x39180000 0x0 0x40000>,
+                             <0x0 0x391c0000 0x0 0x40000>,
+                             <0x0 0x39200000 0x0 0x40000>,
+                             <0x0 0x39240000 0x0 0x40000>,
+                             <0x0 0x39280000 0x0 0x40000>,
+                             <0x0 0x392c0000 0x0 0x40000>,
+                             <0x0 0x39300000 0x0 0x40000>,
+                             <0x0 0x39340000 0x0 0x40000>,
+                             <0x0 0x39380000 0x0 0x40000>,
+                             <0x0 0x393c0000 0x0 0x40000>,
+                             <0x0 0x39400000 0x0 0x40000>,
+                             <0x0 0x39440000 0x0 0x40000>,
+                             <0x0 0x39480000 0x0 0x40000>,
+                             <0x0 0x394c0000 0x0 0x40000>,
+                             <0x0 0x39500000 0x0 0x40000>,
+                             <0x0 0x39540000 0x0 0x40000>,
+                             <0x0 0x39580000 0x0 0x40000>,
+                             <0x0 0x395c0000 0x0 0x40000>,
+                             <0x0 0x39600000 0x0 0x40000>,
+                             <0x0 0x39640000 0x0 0x40000>,
+                             <0x0 0x39680000 0x0 0x40000>,
+                             <0x0 0x396c0000 0x0 0x40000>,
+                             <0x0 0x39700000 0x0 0x40000>,
+                             <0x0 0x39740000 0x0 0x40000>,
+                             <0x0 0x39780000 0x0 0x40000>,
+                             <0x0 0x397c0000 0x0 0x40000>,
+                             <0x0 0x39800000 0x0 0x40000>,
+                             <0x0 0x39840000 0x0 0x40000>;
                        interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
                };