public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm: introduce page_flip_timeout()
@ 2026-01-23  0:05 Hamza Mahfooz
  2026-01-23  0:05 ` [PATCH 2/2] drm/amdgpu: implement page_flip_timeout() support Hamza Mahfooz
  2026-01-23 13:52 ` [PATCH 1/2] drm: introduce page_flip_timeout() Christian König
  0 siblings, 2 replies; 47+ messages in thread
From: Hamza Mahfooz @ 2026-01-23  0:05 UTC (permalink / raw)
  To: dri-devel
  Cc: Hamza Mahfooz, Alex Deucher, Christian König, David Airlie,
	Simona Vetter, Harry Wentland, Leo Li, Rodrigo Siqueira,
	Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Sunil Khatri,
	Ce Sun, Lijo Lazar, Kenneth Feng, Ivan Lipski, Alex Hung,
	Tom Chung, Melissa Wen, Michel Dänzer, Fangzhi Zuo,
	Timur Kristóf, amd-gfx, linux-kernel

There should be a mechanism for drivers to respond to flip_done
time outs. Since, as it stands it is possible for the display
to stall indefinitely, necessitating a hard reset. So, introduce
a new crtc callback that is called by
drm_atomic_helper_wait_for_flip_done() to give drivers a shot
at recovering from page flip timeouts.

Signed-off-by: Hamza Mahfooz <someguy@effective-light.com>
---
 drivers/gpu/drm/drm_atomic_helper.c | 6 +++++-
 include/drm/drm_crtc.h              | 9 +++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 5840e9cc6f66..3a144c324b19 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1881,9 +1881,13 @@ void drm_atomic_helper_wait_for_flip_done(struct drm_device *dev,
 			continue;
 
 		ret = wait_for_completion_timeout(&commit->flip_done, 10 * HZ);
-		if (ret == 0)
+		if (!ret) {
 			drm_err(dev, "[CRTC:%d:%s] flip_done timed out\n",
 				crtc->base.id, crtc->name);
+
+			if (crtc->funcs->page_flip_timeout)
+				crtc->funcs->page_flip_timeout(crtc);
+		}
 	}
 
 	if (state->fake_commit)
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 66278ffeebd6..45dc5a76e915 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -609,6 +609,15 @@ struct drm_crtc_funcs {
 				uint32_t flags, uint32_t target,
 				struct drm_modeset_acquire_ctx *ctx);
 
+	/**
+	 * @page_flip_timeout:
+	 *
+	 * This optional hook is called if &drm_crtc_commit.flip_done times out,
+	 * and can be used by drivers to attempt to recover from a page flip
+	 * timeout.
+	 */
+	void (*page_flip_timeout)(struct drm_crtc *crtc);
+
 	/**
 	 * @set_property:
 	 *
-- 
2.52.0


^ permalink raw reply related	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2026-02-03 21:48 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-23  0:05 [PATCH 1/2] drm: introduce page_flip_timeout() Hamza Mahfooz
2026-01-23  0:05 ` [PATCH 2/2] drm/amdgpu: implement page_flip_timeout() support Hamza Mahfooz
2026-01-23 11:20   ` Timur Kristóf
2026-01-23 14:25     ` Hamza Mahfooz
2026-01-23 12:26   ` kernel test robot
2026-01-23 15:16   ` kernel test robot
2026-01-23 17:49   ` Alex Deucher
2026-01-23 18:10     ` Alex Deucher
2026-01-23 13:52 ` [PATCH 1/2] drm: introduce page_flip_timeout() Christian König
2026-01-23 14:44   ` Hamza Mahfooz
2026-01-23 16:12     ` Christian König
2026-01-23 19:41     ` Alex Deucher
2026-01-23 14:44   ` Timur Kristóf
2026-01-23 22:30     ` Mario Limonciello
2026-01-24 18:32       ` Hamza Mahfooz
2026-01-24 18:43         ` Mario Limonciello
2026-01-24 19:49           ` Hamza Mahfooz
2026-01-27 22:44             ` Hamza Mahfooz
2026-01-26 14:20         ` Alex Deucher
2026-01-27 22:52           ` Hamza Mahfooz
2026-01-27 22:57             ` Alex Deucher
2026-01-28 10:39               ` Christian König
2026-01-28 11:26                 ` Michel Dänzer
2026-01-28 12:14                   ` Timur Kristóf
2026-01-28 12:48                     ` Christian König
2026-01-28 14:25                       ` Michel Dänzer
2026-01-29 10:06                         ` Michel Dänzer
2026-01-29 11:25                           ` Timur Kristóf
2026-01-29 11:38                             ` Christian König
2026-01-29 12:06                               ` Timur Kristóf
2026-01-29 12:59                                 ` Christian König
2026-01-29 14:04                                   ` Hamza Mahfooz
2026-01-29 14:24                                     ` Christian König
2026-01-29 14:33                                       ` Hamza Mahfooz
2026-01-29 14:41                                         ` Christian König
2026-02-03 21:48                                   ` Timur Kristóf
2026-01-29 21:56                           ` Xaver Hugl
2026-01-26 10:14     ` Christian König
2026-01-26 10:27       ` Michel Dänzer
2026-01-26 13:00         ` Christian König
2026-01-26 14:31           ` Michel Dänzer
2026-01-28  9:19           ` Timur Kristóf
2026-01-28 11:25             ` Christian König
2026-01-28 12:22               ` Timur Kristóf
2026-01-28 14:25               ` Michel Dänzer
2026-01-28 14:35                 ` Christian König
2026-01-29 21:39           ` Xaver Hugl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox