Skip to contentSkip to conversation

arm64: dts: r8a7795: IPMMU upstream integration V3

PATCH In review Magnus Damm 3 participants 12 messages Mar 20, 2017 – Aug 30, 2017

Subsystems (2)
lore
Share & tools
lore

Magnus Damm

author maintainer
#0 lore raw

v3 cover arm64: dts: r8a7795: IPMMU upstream integration V3

arm64: dts: r8a7795: IPMMU upstream integration V3

[PATCH v3 01/09] arm64: dts: r8a7795: Add IPMMU device nodes [PATCH v3 02/09] arm64: dts: r8a7795: Tie Audio/SYS-DMAC to IPMMU-DS0/1 and MP1 [PATCH v3 03/09] arm64: dts: r8a7795: Point DU/VSPD via FCPVD to IPMMU-VI [PATCH v3 04/09] arm64: dts: r8a7795: Point FDP1 via FCPF to IPMMU-VP [PATCH v3 05/09] arm64: dts: r8a7795: Point VSPBC/VSPBD via FCPVB to IPMMU-VP [PATCH v3 06/09] arm64: dts: r8a7795: Point VSPI via FCPVI to IPMMU-VP [PATCH v3 07/09] arm64: dts: r8a7795: Connect Ethernet-AVB to IPMMU-DS0 [PATCH v3 08/09] arm64: dts: r8a7795: Connect SATA to IPMMU-HC [PATCH v3 09/09] arm64: dts: r8a7795: Enable IPMMU-VI, VP, MP1, DS0, DS1 and MM

This series adds DT nodes for IPMMU instances on r8a7795 together with connections to various r8a7795 on-chip devices such as Audio-DMAC, SYS-DMAC, Ethernet-AVB, SATA and a bunch of multimedia devices that make use of FCP.

With these patches applied a white list enabled IPMMU driver may be used to check silicon revision and then enable IPMMU in the known working cases.

The recommended IPMMU driver patch stack consists of the following series:
[PATCH v7 00/07] iommu/ipmmu-vmsa: IPMMU multi-arch update V7 [PATCH v3 00/09] iommu/ipmmu-vmsa: r8a7795 support V3
[PATCH v3 0/3] iommu/ipmmu-vmsa: r8a7796 support V3

The final patch in the series enable IPMMU support for all IPMMU instances on r8a7795 that are used by IPMMU devices listed above with one exception. The exception is the SATA device connected to IPMMU-HC which still is disabled pending IPMMU USB integration support. I expect IPMMU USB integration to be handled as a second step once this series is agreed on.

The DT binding for r8a7795 has since long been included in mainline and this series implements support following such format:

d4e42e7 iommu/ipmmu-vmsa: Add r8a7795 DT binding

Changes since V2:
- Added the iommus property before power domains - thanks Geert!
- Added reviewed-by to patch 2 and 3 from Laurent - thanks!
- Re-added Ethernet and FCPVD patches (They were present in V1 but not V2)
- Added remaining FCP devices such as FCPF, FCPVB and FCPVI
- Added SATA device
- Added final patch to enable various IPMMU devices in the DTS file

Since the DT binding has been merged quite some time ago and the interface seems stable enough I see no reason not to queue these up for upstream merge.

---

Developed on top of renesas-devel-20170313-v4.11-rc2

No special run time or compile time dependencies.

 arch/arm64/boot/dts/renesas/r8a7795.dtsi |  173 ++++++++++++++++++++++++++++--
 1 file changed, 167 insertions(+), 6 deletions(-)
author maintainer
#1 lore raw

PATCH v3 1/9 arm64: dts: r8a7795: Add IPMMU device nodes

From: Magnus Damm <[email protected]>

Add r8a7795 IPMMU nodes and keep all disabled by default.

---

Changes from V2:
- Added Reviewed-by from Laurent - thanks!

Changes from V1:
- None

 arch/arm64/boot/dts/renesas/r8a7795.dtsi |  113 ++++++++++++++++++++++++++++++
 1 file changed, 113 insertions(+)
arch/arm64/boot/dts/renesas/r8a7795.dtsi +113 -0
@@ -407,6 +407,119 @@
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 		};
 
