Commit 4f2fc25c authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/fifo/gk104-: poll for runlist update completion

Newer HW doesn't appear to send this event, which will cause long delays
in runlist updates if they don't complete immediately.

RM doesn't use these events anywhere, and an NVGPU commit message notes
that polling is the preferred method even on HW that supports the event.
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 66587083
...@@ -170,10 +170,10 @@ gk104_fifo_runlist_commit(struct gk104_fifo *fifo, int runl) ...@@ -170,10 +170,10 @@ gk104_fifo_runlist_commit(struct gk104_fifo *fifo, int runl)
(target << 28)); (target << 28));
nvkm_wr32(device, 0x002274, (runl << 20) | nr); nvkm_wr32(device, 0x002274, (runl << 20) | nr);
if (wait_event_timeout(fifo->runlist[runl].wait, if (nvkm_msec(device, 2000,
!(nvkm_rd32(device, 0x002284 + (runl * 0x08)) if (!(nvkm_rd32(device, 0x002284 + (runl * 0x08)) & 0x00100000))
& 0x00100000), break;
msecs_to_jiffies(2000)) == 0) ) < 0)
nvkm_error(subdev, "runlist %d update timeout\n", runl); nvkm_error(subdev, "runlist %d update timeout\n", runl);
unlock: unlock:
mutex_unlock(&subdev->mutex); mutex_unlock(&subdev->mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment