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