+		ipmmu_vi: mmu@febd0000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xfebd0000 0 0x1000>; /* IPMMU-VI */
+			renesas,ipmmu-main = <&ipmmu_mm 11>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_vp: mmu@fe990000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xfe990000 0 0x1000>; /* IPMMU-VP */
+			renesas,ipmmu-main = <&ipmmu_mm 12>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_vc0: mmu@fe6b0000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xfe6b0000 0 0x1000>; /* IPMMU-VC0 */
+			renesas,ipmmu-main = <&ipmmu_mm 9>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_vc1: mmu@fe6f0000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xfe6f0000 0 0x1000>; /* IPMMU-VC1 */
+			renesas,ipmmu-main = <&ipmmu_mm 10>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_pv0: mmu@fd800000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xfd800000 0 0x1000>; /* IPMMU-PV0 */
+			renesas,ipmmu-main = <&ipmmu_mm 6>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_ir: mmu@ff8b0000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xff8b0000 0 0x1000>; /* IPMMU-IR */
+			renesas,ipmmu-main = <&ipmmu_mm 3>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_hc: mmu@e6570000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xe6570000 0 0x1000>; /* IPMMU-HC */
+			renesas,ipmmu-main = <&ipmmu_mm 2>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_rt: mmu@ffc80000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xffc80000 0 0x1000>; /* IPMMU-RT */
+			renesas,ipmmu-main = <&ipmmu_mm 7>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_mp0: mmu@ec670000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xec670000 0 0x1000>; /* IPMMU-MP0 */
+			renesas,ipmmu-main = <&ipmmu_mm 4>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_mp1: mmu@ec680000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xec680000 0 0x1000>; /* IPMMU-MP1 */
+			renesas,ipmmu-main = <&ipmmu_mm 5>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_sy: mmu@e7730000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xe7730000 0 0x1000>; /* IPMMU-SY */
+			renesas,ipmmu-main = <&ipmmu_mm 8>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_ds0: mmu@e6740000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xe6740000 0 0x1000>; /* IPMMU-DS0 */
+			renesas,ipmmu-main = <&ipmmu_mm 0>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_ds1: mmu@e7740000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xe7740000 0 0x1000>; /* IPMMU-DS1 */
+			renesas,ipmmu-main = <&ipmmu_mm 1>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
+		ipmmu_mm: mmu@e67b0000 {
+			compatible = "renesas,ipmmu-r8a7795";
+			reg = <0 0xe67b0000 0 0x1000>; /* IPMMU-MM */
+			interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
+			#iommu-cells = <1>;
+			status = "disabled";
+		};
+
 		dmac0: dma-controller@e6700000 {
 			compatible = "renesas,dmac-r8a7795",
 				     "renesas,rcar-dmac";
author maintainer
#2 lore raw

PATCH v3 2/9 arm64: dts: r8a7795: Tie Audio/SYS-DMAC to IPMMU-DS0/1 and MP1

In reply to Magnus Damm

From: Magnus Damm <[email protected]>

Hook up r8a7795 DMAC nodes to the IPMMUs. In particular Audio-DMAC0 and Audio-DMAC1 get connected to IPMMU-MP1, while SYS-DMAC0 gets tied to IPMMU-DS0 and SYS-DMAC1 and SYS-DMAC2 get tied to IPMMU-DS1.

---

Changes from V2:
- Updated description with more detail about SYS-DMAC and Audio-DMAC
- Updated title/subject to include Audio-DMAC
- Added Reviewed-by from Laurent - thanks!

Changes from V1:
- None

 arch/arm64/boot/dts/renesas/r8a7795.dtsi |   40 ++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
arch/arm64/boot/dts/renesas/r8a7795.dtsi +40 -0
@@ -548,6 +548,14 @@
 					"ch12", "ch13", "ch14", "ch15";
 			clocks = <&cpg CPG_MOD 219>;
 			clock-names = "fck";
+			iommus = <&ipmmu_ds0 0>, <&ipmmu_ds0 1>,
+			       <&ipmmu_ds0 2>, <&ipmmu_ds0 3>,
+			       <&ipmmu_ds0 4>, <&ipmmu_ds0 5>,
+			       <&ipmmu_ds0 6>, <&ipmmu_ds0 7>,
+			       <&ipmmu_ds0 8>, <&ipmmu_ds0 9>,
+			       <&ipmmu_ds0 10>, <&ipmmu_ds0 11>,
+			       <&ipmmu_ds0 12>, <&ipmmu_ds0 13>,
+			       <&ipmmu_ds0 14>, <&ipmmu_ds0 15>;
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 			#dma-cells = <1>;
 			dma-channels = <16>;
@@ -581,6 +589,14 @@
 					"ch12", "ch13", "ch14", "ch15";
 			clocks = <&cpg CPG_MOD 218>;
 			clock-names = "fck";
+			iommus = <&ipmmu_ds1 0>, <&ipmmu_ds1 1>,
+			       <&ipmmu_ds1 2>, <&ipmmu_ds1 3>,
+			       <&ipmmu_ds1 4>, <&ipmmu_ds1 5>,
+			       <&ipmmu_ds1 6>, <&ipmmu_ds1 7>,
+			       <&ipmmu_ds1 8>, <&ipmmu_ds1 9>,
+			       <&ipmmu_ds1 10>, <&ipmmu_ds1 11>,
+			       <&ipmmu_ds1 12>, <&ipmmu_ds1 13>,
+			       <&ipmmu_ds1 14>, <&ipmmu_ds1 15>;
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 			#dma-cells = <1>;
 			dma-channels = <16>;
@@ -614,6 +630,14 @@
 					"ch12", "ch13", "ch14", "ch15";
 			clocks = <&cpg CPG_MOD 217>;
 			clock-names = "fck";
+			iommus = <&ipmmu_ds1 16>, <&ipmmu_ds1 17>,
+			       <&ipmmu_ds1 18>, <&ipmmu_ds1 19>,
+			       <&ipmmu_ds1 20>, <&ipmmu_ds1 21>,
+			       <&ipmmu_ds1 22>, <&ipmmu_ds1 23>,
+			       <&ipmmu_ds1 24>, <&ipmmu_ds1 25>,
+			       <&ipmmu_ds1 26>, <&ipmmu_ds1 27>,
+			       <&ipmmu_ds1 28>, <&ipmmu_ds1 29>,
+			       <&ipmmu_ds1 30>, <&ipmmu_ds1 31>;
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 			#dma-cells = <1>;
 			dma-channels = <16>;
@@ -647,6 +671,14 @@
 					"ch12", "ch13", "ch14", "ch15";
 			clocks = <&cpg CPG_MOD 502>;
 			clock-names = "fck";
+			iommus = <&ipmmu_mp1 0>, <&ipmmu_mp1 1>,
+			       <&ipmmu_mp1 2>, <&ipmmu_mp1 3>,
+			       <&ipmmu_mp1 4>, <&ipmmu_mp1 5>,
+			       <&ipmmu_mp1 6>, <&ipmmu_mp1 7>,
+			       <&ipmmu_mp1 8>, <&ipmmu_mp1 9>,
+			       <&ipmmu_mp1 10>, <&ipmmu_mp1 11>,
+			       <&ipmmu_mp1 12>, <&ipmmu_mp1 13>,
+			       <&ipmmu_mp1 14>, <&ipmmu_mp1 15>;
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 			#dma-cells = <1>;
 			dma-channels = <16>;
@@ -680,6 +712,14 @@
 					"ch12", "ch13", "ch14", "ch15";
 			clocks = <&cpg CPG_MOD 501>;
 			clock-names = "fck";
+			iommus = <&ipmmu_mp1 16>, <&ipmmu_mp1 17>,
+			       <&ipmmu_mp1 18>, <&ipmmu_mp1 19>,
+			       <&ipmmu_mp1 20>, <&ipmmu_mp1 21>,
+			       <&ipmmu_mp1 22>, <&ipmmu_mp1 23>,
+			       <&ipmmu_mp1 24>, <&ipmmu_mp1 25>,
+			       <&ipmmu_mp1 26>, <&ipmmu_mp1 27>,
+			       <&ipmmu_mp1 28>, <&ipmmu_mp1 29>,
+			       <&ipmmu_mp1 30>, <&ipmmu_mp1 31>;
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 			#dma-cells = <1>;
 			dma-channels = <16>;
author maintainer
#3 lore raw

PATCH v3 3/9 arm64: dts: r8a7795: Point DU/VSPD via FCPVD to IPMMU-VI

In reply to Magnus Damm

From: Magnus Damm <[email protected]>

Hook up the FCPVD devices to allow use of the VSP and DU together with IPMMU-VI.

---

Changes since V2:
- New patch

 arch/arm64/boot/dts/renesas/r8a7795.dtsi |    4 ++++
 1 file changed, 4 insertions(+)
arch/arm64/boot/dts/renesas/r8a7795.dtsi +4 -0
@@ -1738,6 +1738,7 @@
 			compatible = "renesas,fcpv";
 			reg = <0 0xfea27000 0 0x200>;
 			clocks = <&cpg CPG_MOD 603>;
+			iommus = <&ipmmu_vi 8>;
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 		};
 
@@ -1755,6 +1756,7 @@
 			compatible = "renesas,fcpv";
 			reg = <0 0xfea2f000 0 0x200>;
 			clocks = <&cpg CPG_MOD 602>;
+			iommus = <&ipmmu_vi 9>;
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 		};
 
@@ -1772,6 +1774,7 @@
 			compatible = "renesas,fcpv";
 			reg = <0 0xfea37000 0 0x200>;
 			clocks = <&cpg CPG_MOD 601>;
+			iommus = <&ipmmu_vi 10>;
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 		};
 
@@ -1789,6 +1792,7 @@
 			compatible = "renesas,fcpv";
 			reg = <0 0xfea3f000 0 0x200>;
 			clocks = <&cpg CPG_MOD 600>;
+			iommus = <&ipmmu_vi 11>;
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 		};
 
author maintainer
#4 lore raw

PATCH v3 4/9 arm64: dts: r8a7795: Point FDP1 via FCPF to IPMMU-VP

In reply to Magnus Damm

From: Magnus Damm <[email protected]>

Hook up the FCPF devices to allow use of FDP1 with IPMMU-VP.

---

Changes since V2:
- New patch

 arch/arm64/boot/dts/renesas/r8a7795.dtsi |    3 +++
 1 file changed, 3 insertions(+)
arch/arm64/boot/dts/renesas/r8a7795.dtsi +3 -0
@@ -1639,6 +1639,7 @@
 			compatible = "renesas,fcpf";
 			reg = <0 0xfe950000 0 0x200>;
 			clocks = <&cpg CPG_MOD 615>;
+			iommus = <&ipmmu_vp 0>;
 			power-domains = <&sysc R8A7795_PD_A3VP>;
 		};
 
@@ -1646,6 +1647,7 @@
 			compatible = "renesas,fcpf";
 			reg = <0 0xfe951000 0 0x200>;
 			clocks = <&cpg CPG_MOD 614>;
+			iommus = <&ipmmu_vp 1>;
 			power-domains = <&sysc R8A7795_PD_A3VP>;
 		};
 
@@ -1653,6 +1655,7 @@
 			compatible = "renesas,fcpf";
 			reg = <0 0xfe952000 0 0x200>;
 			clocks = <&cpg CPG_MOD 613>;
+			iommus = <&ipmmu_vp 2>;
 			power-domains = <&sysc R8A7795_PD_A3VP>;
 		};
 
author maintainer
#5 lore raw

PATCH v3 5/9 arm64: dts: r8a7795: Point VSPBC/VSPBD via FCPVB to IPMMU-VP

In reply to Magnus Damm

From: Magnus Damm <[email protected]>

Hook up the FCPVB devices to allow use of VSPBC/VSPBD with IPMMU-VP.

---

Changes since V2:
- New patch

 arch/arm64/boot/dts/renesas/r8a7795.dtsi |    2 ++
 1 file changed, 2 insertions(+)
