NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/58745 (nouveau triggered assert in linux_dma_fence.c)
The following reply was made to PR kern/58745; it has been noted by GNATS.
From: Taylor R Campbell <riastradh%NetBSD.org@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: kern-bug-people%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost,
gnats-admin%netbsd.org@localhost, mrg%eterna23.net@localhost
Subject: Re: kern/58745 (nouveau triggered assert in linux_dma_fence.c)
Date: Sat, 12 Oct 2024 02:29:12 +0000
This is a multi-part message in MIME format.
--=_jGdl80rZzbJ3AV6nW+2j7DYaEAx46dnv
Attached patch works around it. On the fence about whether to commit
this (and introduce another local diff) or just relax the assertion.
--=_jGdl80rZzbJ3AV6nW+2j7DYaEAx46dnv
Content-Type: text/plain; charset="ISO-8859-1"; name="pr58745-nvfencechanerr"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename="pr58745-nvfencechanerr.patch"
# HG changeset patch
# User Taylor R Campbell <riastradh%NetBSD.org@localhost>
# Date 1728700032 0
# Sat Oct 12 02:27:12 2024 +0000
# Branch trunk
# Node ID 8465cbb178fcac2a01a66c33646eb41f7b497283
# Parent 94b69b01d60e6b02d6aefbbb562c511991aba09f
# EXP-Topic riastradh-pr58745-nvfencechanerr
nouveau: Don't set dma fence error if already signaled.
This happens asynchronously on hardware error. Upstream Linux trips
WARN_ON in this case; our dma_fence_set_error trips KASSERT instead.
We could maybe switch dma_fence_set_error to use WARN_ON too but it's
probably better not to take this path anyway -- this assertion trips
on logic that is incoherent, if not outright wrong.
PR kern/58745: nouveau triggered assert in linux_dma_fence.c
diff -r 94b69b01d60e -r 8465cbb178fc sys/external/bsd/drm2/dist/drm/nouveau=
/nouveau_fence.c
--- a/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fence.c Thu Oct 10 21:=
42:24 2024 +0000
+++ b/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fence.c Sat Oct 12 02:=
27:12 2024 +0000
@@ -102,7 +102,7 @@ nouveau_fence_context_kill(struct nouvea
while (!list_empty(&fctx->pending)) {
fence =3D list_entry(fctx->pending.next, typeof(*fence), head);
=20
- if (error)
+ if (error && !dma_fence_is_signaled_locked(&fence->base))
dma_fence_set_error(&fence->base, error);
=20
if (nouveau_fence_signal(fence))
--=_jGdl80rZzbJ3AV6nW+2j7DYaEAx46dnv--
Home |
Main Index |
Thread Index |
Old Index