diff options
author | Alexandre Courbot <acourbot@nvidia.com> | 2014-10-27 18:11:52 +0900 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2014-12-02 15:37:21 +1000 |
commit | 8603ed7bffb9dabf58653a34927c3a04970c1a53 (patch) | |
tree | 47b2c4386b1c3efa272f0b81b7e3622e696679f1 /drm | |
parent | b47892b9a85bf22494934c72166730c3bae63136 (diff) | |
download | nouveau-8603ed7bffb9dabf58653a34927c3a04970c1a53.tar.gz |
drm: 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 'drm')
-rw-r--r-- | drm/nouveau_bo.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drm/nouveau_bo.c b/drm/nouveau_bo.c index 3d474ac03..9a8adeec8 100644 --- a/drm/nouveau_bo.c +++ b/drm/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) |