From nobody Mon Dec 1 22:36:17 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C06D826D4F9; Wed, 26 Nov 2025 13:20:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163209; cv=none; b=Y3F+NTfK6qDAOcnqAmYz1OXKgKXh3avqgwZXym4zOYWlaxPap+ZPxFOUYLz08FG8EiieQZpfb8CERFlJxyrGONVJK2XkWjP7QbJvZQWgT2GMoJzCoJg+trdW/Kpi0rmuA03GJfXGg5lj2yBuOhhFBJZUjZ42A/M/+S80I1SJCWA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163209; c=relaxed/simple; bh=KbS42U1qFlYFL5sleuJnRbKXaGff7v361nDoJWGgUJc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bm3OG3grp93BoIs+KVbquDnXjgFGUjLIPJmNQCbIOOcXGYK4LGv7Ya1IY0LB8JxhXTsY4Outo5zp3vld7qJ8Yi3XPrI7eDjNj/J82Q0sT1S7BrrheOGET31K5+KnHACT8WsVfkp2uB+Vc5UPOB/6JzjufTAUGx99ZEIitaxeG1M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bg/rra/0; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bg/rra/0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1BD03C116B1; Wed, 26 Nov 2025 13:20:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764163208; bh=KbS42U1qFlYFL5sleuJnRbKXaGff7v361nDoJWGgUJc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bg/rra/0CVDd38GC+JM3UPYJMGAtWN6a2xKH5FHkwEKvc4UK8v9gdVQz4nEMq4VU1 retBOj2Xy0M0UTUvbhGqfazajUowYQ6uVv/WHzEQg2uoFc+Z8GUbglEIowKIBDKM+H yUI8DvjgoRw2Dwz2WgAyoDQDCjziDkXyG+ekwhtPLtuYYGjcGmQIXx0fiSMk/mfXpI MGUn9Bo9HTGWjLl9GCh1pDocnWuQ5lU13TgZ5mQPGzzUh2pUzBVuk/RoAACdZdiun3 OqkujnIQo7bixifkEvnxzq7a2mlIC26vbwJNL8YXyP7oiOkovBBYX5BxIEnEeeFRKo k7t2S97/02ArA== From: Philipp Stanner To: Sumit Semwal , Gustavo Padovan , =?UTF-8?q?Christian=20K=C3=B6nig?= , Felix Kuehling , Alex Deucher , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , Huang Rui , Matthew Auld , Matthew Brost , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= 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 , Tvrtko Ursulin Subject: [PATCH 1/6] dma-buf/dma-fence: Add dma_fence_test_signaled_flag() Date: Wed, 26 Nov 2025 14:19:10 +0100 Message-ID: <20251126131914.149445-3-phasta@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251126131914.149445-2-phasta@kernel.org> References: <20251126131914.149445-2-phasta@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The dma_fence framework checks at many places whether the signaled flag of a fence is already set. The code can be simplified and made more readable by providing a helper function for that. Add dma_fence_test_signaled_flag(), which only checks whether a fence is signaled. Use it internally. Suggested-by: Tvrtko Ursulin Signed-off-by: Philipp Stanner Reviewed-by: Christian K=C3=B6nig for the entire= series. Reviewed-by: Matthew Brost --- drivers/dma-buf/dma-fence.c | 19 +++++++++---------- include/linux/dma-fence.h | 24 ++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c index 39e6f93dc310..25117a906846 100644 --- a/drivers/dma-buf/dma-fence.c +++ b/drivers/dma-buf/dma-fence.c @@ -372,8 +372,7 @@ int dma_fence_signal_timestamp_locked(struct dma_fence = *fence, =20 lockdep_assert_held(fence->lock); =20 - if (unlikely(test_and_set_bit(DMA_FENCE_FLAG_SIGNALED_BIT, - &fence->flags))) + if (unlikely(dma_fence_test_signaled_flag(fence))) return -EINVAL; =20 /* Stash the cb_list before replacing it with the timestamp */ @@ -545,7 +544,7 @@ void dma_fence_release(struct kref *kref) trace_dma_fence_destroy(fence); =20 if (!list_empty(&fence->cb_list) && - !test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) { + !dma_fence_test_signaled_flag(fence)) { const char __rcu *timeline; const char __rcu *driver; unsigned long flags; @@ -602,7 +601,7 @@ static bool __dma_fence_enable_signaling(struct dma_fen= ce *fence) was_set =3D test_and_set_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT, &fence->flags); =20 - if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) + if (dma_fence_test_signaled_flag(fence)) return false; =20 if (!was_set && fence->ops->enable_signaling) { @@ -666,7 +665,7 @@ int dma_fence_add_callback(struct dma_fence *fence, str= uct dma_fence_cb *cb, if (WARN_ON(!fence || !func)) return -EINVAL; =20 - if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) { + if (dma_fence_test_signaled_flag(fence)) { INIT_LIST_HEAD(&cb->node); return -ENOENT; } @@ -783,7 +782,7 @@ dma_fence_default_wait(struct dma_fence *fence, bool in= tr, signed long timeout) =20 spin_lock_irqsave(fence->lock, flags); =20 - if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) + if (dma_fence_test_signaled_flag(fence)) goto out; =20 if (intr && signal_pending(current)) { @@ -800,7 +799,7 @@ dma_fence_default_wait(struct dma_fence *fence, bool in= tr, signed long timeout) cb.task =3D current; list_add(&cb.base.node, &fence->cb_list); =20 - while (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags) && ret > 0) { + while (!dma_fence_test_signaled_flag(fence) && ret > 0) { if (intr) __set_current_state(TASK_INTERRUPTIBLE); else @@ -832,7 +831,7 @@ dma_fence_test_signaled_any(struct dma_fence **fences, = uint32_t count, =20 for (i =3D 0; i < count; ++i) { struct dma_fence *fence =3D fences[i]; - if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) { + if (dma_fence_test_signaled_flag(fence)) { if (idx) *idx =3D i; return true; @@ -1108,7 +1107,7 @@ const char __rcu *dma_fence_driver_name(struct dma_fe= nce *fence) RCU_LOCKDEP_WARN(!rcu_read_lock_held(), "RCU protection is required for safe access to returned string"); =20 - if (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) + if (!dma_fence_test_signaled_flag(fence)) return fence->ops->get_driver_name(fence); else return "detached-driver"; @@ -1140,7 +1139,7 @@ const char __rcu *dma_fence_timeline_name(struct dma_= fence *fence) RCU_LOCKDEP_WARN(!rcu_read_lock_held(), "RCU protection is required for safe access to returned string"); =20 - if (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) + if (!dma_fence_test_signaled_flag(fence)) return fence->ops->get_timeline_name(fence); else return "signaled-timeline"; diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h index 64639e104110..19972f5d176f 100644 --- a/include/linux/dma-fence.h +++ b/include/linux/dma-fence.h @@ -401,6 +401,26 @@ void dma_fence_enable_sw_signaling(struct dma_fence *f= ence); const char __rcu *dma_fence_driver_name(struct dma_fence *fence); const char __rcu *dma_fence_timeline_name(struct dma_fence *fence); =20 +/* + * dma_fence_test_signaled_flag - Only check whether a fence is signaled y= et. + * @fence: the fence to check + * + * This function just checks whether @fence is signaled, without interacti= ng + * with the fence in any way. The user must, therefore, ensure through oth= er + * means that fences get signaled eventually. + * + * This function uses test_bit(), which is thread-safe. Naturally, this fu= nction + * should be used opportunistically; a fence could get signaled at any mom= ent + * after the check is done. + * + * Return: true if signaled, false otherwise. + */ +static inline bool +dma_fence_test_signaled_flag(struct dma_fence *fence) +{ + return test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags); +} + /** * dma_fence_is_signaled_locked - Return an indication if the fence * is signaled yet. @@ -418,7 +438,7 @@ const char __rcu *dma_fence_timeline_name(struct dma_fe= nce *fence); static inline bool dma_fence_is_signaled_locked(struct dma_fence *fence) { - if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) + if (dma_fence_test_signaled_flag(fence)) return true; =20 if (fence->ops->signaled && fence->ops->signaled(fence)) { @@ -448,7 +468,7 @@ dma_fence_is_signaled_locked(struct dma_fence *fence) static inline bool dma_fence_is_signaled(struct dma_fence *fence) { - if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) + if (dma_fence_test_signaled_flag(fence)) return true; =20 if (fence->ops->signaled && fence->ops->signaled(fence)) { --=20 2.49.0 From nobody Mon Dec 1 22:36:17 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2162626D4F9; Wed, 26 Nov 2025 13:20:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163215; cv=none; b=shYJGY6qJjApLucoDRA8WJwM633fXqRtcuGYc6cHicPG+iqioUxs5S3MSfZQNcDuwHSTM/kdl2fsTlvcqI/yUI8ptnQgslnvMq2wF8/0RerNaw/Cp5XCUq+iI92NEvaggmPX9MHk3GhK5R6nceTV9F/nhEoWmK8DzvMC5rbACAk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163215; c=relaxed/simple; bh=ltdOJycY3sDDX0uPBNfRJ/CZ9LopyY+2sk6yZsVKKWQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Vs2CBAXgufvyTXha49ldhGbya4NMHbzjU6ljp9nVPuXoBTZo/dhKpw4Mi0RpJW0Ka+tqtUpJHaifSDF1ZAe7nKyliLehdhK4bn5MCBSyHnCtRYOn/yuSmNKmFKT0aefRSRhjcA13v0yxEQumI+2u5sjUbZ0VIk83DBKM+wEPtsk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R6nsMVaK; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="R6nsMVaK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BC226C116C6; Wed, 26 Nov 2025 13:20:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764163214; bh=ltdOJycY3sDDX0uPBNfRJ/CZ9LopyY+2sk6yZsVKKWQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R6nsMVaKLj1Y2h5Ioo+V9XAsLOzvKmNbMLQ0j3D2jrrzIzb0TDhhOI/B4NIt5txT2 3RvDpCssxHjcZwqL1cwsyYUsScnL2b6bir3kVh4XMRms0Sa6w7LYpVyjQaB5I32zhd WXB9sJhr4m7EaQkVjZXI/Y3zCbWLisj54C1CyG6fyXzz+mIUpSbTaIHiJeccZ105H9 5N7cA9lI9CuUL0hXYElx9TpWe86JRCBbmEQpC0+UxQGxRohhECN/otmgwoycbH5sLG PxtJvcM3npDalTTZdtJENGNZ3y3zfy5qTUglAcdgefDlZUx1KFYFLclOX1DDbd8Ic4 5l6r0aJjXAolg== From: Philipp Stanner To: Sumit Semwal , Gustavo Padovan , =?UTF-8?q?Christian=20K=C3=B6nig?= , Felix Kuehling , Alex Deucher , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , Huang Rui , Matthew Auld , Matthew Brost , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= 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 Subject: [PATCH 2/6] amd/amdkfd: Ignore return code of dma_fence_signal() Date: Wed, 26 Nov 2025 14:19:11 +0100 Message-ID: <20251126131914.149445-4-phasta@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251126131914.149445-2-phasta@kernel.org> References: <20251126131914.149445-2-phasta@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The return code of dma_fence_signal() is not really useful as there is nothing reasonable to do if a fence was already signaled. That return code shall be removed from the kernel. Ignore dma_fence_signal()'s return code. Suggested-by: Christian K=C3=B6nig Signed-off-by: Philipp Stanner Reviewed-by: Christian K=C3=B6nig for the entire= series. --- drivers/gpu/drm/amd/amdkfd/kfd_process.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd= /amdkfd/kfd_process.c index ddfe30c13e9d..950fafa4b3c3 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c @@ -1986,7 +1986,6 @@ kfd_process_gpuid_from_node(struct kfd_process *p, st= ruct kfd_node *node, static int signal_eviction_fence(struct kfd_process *p) { struct dma_fence *ef; - int ret; =20 rcu_read_lock(); ef =3D dma_fence_get_rcu_safe(&p->ef); @@ -1994,10 +1993,10 @@ static int signal_eviction_fence(struct kfd_process= *p) if (!ef) return -EINVAL; =20 - ret =3D dma_fence_signal(ef); + dma_fence_signal(ef); dma_fence_put(ef); =20 - return ret; + return 0; } =20 static void evict_process_worker(struct work_struct *work) --=20 2.49.0 From nobody Mon Dec 1 22:36:17 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 843CE26D4F9; Wed, 26 Nov 2025 13:20:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163221; cv=none; b=MElx0zux+IcdOvQaIDxIfL+GwfesWTqczbwSvdRY2Us3gLEGgWEUR6IfuRqkXUPYUMNdw4NxJQVrhqMZwiHIKmdRkIagAc2iDFWt1naMNs98IZ1SB+6bLCK78ndh+8yD4hKHVjUWQK0v1fyCJt5RBwelhrKugdeEQR5BMRXABfo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163221; c=relaxed/simple; bh=MN344wm2Ixu5X6Egt125oaRBPXXL6wOJJ8cpucZ04iA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=hh2UnZX7KDTBPDKUmdXnLWsWbPokKm33jtmtfowR81zUvBI0n08L0GBQMvNfL65AmZbgkGExD6fd93zhj8iwe8eGGNUEoD7y1nB+MC4zaFm+VPF6kedJemu7K+C/lxPPz2S3hoRlXfVUGiy32j6HLNzO2XSXMQOwtN/hnJyZ25s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KLN6C2Wx; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KLN6C2Wx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1D077C113D0; Wed, 26 Nov 2025 13:20:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764163221; bh=MN344wm2Ixu5X6Egt125oaRBPXXL6wOJJ8cpucZ04iA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KLN6C2WxyaGLUphoRIvUajESUcR/xNOR+7fMO/ABWSP+mXxmpoAAqQVtXfRLExvTc SHrYcieFx+oJIAIIpPsikBV7AlKohQDi3P3L9XlfRc/R0rQyx3hXhfkOxgi1TVkpGR vu3+lvtFLZrjiqNSZ3DSkk7SvXT2C7IGLmlY7IAE/e2YBZHik2G2uG86XzNj3goi7q oFQqGbp0EeUdB7hxktU5GTHGrf4Ugn2d6Z/GlxFvP8yVotOajkcvYV+PercoshxZqo QMnkU/DrukJ2Zqfh5CB4FFW5NbPNqCHSZez5AxeD+gRPeP6pPbCCSHSjlPCt/IGkrw 38tlRKl6OYtRA== From: Philipp Stanner To: Sumit Semwal , Gustavo Padovan , =?UTF-8?q?Christian=20K=C3=B6nig?= , Felix Kuehling , Alex Deucher , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , Huang Rui , Matthew Auld , Matthew Brost , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= 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 Subject: [PATCH 3/6] drm/gpu/xe: Ignore dma_fenc_signal() return code Date: Wed, 26 Nov 2025 14:19:12 +0100 Message-ID: <20251126131914.149445-5-phasta@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251126131914.149445-2-phasta@kernel.org> References: <20251126131914.149445-2-phasta@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The return code of dma_fence_signal() is not really useful as there is nothing reasonable to do if a fence was already signaled. That return code shall be removed from the kernel. Ignore dma_fence_signal()'s return code. Suggested-by: Christian K=C3=B6nig Signed-off-by: Philipp Stanner Reviewed-by: Christian K=C3=B6nig for the entire= series. Reviewed-by: Matthew Brost --- drivers/gpu/drm/xe/xe_hw_fence.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_hw_fence.c b/drivers/gpu/drm/xe/xe_hw_fe= nce.c index b2a0c46dfcd4..959b30dde724 100644 --- a/drivers/gpu/drm/xe/xe_hw_fence.c +++ b/drivers/gpu/drm/xe/xe_hw_fence.c @@ -85,7 +85,6 @@ void xe_hw_fence_irq_finish(struct xe_hw_fence_irq *irq) { struct xe_hw_fence *fence, *next; unsigned long flags; - int err; bool tmp; =20 if (XE_WARN_ON(!list_empty(&irq->pending))) { @@ -93,9 +92,9 @@ void xe_hw_fence_irq_finish(struct xe_hw_fence_irq *irq) spin_lock_irqsave(&irq->lock, flags); list_for_each_entry_safe(fence, next, &irq->pending, irq_link) { list_del_init(&fence->irq_link); - err =3D dma_fence_signal_locked(&fence->dma); + XE_WARN_ON(dma_fence_test_signaled_flag(&fence->dma)); + dma_fence_signal_locked(&fence->dma); dma_fence_put(&fence->dma); - XE_WARN_ON(err); } spin_unlock_irqrestore(&irq->lock, flags); dma_fence_end_signalling(tmp); --=20 2.49.0 From nobody Mon Dec 1 22:36:17 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01E3826D4F9; Wed, 26 Nov 2025 13:20:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163228; cv=none; b=NaEnlDRbSt+pEoVekJshuLLQIMcSfJ3T9GTDen9Zg+DG12muJz7mNUHiUVuPfPVBsDczL5Adgdj4naPsVkMyoJECNc57Ylsmil1kpW5rbVUbz4ETJta8UNVjD3EB4p3oY6Ms05sR+cI2/jYl48YL1I5xJKkFwi4RU0Ual3al+0E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163228; c=relaxed/simple; bh=UWZRmAEzkRqq5oGLP1a96kp5nn+UOgdKzQBXsbq4Mcc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=j5Afq09ffDhECgCvmkfwymoVrNIKAHyd8exLlqgNTeJxHmMXMaNrFGqhKmdKLoAJi+flkuYVfVazLPB8OOy/T6tU8InJMS/5KyV8M2m+4mUmmi3Y76ElqkW5VwOpdV1TrMPzBYeNYaZg+i8WweFGjYhcJ3CBD75A2V8z6JQ1hU0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TwtlcmIl; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TwtlcmIl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 89199C116B1; Wed, 26 Nov 2025 13:20:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764163227; bh=UWZRmAEzkRqq5oGLP1a96kp5nn+UOgdKzQBXsbq4Mcc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TwtlcmIlc7KO7bkTPkzH6jVSl0c0R12kc6TX9T7fQ2Z88iPp6WbrfIkqrHVAY8oyV sTD4ZtmpevXeOQ8otE8u/HMIAOCWUNURuiB8yFzWBH+4THH8FAGv6kXCTfUpp1Rfyj 3A/rYMsX0hPycQYG/bp+iKnWpoRPl5Djqyv0/6nj76SU4aGAPZHcOK8QiZv8ez9kJR d0KFSmR0lj6gdUB2bU/9mwbdzzfYfNOZFrK+GhnugiPGBOmbHkEG5+KO7HCSxYj7ii d1VDQ2ToDs0voceBmjaEJLdXGjuv3FR3ffa+lZW1Hez+8c7Z2WhjDyVnuGi0oS1VLD Ui6T8oE/fHQVg== From: Philipp Stanner To: Sumit Semwal , Gustavo Padovan , =?UTF-8?q?Christian=20K=C3=B6nig?= , Felix Kuehling , Alex Deucher , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , Huang Rui , Matthew Auld , Matthew Brost , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= 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 Subject: [PATCH 4/6] dma-buf: Don't misuse dma_fence_signal() Date: Wed, 26 Nov 2025 14:19:13 +0100 Message-ID: <20251126131914.149445-6-phasta@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251126131914.149445-2-phasta@kernel.org> References: <20251126131914.149445-2-phasta@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The return code of dma_fence_signal() is not really useful as there is nothing reasonable to do if a fence was already signaled. That return code shall be removed from the kernel. Moreover, dma_fence_signal() should not be used to check whether fences are signaled. That's what dma_fence_is_signaled() and dma_fence_test_signaled_flag() exist for. Replace the non-canonical usage of dma_fence_signal(). Suggested-by: Christian K=C3=B6nig Signed-off-by: Philipp Stanner Reviewed-by: Christian K=C3=B6nig for the entire= series. --- drivers/dma-buf/st-dma-fence.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/dma-buf/st-dma-fence.c b/drivers/dma-buf/st-dma-fence.c index 27a36045410b..9fc93859f36f 100644 --- a/drivers/dma-buf/st-dma-fence.c +++ b/drivers/dma-buf/st-dma-fence.c @@ -126,17 +126,14 @@ static int test_signaling(void *arg) goto err_free; } =20 - if (dma_fence_signal(f)) { - pr_err("Fence reported being already signaled\n"); - goto err_free; - } + dma_fence_signal(f); =20 if (!dma_fence_is_signaled(f)) { pr_err("Fence not reporting signaled\n"); goto err_free; } =20 - if (!dma_fence_signal(f)) { + if (!dma_fence_test_signaled_flag(f)) { pr_err("Fence reported not being already signaled\n"); goto err_free; } --=20 2.49.0 From nobody Mon Dec 1 22:36:17 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6FE632FFDDC; Wed, 26 Nov 2025 13:20:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163234; cv=none; b=ZGBjY0FZlJKwI4QEkmE4d6s05LAGXgrgZcQIzJG6q8SFJPu1EbJbk9+0ISb125C7TC22EDiQ+2eeai5ZH6LhR9rNnZ+RowKam/TDuwW+xBZ06xJtEqs08l+QULGMe2MyfASwkm/2n4dxkme3mfJxNI8GK/GDSPHBYT+bodgXC3U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163234; c=relaxed/simple; bh=lgAu6095fUG7URUtB5h9h1pWeOKehgRUT+IfEnrX0L8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=kZY3CiAb+JwJbsGBN3uksVJ9ZwoZQbH7wwud9OploVRoteKBjoY6dFXuUl9PiYt14DOSNLZuq7RBmqVSutOa03n4lRe/3e/w74ssFd38VKvZAlj7qc3fJxdfqq3z7nSeTO8KtiCXO2rpC5ukGqSYq0ocJtRkSPhLvrbsBFsINH4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SlzUKnq7; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SlzUKnq7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 06F58C113D0; Wed, 26 Nov 2025 13:20:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764163234; bh=lgAu6095fUG7URUtB5h9h1pWeOKehgRUT+IfEnrX0L8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SlzUKnq7+JYkCPIISBxuVSJtdfIbgnro2PHCDrhP1dJKS3DVMtUcilQacvEz/ee17 n/rAZbBLl1tDeiGBZMIfP903XFYmcmrpBfkc8FMNkSMAS5rh0UfG9DP0he9+bjVsGh X8NmWUTmwUR3GL7sikPHs0vQ2bTo45s6VLia93pI3VaJ0ZubUQToiKczIjcBU3OYJH 76rPpa7YG4R/HdNwlS3tq9eBfDQfTnu4JO+iNOIJ01Ta2z0h+YCkqh/kjqfGUp2F4F Hm0Zlee+s4KQs9RusVyTgY9xIZfMwbSIzZxLh5C2T1MI6nNapaHJFzmkrvgHBUK7NB bgrvQM/LDGb7A== From: Philipp Stanner To: Sumit Semwal , Gustavo Padovan , =?UTF-8?q?Christian=20K=C3=B6nig?= , Felix Kuehling , Alex Deucher , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , Huang Rui , Matthew Auld , Matthew Brost , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= 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 Subject: [PATCH 5/6] drm/ttm: Remove return check of dma_fence_signal() Date: Wed, 26 Nov 2025 14:19:14 +0100 Message-ID: <20251126131914.149445-7-phasta@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251126131914.149445-2-phasta@kernel.org> References: <20251126131914.149445-2-phasta@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The return code of dma_fence_signal() is not useful and shall be removed from the kernel. To do so, all users must be removed. Remove usage of dma_fence_signal()'s return code. Suggested-by: Christian K=C3=B6nig Signed-off-by: Philipp Stanner Reviewed-by: Christian K=C3=B6nig for the entire= series. --- drivers/gpu/drm/ttm/tests/ttm_bo_validate_test.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/ttm/tests/ttm_bo_validate_test.c b/drivers/gpu= /drm/ttm/tests/ttm_bo_validate_test.c index 1bcc67977f48..34957624910f 100644 --- a/drivers/gpu/drm/ttm/tests/ttm_bo_validate_test.c +++ b/drivers/gpu/drm/ttm/tests/ttm_bo_validate_test.c @@ -692,7 +692,8 @@ static int threaded_fence_signal(void *arg) =20 msleep(20); =20 - return dma_fence_signal(fence); + dma_fence_signal(fence); + return 0; } =20 static void ttm_bo_validate_move_fence_not_signaled(struct kunit *test) --=20 2.49.0 From nobody Mon Dec 1 22:36:17 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01B9E2FFDDC; Wed, 26 Nov 2025 13:20:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163241; cv=none; b=uBluhHIgtrRNoUjoAFfBR1ZSHw+Ck7c8ZFrZGR0EF0qp3BsD4Z+q77vln15MrznQe0HwRbK6ibB1eO3l1kZu6KFf3hDYz7wwJFJJw4s4Lo/fpVNjm4VD4A1A9Ck56HHIisAqsGYk7LnMPMotv/fNH/A1FGg3FK77GlDIH6gMTqM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764163241; c=relaxed/simple; bh=2pw/MJl6LY/oCnTL3+ZydHGGLHEVdvEQCODhNg8b1NQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=D4mhyYrru2md7p8Xlmy3oR14trE6HDxKeKIH7FoJu7QCLvVEFVfwNor3OdPTEZDcbqI5uQyQ0NeFIq+0e0tALrsGeTCcsztWfgIj8IgxShz7JkEFlgG+OvjAeET21jGYhrykZtj3E5PUf/tmztnHqF4Y0Ed5/MuzoBxFJVZ+4tc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ixu2iZTZ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ixu2iZTZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 732D8C116B1; Wed, 26 Nov 2025 13:20:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764163240; bh=2pw/MJl6LY/oCnTL3+ZydHGGLHEVdvEQCODhNg8b1NQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ixu2iZTZtYLH17YMkWe3wgu1khWIu1Btj2ZXZ0yppvuSfVrDVJwz4hvsSE5lbhvLv v+ExMAHWV1q4rJG+OCiWwImm3OoF+GHOxZCug5HdXMdNdSxwXRx+cQJ3rHZMTZ/vLH 2nWKlIQOPYQfdFZ3Wu8eot2tUTBqKV7TKLo+zR2DwReVr051qui5adYQ12uI9mEjmM 8CcZyLymsWhgqA7HdvfILFC+ahuAbLzJLvxgL1mlD1MUhHZUMNCf/hHgiqmZEIe+Io gEuLpALwLvhJStMxBEKR4CYPvoexnFADl4gwHHolqjWk7HyVtuXg3BuMihjZi8waxF Ww+QKUEf7OKaw== From: Philipp Stanner To: Sumit Semwal , Gustavo Padovan , =?UTF-8?q?Christian=20K=C3=B6nig?= , Felix Kuehling , Alex Deucher , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , Huang Rui , Matthew Auld , Matthew Brost , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= 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 Subject: [PATCH 6/6] dma-buf/dma-fence: Remove return code of signaling-functions Date: Wed, 26 Nov 2025 14:19:15 +0100 Message-ID: <20251126131914.149445-8-phasta@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20251126131914.149445-2-phasta@kernel.org> References: <20251126131914.149445-2-phasta@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=C3=B6nig Signed-off-by: Philipp Stanner Reviewed-by: Christian K=C3=B6nig for the entire= series. --- 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); =20 if (unlikely(dma_fence_test_signaled_flag(fence))) - return -EINVAL; + return; =20 /* 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); =20 @@ -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 fen= ce * 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; =20 if (WARN_ON(!fence)) - return -EINVAL; + return; =20 spin_lock_irqsave(fence->lock, flags); - ret =3D 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); =20 @@ -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); =20 @@ -453,28 +439,22 @@ EXPORT_SYMBOL(dma_fence_signal_locked); * dma_fence_add_callback(). Can be called multiple times, but since a fen= ce * 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; =20 if (WARN_ON(!fence)) - return -EINVAL; + return; =20 tmp =3D dma_fence_begin_signalling(); =20 spin_lock_irqsave(fence->lock, flags); - ret =3D dma_fence_signal_timestamp_locked(fence, ktime_get()); + dma_fence_signal_timestamp_locked(fence, ktime_get()); spin_unlock_irqrestore(fence->lock, flags); =20 dma_fence_end_signalling(tmp); - - return ret; } EXPORT_SYMBOL(dma_fence_signal); =20 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 cook= ie) {} static inline void __dma_fence_might_wait(void) {} #endif =20 -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 ti= mestamp); signed long dma_fence_default_wait(struct dma_fence *fence, bool intr, signed long timeout); int dma_fence_add_callback(struct dma_fence *fence, --=20 2.49.0