summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Skeggs2012-08-27 08:22:49 +0200
committerBen Skeggs2012-08-29 05:21:41 +0200
commit14f0458a41e033dee31ba605137419385c03fc78 (patch)
treeb6f7888ff5f143bd88d05126a7f60271888550c7
parentdrm/nv86/fifo: suspend fix (diff)
downloadkernel-qcow2-linux-14f0458a41e033dee31ba605137419385c03fc78.tar.gz
kernel-qcow2-linux-14f0458a41e033dee31ba605137419385c03fc78.tar.xz
kernel-qcow2-linux-14f0458a41e033dee31ba605137419385c03fc78.zip
drm/nvc0/copy: check PUNITS to determine which copy engines are disabled
On some Fermi chipsets (NVCE particularly) PCOPY1 doesn't exist. And if what I've seen on Kepler is true of Fermi too, chipsets of the same type can have different PCOPY units available. This should fix a v3.5 regression reported by a number of people effecting suspend/resume on NVC8/NVCE chipsets. Cc: stable@vger.kernel.org [3.5] Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_state.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
index 1866dbb49979..c61014442aa9 100644
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
@@ -736,9 +736,11 @@ nouveau_card_init(struct drm_device *dev)
}
break;
case NV_C0:
- nvc0_copy_create(dev, 1);
+ if (!(nv_rd32(dev, 0x022500) & 0x00000200))
+ nvc0_copy_create(dev, 1);
case NV_D0:
- nvc0_copy_create(dev, 0);
+ if (!(nv_rd32(dev, 0x022500) & 0x00000100))
+ nvc0_copy_create(dev, 0);
break;
default:
break;