aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSouptick Joarder <jrdr.linux@gmail.com>2018-04-17 09:47:55 -0400
committerThierry Reding <treding@nvidia.com>2018-05-17 11:44:48 -0400
commitcc7add70cad12054e096b034578827d7065f64bb (patch)
treea49faeb1ad03bec03f23ec6b634e4b9eee8bf8a5
parentf40e1590c5270e5559fb95a5a0a7c1f5266a522d (diff)
drm/tegra: Adding new typedef vm_fault_t
Use new return type vm_fault_t for fault handler. For now, this is just documenting that the function returns a VM_FAULT value rather than an errno. Once all instances are converted, vm_fault_t will become a distinct type. Reference id -> 1c8f422059ae ("mm: change return type to vm_fault_t") Previously vm_insert_page() returns err which driver mapped into VM_FAULT_* type. The new function vmf_insert_page() will replace this inefficiency by returning VM_FAULT_* type. Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--drivers/gpu/drm/tegra/gem.c18
1 files changed, 2 insertions, 16 deletions
diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c
index 8b0b4ff64bb4..1c4011774c3f 100644
--- a/drivers/gpu/drm/tegra/gem.c
+++ b/drivers/gpu/drm/tegra/gem.c
@@ -422,14 +422,13 @@ int tegra_bo_dumb_create(struct drm_file *file, struct drm_device *drm,
422 return 0; 422 return 0;
423} 423}
424 424
425static int tegra_bo_fault(struct vm_fault *vmf) 425static vm_fault_t tegra_bo_fault(struct vm_fault *vmf)
426{ 426{
427 struct vm_area_struct *vma = vmf->vma; 427 struct vm_area_struct *vma = vmf->vma;
428 struct drm_gem_object *gem = vma->vm_private_data; 428 struct drm_gem_object *gem = vma->vm_private_data;
429 struct tegra_bo *bo = to_tegra_bo(gem); 429 struct tegra_bo *bo = to_tegra_bo(gem);
430 struct page *page; 430 struct page *page;
431 pgoff_t offset; 431 pgoff_t offset;
432 int err;
433 432
434 if (!bo->pages) 433 if (!bo->pages)
435 return VM_FAULT_SIGBUS; 434 return VM_FAULT_SIGBUS;
@@ -437,20 +436,7 @@ static int tegra_bo_fault(struct vm_fault *vmf)
437 offset = (vmf->address - vma->vm_start) >> PAGE_SHIFT; 436 offset = (vmf->address - vma->vm_start) >> PAGE_SHIFT;
438 page = bo->pages[offset]; 437 page = bo->pages[offset];
439 438
440 err = vm_insert_page(vma, vmf->address, page); 439 return vmf_insert_page(vma, vmf->address, page);
441 switch (err) {
442 case -EAGAIN:
443 case 0:
444 case -ERESTARTSYS:
445 case -EINTR:
446 case -EBUSY:
447 return VM_FAULT_NOPAGE;
448
449 case -ENOMEM:
450 return VM_FAULT_OOM;
451 }
452
453 return VM_FAULT_SIGBUS;
454} 440}
455 441
456const struct vm_operations_struct tegra_bo_vm_ops = { 442const struct vm_operations_struct tegra_bo_vm_ops = {