[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250702223439.19752-4-ville.syrjala@linux.intel.com>
Date: Thu, 3 Jul 2025 01:34:39 +0300
From: Ville Syrjala <ville.syrjala@...ux.intel.com>
To: linux-kernel@...r.kernel.org
Cc: Jani Nikula <jani.nikula@...el.com>,
Lucas De Marchi <lucas.demarchi@...el.com>,
Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@...el.com>,
Imre Deak <imre.deak@...el.com>,
David Laight <david.laight.linux@...il.com>,
Geert Uytterhoeven <geert+renesas@...der.be>,
Matt Wagantall <mattw@...eaurora.org>,
Dejin Zheng <zhengdejin5@...il.com>,
intel-gfx@...ts.freedesktop.org,
intel-xe@...ts.freedesktop.org,
Ville Syrjälä <ville.syrjala@...ux.intel.com>
Subject: [PATCH 4/4] DO-NOT-MERGE: drm/i915: Use poll_timeout_us()
From: Ville Syrjälä <ville.syrjala@...ux.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@...el.com>
Cc: Lucas De Marchi <lucas.demarchi@...el.com>
Cc: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@...el.com>
Cc: Imre Deak <imre.deak@...el.com>
Cc: David Laight <david.laight.linux@...il.com>
Cc: Geert Uytterhoeven <geert+renesas@...der.be>
Cc: Matt Wagantall <mattw@...eaurora.org>
Cc: Dejin Zheng <zhengdejin5@...il.com>
Cc: intel-gfx@...ts.freedesktop.org
Cc: intel-xe@...ts.freedesktop.org
Cc: linux-kernel@...r.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@...ux.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
Powered by blists - more mailing lists