diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c index 1701a6393029f..09e705d37084f 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c @@ -1077,6 +1077,10 @@ static int amdgpu_atomic_helper_page_flip(struct drm_crtc *crtc, if (!state) return -ENOMEM; + ret = drm_crtc_vblank_get(crtc); + if (ret) + return ret; + state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc); retry: crtc_state = drm_atomic_get_crtc_state(state, crtc); @@ -1116,6 +1120,9 @@ static int amdgpu_atomic_helper_page_flip(struct drm_crtc *crtc, if (ret == -EDEADLK) goto backoff; + if (ret) + drm_crtc_vblank_put(crtc); + drm_atomic_state_free(state); return ret;