aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nv50_instmem.c
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2010-12-16 10:30:35 +1000
committerBen Skeggs <bskeggs@redhat.com>2010-12-16 10:34:43 +1000
commitc45aadabb961501b3e64bc92d0bf12fdce26d37d (patch)
tree3ecb2731867c744e28666b86d573ca2ec420d471 /drivers/gpu/drm/nouveau/nv50_instmem.c
parentfd70b6cd780742b97f525415bf5e4fb24a4bb6d8 (diff)
downloadkernel_samsung_smdk4412-c45aadabb961501b3e64bc92d0bf12fdce26d37d.tar.gz
kernel_samsung_smdk4412-c45aadabb961501b3e64bc92d0bf12fdce26d37d.tar.bz2
kernel_samsung_smdk4412-c45aadabb961501b3e64bc92d0bf12fdce26d37d.zip
drm/nv50: fix a couple of vm init issues
Fixes overwriting the first page table entry when testing that the PRAMIN BAR can be correctly read/written, and adds an additional bar flush after poking the BAR3 control regs. Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nv50_instmem.c')
-rw-r--r--drivers/gpu/drm/nouveau/nv50_instmem.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/gpu/drm/nouveau/nv50_instmem.c b/drivers/gpu/drm/nouveau/nv50_instmem.c
index 38f30270cb9..adac4da98f7 100644
--- a/drivers/gpu/drm/nouveau/nv50_instmem.c
+++ b/drivers/gpu/drm/nouveau/nv50_instmem.c
@@ -182,16 +182,17 @@ nv50_instmem_init(struct drm_device *dev)
nv_wr32(dev, 0x001704, 0x40000000 | (chan->ramin->vinst >> 12));
nv_wr32(dev, 0x00170c, 0x80000000 | (priv->bar3_dmaobj->cinst >> 4));
- tmp = nv_ri32(dev, 0);
- nv_wi32(dev, 0, ~tmp);
- if (nv_ri32(dev, 0) != ~tmp) {
+ dev_priv->engine.instmem.flush(dev);
+ dev_priv->ramin_available = true;
+
+ tmp = nv_ro32(chan->ramin, 0);
+ nv_wo32(chan->ramin, 0, ~tmp);
+ if (nv_ro32(chan->ramin, 0) != ~tmp) {
NV_ERROR(dev, "PRAMIN readback failed\n");
ret = -EIO;
goto error;
}
- nv_wi32(dev, 0, tmp);
-
- dev_priv->ramin_available = true;
+ nv_wo32(chan->ramin, 0, tmp);
/* BAR1 */
ret = nouveau_vm_new(dev, BAR1_VM_BASE, BAR1_VM_SIZE, BAR1_VM_BASE,