From: Pixel Ding <[email protected]>

Reset GDW, GWS and OA when SRIOV do reset.

Signed-off-by: Pixel Ding <[email protected]>
Signed-off-by: Xiangliang Yu <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index aef2019..f11241d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2538,7 +2538,7 @@ static int amdgpu_recover_vram_from_shadow(struct 
amdgpu_device *adev,
  */
 int amdgpu_sriov_gpu_reset(struct amdgpu_device *adev, bool voluntary)
 {
-       int i, r = 0;
+       int i, j, r = 0;
        int resched;
        struct amdgpu_bo *bo, *tmp;
        struct amdgpu_ring *ring;
@@ -2616,6 +2616,14 @@ int amdgpu_sriov_gpu_reset(struct amdgpu_device *adev, 
bool voluntary)
        }
        fence_put(fence);
 
+       for (i = 0; i < AMDGPU_MAX_VMHUBS; i++) {
+               struct amdgpu_vm_id_manager *id_mgr =
+                       &adev->vm_manager.id_mgr[i];
+
+               for (j = 1; j < id_mgr->num_ids; j++)
+                       amdgpu_vm_reset_id(adev, i, j);
+       }
+
        for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
                struct amdgpu_ring *ring = adev->rings[i];
                if (!ring || !ring->sched.thread)
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to