]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
drm/amdgpu: disable GFX ring and disable PQ wptr in hw_fini
[mirror_ubuntu-bionic-kernel.git] / drivers / gpu / drm / amd / amdgpu / gfx_v9_0.c
index 5aeb5f8816f3b9a68666cf57372cddeb12c2b36a..79b3d91d9a9e22b5d5d05ecc5c72b9d5824eba08 100644 (file)
@@ -3008,7 +3008,13 @@ static int gfx_v9_0_hw_fini(void *handle)
                gfx_v9_0_kcq_disable(&adev->gfx.kiq.ring, &adev->gfx.compute_ring[i]);
 
        if (amdgpu_sriov_vf(adev)) {
-               pr_debug("For SRIOV client, shouldn't do anything.\n");
+               gfx_v9_0_cp_gfx_enable(adev, false);
+               /* must disable polling for SRIOV when hw finished, otherwise
+                * CPC engine may still keep fetching WB address which is already
+                * invalid after sw finished and trigger DMAR reading error in
+                * hypervisor side.
+                */
+               WREG32_FIELD15(GC, 0, CP_PQ_WPTR_POLL_CNTL, EN, 0);
                return 0;
        }
        gfx_v9_0_cp_enable(adev, false);