I can't say for sure it's the full solution, i can make nv50 gallium lock up in an odd (and different) way than before. And during bitscan runs i did see some "PGRAPH fail to idle status 0x101" and even one or "AIII, inactive channel 128" (from the top of my head).
Maarten. On Mon, Jan 11, 2010 at 11:11 PM, Ben Skeggs <[email protected]> wrote: > On Mon, 2010-01-11 at 22:12 +0100, Maarten Maathuis wrote: >> A few comments are in order, i noticed that this additional >> wait_for_idle does cause delays sometimes (obviously). and it seems >> like an excellent way to do a DOS attack on your gpu. fbcon is visibly >> lagging sometimes and even unusable (gpu is not locked up, X works >> fine started from ssh). This seems like something to consider when >> choosing the preferred solution. > Yeah, I think the wait_for_idle() is fine. I'm actually interested it > solved the problem completely for you, as I mentioned to you (maybe?), I > still seen an *occasional* hang when I tried it. But, it's still a huge > improvement over now. > > Ben. >> >> On Mon, Jan 11, 2010 at 9:22 PM, Maarten Maathuis <[email protected]> >> wrote: >> > This patch *is* alone, sorry for the typo. >> > >> > On Mon, Jan 11, 2010 at 9:20 PM, Maarten Maathuis <[email protected]> >> > wrote: >> >> This patch alone, so ignore the 3/3. I think this fixes the channel >> >> unload hang issues in a less obscure way. Feedback appreciated as >> >> usual. >> >> >> >> On Mon, Jan 11, 2010 at 9:18 PM, Maarten Maathuis <[email protected]> >> >> wrote: >> >>> - This should fix the problem with gpu hangs people have had when closing >> >>> channels. >> >>> >> >>> Signed-off-by: Maarten Maathuis <[email protected]> >> >>> --- >> >>> drivers/gpu/drm/nouveau/nv50_graph.c | 1 + >> >>> 1 files changed, 1 insertions(+), 0 deletions(-) >> >>> >> >>> diff --git a/drivers/gpu/drm/nouveau/nv50_graph.c >> >>> b/drivers/gpu/drm/nouveau/nv50_graph.c >> >>> index 444a46b..d6897cf 100644 >> >>> --- a/drivers/gpu/drm/nouveau/nv50_graph.c >> >>> +++ b/drivers/gpu/drm/nouveau/nv50_graph.c >> >>> @@ -282,6 +282,7 @@ nv50_graph_unload_context(struct drm_device *dev) >> >>> return 0; >> >>> inst &= NV50_PGRAPH_CTXCTL_CUR_INSTANCE; >> >>> >> >>> + nouveau_wait_for_idle(dev); >> >>> nv_wr32(dev, 0x400500, fifo & ~1); >> >>> nv_wr32(dev, 0x400784, inst); >> >>> nv_wr32(dev, 0x400824, nv_rd32(dev, 0x400824) | 0x20); >> >>> -- >> >>> 1.6.6 >> >>> >> >>> >> >> >> > >> _______________________________________________ >> Nouveau mailing list >> [email protected] >> http://lists.freedesktop.org/mailman/listinfo/nouveau > > > _______________________________________________ Nouveau mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/nouveau
