diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_state.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_state.c | 8 |
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, | |||
1105 | /* Waits for PGRAPH to go completely idle */ | 1105 | /* Waits for PGRAPH to go completely idle */ |
1106 | bool nouveau_wait_for_idle(struct drm_device *dev) | 1106 | bool nouveau_wait_for_idle(struct drm_device *dev) |
1107 | { | 1107 | { |
1108 | if (!nv_wait(dev, NV04_PGRAPH_STATUS, 0xffffffff, 0x00000000)) { | 1108 | struct drm_nouveau_private *dev_priv = dev->dev_private; |
1109 | uint32_t mask = ~0; | ||
1110 | |||
1111 | if (dev_priv->card_type == NV_40) | ||
1112 | mask &= ~NV40_PGRAPH_STATUS_SYNC_STALL; | ||
1113 | |||
1114 | if (!nv_wait(dev, NV04_PGRAPH_STATUS, mask, 0)) { | ||
1109 | NV_ERROR(dev, "PGRAPH idle timed out with status 0x%08x\n", | 1115 | NV_ERROR(dev, "PGRAPH idle timed out with status 0x%08x\n", |
1110 | nv_rd32(dev, NV04_PGRAPH_STATUS)); | 1116 | nv_rd32(dev, NV04_PGRAPH_STATUS)); |
1111 | return false; | 1117 | return false; |