diff mbox

[v4] gpu: drm: i915: Change return type to vm_fault_t

Message ID 20180516191220.GA9186@jordon-HP-15-Notebook-PC (mailing list archive)
State New, archived
Headers show

Commit Message

Souptick Joarder May 16, 2018, 7:12 p.m. UTC
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.linux@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(-)

Comments

Chris Wilson May 16, 2018, 7:18 p.m. UTC | #1
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.linux@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
Souptick Joarder May 17, 2018, 5:10 a.m. UTC | #2
On Thu, May 17, 2018 at 12:48 AM, Chris Wilson <chris@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.linux@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 :)
Souptick Joarder May 21, 2018, 11:18 a.m. UTC | #3
On Thu, May 17, 2018 at 10:40 AM, Souptick Joarder <jrdr.linux@gmail.com> wrote:
> On Thu, May 17, 2018 at 12:48 AM, Chris Wilson <chris@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.linux@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
Souptick Joarder May 31, 2018, 4:32 a.m. UTC | #4
On Mon, May 21, 2018 at 4:48 PM, Souptick Joarder <jrdr.linux@gmail.com> wrote:
> On Thu, May 17, 2018 at 10:40 AM, Souptick Joarder <jrdr.linux@gmail.com> wrote:
>> On Thu, May 17, 2018 at 12:48 AM, Chris Wilson <chris@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.linux@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

We need to get this patch in queue for 4.18.
Jani Nikula May 31, 2018, 5:31 a.m. UTC | #5
On Thu, 31 May 2018, Souptick Joarder <jrdr.linux@gmail.com> wrote:
> On Mon, May 21, 2018 at 4:48 PM, Souptick Joarder <jrdr.linux@gmail.com> wrote:
>> On Thu, May 17, 2018 at 10:40 AM, Souptick Joarder <jrdr.linux@gmail.com> wrote:
>>> On Thu, May 17, 2018 at 12:48 AM, Chris Wilson <chris@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.linux@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

For gpu drivers, that ship had sailed before you sent the patch. It'll
be v4.19.

I'll let Chris comment if changes are needed or not.

BR,
Jani.



>
> 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
diff mbox

Patch

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 <drm/drm_gem.h>
 #include <drm/drm_auth.h>
 #include <drm/drm_cache.h>
+#include <linux/mm_types.h>
 
 #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, &view, 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),
 			       &ggtt->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) {
+	switch (err) {
 	case -EIO:
 		/*
 		 * We eat errors when the gpu is terminally wedged to avoid
@@ -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;
 	}
 	return ret;