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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.