arch/arm64/boot/dts/renesas/r8a7795.dtsi +2 -0
@@ -1632,6 +1632,7 @@
 			compatible = "renesas,fcpv";
 			reg = <0 0xfe92f000 0 0x200>;
 			clocks = <&cpg CPG_MOD 606>;
+			iommus = <&ipmmu_vp 7>;
 			power-domains = <&sysc R8A7795_PD_A3VP>;
 		};
 
@@ -1673,6 +1674,7 @@
 			compatible = "renesas,fcpv";
 			reg = <0 0xfe96f000 0 0x200>;
 			clocks = <&cpg CPG_MOD 607>;
+			iommus = <&ipmmu_vp 5>;
 			power-domains = <&sysc R8A7795_PD_A3VP>;
 		};
 
author maintainer
#6 lore raw

PATCH v3 6/9 arm64: dts: r8a7795: Point VSPI via FCPVI to IPMMU-VP

In reply to Magnus Damm

From: Magnus Damm <[email protected]>

Hook up the FCPVI devices to allow use of VSPI with IPMMU-VP.

---

Changes since V2:
- New patch

 arch/arm64/boot/dts/renesas/r8a7795.dtsi |    3 +++
 1 file changed, 3 insertions(+)
arch/arm64/boot/dts/renesas/r8a7795.dtsi +3 -0
@@ -1692,6 +1692,7 @@
 			compatible = "renesas,fcpv";
 			reg = <0 0xfe9af000 0 0x200>;
 			clocks = <&cpg CPG_MOD 611>;
+			iommus = <&ipmmu_vp 8>;
 			power-domains = <&sysc R8A7795_PD_A3VP>;
 		};
 
@@ -1709,6 +1710,7 @@
 			compatible = "renesas,fcpv";
 			reg = <0 0xfe9bf000 0 0x200>;
 			clocks = <&cpg CPG_MOD 610>;
+			iommus = <&ipmmu_vp 9>;
 			power-domains = <&sysc R8A7795_PD_A3VP>;
 		};
 
@@ -1726,6 +1728,7 @@
 			compatible = "renesas,fcpv";
 			reg = <0 0xfe9cf000 0 0x200>;
 			clocks = <&cpg CPG_MOD 609>;
+			iommus = <&ipmmu_vp 10>;
 			power-domains = <&sysc R8A7795_PD_A3VP>;
 		};
 
author maintainer
#7 lore raw

PATCH v3 7/9 arm64: dts: r8a7795: Connect Ethernet-AVB to IPMMU-DS0

In reply to Magnus Damm

From: Magnus Damm <[email protected]>

Add IPMMU-DS0 to the Ethernet-AVB device node.

---

Changes since V2:
- New patch

 arch/arm64/boot/dts/renesas/r8a7795.dtsi |    1 +
 1 file changed, 1 insertion(+)
arch/arm64/boot/dts/renesas/r8a7795.dtsi +1 -0
@@ -762,6 +762,7 @@
 					  "ch20", "ch21", "ch22", "ch23",
 					  "ch24";
 			clocks = <&cpg CPG_MOD 812>;
+			iommus = <&ipmmu_ds0 16>;
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 			phy-mode = "rgmii-txid";
 			#address-cells = <1>;
author maintainer
#8 lore raw

PATCH v3 8/9 arm64: dts: r8a7795: Connect SATA to IPMMU-HC

In reply to Magnus Damm

From: Magnus Damm <[email protected]>

Add IPMMU-HC to the SATA device node.

---

Changes since V2:
- New patch

 arch/arm64/boot/dts/renesas/r8a7795.dtsi |    1 +
 1 file changed, 1 insertion(+)
arch/arm64/boot/dts/renesas/r8a7795.dtsi +1 -0
@@ -1366,6 +1366,7 @@
 			reg = <0 0xee300000 0 0x1fff>;
 			interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&cpg CPG_MOD 815>;
+			iommus = <&ipmmu_hc 2>;
 			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
 			status = "disabled";
 		};
author maintainer
#9 lore raw

PATCH v3 9/9 arm64: dts: r8a7795: Enable IPMMU-VI, VP, MP1, DS0, DS1 and MM

In reply to Magnus Damm

