From: Philipp Stanner <phasta@kernel.org>
To: "Sumit Semwal" <sumit.semwal@linaro.org>,
"Christian König" <christian.koenig@amd.com>,
"Boris Brezillon" <boris.brezillon@collabora.com>,
"Tvrtko Ursulin" <tursulin@ursulin.net>,
dakr@kernel.org, "Marco Pagani" <marco.pagani@linux.dev>,
"Alice Ryhl" <aliceryhl@google.com>,
"Gary Guo" <gary@garyguo.net>,
"Jonghyuk Kim" <malhyuk97@gmail.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Jiri Slaby" <jirislaby@kernel.org>,
"Simona Vetter" <simona@ffwll.ch>,
"David Airlie" <airlied@gmail.com>
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
Philipp Stanner <phasta@kernel.org>
Subject: [RFC PATCH 2/2] drm/i915: Adjust to RCU-less fence
Date: Tue, 8 Sep 2026 12:59:27 +0200 [thread overview]
Message-ID: <20260908105926.1120378-3-phasta@kernel.org> (raw)
In-Reply-To: <20260908105926.1120378-2-phasta@kernel.org>
dma_fence has been reworked in a way that it allows for handling fences
without any need for RCU functionality.
Adjust i915 accordingly.
(Serves as an example to show how the situation gets easier for users)
Signed-off-by: Philipp Stanner <phasta@kernel.org>
---
drivers/gpu/drm/i915/gt/intel_gt_requests.c | 10 ++++------
drivers/gpu/drm/i915/i915_request.c | 6 ++----
drivers/gpu/drm/i915/i915_sw_fence.c | 10 ++++------
3 files changed, 10 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.c b/drivers/gpu/drm/i915/gt/intel_gt_requests.c
index 93298820bee2..724c4359f688 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_requests.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.c
@@ -238,6 +238,8 @@ void intel_gt_fini_requests(struct intel_gt *gt)
void intel_gt_watchdog_work(struct work_struct *work)
{
+ char driver[64] = "";
+ char timeline[64] = "";
struct intel_gt *gt =
container_of(work, typeof(*gt), watchdog.work);
struct i915_request *rq, *rn;
@@ -250,17 +252,13 @@ void intel_gt_watchdog_work(struct work_struct *work)
llist_for_each_entry_safe(rq, rn, first, watchdog.link) {
if (!i915_request_completed(rq)) {
struct dma_fence *f = &rq->fence;
- const char __rcu *timeline;
- const char __rcu *driver;
- rcu_read_lock();
- driver = dma_fence_driver_name(f);
- timeline = dma_fence_timeline_name(f);
+ dma_fence_driver_name(f, driver, 64);
+ dma_fence_timeline_name(f, timeline, 64);
pr_notice("Fence expiration time out i915-%s:%s:%llx!\n",
rcu_dereference(driver),
rcu_dereference(timeline),
f->seqno);
- rcu_read_unlock();
i915_request_cancel(rq, -EINTR);
}
i915_request_put(rq);
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index d2c7b1090df0..2a3df13217b9 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -2185,7 +2185,7 @@ void i915_request_show(struct drm_printer *m,
const char *prefix,
int indent)
{
- const char __rcu *timeline;
+ char timeline[64] = "";
char buf[80] = "";
int x = 0;
@@ -2221,8 +2221,7 @@ void i915_request_show(struct drm_printer *m,
x = print_sched_attr(&rq->sched.attr, buf, x, sizeof(buf));
- rcu_read_lock();
- timeline = dma_fence_timeline_name((struct dma_fence *)&rq->fence);
+ dma_fence_timeline_name((struct dma_fence *)&rq->fence, timeline, 64);
drm_printf(m, "%s%.*s%c %llx:%lld%s%s %s @ %dms: %s\n",
prefix, indent, " ",
queue_status(rq),
@@ -2232,7 +2231,6 @@ void i915_request_show(struct drm_printer *m,
buf,
jiffies_to_msecs(jiffies - rq->emitted_jiffies),
rcu_dereference(timeline));
- rcu_read_unlock();
}
static bool engine_match_ring(struct intel_engine_cs *engine, struct i915_request *rq)
diff --git a/drivers/gpu/drm/i915/i915_sw_fence.c b/drivers/gpu/drm/i915/i915_sw_fence.c
index f24f616e23ee..d0e733beff86 100644
--- a/drivers/gpu/drm/i915/i915_sw_fence.c
+++ b/drivers/gpu/drm/i915/i915_sw_fence.c
@@ -427,25 +427,23 @@ static void dma_i915_sw_fence_wake(struct dma_fence *dma,
static void timer_i915_sw_fence_wake(struct timer_list *t)
{
+ char driver[64] = "";
+ char timeline[64] = "";
struct i915_sw_dma_fence_cb_timer *cb = timer_container_of(cb, t,
timer);
struct i915_sw_fence *fence;
- const char __rcu *timeline;
- const char __rcu *driver;
fence = xchg(&cb->base.fence, NULL);
if (!fence)
return;
- rcu_read_lock();
- driver = dma_fence_driver_name(cb->dma);
- timeline = dma_fence_timeline_name(cb->dma);
+ dma_fence_driver_name(cb->dma, driver, 64);
+ dma_fence_timeline_name(cb->dma, timeline, 64);
pr_notice("Asynchronous wait on fence %s:%s:%llx timed out (hint:%ps)\n",
rcu_dereference(driver),
rcu_dereference(timeline),
cb->dma->seqno,
i915_sw_fence_debug_hint(fence));
- rcu_read_unlock();
i915_sw_fence_set_error_once(fence, -ETIMEDOUT);
i915_sw_fence_complete(fence);
--
2.55.0
next prev parent reply other threads:[~2026-09-08 11:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-08 10:59 [RFC PATCH 1/2] dma-fence: Solve dma_fence's problems with additional spinlock Philipp Stanner
2026-09-08 10:59 ` Philipp Stanner [this message]
2026-09-08 11:21 ` [RFC PATCH 2/2] drm/i915: Adjust to RCU-less fence sashiko-bot
2026-09-08 11:12 ` [RFC PATCH 1/2] dma-fence: Solve dma_fence's problems with additional spinlock sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260908105926.1120378-3-phasta@kernel.org \
--to=phasta@kernel.org \
--cc=airlied@gmail.com \
--cc=aliceryhl@google.com \
--cc=boris.brezillon@collabora.com \
--cc=christian.koenig@amd.com \
--cc=dakr@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=gary@garyguo.net \
--cc=jirislaby@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=malhyuk97@gmail.com \
--cc=marco.pagani@linux.dev \
--cc=mripard@kernel.org \
--cc=simona@ffwll.ch \
--cc=sumit.semwal@linaro.org \
--cc=tursulin@ursulin.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox