[Why] In GNOME Settings->Display the switching from mirror mode to single display occasionally causes wait_for_completion_interruptible_timeout() to return -ERESTARTSYS and fails atomic check. [How] Replace the call with wait_for_completion_timeout() since the waiting for hw_done and flip_done completion doesn't need to worry about interruption from signal. Signed-off-by: Stylon Wang <stylon.wang@xxxxxxx> --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 4cd64529b180..b8f4ff323de1 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -9844,10 +9844,10 @@ static int do_aquire_global_lock(struct drm_device *dev, * Make sure all pending HW programming completed and * page flips done */ - ret = wait_for_completion_interruptible_timeout(&commit->hw_done, 10*HZ); + ret = wait_for_completion_timeout(&commit->hw_done, 10*HZ); if (ret > 0) - ret = wait_for_completion_interruptible_timeout( + ret = wait_for_completion_timeout( &commit->flip_done, 10*HZ); if (ret == 0) -- 2.33.0