diff options
Diffstat (limited to 'linux-core')
| -rw-r--r-- | linux-core/drm_compat.c | 8 | ||||
| -rw-r--r-- | linux-core/drm_vm.c | 4 | 
2 files changed, 8 insertions, 4 deletions
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);  | 
