summaryrefslogtreecommitdiff
path: root/linux-core/drm_bo.c
diff options
context:
space:
mode:
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2007-03-30 14:14:26 +0200
committerThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2007-04-03 10:29:14 +0200
commit7743af94492681f5aaf7cfdef78d695a6db7cbd0 (patch)
treea83554dc99ef853cbcb8cedd08c718927ca5b662 /linux-core/drm_bo.c
parentd85e243259259d7702db0d344ae1ff7d26598227 (diff)
Evicted no-move buffers can get lost if they end up in another
memory type than local.
Diffstat (limited to 'linux-core/drm_bo.c')
-rw-r--r--linux-core/drm_bo.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/linux-core/drm_bo.c b/linux-core/drm_bo.c
index cea6ef62..17d6fbc0 100644
--- a/linux-core/drm_bo.c
+++ b/linux-core/drm_bo.c
@@ -75,7 +75,8 @@ void drm_bo_add_to_lru(drm_buffer_object_t * bo)
{
drm_mem_type_manager_t *man;
- if (!(bo->mem.mask & (DRM_BO_FLAG_NO_MOVE | DRM_BO_FLAG_NO_EVICT))) {
+ if (!(bo->mem.mask & (DRM_BO_FLAG_NO_MOVE | DRM_BO_FLAG_NO_EVICT))
+ || bo->mem.mem_type != bo->pinned_mem_type) {
man = &bo->dev->bm.man[bo->mem.mem_type];
list_add_tail(&bo->lru, &man->lru);
} else {