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

Reply via email to