Ben Skeggs wrote: > On 7/9/25 09:16, Jamie Heilman wrote: > > Rui Salvaterra wrote: > > > Unfortunately, bisecting is not feasible for me. > > That looks pretty similar to the problem I posted > > (https://lore.kernel.org/lkml/[email protected]/) > > that I bisected to 862450a85b85 ("drm/nouveau/gf100-: track chan > > progress with non-WFI semaphore release"). It still reverts cleanly > > as of v6.16-rc5 so you might want to give that a shot. > > Hi, > > Thank you for bisecting! Are you able to try the attached patch?
Yeah that got graphics visible again for me, though there's something else horrible going on now (still? I'm not sure if its new behavior or not) and it blows out my dmesg ringbuffer with errors or warnings of some kind, that I was just about to start trying to debug that when some power event seems to have fried my PSU. Combined with a bunch of filesystem corruption, its going to be a while a before I can get that system back up to that spot where I can troubleshoot it again, the root volume is fried and I'm going to have rebuild. Anyway, I think whatever it is was probably an entirely separate issue. > From 6987c1c254285305fdc20270e21709a313632e0d Mon Sep 17 00:00:00 2001 > From: Ben Skeggs <[email protected]> > Date: Wed, 9 Jul 2025 10:54:15 +1000 > Subject: [PATCH] drm/nouveau/nvif: fix null ptr deref on pre-fermi boards > > Check that gpfifo.post() exists before trying to call it. > > Fixes: 862450a85b85 ("drm/nouveau/gf100-: track chan progress with non-WFI > semaphore release") > Signed-off-by: Ben Skeggs <[email protected]> > --- > drivers/gpu/drm/nouveau/nvif/chan.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/nouveau/nvif/chan.c > b/drivers/gpu/drm/nouveau/nvif/chan.c > index baa10227d51a..80c01017d642 100644 > --- a/drivers/gpu/drm/nouveau/nvif/chan.c > +++ b/drivers/gpu/drm/nouveau/nvif/chan.c > @@ -39,6 +39,9 @@ nvif_chan_gpfifo_post(struct nvif_chan *chan) > const u32 pbptr = (chan->push.cur - map) + chan->func->gpfifo.post_size; > const u32 gpptr = (chan->gpfifo.cur + 1) & chan->gpfifo.max; > > + if (!chan->func->gpfifo.post) > + return 0; > + > return chan->func->gpfifo.post(chan, gpptr, pbptr); > } > > -- > 2.49.0 > -- Jamie Heilman http://audible.transient.net/~jamie/
