[PATCH 4/4] DO-NOT-MERGE: drm/i915: Use poll_timeout_us()

Ville Syrjala ville.syrjala at linux.intel.com
Wed Jul 2 22:34:39 UTC 2025


From: Ville Syrjälä <ville.syrjala at linux.intel.com>

Make sure poll_timeout_us() works by using it in i915
instead of the custom __wait_for().

Remaining difference between two:
               | poll_timeout_us() | __wait_for()
---------------------------------------------------
backoff        | fixed interval    | exponential
usleep_range() | N/4+1 to N        | N to N*2
clock          | MONOTONIC         | MONOTONIC_RAW

Just a test hack for now, proper conversion probably
needs actual thought.

Cc: Jani Nikula <jani.nikula at intel.com>
Cc: Lucas De Marchi <lucas.demarchi at intel.com>
Cc: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian at intel.com>
Cc: Imre Deak <imre.deak at intel.com>
Cc: David Laight <david.laight.linux at gmail.com>
Cc: Geert Uytterhoeven <geert+renesas at glider.be>
Cc: Matt Wagantall <mattw at codeaurora.org>
Cc: Dejin Zheng <zhengdejin5 at gmail.com>
Cc: intel-gfx at lists.freedesktop.org
Cc: intel-xe at lists.freedesktop.org
Cc: linux-kernel at vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
 drivers/gpu/drm/i915/i915_utils.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_utils.h b/drivers/gpu/drm/i915/i915_utils.h
index f7fb40cfdb70..8509d1de1901 100644
--- a/drivers/gpu/drm/i915/i915_utils.h
+++ b/drivers/gpu/drm/i915/i915_utils.h
@@ -32,6 +32,7 @@
 #include <linux/types.h>
 #include <linux/workqueue.h>
 #include <linux/sched/clock.h>
+#include <linux/iopoll.h>
 
 #ifdef CONFIG_X86
 #include <asm/hypervisor.h>
@@ -238,7 +239,7 @@ wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
  * timeout could be due to preemption or similar and we've never had a chance to
  * check the condition before the timeout.
  */
-#define __wait_for(OP, COND, US, Wmin, Wmax) ({ \
+#define __wait_for_old(OP, COND, US, Wmin, Wmax) ({ \
 	const ktime_t end__ = ktime_add_ns(ktime_get_raw(), 1000ll * (US)); \
 	long wait__ = (Wmin); /* recommended min for usleep is 10 us */	\
 	int ret__;							\
@@ -263,6 +264,8 @@ wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
 	ret__;								\
 })
 
+#define __wait_for(OP, COND, US, Wmin, Wmax)				\
+	poll_timeout_us(OP, COND, (Wmin), (US), false)
 #define _wait_for(COND, US, Wmin, Wmax)	__wait_for(, (COND), (US), (Wmin), \
 						   (Wmax))
 #define wait_for(COND, MS)		_wait_for((COND), (MS) * 1000, 10, 1000)
-- 
2.49.0



More information about the Intel-xe mailing list