]> git.baikalelectronics.ru Git - kernel.git/commit
drm/nv50: prevent a possible ctxprog hang
authorBen Skeggs <bskeggs@redhat.com>
Wed, 6 Jan 2010 02:00:02 +0000 (12:00 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Sun, 10 Jan 2010 23:06:42 +0000 (09:06 +1000)
commit3af3c4a07ce080a59a374f29a6b277a950424609
treeefd038c8a66706dac953371295fea68d1bf4212e
parenta0bc9acf2d9a25a8e5685ba37f75117aa3dfde6b
drm/nv50: prevent a possible ctxprog hang

The below is mainly an educated guess at what's going on, docs would
sure be handy...  NVIDIA? :P

It appears it's possible for a ctxprog to run even while a GPU exception
is pending.  The GF8 and up ctxprogs appear to have a small snippet of
code which detects this, and stalls the ctxprog until it's been handled,
which essentially looks like:

if (r2 & 0x00008000) {
r0 |= 0x80000000;
while (r0 & 0x80000000) {}
}

I don't know of any way that flag would get cleared unless the driver
intervenes (and indeed, in the cases I've seen the hang, nothing steps
in to automagically clear it for us).  This patch causes the driver to
clear the flag during the PGRAPH IRQ handler.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_irq.c