Re: [Nouveau] [PATCH 3/3] drm/nv50: wait for pgraph to idle before unloading the context
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 madman2...@gmail.com wrote: - This should fix the problem with gpu hangs people have had when closing channels. Signed-off-by: Maarten Maathuis madman2...@gmail.com --- 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 Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
Re: [Nouveau] [PATCH 3/3] drm/nv50: wait for pgraph to idle before unloading the context
This patch *is* alone, sorry for the typo. On Mon, Jan 11, 2010 at 9:20 PM, Maarten Maathuis madman2...@gmail.com 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 madman2...@gmail.com wrote: - This should fix the problem with gpu hangs people have had when closing channels. Signed-off-by: Maarten Maathuis madman2...@gmail.com --- 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 Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
Re: [Nouveau] [PATCH 3/3] drm/nv50: wait for pgraph to idle before unloading the context
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 skeg...@gmail.com 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 madman2...@gmail.com wrote: This patch *is* alone, sorry for the typo. On Mon, Jan 11, 2010 at 9:20 PM, Maarten Maathuis madman2...@gmail.com 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 madman2...@gmail.com wrote: - This should fix the problem with gpu hangs people have had when closing channels. Signed-off-by: Maarten Maathuis madman2...@gmail.com --- 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 Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau