[PATCH] arm64: dts: rockchip: add dma-coherent for pcie and gmac of RK3576

Shawn Lin shawn.lin at rock-chips.com
Thu Nov 27 23:09:22 PST 2025


The RK3576 SoC employs ARM CCI for maintaining cache coherency
between the CPU cluster and high-speed peripherals including USB3,
SATA, GMAC, and PCIe controllers. While the USB3 and SATA controllers
were correctly marked as dma-coherent, the GMAC and PCIe nodes were
overlooked.

Without dma-coherent, the kernel falls back to software cache maintenance
for DMA operations, requiring explicit cache flushing and invalidating.
This adds significant overhead that degrades performance in high-throughput
workloads.

Add the missing dma-coherent properties to enable hardware coherency and
avoid unnecessary software cache management overhead.

Signed-off-by: Shawn Lin <shawn.lin at rock-chips.com>
---
Hi Heiko,

This patch needs U-boot support which was added on Apr 15 2025 at least.
https://elixir.bootlin.com/u-boot/v2025.10/source/arch/arm/mach-rockchip/rk3576/rk3576.c#L156

Given that when the time USB3 and SATA were added, they set dma-coherent but without a
CCI enabled U-boot, they were in fact broken due to no CCI support and no software cache
maintenace when seeing dma-coherent. But there is no anyone complained about thes, so
it should be ok that we don't need to bother ourselves.

 arch/arm64/boot/dts/rockchip/rk3576.dtsi | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm64/boot/dts/rockchip/rk3576.dtsi b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
index a86fc6b4..33d2e521 100644
--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
@@ -709,6 +709,7 @@
 			reset-names = "pwr", "pipe";
 			#address-cells = <3>;
 			#size-cells = <2>;
+			dma-coherent;
 			status = "disabled";
 
 			pcie0_intc: legacy-interrupt-controller {
@@ -763,6 +764,7 @@
 			reset-names = "pwr", "pipe";
 			#address-cells = <3>;
 			#size-cells = <2>;
+			dma-coherent;
 			status = "disabled";
 
 			pcie1_intc: legacy-interrupt-controller {
@@ -1709,6 +1711,7 @@
 			snps,mtl-rx-config = <&gmac0_mtl_rx_setup>;
 			snps,mtl-tx-config = <&gmac0_mtl_tx_setup>;
 			snps,tso;
+			dma-coherent;
 			status = "disabled";
 
 			mdio0: mdio {
@@ -1756,6 +1759,7 @@
 			snps,mtl-rx-config = <&gmac1_mtl_rx_setup>;
 			snps,mtl-tx-config = <&gmac1_mtl_tx_setup>;
 			snps,tso;
+			dma-coherent;
 			status = "disabled";
 
 			mdio1: mdio {
-- 
2.7.4




More information about the Linux-rockchip mailing list