From: Philipp Stanner <phasta@kernel.org>
To: "Sumit Semwal" <sumit.semwal@linaro.org>,
"Gustavo Padovan" <gustavo@padovan.org>,
"Christian König" <christian.koenig@amd.com>,
"Felix Kuehling" <Felix.Kuehling@amd.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Jani Nikula" <jani.nikula@linux.intel.com>,
"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
"Tvrtko Ursulin" <tursulin@ursulin.net>,
"Huang Rui" <ray.huang@amd.com>,
"Matthew Auld" <matthew.auld@intel.com>,
"Matthew Brost" <matthew.brost@intel.com>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"Lucas De Marchi" <lucas.demarchi@intel.com>,
"Thomas Hellström" <thomas.hellstrom@linux.intel.com>
Cc: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org,
linaro-mm-sig@lists.linaro.org, linux-kernel@vger.kernel.org,
amd-gfx@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, rust-for-linux@vger.kernel.org,
Philipp Stanner <phasta@kernel.org>
Subject: [PATCH 6/6] dma-buf/dma-fence: Remove return code of signaling-functions
Date: Wed, 26 Nov 2025 14:19:15 +0100 [thread overview]
Message-ID: <20251126131914.149445-8-phasta@kernel.org> (raw)
In-Reply-To: <20251126131914.149445-2-phasta@kernel.org>
All functions used for signaling a fence return an error code whose sole
purpose is to tell whether a fence was already signaled.
This is racy and has been used by almost no party in the kernel, and the
few users have been removed in preceding cleanup commits.
Turn all signaling-functions into void-functions.
Suggested-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Philipp Stanner <phasta@kernel.org>
---
drivers/dma-buf/dma-fence.c | 40 ++++++++++---------------------------
include/linux/dma-fence.h | 9 ++++-----
2 files changed, 14 insertions(+), 35 deletions(-)
diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
index 25117a906846..bed8d0c27217 100644
--- a/drivers/dma-buf/dma-fence.c
+++ b/drivers/dma-buf/dma-fence.c
@@ -360,11 +360,8 @@ void __dma_fence_might_wait(void)
*
* Unlike dma_fence_signal_timestamp(), this function must be called with
* &dma_fence.lock held.
- *
- * Returns 0 on success and a negative error value when @fence has been
- * signalled already.
*/
-int dma_fence_signal_timestamp_locked(struct dma_fence *fence,
+void dma_fence_signal_timestamp_locked(struct dma_fence *fence,
ktime_t timestamp)
{
struct dma_fence_cb *cur, *tmp;
@@ -373,7 +370,7 @@ int dma_fence_signal_timestamp_locked(struct dma_fence *fence,
lockdep_assert_held(fence->lock);
if (unlikely(dma_fence_test_signaled_flag(fence)))
- return -EINVAL;
+ return;
/* Stash the cb_list before replacing it with the timestamp */
list_replace(&fence->cb_list, &cb_list);
@@ -386,8 +383,6 @@ int dma_fence_signal_timestamp_locked(struct dma_fence *fence,
INIT_LIST_HEAD(&cur->node);
cur->func(fence, cur);
}
-
- return 0;
}
EXPORT_SYMBOL(dma_fence_signal_timestamp_locked);
@@ -402,23 +397,17 @@ EXPORT_SYMBOL(dma_fence_signal_timestamp_locked);
* can only go from the unsignaled to the signaled state and not back, it will
* only be effective the first time. Set the timestamp provided as the fence
* signal timestamp.
- *
- * Returns 0 on success and a negative error value when @fence has been
- * signalled already.
*/
-int dma_fence_signal_timestamp(struct dma_fence *fence, ktime_t timestamp)
+void dma_fence_signal_timestamp(struct dma_fence *fence, ktime_t timestamp)
{
unsigned long flags;
- int ret;
if (WARN_ON(!fence))
- return -EINVAL;
+ return;
spin_lock_irqsave(fence->lock, flags);
- ret = dma_fence_signal_timestamp_locked(fence, timestamp);
+ dma_fence_signal_timestamp_locked(fence, timestamp);
spin_unlock_irqrestore(fence->lock, flags);
-
- return ret;
}
EXPORT_SYMBOL(dma_fence_signal_timestamp);
@@ -434,13 +423,10 @@ EXPORT_SYMBOL(dma_fence_signal_timestamp);
*
* Unlike dma_fence_signal(), this function must be called with &dma_fence.lock
* held.
- *
- * Returns 0 on success and a negative error value when @fence has been
- * signalled already.
*/
-int dma_fence_signal_locked(struct dma_fence *fence)
+void dma_fence_signal_locked(struct dma_fence *fence)
{
- return dma_fence_signal_timestamp_locked(fence, ktime_get());
+ dma_fence_signal_timestamp_locked(fence, ktime_get());
}
EXPORT_SYMBOL(dma_fence_signal_locked);
@@ -453,28 +439,22 @@ EXPORT_SYMBOL(dma_fence_signal_locked);
* dma_fence_add_callback(). Can be called multiple times, but since a fence
* can only go from the unsignaled to the signaled state and not back, it will
* only be effective the first time.
- *
- * Returns 0 on success and a negative error value when @fence has been
- * signalled already.
*/
-int dma_fence_signal(struct dma_fence *fence)
+void dma_fence_signal(struct dma_fence *fence)
{
unsigned long flags;
- int ret;
bool tmp;
if (WARN_ON(!fence))
- return -EINVAL;
+ return;
tmp = dma_fence_begin_signalling();
spin_lock_irqsave(fence->lock, flags);
- ret = dma_fence_signal_timestamp_locked(fence, ktime_get());
+ dma_fence_signal_timestamp_locked(fence, ktime_get());
spin_unlock_irqrestore(fence->lock, flags);
dma_fence_end_signalling(tmp);
-
- return ret;
}
EXPORT_SYMBOL(dma_fence_signal);
diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
index 19972f5d176f..188f7641050f 100644
--- a/include/linux/dma-fence.h
+++ b/include/linux/dma-fence.h
@@ -364,11 +364,10 @@ static inline void dma_fence_end_signalling(bool cookie) {}
static inline void __dma_fence_might_wait(void) {}
#endif
-int dma_fence_signal(struct dma_fence *fence);
-int dma_fence_signal_locked(struct dma_fence *fence);
-int dma_fence_signal_timestamp(struct dma_fence *fence, ktime_t timestamp);
-int dma_fence_signal_timestamp_locked(struct dma_fence *fence,
- ktime_t timestamp);
+void dma_fence_signal(struct dma_fence *fence);
+void dma_fence_signal_locked(struct dma_fence *fence);
+void dma_fence_signal_timestamp(struct dma_fence *fence, ktime_t timestamp);
+void dma_fence_signal_timestamp_locked(struct dma_fence *fence, ktime_t timestamp);
signed long dma_fence_default_wait(struct dma_fence *fence,
bool intr, signed long timeout);
int dma_fence_add_callback(struct dma_fence *fence,
--
2.49.0
next prev parent reply other threads:[~2025-11-26 13:20 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-26 13:19 [PATCH 0/6] dma-fence: Remove return code of dma_fence_signal() et al Philipp Stanner
2025-11-26 13:19 ` [PATCH 1/6] dma-buf/dma-fence: Add dma_fence_test_signaled_flag() Philipp Stanner
2025-11-26 16:41 ` Matthew Brost
2025-11-26 16:55 ` Matthew Brost
2025-11-27 8:11 ` Christian König
2025-11-27 9:16 ` Philipp Stanner
2025-11-27 10:01 ` Christian König
2025-11-27 10:16 ` Philipp Stanner
2025-11-28 20:01 ` Matthew Brost
2025-11-26 22:32 ` Andi Shyti
2025-11-26 13:19 ` [PATCH 2/6] amd/amdkfd: Ignore return code of dma_fence_signal() Philipp Stanner
2025-11-26 21:24 ` Kuehling, Felix
2025-11-27 9:48 ` Philipp Stanner
2025-11-27 9:55 ` Christian König
2025-11-27 15:08 ` Kuehling, Felix
2025-11-27 15:43 ` Philipp Stanner
2025-11-26 13:19 ` [PATCH 3/6] drm/gpu/xe: Ignore dma_fenc_signal() return code Philipp Stanner
2025-11-26 16:48 ` Matthew Brost
2025-11-26 22:56 ` Andi Shyti
2025-11-26 23:56 ` Matthew Brost
2025-11-27 13:37 ` Andi Shyti
2025-11-27 13:51 ` Philipp Stanner
2025-11-27 17:19 ` Andi Shyti
2025-11-26 13:19 ` [PATCH 4/6] dma-buf: Don't misuse dma_fence_signal() Philipp Stanner
2025-11-26 13:19 ` [PATCH 5/6] drm/ttm: Remove return check of dma_fence_signal() Philipp Stanner
2025-11-26 13:19 ` Philipp Stanner [this message]
2025-11-26 14:02 ` [PATCH 0/6] dma-fence: Remove return code of dma_fence_signal() et al Christian König
2025-11-26 14:09 ` Philipp Stanner
2025-11-26 17:26 ` Matthew Brost
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=20251126131914.149445-8-phasta@kernel.org \
--to=phasta@kernel.org \
--cc=Felix.Kuehling@amd.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gustavo@padovan.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=lucas.demarchi@intel.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=matthew.auld@intel.com \
--cc=matthew.brost@intel.com \
--cc=mripard@kernel.org \
--cc=ray.huang@amd.com \
--cc=rodrigo.vivi@intel.com \
--cc=rust-for-linux@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=sumit.semwal@linaro.org \
--cc=thomas.hellstrom@linux.intel.com \
--cc=tursulin@ursulin.net \
--cc=tzimmermann@suse.de \
/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;
as well as URLs for NNTP newsgroup(s).