summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_state.c
diff options
context:
space:
mode:
authorFrancisco Jerez2010-10-18 16:15:15 +0200
committerBen Skeggs2010-12-03 06:06:49 +0100
commit0541324abce0225a795222558fdfe35c8dbc5b4f (patch)
treeed9ae66b92d1c2ff52265cb01f3cf74b0e17fd5b /drivers/gpu/drm/nouveau/nouveau_state.c
parentdrm/nouveau: Take fence spinlock in nouveau_fence_channel_fini(). (diff)
downloadkernel-qcow2-linux-0541324abce0225a795222558fdfe35c8dbc5b4f.tar.gz
kernel-qcow2-linux-0541324abce0225a795222558fdfe35c8dbc5b4f.tar.xz
kernel-qcow2-linux-0541324abce0225a795222558fdfe35c8dbc5b4f.zip
drm/nv40: Ignore sync-to-vblank active when waiting for idle.
Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_state.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_state.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
index af203cc5d7ad..82b58188398b 100644
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
@@ -1105,7 +1105,13 @@ bool nouveau_wait_until(struct drm_device *dev, uint64_t timeout,
/* Waits for PGRAPH to go completely idle */
bool nouveau_wait_for_idle(struct drm_device *dev)
{
- if (!nv_wait(dev, NV04_PGRAPH_STATUS, 0xffffffff, 0x00000000)) {
+ struct drm_nouveau_private *dev_priv = dev->dev_private;
+ uint32_t mask = ~0;
+
+ if (dev_priv->card_type == NV_40)
+ mask &= ~NV40_PGRAPH_STATUS_SYNC_STALL;
+
+ if (!nv_wait(dev, NV04_PGRAPH_STATUS, mask, 0)) {
NV_ERROR(dev, "PGRAPH idle timed out with status 0x%08x\n",
nv_rd32(dev, NV04_PGRAPH_STATUS));
return false;