diff options
Diffstat (limited to 'drivers/gpu/drm/ttm/ttm_bo_vm.c')
| -rw-r--r-- | drivers/gpu/drm/ttm/ttm_bo_vm.c | 23 | 
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c index 38119311284d..3ecda6db24b8 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c @@ -31,17 +31,12 @@  #define pr_fmt(fmt) "[TTM] " fmt -#include <drm/ttm/ttm_bo_driver.h> +#include <drm/ttm/ttm_bo.h>  #include <drm/ttm/ttm_placement.h> -#include <drm/drm_vma_manager.h> +#include <drm/ttm/ttm_tt.h> +  #include <drm/drm_drv.h>  #include <drm/drm_managed.h> -#include <linux/mm.h> -#include <linux/pfn_t.h> -#include <linux/rbtree.h> -#include <linux/module.h> -#include <linux/uaccess.h> -#include <linux/mem_encrypt.h>  static vm_fault_t ttm_bo_vm_fault_idle(struct ttm_buffer_object *bo,  				struct vm_fault *vmf) @@ -217,7 +212,7 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf,  	page_last = vma_pages(vma) + vma->vm_pgoff -  		drm_vma_node_start(&bo->base.vma_node); -	if (unlikely(page_offset >= bo->resource->num_pages)) +	if (unlikely(page_offset >= PFN_UP(bo->base.size)))  		return VM_FAULT_SIGBUS;  	prot = ttm_io_prot(bo, bo->resource, prot); @@ -412,7 +407,7 @@ int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,  		 << PAGE_SHIFT);  	int ret; -	if (len < 1 || (offset + len) >> PAGE_SHIFT > bo->resource->num_pages) +	if (len < 1 || (offset + len) > bo->base.size)  		return -EIO;  	ret = ttm_bo_reserve(bo, true, false, NULL); @@ -446,6 +441,14 @@ static const struct vm_operations_struct ttm_bo_vm_ops = {  	.access = ttm_bo_vm_access,  }; +/** + * ttm_bo_mmap_obj - mmap memory backed by a ttm buffer object. + * + * @vma:       vma as input from the fbdev mmap method. + * @bo:        The bo backing the address space. + * + * Maps a buffer object. + */  int ttm_bo_mmap_obj(struct vm_area_struct *vma, struct ttm_buffer_object *bo)  {  	/* Enforce no COW since would have really strange behavior with it. */  |