amdgpu_bo_restore_shadow would assign zero to r if succeeded.
r would remain zero if there is only one node in shadow_list.
current code would always return failure when r <= 0.

Change-Id: Iae6880e7c78b71fde6a6754c69665c2e312a80a5
Signed-off-by: Wentao Lou <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index c4c61e9..5cf21a4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3171,6 +3171,7 @@ static int amdgpu_device_recover_vram(struct 
amdgpu_device *adev)
        struct dma_fence *fence = NULL, *next = NULL;
        struct amdgpu_bo *shadow;
        long r = 1, tmo;
+       bool single_shadow = false;
 
        if (amdgpu_sriov_runtime(adev))
                tmo = msecs_to_jiffies(8000);
@@ -3194,10 +3195,12 @@ static int amdgpu_device_recover_vram(struct 
amdgpu_device *adev)
                        r = dma_fence_wait_timeout(fence, false, tmo);
                        dma_fence_put(fence);
                        fence = next;
+                       single_shadow = false;
                        if (r <= 0)
                                break;
                } else {
                        fence = next;
+                       single_shadow = true;
                }
        }
        mutex_unlock(&adev->shadow_list_lock);
@@ -3206,7 +3209,8 @@ static int amdgpu_device_recover_vram(struct 
amdgpu_device *adev)
                tmo = dma_fence_wait_timeout(fence, false, tmo);
        dma_fence_put(fence);
 
-       if (r <= 0 || tmo <= 0) {
+       /* r would be zero even if amdgpu_bo_restore_shadow succeeded when 
single shadow in list */
+       if (r < 0 || (r == 0 && !single_shadow) || tmo <= 0) {
                DRM_ERROR("recover vram bo from shadow failed\n");
                return -EIO;
        }
-- 
2.7.4

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

Reply via email to