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>
This commit is contained in:
committed by
Ben Skeggs
parent
889fa93dc0
commit
0541324abc
@@ -332,6 +332,7 @@
|
|||||||
#define NV04_PGRAPH_BSWIZZLE5 0x004006A0
|
#define NV04_PGRAPH_BSWIZZLE5 0x004006A0
|
||||||
#define NV03_PGRAPH_STATUS 0x004006B0
|
#define NV03_PGRAPH_STATUS 0x004006B0
|
||||||
#define NV04_PGRAPH_STATUS 0x00400700
|
#define NV04_PGRAPH_STATUS 0x00400700
|
||||||
|
# define NV40_PGRAPH_STATUS_SYNC_STALL 0x00004000
|
||||||
#define NV04_PGRAPH_TRAPPED_ADDR 0x00400704
|
#define NV04_PGRAPH_TRAPPED_ADDR 0x00400704
|
||||||
#define NV04_PGRAPH_TRAPPED_DATA 0x00400708
|
#define NV04_PGRAPH_TRAPPED_DATA 0x00400708
|
||||||
#define NV04_PGRAPH_SURFACE 0x0040070C
|
#define NV04_PGRAPH_SURFACE 0x0040070C
|
||||||
|
@@ -1105,7 +1105,13 @@ bool nouveau_wait_until(struct drm_device *dev, uint64_t timeout,
|
|||||||
/* Waits for PGRAPH to go completely idle */
|
/* Waits for PGRAPH to go completely idle */
|
||||||
bool nouveau_wait_for_idle(struct drm_device *dev)
|
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_ERROR(dev, "PGRAPH idle timed out with status 0x%08x\n",
|
||||||
nv_rd32(dev, NV04_PGRAPH_STATUS));
|
nv_rd32(dev, NV04_PGRAPH_STATUS));
|
||||||
return false;
|
return false;
|
||||||
|
Reference in New Issue
Block a user