2018년 05월 10일 23:27에 Souptick Joarder 이(가) 쓴 글: > On Sat, Apr 14, 2018 at 9:34 PM, Souptick Joarder <jrdr.linux@xxxxxxxxx> wrote: >> Use new return type vm_fault_t for fault handler >> in struct vm_operations_struct. >> >> Signed-off-by: Souptick Joarder <jrdr.linux@xxxxxxxxx> >> Reviewed-by: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx> >> --- >> drivers/gpu/drm/exynos/exynos_drm_gem.c | 21 ++++----------------- >> drivers/gpu/drm/exynos/exynos_drm_gem.h | 3 ++- >> 2 files changed, 6 insertions(+), 18 deletions(-) >> >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c >> index 11cc01b..6e1494f 100644 >> --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c >> +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c >> @@ -431,37 +431,24 @@ int exynos_drm_gem_dumb_create(struct drm_file *file_priv, >> return 0; >> } >> >> -int exynos_drm_gem_fault(struct vm_fault *vmf) >> +vm_fault_t exynos_drm_gem_fault(struct vm_fault *vmf) >> { >> struct vm_area_struct *vma = vmf->vma; >> struct drm_gem_object *obj = vma->vm_private_data; >> struct exynos_drm_gem *exynos_gem = to_exynos_gem(obj); >> unsigned long pfn; >> pgoff_t page_offset; >> - int ret; >> >> page_offset = (vmf->address - vma->vm_start) >> PAGE_SHIFT; >> >> if (page_offset >= (exynos_gem->size >> PAGE_SHIFT)) { >> DRM_ERROR("invalid page offset\n"); >> - ret = -EINVAL; >> - goto out; >> + return VM_FAULT_SIGBUS; >> } >> >> pfn = page_to_pfn(exynos_gem->pages[page_offset]); >> - ret = vm_insert_mixed(vma, vmf->address, __pfn_to_pfn_t(pfn, PFN_DEV)); >> - >> -out: >> - switch (ret) { >> - case 0: >> - case -ERESTARTSYS: >> - case -EINTR: >> - return VM_FAULT_NOPAGE; >> - case -ENOMEM: >> - return VM_FAULT_OOM; >> - default: >> - return VM_FAULT_SIGBUS; >> - } >> + return vmf_insert_mixed(vma, vmf->address, >> + __pfn_to_pfn_t(pfn, PFN_DEV)); >> } >> >> static int exynos_drm_gem_mmap_obj(struct drm_gem_object *obj, >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.h b/drivers/gpu/drm/exynos/exynos_drm_gem.h >> index 5a4c7de..9057d7f 100644 >> --- a/drivers/gpu/drm/exynos/exynos_drm_gem.h >> +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.h >> @@ -13,6 +13,7 @@ >> #define _EXYNOS_DRM_GEM_H_ >> >> #include <drm/drm_gem.h> >> +#include <linux/mm_types.h> >> >> #define to_exynos_gem(x) container_of(x, struct exynos_drm_gem, base) >> >> @@ -111,7 +112,7 @@ int exynos_drm_gem_dumb_create(struct drm_file *file_priv, >> struct drm_mode_create_dumb *args); >> >> /* page fault handler and mmap fault address(virtual) to physical memory. */ >> -int exynos_drm_gem_fault(struct vm_fault *vmf); >> +vm_fault_t exynos_drm_gem_fault(struct vm_fault *vmf); >> >> /* set vm_flags and we can change the vm attribute to other one at here. */ >> int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma); >> -- >> 1.9.1 >> > > Any comment on this patch ? > Cleanup one so merged it already to -next. Thanks, Inki Dae > > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel