[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