Re: [Intel-gfx] [PATCH 0/4] mm/gup, drm/i915: refactor gup_fast, convert to pin_user_pages()
Hi John, On Tue, May 19, 2020 at 5:51 AM John Hubbard wrote: > > This needs to go through Andrew's -mm tree, due to adding a new gup.c > routine. However, I would really love to have some testing from the > drm/i915 folks, because I haven't been able to run-time test that part > of it. > > Otherwise, though, the series has passed my basic run time testing: > some LTP tests, some xfs and etx4 non-destructive xfstests, and an > assortment of other smaller ones: vm selftests, io_uring_register, a > few more. But that's only on one particular machine. Also, cross-compile > tests for half a dozen arches all pass. > > Details: > > In order to convert the drm/i915 driver from get_user_pages() to > pin_user_pages(), a FOLL_PIN equivalent of __get_user_pages_fast() was > required. That led to refactoring __get_user_pages_fast(), with the > following goals: > > 1) As above: provide a pin_user_pages*() routine for drm/i915 to call, >in place of __get_user_pages_fast(), > > 2) Get rid of the gup.c duplicate code for walking page tables with >interrupts disabled. This duplicate code is a minor maintenance >problem anyway. > > 3) Make it easy for an upcoming patch from Souptick, which aims to >convert __get_user_pages_fast() to use a gup_flags argument, instead >of a bool writeable arg. Also, if this series looks good, we can >ask Souptick to change the name as well, to whatever the consensus >is. My initial recommendation is: get_user_pages_fast_only(), to >match the new pin_user_pages_only(). Shall I hold my changes till 5.8-rc1 , when this series will appear upstream ? > > John Hubbard (4): > mm/gup: move __get_user_pages_fast() down a few lines in gup.c > mm/gup: refactor and de-duplicate gup_fast() code > mm/gup: introduce pin_user_pages_fast_only() > drm/i915: convert get_user_pages() --> pin_user_pages() > > drivers/gpu/drm/i915/gem/i915_gem_userptr.c | 22 +-- > include/linux/mm.h | 3 + > mm/gup.c| 150 > 3 files changed, 107 insertions(+), 68 deletions(-) > > > base-commit: 642b151f45dd54809ea00ecd3976a56c1ec9b53d > -- > 2.26.2 > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v4] gpu: drm: i915: Change return type to vm_fault_t
On Mon, May 21, 2018 at 4:48 PM, Souptick Joarder wrote: > On Thu, May 17, 2018 at 10:40 AM, Souptick Joarder > wrote: >> On Thu, May 17, 2018 at 12:48 AM, Chris Wilson >> wrote: >>> Quoting Souptick Joarder (2018-05-16 20:12:20) >>>> 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. >>>> >>>> commit 1c8f422059ae ("mm: change return type to vm_fault_t") >>>> >>>> Fixed one checkpatch.pl warning inside WARN_ONCE. >>>> >>>> Signed-off-by: Souptick Joarder >>>> --- >>> >>>> diff --git a/drivers/gpu/drm/i915/i915_gem.c >>>> b/drivers/gpu/drm/i915/i915_gem.c >>>> index dd89abd..732abdf 100644 >>>> --- a/drivers/gpu/drm/i915/i915_gem.c >>>> +++ b/drivers/gpu/drm/i915/i915_gem.c >>>> @@ -1882,7 +1882,7 @@ int i915_gem_mmap_gtt_version(void) >>>> * The current feature set supported by i915_gem_fault() and thus GTT >>>> mmaps >>>> * is exposed via I915_PARAM_MMAP_GTT_VERSION (see >>>> i915_gem_mmap_gtt_version). >>>> */ >>>> -int i915_gem_fault(struct vm_fault *vmf) >>>> +vm_fault_t i915_gem_fault(struct vm_fault *vmf) >>>> { >>>> #define MIN_CHUNK_PAGES ((1 << 20) >> PAGE_SHIFT) /* 1 MiB */ >>>> struct vm_area_struct *area = vmf->vma; >>>> @@ -1894,7 +1894,8 @@ int i915_gem_fault(struct vm_fault *vmf) >>>> struct i915_vma *vma; >>>> pgoff_t page_offset; >>>> unsigned int flags; >>>> - int ret; >>>> + int err; >>>> + vm_fault_t ret = VM_FAULT_SIGBUS; >>>> >>>> /* We don't use vmf->pgoff since that has the fake offset */ >>>> page_offset = (vmf->address - area->vm_start) >> PAGE_SHIFT; >>>> @@ -2027,8 +2028,7 @@ int i915_gem_fault(struct vm_fault *vmf) >>>> ret = VM_FAULT_SIGBUS; >>>> break; >>>> default: >>>> - WARN_ONCE(ret, "unhandled error in i915_gem_fault: %i\n", >>>> ret); >>>> - ret = VM_FAULT_SIGBUS; >>>> + WARN_ONCE(ret, "unhandled error in %s: %x\n", __func__, >>>> err); >>>> break; >>> >>> Even simpler would be to use e.g. return VM_FAULT_SIGBUS for each case >>> above. No early initialisation of use-once variables allowing the >>> compiler to do it's job. For a smaller patch, you can even skip the >>> s/ret/err/ >>> -Chris >> >> Chris, >> I prefer to use return once at the end of the function rather than >> writing multiple return statement (Current code is doing similar). >> But if you think other way, I can make that change :) > > If no further comment, we would like to get this patch > in queue for 4.18 We need to get this patch in queue for 4.18. ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v4] gpu: drm: i915: Change return type to vm_fault_t
On Thu, May 17, 2018 at 10:40 AM, Souptick Joarder <jrdr.li...@gmail.com> wrote: > On Thu, May 17, 2018 at 12:48 AM, Chris Wilson <ch...@chris-wilson.co.uk> > wrote: >> Quoting Souptick Joarder (2018-05-16 20:12:20) >>> 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. >>> >>> commit 1c8f422059ae ("mm: change return type to vm_fault_t") >>> >>> Fixed one checkpatch.pl warning inside WARN_ONCE. >>> >>> Signed-off-by: Souptick Joarder <jrdr.li...@gmail.com> >>> --- >> >>> diff --git a/drivers/gpu/drm/i915/i915_gem.c >>> b/drivers/gpu/drm/i915/i915_gem.c >>> index dd89abd..732abdf 100644 >>> --- a/drivers/gpu/drm/i915/i915_gem.c >>> +++ b/drivers/gpu/drm/i915/i915_gem.c >>> @@ -1882,7 +1882,7 @@ int i915_gem_mmap_gtt_version(void) >>> * The current feature set supported by i915_gem_fault() and thus GTT mmaps >>> * is exposed via I915_PARAM_MMAP_GTT_VERSION (see >>> i915_gem_mmap_gtt_version). >>> */ >>> -int i915_gem_fault(struct vm_fault *vmf) >>> +vm_fault_t i915_gem_fault(struct vm_fault *vmf) >>> { >>> #define MIN_CHUNK_PAGES ((1 << 20) >> PAGE_SHIFT) /* 1 MiB */ >>> struct vm_area_struct *area = vmf->vma; >>> @@ -1894,7 +1894,8 @@ int i915_gem_fault(struct vm_fault *vmf) >>> struct i915_vma *vma; >>> pgoff_t page_offset; >>> unsigned int flags; >>> - int ret; >>> + int err; >>> + vm_fault_t ret = VM_FAULT_SIGBUS; >>> >>> /* We don't use vmf->pgoff since that has the fake offset */ >>> page_offset = (vmf->address - area->vm_start) >> PAGE_SHIFT; >>> @@ -2027,8 +2028,7 @@ int i915_gem_fault(struct vm_fault *vmf) >>> ret = VM_FAULT_SIGBUS; >>> break; >>> default: >>> - WARN_ONCE(ret, "unhandled error in i915_gem_fault: %i\n", >>> ret); >>> - ret = VM_FAULT_SIGBUS; >>> + WARN_ONCE(ret, "unhandled error in %s: %x\n", __func__, >>> err); >>> break; >> >> Even simpler would be to use e.g. return VM_FAULT_SIGBUS for each case >> above. No early initialisation of use-once variables allowing the >> compiler to do it's job. For a smaller patch, you can even skip the >> s/ret/err/ >> -Chris > > Chris, > I prefer to use return once at the end of the function rather than > writing multiple return statement (Current code is doing similar). > But if you think other way, I can make that change :) If no further comment, we would like to get this patch in queue for 4.18 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v4] gpu: drm: i915: Change return type to vm_fault_t
On Thu, May 17, 2018 at 12:48 AM, Chris Wilson <ch...@chris-wilson.co.uk> wrote: > Quoting Souptick Joarder (2018-05-16 20:12:20) >> 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. >> >> commit 1c8f422059ae ("mm: change return type to vm_fault_t") >> >> Fixed one checkpatch.pl warning inside WARN_ONCE. >> >> Signed-off-by: Souptick Joarder <jrdr.li...@gmail.com> >> --- > >> diff --git a/drivers/gpu/drm/i915/i915_gem.c >> b/drivers/gpu/drm/i915/i915_gem.c >> index dd89abd..732abdf 100644 >> --- a/drivers/gpu/drm/i915/i915_gem.c >> +++ b/drivers/gpu/drm/i915/i915_gem.c >> @@ -1882,7 +1882,7 @@ int i915_gem_mmap_gtt_version(void) >> * The current feature set supported by i915_gem_fault() and thus GTT mmaps >> * is exposed via I915_PARAM_MMAP_GTT_VERSION (see >> i915_gem_mmap_gtt_version). >> */ >> -int i915_gem_fault(struct vm_fault *vmf) >> +vm_fault_t i915_gem_fault(struct vm_fault *vmf) >> { >> #define MIN_CHUNK_PAGES ((1 << 20) >> PAGE_SHIFT) /* 1 MiB */ >> struct vm_area_struct *area = vmf->vma; >> @@ -1894,7 +1894,8 @@ int i915_gem_fault(struct vm_fault *vmf) >> struct i915_vma *vma; >> pgoff_t page_offset; >> unsigned int flags; >> - int ret; >> + int err; >> + vm_fault_t ret = VM_FAULT_SIGBUS; >> >> /* We don't use vmf->pgoff since that has the fake offset */ >> page_offset = (vmf->address - area->vm_start) >> PAGE_SHIFT; >> @@ -2027,8 +2028,7 @@ int i915_gem_fault(struct vm_fault *vmf) >> ret = VM_FAULT_SIGBUS; >> break; >> default: >> - WARN_ONCE(ret, "unhandled error in i915_gem_fault: %i\n", >> ret); >> - ret = VM_FAULT_SIGBUS; >> + WARN_ONCE(ret, "unhandled error in %s: %x\n", __func__, err); >> break; > > Even simpler would be to use e.g. return VM_FAULT_SIGBUS for each case > above. No early initialisation of use-once variables allowing the > compiler to do it's job. For a smaller patch, you can even skip the > s/ret/err/ > -Chris Chris, I prefer to use return once at the end of the function rather than writing multiple return statement (Current code is doing similar). But if you think other way, I can make that change :) ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH v4] gpu: drm: i915: Change return type to 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. commit 1c8f422059ae ("mm: change return type to vm_fault_t") Fixed one checkpatch.pl warning inside WARN_ONCE. Signed-off-by: Souptick Joarder <jrdr.li...@gmail.com> --- v2: Updated the change log v3: Corrected variable name to err v4: Fixed patchwork error by initialized ret drivers/gpu/drm/i915/i915_drv.h | 3 ++- drivers/gpu/drm/i915/i915_gem.c | 38 +++--- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index a42deeb..95b0d50 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -51,6 +51,7 @@ #include #include #include +#include #include "i915_params.h" #include "i915_reg.h" @@ -3363,7 +3364,7 @@ int i915_gem_wait_for_idle(struct drm_i915_private *dev_priv, unsigned int flags); int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv); void i915_gem_resume(struct drm_i915_private *dev_priv); -int i915_gem_fault(struct vm_fault *vmf); +vm_fault_t i915_gem_fault(struct vm_fault *vmf); int i915_gem_object_wait(struct drm_i915_gem_object *obj, unsigned int flags, long timeout, diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index dd89abd..732abdf 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1882,7 +1882,7 @@ int i915_gem_mmap_gtt_version(void) * The current feature set supported by i915_gem_fault() and thus GTT mmaps * is exposed via I915_PARAM_MMAP_GTT_VERSION (see i915_gem_mmap_gtt_version). */ -int i915_gem_fault(struct vm_fault *vmf) +vm_fault_t i915_gem_fault(struct vm_fault *vmf) { #define MIN_CHUNK_PAGES ((1 << 20) >> PAGE_SHIFT) /* 1 MiB */ struct vm_area_struct *area = vmf->vma; @@ -1894,7 +1894,8 @@ int i915_gem_fault(struct vm_fault *vmf) struct i915_vma *vma; pgoff_t page_offset; unsigned int flags; - int ret; + int err; + vm_fault_t ret = VM_FAULT_SIGBUS; /* We don't use vmf->pgoff since that has the fake offset */ page_offset = (vmf->address - area->vm_start) >> PAGE_SHIFT; @@ -1906,26 +1907,26 @@ int i915_gem_fault(struct vm_fault *vmf) * repeat the flush holding the lock in the normal manner to catch cases * where we are gazumped. */ - ret = i915_gem_object_wait(obj, + err = i915_gem_object_wait(obj, I915_WAIT_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT, NULL); - if (ret) + if (err) goto err; - ret = i915_gem_object_pin_pages(obj); - if (ret) + err = i915_gem_object_pin_pages(obj); + if (err) goto err; intel_runtime_pm_get(dev_priv); - ret = i915_mutex_lock_interruptible(dev); - if (ret) + err = i915_mutex_lock_interruptible(dev); + if (err) goto err_rpm; /* Access to snoopable pages through the GTT is incoherent. */ if (obj->cache_level != I915_CACHE_NONE && !HAS_LLC(dev_priv)) { - ret = -EFAULT; + err = -EFAULT; goto err_unlock; } @@ -1952,25 +1953,25 @@ int i915_gem_fault(struct vm_fault *vmf) vma = i915_gem_object_ggtt_pin(obj, , 0, 0, PIN_MAPPABLE); } if (IS_ERR(vma)) { - ret = PTR_ERR(vma); + err = PTR_ERR(vma); goto err_unlock; } - ret = i915_gem_object_set_to_gtt_domain(obj, write); - if (ret) + err = i915_gem_object_set_to_gtt_domain(obj, write); + if (err) goto err_unpin; - ret = i915_vma_pin_fence(vma); - if (ret) + err = i915_vma_pin_fence(vma); + if (err) goto err_unpin; /* Finally, remap it using the new GTT offset */ - ret = remap_io_mapping(area, + err = remap_io_mapping(area, area->vm_start + (vma->ggtt_view.partial.offset << PAGE_SHIFT), (ggtt->gmadr.start + vma->node.start) >> PAGE_SHIFT, min_t(u64, vma->size, area->vm_end - area->vm_start), >iomap); - if (ret) + if (err) goto err_fence; /* Mark as being mmapped into userspace for later revocation */ @@ -1991,7 +1992,7 @@ int i915_gem_fault(struct vm_fault *vmf) intel_runtime_pm_put(dev_priv)
[Intel-gfx] [PATCH v3] gpu: drm: i915: Change return type to 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. commit 1c8f422059ae ("mm: change return type to vm_fault_t") Fixed one checkpatch.pl warning inside WARN_ONCE. Signed-off-by: Souptick Joarder <jrdr.li...@gmail.com> --- v2: Updated the change log v3: Corrected variable name to err drivers/gpu/drm/i915/i915_drv.h | 3 ++- drivers/gpu/drm/i915/i915_gem.c | 37 +++-- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index a42deeb..95b0d50 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -51,6 +51,7 @@ #include #include #include +#include #include "i915_params.h" #include "i915_reg.h" @@ -3363,7 +3364,7 @@ int i915_gem_wait_for_idle(struct drm_i915_private *dev_priv, unsigned int flags); int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv); void i915_gem_resume(struct drm_i915_private *dev_priv); -int i915_gem_fault(struct vm_fault *vmf); +vm_fault_t i915_gem_fault(struct vm_fault *vmf); int i915_gem_object_wait(struct drm_i915_gem_object *obj, unsigned int flags, long timeout, diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index dd89abd..b81b785 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1882,7 +1882,7 @@ int i915_gem_mmap_gtt_version(void) * The current feature set supported by i915_gem_fault() and thus GTT mmaps * is exposed via I915_PARAM_MMAP_GTT_VERSION (see i915_gem_mmap_gtt_version). */ -int i915_gem_fault(struct vm_fault *vmf) +vm_fault_t i915_gem_fault(struct vm_fault *vmf) { #define MIN_CHUNK_PAGES ((1 << 20) >> PAGE_SHIFT) /* 1 MiB */ struct vm_area_struct *area = vmf->vma; @@ -1894,7 +1894,8 @@ int i915_gem_fault(struct vm_fault *vmf) struct i915_vma *vma; pgoff_t page_offset; unsigned int flags; - int ret; + int err; + vm_fault_t ret; /* We don't use vmf->pgoff since that has the fake offset */ page_offset = (vmf->address - area->vm_start) >> PAGE_SHIFT; @@ -1906,26 +1907,26 @@ int i915_gem_fault(struct vm_fault *vmf) * repeat the flush holding the lock in the normal manner to catch cases * where we are gazumped. */ - ret = i915_gem_object_wait(obj, + err = i915_gem_object_wait(obj, I915_WAIT_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT, NULL); - if (ret) + if (err) goto err; - ret = i915_gem_object_pin_pages(obj); - if (ret) + err = i915_gem_object_pin_pages(obj); + if (err) goto err; intel_runtime_pm_get(dev_priv); - ret = i915_mutex_lock_interruptible(dev); - if (ret) + err = i915_mutex_lock_interruptible(dev); + if (err) goto err_rpm; /* Access to snoopable pages through the GTT is incoherent. */ if (obj->cache_level != I915_CACHE_NONE && !HAS_LLC(dev_priv)) { - ret = -EFAULT; + err = -EFAULT; goto err_unlock; } @@ -1952,25 +1953,25 @@ int i915_gem_fault(struct vm_fault *vmf) vma = i915_gem_object_ggtt_pin(obj, , 0, 0, PIN_MAPPABLE); } if (IS_ERR(vma)) { - ret = PTR_ERR(vma); + err = PTR_ERR(vma); goto err_unlock; } - ret = i915_gem_object_set_to_gtt_domain(obj, write); - if (ret) + err = i915_gem_object_set_to_gtt_domain(obj, write); + if (err) goto err_unpin; - ret = i915_vma_pin_fence(vma); - if (ret) + err = i915_vma_pin_fence(vma); + if (err) goto err_unpin; /* Finally, remap it using the new GTT offset */ - ret = remap_io_mapping(area, + err = remap_io_mapping(area, area->vm_start + (vma->ggtt_view.partial.offset << PAGE_SHIFT), (ggtt->gmadr.start + vma->node.start) >> PAGE_SHIFT, min_t(u64, vma->size, area->vm_end - area->vm_start), >iomap); - if (ret) + if (err) goto err_fence; /* Mark as being mmapped into userspace for later revocation */ @@ -1991,7 +1992,7 @@ int i915_gem_fault(struct vm_fault *vmf) intel_runtime_pm_put(dev_priv); i915_gem_object_unpin_pages(obj); err: - switch (ret) { +
Re: [Intel-gfx] [PATCH v2] gpu: drm: i915: Change return type to vm_fault_t
>> >> default: >> >> - WARN_ONCE(ret, "unhandled error in i915_gem_fault: %i\n", >> >> ret); >> >> + WARN_ONCE(ret, "unhandled error in %s: %x\n", __func__, >> >> ret); >> > >> > I don't see point in %x (which should be 0x%x, really), why change it? >> >> ret will return VM_FAULT_FOO which is actually a defined as hex value >> so %x will be more meaningful to print. I think WARN_ONCE() is less >> meaningful to print inside default. >> Better to remove it ? Agree ? > > Apart from we don't want to see ret. > -Chris I look back to the code again. Printing "err" instead of "ret" will reproduce the original behaviour of the code. Will send v2. ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v2] gpu: drm: i915: Change return type to vm_fault_t
On Tue, May 15, 2018 at 7:19 PM, Joonas Lahtinen <joonas.lahti...@linux.intel.com> wrote: > Quoting Souptick Joarder (2018-04-17 22:02:02) >> 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") >> >> Fixed one checkpatch.pl warning inside WARN_ONCE. >> >> Signed-off-by: Souptick Joarder <jrdr.li...@gmail.com> >> --- >> drivers/gpu/drm/i915/i915_drv.h | 3 ++- >> drivers/gpu/drm/i915/i915_gem.c | 37 +++-- >> 2 files changed, 21 insertions(+), 19 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/i915_drv.h >> b/drivers/gpu/drm/i915/i915_drv.h >> index a42deeb..95b0d50 100644 >> --- a/drivers/gpu/drm/i915/i915_drv.h >> +++ b/drivers/gpu/drm/i915/i915_drv.h >> @@ -51,6 +51,7 @@ >> #include >> #include >> #include >> +#include >> >> #include "i915_params.h" >> #include "i915_reg.h" >> @@ -3363,7 +3364,7 @@ int i915_gem_wait_for_idle(struct drm_i915_private >> *dev_priv, >>unsigned int flags); >> int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv); >> void i915_gem_resume(struct drm_i915_private *dev_priv); >> -int i915_gem_fault(struct vm_fault *vmf); >> +vm_fault_t i915_gem_fault(struct vm_fault *vmf); >> int i915_gem_object_wait(struct drm_i915_gem_object *obj, >> unsigned int flags, >> long timeout, >> diff --git a/drivers/gpu/drm/i915/i915_gem.c >> b/drivers/gpu/drm/i915/i915_gem.c >> index dd89abd..61816e8 100644 >> --- a/drivers/gpu/drm/i915/i915_gem.c >> +++ b/drivers/gpu/drm/i915/i915_gem.c >> @@ -1882,7 +1882,7 @@ int i915_gem_mmap_gtt_version(void) >> * The current feature set supported by i915_gem_fault() and thus GTT mmaps >> * is exposed via I915_PARAM_MMAP_GTT_VERSION (see >> i915_gem_mmap_gtt_version). >> */ >> -int i915_gem_fault(struct vm_fault *vmf) >> +vm_fault_t i915_gem_fault(struct vm_fault *vmf) >> { >> #define MIN_CHUNK_PAGES ((1 << 20) >> PAGE_SHIFT) /* 1 MiB */ >> struct vm_area_struct *area = vmf->vma; >> @@ -1894,7 +1894,8 @@ int i915_gem_fault(struct vm_fault *vmf) >> struct i915_vma *vma; >> pgoff_t page_offset; >> unsigned int flags; >> - int ret; >> + int error; >> + vm_fault_t ret; > > Just add "err" under the existing variable as shorter one. Just "err" name > should suffice just like elsewhere in the code. There is a goto level "err" inside this function due to which variable is defined as error. I think better to keep "error" instead of modifying both variable and level name. >> * We eat errors when the gpu is terminally wedged to avoid >> @@ -2027,7 +2028,7 @@ int i915_gem_fault(struct vm_fault *vmf) >> ret = VM_FAULT_SIGBUS; >> break; >> default: >> - WARN_ONCE(ret, "unhandled error in i915_gem_fault: %i\n", >> ret); >> + WARN_ONCE(ret, "unhandled error in %s: %x\n", __func__, ret); > > I don't see point in %x (which should be 0x%x, really), why change it? ret will return VM_FAULT_FOO which is actually a defined as hex value so %x will be more meaningful to print. I think WARN_ONCE() is less meaningful to print inside default. Better to remove it ? Agree ? ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v2] gpu: drm: i915: Change return type to vm_fault_t
On Wed, Apr 18, 2018 at 12:32 AM, Souptick Joarder <jrdr.li...@gmail.com> wrote: > 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") > > Fixed one checkpatch.pl warning inside WARN_ONCE. > > Signed-off-by: Souptick Joarder <jrdr.li...@gmail.com> > --- > drivers/gpu/drm/i915/i915_drv.h | 3 ++- > drivers/gpu/drm/i915/i915_gem.c | 37 +++-- > 2 files changed, 21 insertions(+), 19 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index a42deeb..95b0d50 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -51,6 +51,7 @@ > #include > #include > #include > +#include > > #include "i915_params.h" > #include "i915_reg.h" > @@ -3363,7 +3364,7 @@ int i915_gem_wait_for_idle(struct drm_i915_private > *dev_priv, >unsigned int flags); > int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv); > void i915_gem_resume(struct drm_i915_private *dev_priv); > -int i915_gem_fault(struct vm_fault *vmf); > +vm_fault_t i915_gem_fault(struct vm_fault *vmf); > int i915_gem_object_wait(struct drm_i915_gem_object *obj, > unsigned int flags, > long timeout, > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index dd89abd..61816e8 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -1882,7 +1882,7 @@ int i915_gem_mmap_gtt_version(void) > * The current feature set supported by i915_gem_fault() and thus GTT mmaps > * is exposed via I915_PARAM_MMAP_GTT_VERSION (see > i915_gem_mmap_gtt_version). > */ > -int i915_gem_fault(struct vm_fault *vmf) > +vm_fault_t i915_gem_fault(struct vm_fault *vmf) > { > #define MIN_CHUNK_PAGES ((1 << 20) >> PAGE_SHIFT) /* 1 MiB */ > struct vm_area_struct *area = vmf->vma; > @@ -1894,7 +1894,8 @@ int i915_gem_fault(struct vm_fault *vmf) > struct i915_vma *vma; > pgoff_t page_offset; > unsigned int flags; > - int ret; > + int error; > + vm_fault_t ret; > > /* We don't use vmf->pgoff since that has the fake offset */ > page_offset = (vmf->address - area->vm_start) >> PAGE_SHIFT; > @@ -1906,26 +1907,26 @@ int i915_gem_fault(struct vm_fault *vmf) > * repeat the flush holding the lock in the normal manner to catch > cases > * where we are gazumped. > */ > - ret = i915_gem_object_wait(obj, > + error = i915_gem_object_wait(obj, >I915_WAIT_INTERRUPTIBLE, >MAX_SCHEDULE_TIMEOUT, >NULL); > - if (ret) > + if (error) > goto err; > > - ret = i915_gem_object_pin_pages(obj); > - if (ret) > + error = i915_gem_object_pin_pages(obj); > + if (error) > goto err; > > intel_runtime_pm_get(dev_priv); > > - ret = i915_mutex_lock_interruptible(dev); > - if (ret) > + error = i915_mutex_lock_interruptible(dev); > + if (error) > goto err_rpm; > > /* Access to snoopable pages through the GTT is incoherent. */ > if (obj->cache_level != I915_CACHE_NONE && !HAS_LLC(dev_priv)) { > - ret = -EFAULT; > + error = -EFAULT; > goto err_unlock; > } > > @@ -1952,25 +1953,25 @@ int i915_gem_fault(struct vm_fault *vmf) > vma = i915_gem_object_ggtt_pin(obj, , 0, 0, > PIN_MAPPABLE); > } > if (IS_ERR(vma)) { > - ret = PTR_ERR(vma); > + error = PTR_ERR(vma); > goto err_unlock; > } > > - ret = i915_gem_object_set_to_gtt_domain(obj, write); > - if (ret) > + error = i915_gem_object_set_to_gtt_domain(obj, write); > + if (error) > goto err_unpin; > > - ret = i915_vma_pin_fence(vma); > - if (ret) > + error = i915_vma_pin_fence(vma); > + if (error) > goto err_unpin; > > /* Finally, remap it using the new GTT offset */ > - ret = remap_io_mapping(area, > + error = remap_io_mapping(area, >
Re: [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for gpu: drm: i915: Change return type to vm_fault_t (rev2)
On Wed, Apr 18, 2018 at 9:24 PM, Patchworkwrote: > == Series Details == > > Series: gpu: drm: i915: Change return type to vm_fault_t (rev2) > URL : https://patchwork.freedesktop.org/series/41893/ > State : warning > > == Summary == > > $ dim checkpatch origin/drm-tip > 045e647f1204 gpu: drm: i915: Change return type to vm_fault_t > -:11: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit > <12+ chars of sha1> ("")' - ie: 'commit 1c8f422059ae ("mm: change > return type to vm_fault_t")' Does it mean I need to send v3 with correction ? ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] gpu: drm: i915: Change return type to 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") Signed-off-by: Souptick Joarder <jrdr.li...@gmail.com> --- drivers/gpu/drm/i915/i915_drv.h | 3 ++- drivers/gpu/drm/i915/i915_gem.c | 15 --- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index a42deeb..95b0d50 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -51,6 +51,7 @@ #include #include #include +#include #include "i915_params.h" #include "i915_reg.h" @@ -3363,7 +3364,7 @@ int i915_gem_wait_for_idle(struct drm_i915_private *dev_priv, unsigned int flags); int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv); void i915_gem_resume(struct drm_i915_private *dev_priv); -int i915_gem_fault(struct vm_fault *vmf); +vm_fault_t i915_gem_fault(struct vm_fault *vmf); int i915_gem_object_wait(struct drm_i915_gem_object *obj, unsigned int flags, long timeout, diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index dd89abd..bdac690 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1882,7 +1882,7 @@ int i915_gem_mmap_gtt_version(void) * The current feature set supported by i915_gem_fault() and thus GTT mmaps * is exposed via I915_PARAM_MMAP_GTT_VERSION (see i915_gem_mmap_gtt_version). */ -int i915_gem_fault(struct vm_fault *vmf) +vm_fault_t i915_gem_fault(struct vm_fault *vmf) { #define MIN_CHUNK_PAGES ((1 << 20) >> PAGE_SHIFT) /* 1 MiB */ struct vm_area_struct *area = vmf->vma; @@ -1895,6 +1895,7 @@ int i915_gem_fault(struct vm_fault *vmf) pgoff_t page_offset; unsigned int flags; int ret; + vm_fault_t retval; /* We don't use vmf->pgoff since that has the fake offset */ page_offset = (vmf->address - area->vm_start) >> PAGE_SHIFT; @@ -2000,7 +2001,7 @@ int i915_gem_fault(struct vm_fault *vmf) * and so needs to be reported. */ if (!i915_terminally_wedged(_priv->gpu_error)) { - ret = VM_FAULT_SIGBUS; + retval = VM_FAULT_SIGBUS; break; } case -EAGAIN: @@ -2017,21 +2018,21 @@ int i915_gem_fault(struct vm_fault *vmf) * EBUSY is ok: this just means that another thread * already did the job. */ - ret = VM_FAULT_NOPAGE; + retval = VM_FAULT_NOPAGE; break; case -ENOMEM: - ret = VM_FAULT_OOM; + retval = VM_FAULT_OOM; break; case -ENOSPC: case -EFAULT: - ret = VM_FAULT_SIGBUS; + retval = VM_FAULT_SIGBUS; break; default: WARN_ONCE(ret, "unhandled error in i915_gem_fault: %i\n", ret); - ret = VM_FAULT_SIGBUS; + retval = VM_FAULT_SIGBUS; break; } - return ret; + return retval; } static void __i915_gem_object_release_mmap(struct drm_i915_gem_object *obj) -- 1.9.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] gpu: drm: i915: Change return type to vm_fault_t
Not exactly. The plan for these patches is to introduce new vm_fault_t type in vm_operations_struct fault handlers. It's now available in 4.17-rc1. We will push all the required drivers/filesystem changes through different maintainers to linus tree. Once everything is converted into vm_fault_t type then Changing it from a signed to an unsigned int causes GCC to warn about an assignment from an incompatible type -- int foo(void) is incompatible with unsigned int foo(void). Please refer 1c8f422059ae ("mm: change return type to vm_fault_t") in 4.17-rc1. On Tue, Apr 17, 2018 at 8:59 PM, Jani Nikula <jani.nik...@linux.intel.com> wrote: > On Tue, 17 Apr 2018, Souptick Joarder <jrdr.li...@gmail.com> wrote: >> 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") >> >> Signed-off-by: Souptick Joarder <jrdr.li...@gmail.com> >> --- >> drivers/gpu/drm/i915/i915_drv.h | 3 ++- >> drivers/gpu/drm/i915/i915_gem.c | 15 --- >> 2 files changed, 10 insertions(+), 8 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/i915_drv.h >> b/drivers/gpu/drm/i915/i915_drv.h >> index a42deeb..95b0d50 100644 >> --- a/drivers/gpu/drm/i915/i915_drv.h >> +++ b/drivers/gpu/drm/i915/i915_drv.h >> @@ -51,6 +51,7 @@ >> #include >> #include >> #include >> +#include >> >> #include "i915_params.h" >> #include "i915_reg.h" >> @@ -3363,7 +3364,7 @@ int i915_gem_wait_for_idle(struct drm_i915_private >> *dev_priv, >> unsigned int flags); >> int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv); >> void i915_gem_resume(struct drm_i915_private *dev_priv); >> -int i915_gem_fault(struct vm_fault *vmf); >> +vm_fault_t i915_gem_fault(struct vm_fault *vmf); >> int i915_gem_object_wait(struct drm_i915_gem_object *obj, >>unsigned int flags, >>long timeout, >> diff --git a/drivers/gpu/drm/i915/i915_gem.c >> b/drivers/gpu/drm/i915/i915_gem.c >> index dd89abd..bdac690 100644 >> --- a/drivers/gpu/drm/i915/i915_gem.c >> +++ b/drivers/gpu/drm/i915/i915_gem.c >> @@ -1882,7 +1882,7 @@ int i915_gem_mmap_gtt_version(void) >> * The current feature set supported by i915_gem_fault() and thus GTT mmaps >> * is exposed via I915_PARAM_MMAP_GTT_VERSION (see >> i915_gem_mmap_gtt_version). >> */ >> -int i915_gem_fault(struct vm_fault *vmf) >> +vm_fault_t i915_gem_fault(struct vm_fault *vmf) >> { >> #define MIN_CHUNK_PAGES ((1 << 20) >> PAGE_SHIFT) /* 1 MiB */ >> struct vm_area_struct *area = vmf->vma; >> @@ -1895,6 +1895,7 @@ int i915_gem_fault(struct vm_fault *vmf) >> pgoff_t page_offset; >> unsigned int flags; >> int ret; >> + vm_fault_t retval; > > What's the point of changing the name? An unnecessary change. > > BR, > Jani. > >> >> /* We don't use vmf->pgoff since that has the fake offset */ >> page_offset = (vmf->address - area->vm_start) >> PAGE_SHIFT; >> @@ -2000,7 +2001,7 @@ int i915_gem_fault(struct vm_fault *vmf) >>* and so needs to be reported. >>*/ >> if (!i915_terminally_wedged(_priv->gpu_error)) { >> - ret = VM_FAULT_SIGBUS; >> + retval = VM_FAULT_SIGBUS; >> break; >> } >> case -EAGAIN: >> @@ -2017,21 +2018,21 @@ int i915_gem_fault(struct vm_fault *vmf) >>* EBUSY is ok: this just means that another thread >>* already did the job. >>*/ >> - ret = VM_FAULT_NOPAGE; >> + retval = VM_FAULT_NOPAGE; >> break; >> case -ENOMEM: >> - ret = VM_FAULT_OOM; >> + retval = VM_FAULT_OOM; >> break; >> case -ENOSPC: >> case -EFAULT: >> - ret = VM_FAULT_SIGBUS; >> + retval = VM_FAULT_SIGBUS; >> break; >> default: >> WARN_ONCE(ret, "unhandled error in i915_gem_fault: %i\n", ret); >> - ret = VM_FAULT_SIGBUS; >> + retval = VM_FAULT_SIGBUS; >> break; >> } >> - return ret; >> + return retval; >> } >> >> static void __i915_gem_object_release_mmap(struct drm_i915_gem_object *obj) >> -- >> 1.9.1 >> > > -- > Jani Nikula, Intel Open Source Technology Center ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] gpu: drm: i915: Change return type to vm_fault_t
On 17-Apr-2018 9:45 PM, "Matthew Wilcox" <wi...@infradead.org> wrote: > > On Tue, Apr 17, 2018 at 09:14:32PM +0530, Souptick Joarder wrote: > > Not exactly. The plan for these patches is to introduce new vm_fault_t type > > in vm_operations_struct fault handlers. It's now available in 4.17-rc1. We will > > push all the required drivers/filesystem changes through different maintainers > > to linus tree. Once everything is converted into vm_fault_t type then Changing > > it from a signed to an unsigned int causes GCC to warn about an assignment > > from an incompatible type -- int foo(void) is incompatible with > > unsigned int foo(void). > > > > Please refer 1c8f422059ae ("mm: change return type to vm_fault_t") in 4.17-rc1. > > I think this patch would be clearer if you did > > - int ret; > + int err; > + vm_fault_t ret; > > Then it would be clearer to the maintainer that you're splitting apart the > VM_FAULT and errno codes. > > Sorry for not catching this during initial review. Ok, I will make required changes and send v2. Sorry, even I missed this :) > > > On Tue, Apr 17, 2018 at 8:59 PM, Jani Nikula > > <jani.nik...@linux.intel.com> wrote: > > > On Tue, 17 Apr 2018, Souptick Joarder <jrdr.li...@gmail.com> wrote: > > >> 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") > > >> > > >> Signed-off-by: Souptick Joarder <jrdr.li...@gmail.com> > > >> --- > > >> drivers/gpu/drm/i915/i915_drv.h | 3 ++- > > >> drivers/gpu/drm/i915/i915_gem.c | 15 --- > > >> 2 files changed, 10 insertions(+), 8 deletions(-) > > >> > > >> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > > >> index a42deeb..95b0d50 100644 > > >> --- a/drivers/gpu/drm/i915/i915_drv.h > > >> +++ b/drivers/gpu/drm/i915/i915_drv.h > > >> @@ -51,6 +51,7 @@ > > >> #include > > >> #include > > >> #include > > >> +#include > > >> > > >> #include "i915_params.h" > > >> #include "i915_reg.h" > > >> @@ -3363,7 +3364,7 @@ int i915_gem_wait_for_idle(struct drm_i915_private *dev_priv, > > >> unsigned int flags); > > >> int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv); > > >> void i915_gem_resume(struct drm_i915_private *dev_priv); > > >> -int i915_gem_fault(struct vm_fault *vmf); > > >> +vm_fault_t i915_gem_fault(struct vm_fault *vmf); > > >> int i915_gem_object_wait(struct drm_i915_gem_object *obj, > > >>unsigned int flags, > > >>long timeout, > > >> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > > >> index dd89abd..bdac690 100644 > > >> --- a/drivers/gpu/drm/i915/i915_gem.c > > >> +++ b/drivers/gpu/drm/i915/i915_gem.c > > >> @@ -1882,7 +1882,7 @@ int i915_gem_mmap_gtt_version(void) > > >> * The current feature set supported by i915_gem_fault() and thus GTT mmaps > > >> * is exposed via I915_PARAM_MMAP_GTT_VERSION (see i915_gem_mmap_gtt_version). > > >> */ > > >> -int i915_gem_fault(struct vm_fault *vmf) > > >> +vm_fault_t i915_gem_fault(struct vm_fault *vmf) > > >> { > > >> #define MIN_CHUNK_PAGES ((1 << 20) >> PAGE_SHIFT) /* 1 MiB */ > > >> struct vm_area_struct *area = vmf->vma; > > >> @@ -1895,6 +1895,7 @@ int i915_gem_fault(struct vm_fault *vmf) > > >> pgoff_t page_offset; > > >> unsigned int flags; > > >> int ret; > > >> + vm_fault_t retval; > > > > > > What's the point of changing the name? An unnecessary change. > > > > > > BR, > > > Jani. > > > > > >> > > >> /* We don't use vmf->pgoff since that has the fake offset */ > > >> page_offset = (vmf->address - area->vm_start) >> PAGE_SHIFT; > > >> @@ -2000,7 +2001,7 @@ int i915_gem_fault(struct vm_fault *vmf) > > >>
[Intel-gfx] [PATCH v2] gpu: drm: i915: Change return type to 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") Fixed one checkpatch.pl warning inside WARN_ONCE. Signed-off-by: Souptick Joarder <jrdr.li...@gmail.com> --- drivers/gpu/drm/i915/i915_drv.h | 3 ++- drivers/gpu/drm/i915/i915_gem.c | 37 +++-- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index a42deeb..95b0d50 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -51,6 +51,7 @@ #include #include #include +#include #include "i915_params.h" #include "i915_reg.h" @@ -3363,7 +3364,7 @@ int i915_gem_wait_for_idle(struct drm_i915_private *dev_priv, unsigned int flags); int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv); void i915_gem_resume(struct drm_i915_private *dev_priv); -int i915_gem_fault(struct vm_fault *vmf); +vm_fault_t i915_gem_fault(struct vm_fault *vmf); int i915_gem_object_wait(struct drm_i915_gem_object *obj, unsigned int flags, long timeout, diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index dd89abd..61816e8 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1882,7 +1882,7 @@ int i915_gem_mmap_gtt_version(void) * The current feature set supported by i915_gem_fault() and thus GTT mmaps * is exposed via I915_PARAM_MMAP_GTT_VERSION (see i915_gem_mmap_gtt_version). */ -int i915_gem_fault(struct vm_fault *vmf) +vm_fault_t i915_gem_fault(struct vm_fault *vmf) { #define MIN_CHUNK_PAGES ((1 << 20) >> PAGE_SHIFT) /* 1 MiB */ struct vm_area_struct *area = vmf->vma; @@ -1894,7 +1894,8 @@ int i915_gem_fault(struct vm_fault *vmf) struct i915_vma *vma; pgoff_t page_offset; unsigned int flags; - int ret; + int error; + vm_fault_t ret; /* We don't use vmf->pgoff since that has the fake offset */ page_offset = (vmf->address - area->vm_start) >> PAGE_SHIFT; @@ -1906,26 +1907,26 @@ int i915_gem_fault(struct vm_fault *vmf) * repeat the flush holding the lock in the normal manner to catch cases * where we are gazumped. */ - ret = i915_gem_object_wait(obj, + error = i915_gem_object_wait(obj, I915_WAIT_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT, NULL); - if (ret) + if (error) goto err; - ret = i915_gem_object_pin_pages(obj); - if (ret) + error = i915_gem_object_pin_pages(obj); + if (error) goto err; intel_runtime_pm_get(dev_priv); - ret = i915_mutex_lock_interruptible(dev); - if (ret) + error = i915_mutex_lock_interruptible(dev); + if (error) goto err_rpm; /* Access to snoopable pages through the GTT is incoherent. */ if (obj->cache_level != I915_CACHE_NONE && !HAS_LLC(dev_priv)) { - ret = -EFAULT; + error = -EFAULT; goto err_unlock; } @@ -1952,25 +1953,25 @@ int i915_gem_fault(struct vm_fault *vmf) vma = i915_gem_object_ggtt_pin(obj, , 0, 0, PIN_MAPPABLE); } if (IS_ERR(vma)) { - ret = PTR_ERR(vma); + error = PTR_ERR(vma); goto err_unlock; } - ret = i915_gem_object_set_to_gtt_domain(obj, write); - if (ret) + error = i915_gem_object_set_to_gtt_domain(obj, write); + if (error) goto err_unpin; - ret = i915_vma_pin_fence(vma); - if (ret) + error = i915_vma_pin_fence(vma); + if (error) goto err_unpin; /* Finally, remap it using the new GTT offset */ - ret = remap_io_mapping(area, + error = remap_io_mapping(area, area->vm_start + (vma->ggtt_view.partial.offset << PAGE_SHIFT), (ggtt->gmadr.start + vma->node.start) >> PAGE_SHIFT, min_t(u64, vma->size, area->vm_end - area->vm_start), >iomap); - if (ret) + if (error) goto err_fence; /* Mark as being mmapped into userspace for later revocation */ @@ -1991,7 +1992,7 @@ int i915_gem_fault(struct vm_fault *vmf) intel_runtime_pm_put(dev_priv); i915_gem_object_unpin_pages(obj); err: - switch (ret) { + switch (error) {