From: Magnus Damm <[email protected]>

Enable the r8a7795 device nodes for IPMMU-VI, IPMMU-VP, IPMMU-MP1, IPMMU-DS0, IPMMU-DS1 and the shared IPMMU-MM device.

---

Changes since V2:
- New patch

 arch/arm64/boot/dts/renesas/r8a7795.dtsi |    6 ------
 1 file changed, 6 deletions(-)
arch/arm64/boot/dts/renesas/r8a7795.dtsi +0 -6
@@ -412,7 +412,6 @@
 			reg = <0 0xfebd0000 0 0x1000>; /* IPMMU-VI */
 			renesas,ipmmu-main = <&ipmmu_mm 11>;
 			#iommu-cells = <1>;
-			status = "disabled";
 		};
 
 		ipmmu_vp: mmu@fe990000 {
@@ -420,7 +419,6 @@
 			reg = <0 0xfe990000 0 0x1000>; /* IPMMU-VP */
 			renesas,ipmmu-main = <&ipmmu_mm 12>;
 			#iommu-cells = <1>;
-			status = "disabled";
 		};
 
 		ipmmu_vc0: mmu@fe6b0000 {
@@ -484,7 +482,6 @@
 			reg = <0 0xec680000 0 0x1000>; /* IPMMU-MP1 */
 			renesas,ipmmu-main = <&ipmmu_mm 5>;
 			#iommu-cells = <1>;
-			status = "disabled";
 		};
 
 		ipmmu_sy: mmu@e7730000 {
@@ -500,7 +497,6 @@
 			reg = <0 0xe6740000 0 0x1000>; /* IPMMU-DS0 */
 			renesas,ipmmu-main = <&ipmmu_mm 0>;
 			#iommu-cells = <1>;
-			status = "disabled";
 		};
 
 		ipmmu_ds1: mmu@e7740000 {
@@ -508,7 +504,6 @@
 			reg = <0 0xe7740000 0 0x1000>; /* IPMMU-DS1 */
 			renesas,ipmmu-main = <&ipmmu_mm 1>;
 			#iommu-cells = <1>;
-			status = "disabled";
 		};
 
 		ipmmu_mm: mmu@e67b0000 {
@@ -517,7 +512,6 @@
 			interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
 				     <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
 			#iommu-cells = <1>;
-			status = "disabled";
 		};
 
 		dmac0: dma-controller@e6700000 {
#10 lore raw
In reply to Magnus Damm

Hi Magnus,

Quoted 24 lines · Magnus Damm

arm64: dts: r8a7795: IPMMU upstream integration V3

[PATCH v3 01/09] arm64: dts: r8a7795: Add IPMMU device nodes [PATCH v3 02/09] arm64: dts: r8a7795: Tie Audio/SYS-DMAC to IPMMU-DS0/1 and MP1 [PATCH v3 03/09] arm64: dts: r8a7795: Point DU/VSPD via FCPVD to IPMMU-VI [PATCH v3 04/09] arm64: dts: r8a7795: Point FDP1 via FCPF to IPMMU-VP [PATCH v3 05/09] arm64: dts: r8a7795: Point VSPBC/VSPBD via FCPVB to IPMMU-VP [PATCH v3 06/09] arm64: dts: r8a7795: Point VSPI via FCPVI to IPMMU-VP [PATCH v3 07/09] arm64: dts: r8a7795: Connect Ethernet-AVB to IPMMU-DS0 [PATCH v3 08/09] arm64: dts: r8a7795: Connect SATA to IPMMU-HC [PATCH v3 09/09] arm64: dts: r8a7795: Enable IPMMU-VI, VP, MP1, DS0, DS1 and MM

This series adds DT nodes for IPMMU instances on r8a7795 together with connections to various r8a7795 on-chip devices such as Audio-DMAC, SYS-DMAC, Ethernet-AVB, SATA and a bunch of multimedia devices that make use of FCP.

With these patches applied a white list enabled IPMMU driver may be used to check silicon revision and then enable IPMMU in the known working cases.

The recommended IPMMU driver patch stack consists of the following series:
[PATCH v7 00/07] iommu/ipmmu-vmsa: IPMMU multi-arch update V7 [PATCH v3 00/09] iommu/ipmmu-vmsa: r8a7795 support V3
[PATCH v3 0/3] iommu/ipmmu-vmsa: r8a7796 support V3

Quoted 8 lines

The final patch in the series enable IPMMU support for all IPMMU instances on r8a7795 that are used by IPMMU devices listed above with one exception. The exception is the SATA device connected to IPMMU-HC which still is disabled pending IPMMU USB integration support. I expect IPMMU USB integration to be handled as a second step once this series is agreed on.

The DT binding for r8a7795 has since long been included in mainline and this series implements support following such format:

I dropped this series from today's renesas-drivers because of two reasons:
1. IPMMU is busted in v4.12-rc1,
2. The addition of support for R-Car H3 ES2.0 complicated the addition of IPMMU devices nodes and links from their slaves.

This also means I couldn't apply Morimoto-san's "[PATCH v2 --/--] arm64:
renesas: r8a7796: add IPMMU support for AUDIO DMAC", as it depends on your series.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

#11 lore raw
In reply to Magnus Damm
Quoted 43 lines · Magnus Damm

arm64: dts: r8a7795: IPMMU upstream integration V3

[PATCH v3 01/09] arm64: dts: r8a7795: Add IPMMU device nodes [PATCH v3 02/09] arm64: dts: r8a7795: Tie Audio/SYS-DMAC to IPMMU-DS0/1 and MP1 [PATCH v3 03/09] arm64: dts: r8a7795: Point DU/VSPD via FCPVD to IPMMU-VI [PATCH v3 04/09] arm64: dts: r8a7795: Point FDP1 via FCPF to IPMMU-VP [PATCH v3 05/09] arm64: dts: r8a7795: Point VSPBC/VSPBD via FCPVB to IPMMU-VP [PATCH v3 06/09] arm64: dts: r8a7795: Point VSPI via FCPVI to IPMMU-VP [PATCH v3 07/09] arm64: dts: r8a7795: Connect Ethernet-AVB to IPMMU-DS0 [PATCH v3 08/09] arm64: dts: r8a7795: Connect SATA to IPMMU-HC [PATCH v3 09/09] arm64: dts: r8a7795: Enable IPMMU-VI, VP, MP1, DS0, DS1 and MM

This series adds DT nodes for IPMMU instances on r8a7795 together with connections to various r8a7795 on-chip devices such as Audio-DMAC, SYS-DMAC, Ethernet-AVB, SATA and a bunch of multimedia devices that make use of FCP.

With these patches applied a white list enabled IPMMU driver may be used to check silicon revision and then enable IPMMU in the known working cases.

The recommended IPMMU driver patch stack consists of the following series:
[PATCH v7 00/07] iommu/ipmmu-vmsa: IPMMU multi-arch update V7 [PATCH v3 00/09] iommu/ipmmu-vmsa: r8a7795 support V3
[PATCH v3 0/3] iommu/ipmmu-vmsa: r8a7796 support V3

The final patch in the series enable IPMMU support for all IPMMU instances on r8a7795 that are used by IPMMU devices listed above with one exception. The exception is the SATA device connected to IPMMU-HC which still is disabled pending IPMMU USB integration support. I expect IPMMU USB integration to be handled as a second step once this series is agreed on.

The DT binding for r8a7795 has since long been included in mainline and this series implements support following such format:

d4e42e7 iommu/ipmmu-vmsa: Add r8a7795 DT binding

Changes since V2:
- Added the iommus property before power domains - thanks Geert!
- Added reviewed-by to patch 2 and 3 from Laurent - thanks!
- Re-added Ethernet and FCPVD patches (They were present in V1 but not V2)
- Added remaining FCP devices such as FCPF, FCPVB and FCPVI
- Added SATA device
- Added final patch to enable various IPMMU devices in the DTS file

Quoted 2 lines

Since the DT binding has been merged quite some time ago and the interface seems stable enough I see no reason not to queue these up for upstream merge.

Going through old patches I noticed that I seem to have missed this somehow. I assume its still applicable but wants a rebase. If so could you do so?