diff options
| author | Shawn Lin <shawn.lin@rock-chips.com> | 2025-11-28 15:09:22 +0800 |
|---|---|---|
| committer | Heiko Stuebner <heiko@sntech.de> | 2025-12-22 14:28:54 +0100 |
| commit | 2d6fcdcaf42671dd3fb281d7a2e5ea985af11ce5 (patch) | |
| tree | 395670e2dd0cb04581cba2d8a8a612316d15081c | |
| parent | e3b12fc3336240e7dee4989b9e8634be3c959c94 (diff) | |
arm64: dts: rockchip: add dma-coherent for pcie and gmac of RK3576
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@rock-chips.com>
Link: https://patch.msgid.link/1764313762-78063-1-git-send-email-shawn.lin@rock-chips.com
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
| -rw-r--r-- | arch/arm64/boot/dts/rockchip/rk3576.dtsi | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/rockchip/rk3576.dtsi b/arch/arm64/boot/dts/rockchip/rk3576.dtsi index a86fc6b4e8c4..792857aee4f7 100644 --- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi @@ -680,6 +680,7 @@ "aclk_dbi", "pclk", "aux"; device_type = "pci"; + dma-coherent; interrupts = <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>, @@ -734,6 +735,7 @@ "aclk_dbi", "pclk", "aux"; device_type = "pci"; + dma-coherent; interrupts = <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>, @@ -1696,6 +1698,7 @@ clock-names = "stmmaceth", "clk_mac_ref", "pclk_mac", "aclk_mac", "ptp_ref"; + dma-coherent; interrupts = <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "macirq", "eth_wake_irq"; @@ -1743,6 +1746,7 @@ clock-names = "stmmaceth", "clk_mac_ref", "pclk_mac", "aclk_mac", "ptp_ref"; + dma-coherent; interrupts = <GIC_SPI 301 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "macirq", "eth_wake_irq"; |
