From eadaa138ba55e1ec29f02dbd9ff7c9058da6c047 Mon Sep 17 00:00:00 2001 From: Alexey Sheplyakov Date: Fri, 24 Dec 2021 19:55:09 +0400 Subject: [PATCH 629/634] arm64: device tree: baikal: mark GPU as dma-coherent With memattr 0x888d88 (set by arm_mali_lpae_alloc_pgtable) GPU (Mali T628 r1p0) experiences a lot of DATA_INVALID faults, unhandled page faults, and other errors. Also the screen goes black almost immediately. On the other hand with memattr 0x484d48 (as set by mali_kbase) the GPU appears to work just fine. Robin Murphy explains: > using the outer-cacheable attribute is deliberate because it is necessary > for I/O-coherent GPUs to work properly (and should be irrelevant for > non-coherent integrations) > I'd note that panfrost has been working OK - to the extent that Mesa > supports its older ISA - on the T624 (single core group) in Arm's > Juno SoC for over a year now since commit 268af50f38b1. > If you have to force outer non-cacheable to avoid getting translation > faults and other errors that look like the GPU is inexplicably seeing > the wrong data, I'd check whether you have the same thing where your > integration is actually I/O-coherent and you're missing the "dma-coherent" > property in your DT. Indeed setting "gpu-coherent" property (and adjusting jobs affinity for dual core group GPU) makes panfrost work just fine on Baikal-M. X-DONTUPSTREAM X-ALTLINUX-SKIP --- arch/arm64/boot/dts/baikal/bm1000.dtsi | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/baikal/bm1000.dtsi b/arch/arm64/boot/dts/baikal/bm1000.dtsi index bc69835c4..cc4e7d199 100644 --- a/arch/arm64/boot/dts/baikal/bm1000.dtsi +++ b/arch/arm64/boot/dts/baikal/bm1000.dtsi @@ -692,6 +692,7 @@ gpu: gpu@2a200000 { interrupt-names = "job", "mmu", "gpu"; clocks = <&cmu_mali>; clock-names = "gpuclk"; + dma-coherent; operating-points-v2 = <&gpu_opp_table>; }; -- 2.33.2