Message ID | 20220301062655.232955-1-qiang.yu@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/amdgpu: fix suspend/resume hang regression | expand |
Am 01.03.22 um 07:26 schrieb Qiang Yu: > Regression has been reported that suspend/resume may hang with > the previous vm ready check commit: > https://gitlab.freedesktop.org/drm/amd/-/issues/1915#note_1278198 > > So bring back the evicted list check as a temp fix. > > Fixes: cc8dd2cc1a97 ("drm/amdgpu: check vm ready by amdgpu_vm->evicting flag") > Signed-off-by: Qiang Yu <qiang.yu@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Cc: <stable@vger.kernel.org> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index 2cd9f1a2e5fa..fc4563cf2828 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -779,7 +779,8 @@ bool amdgpu_vm_ready(struct amdgpu_vm *vm) > amdgpu_vm_eviction_lock(vm); > ret = !vm->evicting; > amdgpu_vm_eviction_unlock(vm); > - return ret; > + > + return ret && list_empty(&vm->evicted); > } > > /**
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 2cd9f1a2e5fa..fc4563cf2828 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -779,7 +779,8 @@ bool amdgpu_vm_ready(struct amdgpu_vm *vm) amdgpu_vm_eviction_lock(vm); ret = !vm->evicting; amdgpu_vm_eviction_unlock(vm); - return ret; + + return ret && list_empty(&vm->evicted); } /**
Regression has been reported that suspend/resume may hang with the previous vm ready check commit: https://gitlab.freedesktop.org/drm/amd/-/issues/1915#note_1278198 So bring back the evicted list check as a temp fix. Fixes: cc8dd2cc1a97 ("drm/amdgpu: check vm ready by amdgpu_vm->evicting flag") Signed-off-by: Qiang Yu <qiang.yu@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)