From 72d457fc1973a61f906a42d049c1c160cc7dee4e Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Thu, 29 Mar 2007 21:33:41 +0200 Subject: Make sure CMA (Can't map aperture) pages are mapped uncached. (Should really make this write-combined using PATs, at some point). --- linux-core/drm_compat.c | 8 +++++--- linux-core/drm_vm.c | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'linux-core') diff --git a/linux-core/drm_compat.c b/linux-core/drm_compat.c index 23441811..9ac5658c 100644 --- a/linux-core/drm_compat.c +++ b/linux-core/drm_compat.c @@ -275,12 +275,14 @@ static struct page *drm_bo_vm_fault(struct vm_area_struct *vma, goto out_unlock; } pfn = page_to_pfn(page); - vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); + vma->vm_page_prot = (bo->mem.flags & DRM_BO_FLAG_CACHED) ? + vm_get_page_prot(vma->vm_flags) : + drm_io_prot(_DRM_TTM, vma); } - + err = vm_insert_pfn(vma, address, pfn); - if (!err || err == -EBUSY) + if (!err || err == -EBUSY) data->type = VM_FAULT_MINOR; else data->type = VM_FAULT_OOM; diff --git a/linux-core/drm_vm.c b/linux-core/drm_vm.c index 54a0849f..1f905fba 100644 --- a/linux-core/drm_vm.c +++ b/linux-core/drm_vm.c @@ -796,7 +796,9 @@ static unsigned long drm_bo_vm_nopfn(struct vm_area_struct *vma, goto out_unlock; } pfn = page_to_pfn(page); - vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); + vma->vm_page_prot = (bo->mem.flags & DRM_BO_FLAG_CACHED) ? + vm_get_page_prot(vma->vm_flags) : + drm_io_prot(_DRM_TTM, vma); } err = vm_insert_pfn(vma, address, pfn); -- cgit v1.2.3