summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_bo.c
diff options
context:
space:
mode:
authorAlexandre Courbot2014-10-27 10:11:52 +0100
committerBen Skeggs2014-12-02 06:43:58 +0100
commit5be5a15a43642de7e10d17da0c172ea2d28d22c4 (patch)
tree765677a7baa1b36a35b1be49b8bd04f219b6c62e /drivers/gpu/drm/nouveau/nouveau_bo.c
parentdrm/nouveau/disp: clear notify intr status when enabling, to prevent races (diff)
downloadkernel-qcow2-linux-5be5a15a43642de7e10d17da0c172ea2d28d22c4.tar.gz
kernel-qcow2-linux-5be5a15a43642de7e10d17da0c172ea2d28d22c4.tar.xz
kernel-qcow2-linux-5be5a15a43642de7e10d17da0c172ea2d28d22c4.zip
drm/nouveau: warn when moving a pinned object
Pinned BOs are supposed to remain in their current location until unpinned. Display a warning for the supposedly-erroneous case where we are trying to move such objects. Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_bo.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_bo.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
index 3d474ac03f88..9a8adeec80cd 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -323,8 +323,8 @@ nouveau_bo_pin(struct nouveau_bo *nvbo, uint32_t memtype)
goto out;
}
- if (nvbo->pin_refcnt++)
- goto out;
+ if (nvbo->pin_refcnt)
+ goto ref_inc;
nouveau_bo_placement_set(nvbo, memtype, 0);
@@ -341,6 +341,10 @@ nouveau_bo_pin(struct nouveau_bo *nvbo, uint32_t memtype)
break;
}
}
+
+ref_inc:
+ nvbo->pin_refcnt++;
+
out:
ttm_bo_unreserve(bo);
return ret;
@@ -1184,6 +1188,9 @@ nouveau_bo_move(struct ttm_buffer_object *bo, bool evict, bool intr,
struct nouveau_drm_tile *new_tile = NULL;
int ret = 0;
+ if (nvbo->pin_refcnt)
+ NV_WARN(drm, "Moving pinned object %p!\n", nvbo);
+
if (drm->device.info.family < NV_DEVICE_INFO_V0_TESLA) {
ret = nouveau_bo_vm_bind(bo, new_mem, &new_tile);
if (ret)