ALT Linux kernel packages development
 help / color / mirror / Atom feed
From: Anton Midyukov <antohami@altlinux.org>
To: devel-kernel@lists.altlinux.org
Subject: [d-kernel] [PATCH 26/30] arm64: dts: rockchip: enable the mmu600_pcie IOMMU on the rk3588 SoC
Date: Tue, 22 Apr 2025 13:04:45 +0300
Message-ID: <5a6ff16230bc67802924a9946402eb06d91b2f4b.1745307792.git.antohami@altlinux.org> (raw)
In-Reply-To: <cover.1745307792.git.antohami@altlinux.org>

From: Niklas Cassel <cassel@kernel.org>

Commit cd81d3a0695c ("arm64: dts: rockchip: add rk3588 pcie and php
IOMMUs") added the rk3588 SoC's pcie IOMMU and php IOMMU as disabled.

The mmu600_pcie is connected with the five PCIe controllers.
See 8.2 Block Diagram, in rk3588 TRM (Technical Reference Manual).

The five PCIe controllers are:
pcie3x4, pcie3x2, pcie2x1l0, pcie2x1l1, pcie2x1l2.

pcie3x4 can run in either Root Complex mode or Endpoint mode, the other
four PCIe controllers can only run in Root Complex mode. To describe this
we thus have six different device nodes in the device tree.

A PCIe controller in Root Complex mode needs to specify an iommu-map, such
that the device knows how to convert a Requester ID (PCI BDF) to an IOMMU
master ID (stream ID). (A PCIe controller in Endpoint mode should use the
iommus property, just like a regular device.)

If you look at the device tree bindings for msi-map and iommu-map, you can
see that the conversion from Requester ID to MSI-specifier data is the same
as the conversion from Requester ID to IOMMU specifier data. Thus it is
sensible to define the iommu-map property value similar to the msi-map,
such that the conversion will be identical.

Add the proper iommu device tree properties for these six device nodes
connected to the mmu600_pcie, so that we can enable the mmu600_pcie IOMMU.
(The mmu600_php IOMMU is not touched, so it is still disabled.)

Signed-off-by: Niklas Cassel <cassel@kernel.org>
Link: https://lore.kernel.org/r/20241107123732.1160063-2-cassel@kernel.org
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
(cherry picked from commit da92d3dfc871e821a1bface3ba5afcf8cda19805)
Signed-off-by: Anton Midyukov <antohami@altlinux.org>
---
 arch/arm64/boot/dts/rockchip/rk3588-base.dtsi  | 3 ++-
 arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi | 4 ++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
index 8e73c681268bb..c3abdfb04f8f4 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
@@ -555,7 +555,6 @@ mmu600_pcie: iommu@fc900000 {
 			     <GIC_SPI 367 IRQ_TYPE_EDGE_RISING 0>;
 		interrupt-names = "eventq", "gerror", "priq", "cmdq-sync";
 		#iommu-cells = <1>;
-		status = "disabled";
 	};
 
 	mmu600_php: iommu@fcb00000 {
@@ -1686,6 +1685,7 @@ pcie2x1l1: pcie@fe180000 {
 		linux,pci-domain = <3>;
 		max-link-speed = <2>;
 		msi-map = <0x3000 &its0 0x3000 0x1000>;
+		iommu-map = <0x3000 &mmu600_pcie 0x3000 0x1000>;
 		num-lanes = <1>;
 		phys = <&combphy2_psu PHY_TYPE_PCIE>;
 		phy-names = "pcie-phy";
@@ -1737,6 +1737,7 @@ pcie2x1l2: pcie@fe190000 {
 		linux,pci-domain = <4>;
 		max-link-speed = <2>;
 		msi-map = <0x4000 &its0 0x4000 0x1000>;
+		iommu-map = <0x4000 &mmu600_pcie 0x4000 0x1000>;
 		num-lanes = <1>;
 		phys = <&combphy0_ps PHY_TYPE_PCIE>;
 		phy-names = "pcie-phy";
diff --git a/arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi
index 0ce0934ec6b79..4a950907ea6f5 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi
@@ -162,6 +162,7 @@ pcie3x4: pcie@fe150000 {
 		linux,pci-domain = <0>;
 		max-link-speed = <3>;
 		msi-map = <0x0000 &its1 0x0000 0x1000>;
+		iommu-map = <0x0000 &mmu600_pcie 0x0000 0x1000>;
 		num-lanes = <4>;
 		phys = <&pcie30phy>;
 		phy-names = "pcie-phy";
@@ -212,6 +213,7 @@ pcie3x4_ep: pcie-ep@fe150000 {
 		interrupt-names = "sys", "pmc", "msg", "legacy", "err",
 				  "dma0", "dma1", "dma2", "dma3";
 		max-link-speed = <3>;
+		iommus = <&mmu600_pcie 0x0000>;
 		num-lanes = <4>;
 		phys = <&pcie30phy>;
 		phy-names = "pcie-phy";
@@ -248,6 +250,7 @@ pcie3x2: pcie@fe160000 {
 		linux,pci-domain = <1>;
 		max-link-speed = <3>;
 		msi-map = <0x1000 &its1 0x1000 0x1000>;
+		iommu-map = <0x1000 &mmu600_pcie 0x1000 0x1000>;
 		num-lanes = <2>;
 		phys = <&pcie30phy>;
 		phy-names = "pcie-phy";
@@ -297,6 +300,7 @@ pcie2x1l0: pcie@fe170000 {
 		linux,pci-domain = <2>;
 		max-link-speed = <2>;
 		msi-map = <0x2000 &its0 0x2000 0x1000>;
+		iommu-map = <0x2000 &mmu600_pcie 0x2000 0x1000>;
 		num-lanes = <1>;
 		phys = <&combphy1_ps PHY_TYPE_PCIE>;
 		phy-names = "pcie-phy";
-- 
2.42.4



  parent reply	other threads:[~2025-04-22 10:04 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-22 10:04 [d-kernel] [PATCH 00/30] [6.12] Enable HDMI0 support on rk3588 and same other improvements from v6.14 Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 01/30] drm/bridge: synopsys: Add DW HDMI QP TX Controller support library Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 02/30] dt-bindings: display: rockchip: Add schema for RK3588 HDMI TX Controller Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 03/30] drm/rockchip: Add basic RK3588 HDMI output support Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 04/30] drm/rockchip: avoid 64-bit division Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 05/30] arm64: dts: rockchip: Add HDMI0 node to rk3588 Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 06/30] arm64: dts: rockchip: Enable HDMI0 on rock-5b Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 07/30] arm64: dts: rockchip: Enable HDMI0 on rk3588-evb1 Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 08/30] arm64: dts: rockchip: Enable HDMI0 on orangepi-5-plus Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 09/30] arm64: dts: rockchip: add and enable gpu node for Radxa ROCK 5A Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 10/30] arm64: dts: rockchip: Enable HDMI0 on Orange Pi 5 Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 11/30] arm64: dts: rockchip: analog audio " Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 12/30] arm64: dts: rockchip: reorder audio/hdmi nodes in " Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 13/30] arm64: dts: rockchip: pwm-leds for " Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 14/30] arm64: dts: rockchip: Enable HDMI0 on rk3588-nanopc-t6 Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 15/30] arm64: dts: rockchip: Enable HDMI0 on rock-5a Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 16/30] arm64: dts: rockchip: add HDMI pinctrl to rk3588-tiger SoM Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 17/30] arm64: dts: rockchip: add HDMI support to rk3588-tiger-haikou Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 18/30] arm64: dts: rockchip: add HDMI support to rk3588-jaguar Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 19/30] arm64: dts: rockchip: refactor common Orange Pi 5 board Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 20/30] arm64: dts: rockchip: Enable HDMI0 on FriendlyElec CM3588 NAS Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 21/30] arm64: dts: rockchip: Enable HDMI on Hardkernel ODROID-M2 Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 22/30] arm64: dts: rockchip: Enable HDMI0 for rk3588 Cool Pi CM5 EVB Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 23/30] arm64: dts: rockchip: Enable HDMI display for rk3588 Cool Pi 4B Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 24/30] arm64: dts: rockchip: Enable HDMI display for rk3588 Cool Pi GenBook Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 25/30] arm64: dts: rockchip: orangepi-5-plus: Enable GPU Anton Midyukov
2025-04-22 10:04 ` Anton Midyukov [this message]
2025-04-22 10:04 ` [d-kernel] [PATCH 27/30] arm64: dts: rockchip: rename rfkill label for Radxa ROCK 5B Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 28/30] arm64: dts: rockchip: disable IOMMU when running rk3588 in PCIe endpoint mode Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 29/30] arm64: dts: rockchip: slow down emmc freq for rock 5 itx Anton Midyukov
2025-04-22 10:04 ` [d-kernel] [PATCH 30/30] config-aarch64: CONFIG_ROCKCHIP_DW_HDMI_QP=y Anton Midyukov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5a6ff16230bc67802924a9946402eb06d91b2f4b.1745307792.git.antohami@altlinux.org \
    --to=antohami@altlinux.org \
    --cc=devel-kernel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux kernel packages development

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel-kernel/0 devel-kernel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel-kernel devel-kernel/ http://lore.altlinux.org/devel-kernel \
		devel-kernel@altlinux.org devel-kernel@altlinux.ru devel-kernel@altlinux.com
	public-inbox-index devel-kernel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel-kernel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git