|
@@ -422,14 +422,13 @@ int tegra_bo_dumb_create(struct drm_file *file, struct drm_device *drm,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int tegra_bo_fault(struct vm_fault *vmf)
|
|
|
|
|
|
+static vm_fault_t tegra_bo_fault(struct vm_fault *vmf)
|
|
{
|
|
{
|
|
struct vm_area_struct *vma = vmf->vma;
|
|
struct vm_area_struct *vma = vmf->vma;
|
|
struct drm_gem_object *gem = vma->vm_private_data;
|
|
struct drm_gem_object *gem = vma->vm_private_data;
|
|
struct tegra_bo *bo = to_tegra_bo(gem);
|
|
struct tegra_bo *bo = to_tegra_bo(gem);
|
|
struct page *page;
|
|
struct page *page;
|
|
pgoff_t offset;
|
|
pgoff_t offset;
|
|
- int err;
|
|
|
|
|
|
|
|
if (!bo->pages)
|
|
if (!bo->pages)
|
|
return VM_FAULT_SIGBUS;
|
|
return VM_FAULT_SIGBUS;
|
|
@@ -437,20 +436,7 @@ static int tegra_bo_fault(struct vm_fault *vmf)
|
|
offset = (vmf->address - vma->vm_start) >> PAGE_SHIFT;
|
|
offset = (vmf->address - vma->vm_start) >> PAGE_SHIFT;
|
|
page = bo->pages[offset];
|
|
page = bo->pages[offset];
|
|
|
|
|
|
- err = vm_insert_page(vma, vmf->address, page);
|
|
|
|
- switch (err) {
|
|
|
|
- case -EAGAIN:
|
|
|
|
- case 0:
|
|
|
|
- case -ERESTARTSYS:
|
|
|
|
- case -EINTR:
|
|
|
|
- case -EBUSY:
|
|
|
|
- return VM_FAULT_NOPAGE;
|
|
|
|
-
|
|
|
|
- case -ENOMEM:
|
|
|
|
- return VM_FAULT_OOM;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return VM_FAULT_SIGBUS;
|
|
|
|
|
|
+ return vmf_insert_page(vma, vmf->address, page);
|
|
}
|
|
}
|
|
|
|
|
|
const struct vm_operations_struct tegra_bo_vm_ops = {
|
|
const struct vm_operations_struct tegra_bo_vm_ops = {
|