drm/amd: Add HDP flush during jpeg init
authorTimmy Tsai <timmtsai@amd.com>
Thu, 31 Aug 2023 17:31:31 +0000 (13:31 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 20 Sep 2023 16:24:28 +0000 (12:24 -0400)
During jpeg init, CPU writes to frame buffer which can be cached by HDP,
occasionally causing invalid header to be sent to MMSCH.  Perform HDP flush
after writing to frame buffer before continuing with jpeg init sequence.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Timmy Tsai <timmtsai@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.c

index 98ed49b16e62faf3ba2b86ecc2acfda7159de01c..ac614b869aaf559cd99264ef765e4e7467774ddc 100644 (file)
@@ -468,6 +468,9 @@ static int jpeg_v4_0_start_sriov(struct amdgpu_device *adev)
        table_loc = (uint32_t *)table->cpu_addr;
        memcpy((void *)table_loc, &header, size);
 
+       /* Perform HDP flush before writing to MMSCH registers */
+       amdgpu_device_flush_hdp(adev, NULL);
+
        /* message MMSCH (in VCN[0]) to initialize this client
         * 1, write to mmsch_vf_ctx_addr_lo/hi register with GPU mc addr
         * of memory descriptor location