summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2008-10-06 16:39:25 +1000
committerDave Airlie <airlied@redhat.com>2008-10-06 16:39:25 +1000
commita981a6860365065682f3ca295939e629b989a9d1 (patch)
tree20b566270874822a50c9c7a550e769cba662974f
parentaf2323b4b3b76070fb453531147a8956161b3718 (diff)
drm/radeon: fixup clean flag handling
-rw-r--r--linux-core/drm_bo.c1
-rw-r--r--linux-core/drm_bo_move.c1
-rw-r--r--linux-core/drm_vm.c1
-rw-r--r--linux-core/radeon_gem.c2
4 files changed, 5 insertions, 0 deletions
diff --git a/linux-core/drm_bo.c b/linux-core/drm_bo.c
index fa3e055d..ecf65c20 100644
--- a/linux-core/drm_bo.c
+++ b/linux-core/drm_bo.c
@@ -1174,6 +1174,7 @@ out_unlock:
}
/* clear the clean flags */
bo->mem.flags &= ~DRM_BO_FLAG_CLEAN;
+ bo->mem.proposed_flags &= ~DRM_BO_FLAG_CLEAN;
mutex_unlock(&dev->struct_mutex);
mutex_unlock(&bm->evict_mutex);
diff --git a/linux-core/drm_bo_move.c b/linux-core/drm_bo_move.c
index 207a5e07..7fe12f45 100644
--- a/linux-core/drm_bo_move.c
+++ b/linux-core/drm_bo_move.c
@@ -635,6 +635,7 @@ int drm_bo_kmap(struct drm_buffer_object *bo, unsigned long start_page,
/* clear the clean flags */
bo->mem.flags &= ~DRM_BO_FLAG_CLEAN;
+ bo->mem.proposed_flags &= ~DRM_BO_FLAG_CLEAN;
if (bus_size == 0) {
return drm_bo_kmap_ttm(bo, start_page, num_pages, map);
diff --git a/linux-core/drm_vm.c b/linux-core/drm_vm.c
index 48d7b057..228ea6cd 100644
--- a/linux-core/drm_vm.c
+++ b/linux-core/drm_vm.c
@@ -794,6 +794,7 @@ static void drm_bo_vm_open_locked(struct vm_area_struct *vma)
/* clear the clean flags */
bo->mem.flags &= ~DRM_BO_FLAG_CLEAN;
+ bo->mem.proposed_flags &= ~DRM_BO_FLAG_CLEAN;
drm_vm_open_locked(vma);
atomic_inc(&bo->usage);
diff --git a/linux-core/radeon_gem.c b/linux-core/radeon_gem.c
index 7cdcf47d..8c6f836f 100644
--- a/linux-core/radeon_gem.c
+++ b/linux-core/radeon_gem.c
@@ -1244,6 +1244,8 @@ static int radeon_gem_relocate(struct drm_device *dev, struct drm_file *file_pri
radeon_gem_set_domain(obj, read_domains, write_domain, &flags, false);
obj_priv->bo->mem.flags &= ~DRM_BO_FLAG_CLEAN;
+ obj_priv->bo->mem.proposed_flags &= ~DRM_BO_FLAG_CLEAN;
+
if (flags == DRM_BO_FLAG_MEM_VRAM)
*offset = obj_priv->bo->offset + dev_priv->fb_location;
else if (flags == DRM_BO_FLAG_MEM_TT)