<p dir="ltr"><br>
On Nov 20, 2014 12:53 AM, "Maarten Lankhorst" <<a href="mailto:maarten.lankhorst@canonical.com">maarten.lankhorst@canonical.com</a>> wrote:<br>
><br>
> Op 20-11-14 om 05:06 schreef Michael Marineau:<br>
> > On Wed, Nov 19, 2014 at 12:10 AM, Maarten Lankhorst<br>
> > <<a href="mailto:maarten.lankhorst@canonical.com">maarten.lankhorst@canonical.com</a>> wrote:<br>
> >> Hey,<br>
> >><br>
> >> On 19-11-14 07:43, Michael Marineau wrote:<br>
> >>> On 3.18-rc kernel's I have been intermittently experiencing GPU<br>
> >>> lockups shortly after startup, accompanied with one or both of the<br>
> >>> following errors:<br>
> >>><br>
> >>> nouveau E[   PFIFO][0000:01:00.0] read fault at 0x000734a000 [PTE]<br>
> >>> from PBDMA0/HOST_CPU on channel 0x007faa3000 [unknown]<br>
> >>> nouveau E[     DRM] GPU lockup - switching to software fbcon<br>
> >>><br>
> >>> I was able to trace the issue with bisect to commit<br>
> >>> 809e9447b92ffe1346b2d6ec390e212d5307f61c "drm/nouveau: use shared<br>
> >>> fences for readable objects". The lockups appear to have cleared up<br>
> >>> since reverting that and a few related followup commits:<br>
> >>><br>
> >>> 809e9447: "drm/nouveau: use shared fences for readable objects"<br>
> >>> 055dffdf: "drm/nouveau: bump driver patchlevel to 1.2.1"<br>
> >>> e3be4c23: "drm/nouveau: specify if interruptible wait is desired in<br>
> >>> nouveau_fence_sync"<br>
> >>> 15a996bb: "drm/nouveau: assign fence_chan->name correctly"<br>
> >> Weird. I'm not sure yet what causes it.<br>
> >><br>
> >> <a href="http://cgit.freedesktop.org/~mlankhorst/linux/commit/?h=fixed-fences-for-bisect&id=86be4f216bbb9ea3339843a5658d4c21162c7ee2">http://cgit.freedesktop.org/~mlankhorst/linux/commit/?h=fixed-fences-for-bisect&id=86be4f216bbb9ea3339843a5658d4c21162c7ee2</a><br>
> > Building a kernel from that commit gives me an entirely new behavior:<br>
> > X hangs for at least 10-20 seconds at a time with brief moments of<br>
> > responsiveness before hanging again while gitk on the kernel repo<br>
> > loads. Otherwise the system is responsive. The head of that<br>
> > fixed-fences-for-bisect branch (1c6aafb5) which is the "use shared<br>
> > fences for readable objects" commit I originally bisected to does<br>
> > feature the complete lockups I was seeing before.<br>
> Ok for the sake of argument lets just assume they're separate bugs, and we should look at xorg<br>
> hanging first.<br>
><br>
> Is there anything in the dmesg when the hanging happens?</p>
<p dir="ltr">Nothing in dmesg, I will try some more experiments shortly including the ones you suggest below. Just in case it wasn't clear those xorg hangs do not happen on the branch head if I get lucky and manage to log in without the GPU lockup so if they are different bugs it at least appears that both present at the same time.</p>
<p dir="ltr">><br>
> And it's probably 15 seconds, if it's called through nouveau_fence_wait.<br>
><br>
> Try changing else if (!ret) to else if (WARN_ON(!ret)) in that function, and see if you get some dmesg spam. :)<br>
><br>
><br>
> >> On the EDITED patch from fixed-fences-for-bisect, can you do the following:<br>
> >><br>
> >> In nouveau/nv84_fence.c function nv84_fence_context_new, remove<br>
> >><br>
> >> fctx->base.sequence = nv84_fence_read(chan);<br>
> >><br>
> >> and add back<br>
> >><br>
> >> nouveau_bo_wr32(priv->bo, chan->chid * 16/4, 0x00000000);<br>
> > Making your suggested change on top of each 86be4f21 and 1c6aafb5 made<br>
> > no noticeable difference in either of the two behaviors.<br>
> ><br>
> >> If that fails you should compile your kernel with trace events, to get some debugging info from the fences. I'll post debugging info if this does not fix it.<br>
> > Happy to gather whatever debug log or tracing data you need :)<br>
> ><br>
><br>
</p>