From: Jason Gunthorpe <jgg@ziepe.ca>
To: Christoph Hellwig <hch@lst.de>
Cc: "David (ChunMing) Zhou" <David1.Zhou@amd.com>,
"Ralph Campbell" <rcampbell@nvidia.com>,
"John Hubbard" <jhubbard@nvidia.com>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
amd-gfx@lists.freedesktop.org, linux-mm@kvack.org,
"Jérôme Glisse" <jglisse@redhat.com>,
"Ben Skeggs" <bskeggs@redhat.com>,
nouveau@lists.freedesktop.org,
"Alex Deucher" <alexander.deucher@amd.com>,
"Kuehling, Felix" <Felix.Kuehling@amd.com>,
"Niranjana Vishwanathapura" <niranjana.vishwanathapura@intel.com>,
intel-gfx@lists.freedesktop.org,
"Christian König" <christian.koenig@amd.com>
Subject: Re: [PATCH hmm 2/5] mm/hmm: make hmm_range_fault return 0 or -1
Date: Wed, 29 Apr 2020 16:38:49 -0300 [thread overview]
Message-ID: <20200429193849.GA3824@ziepe.ca> (raw)
In-Reply-To: <20200422055229.GB22366@lst.de>
On Wed, Apr 22, 2020 at 07:52:29AM +0200, Christoph Hellwig wrote:
> On Tue, Apr 21, 2020 at 09:21:43PM -0300, Jason Gunthorpe wrote:
> > From: Jason Gunthorpe <jgg@mellanox.com>
> >
> > hmm_vma_walk->last is supposed to be updated after every write to the
> > pfns, so that it can be returned by hmm_range_fault(). However, this is
> > not done consistently. Fortunately nothing checks the return code of
> > hmm_range_fault() for anything other than error.
> >
> > More importantly last must be set before returning -EBUSY as it is used to
> > prevent reading an output pfn as an input flags when the loop restarts.
> >
> > For clarity and simplicity make hmm_range_fault() return 0 or -ERRNO. Only
> > set last when returning -EBUSY.
> >
> > Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
> > Documentation/vm/hmm.rst | 2 +-
> > drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 ++--
> > drivers/gpu/drm/nouveau/nouveau_svm.c | 6 +++---
> > include/linux/hmm.h | 2 +-
> > mm/hmm.c | 25 +++++++++----------------
> > 5 files changed, 16 insertions(+), 23 deletions(-)
> >
> > diff --git a/Documentation/vm/hmm.rst b/Documentation/vm/hmm.rst
> > index 4e3e9362afeb10..9924f2caa0184c 100644
> > +++ b/Documentation/vm/hmm.rst
> > @@ -161,7 +161,7 @@ device must complete the update before the driver callback returns.
> > When the device driver wants to populate a range of virtual addresses, it can
> > use::
> >
> > - long hmm_range_fault(struct hmm_range *range);
> > + int hmm_range_fault(struct hmm_range *range);
> >
> > It will trigger a page fault on missing or read-only entries if write access is
> > requested (see below). Page faults use the generic mm page fault code path just
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > index 6309ff72bd7876..efc1329a019127 100644
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > @@ -852,12 +852,12 @@ int amdgpu_ttm_tt_get_user_pages(struct amdgpu_bo *bo, struct page **pages)
> > down_read(&mm->mmap_sem);
> > r = hmm_range_fault(range);
> > up_read(&mm->mmap_sem);
> > - if (unlikely(r <= 0)) {
> > + if (unlikely(r)) {
> > /*
> > * FIXME: This timeout should encompass the retry from
> > * mmu_interval_read_retry() as well.
> > */
> > - if ((r == 0 || r == -EBUSY) && !time_after(jiffies, timeout))
> > + if ((r == -EBUSY) && !time_after(jiffies, timeout))
>
> Please also kill the superflous inner braces here.
>
> > + * Return: 0 or -ERRNO with one of the following status codes:
>
> Maybe say something like:
>
> * Returns 0 on success or one of the following error codes:
>
> Otherwise this looks good:
Got it, thanks
Jason
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg-uk2M96/98Pc@public.gmane.org>
To: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org>
Cc: "David (ChunMing) Zhou"
<David1.Zhou-5C7GfCeVMHo@public.gmane.org>,
"Ralph Campbell"
<rcampbell-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
"Ben Skeggs" <bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
"Alex Deucher" <alexander.deucher-5C7GfCeVMHo@public.gmane.org>,
"Kuehling, Felix" <Felix.Kuehling-5C7GfCeVMHo@public.gmane.org>,
"Niranjana Vishwanathapura"
<niranjana.vishwanathapura-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
"Christian König" <christian.koenig-5C7GfCeVMHo@public.gmane.org>
Subject: Re: [PATCH hmm 2/5] mm/hmm: make hmm_range_fault return 0 or -1
Date: Wed, 29 Apr 2020 16:38:49 -0300 [thread overview]
Message-ID: <20200429193849.GA3824@ziepe.ca> (raw)
In-Reply-To: <20200422055229.GB22366-jcswGhMUV9g@public.gmane.org>
On Wed, Apr 22, 2020 at 07:52:29AM +0200, Christoph Hellwig wrote:
> On Tue, Apr 21, 2020 at 09:21:43PM -0300, Jason Gunthorpe wrote:
> > From: Jason Gunthorpe <jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
> >
> > hmm_vma_walk->last is supposed to be updated after every write to the
> > pfns, so that it can be returned by hmm_range_fault(). However, this is
> > not done consistently. Fortunately nothing checks the return code of
> > hmm_range_fault() for anything other than error.
> >
> > More importantly last must be set before returning -EBUSY as it is used to
> > prevent reading an output pfn as an input flags when the loop restarts.
> >
> > For clarity and simplicity make hmm_range_fault() return 0 or -ERRNO. Only
> > set last when returning -EBUSY.
> >
> > Signed-off-by: Jason Gunthorpe <jgg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
> > Documentation/vm/hmm.rst | 2 +-
> > drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 ++--
> > drivers/gpu/drm/nouveau/nouveau_svm.c | 6 +++---
> > include/linux/hmm.h | 2 +-
> > mm/hmm.c | 25 +++++++++----------------
> > 5 files changed, 16 insertions(+), 23 deletions(-)
> >
> > diff --git a/Documentation/vm/hmm.rst b/Documentation/vm/hmm.rst
> > index 4e3e9362afeb10..9924f2caa0184c 100644
> > +++ b/Documentation/vm/hmm.rst
> > @@ -161,7 +161,7 @@ device must complete the update before the driver callback returns.
> > When the device driver wants to populate a range of virtual addresses, it can
> > use::
> >
> > - long hmm_range_fault(struct hmm_range *range);
> > + int hmm_range_fault(struct hmm_range *range);
> >
> > It will trigger a page fault on missing or read-only entries if write access is
> > requested (see below). Page faults use the generic mm page fault code path just
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > index 6309ff72bd7876..efc1329a019127 100644
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > @@ -852,12 +852,12 @@ int amdgpu_ttm_tt_get_user_pages(struct amdgpu_bo *bo, struct page **pages)
> > down_read(&mm->mmap_sem);
> > r = hmm_range_fault(range);
> > up_read(&mm->mmap_sem);
> > - if (unlikely(r <= 0)) {
> > + if (unlikely(r)) {
> > /*
> > * FIXME: This timeout should encompass the retry from
> > * mmu_interval_read_retry() as well.
> > */
> > - if ((r == 0 || r == -EBUSY) && !time_after(jiffies, timeout))
> > + if ((r == -EBUSY) && !time_after(jiffies, timeout))
>
> Please also kill the superflous inner braces here.
>
> > + * Return: 0 or -ERRNO with one of the following status codes:
>
> Maybe say something like:
>
> * Returns 0 on success or one of the following error codes:
>
> Otherwise this looks good:
Got it, thanks
Jason
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@ziepe.ca>
To: Christoph Hellwig <hch@lst.de>
Cc: "Ralph Campbell" <rcampbell@nvidia.com>,
"John Hubbard" <jhubbard@nvidia.com>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
amd-gfx@lists.freedesktop.org, linux-mm@kvack.org,
"Jérôme Glisse" <jglisse@redhat.com>,
"Ben Skeggs" <bskeggs@redhat.com>,
nouveau@lists.freedesktop.org,
"Alex Deucher" <alexander.deucher@amd.com>,
"Kuehling, Felix" <Felix.Kuehling@amd.com>,
"Niranjana Vishwanathapura" <niranjana.vishwanathapura@intel.com>,
intel-gfx@lists.freedesktop.org,
"Christian König" <christian.koenig@amd.com>
Subject: Re: [PATCH hmm 2/5] mm/hmm: make hmm_range_fault return 0 or -1
Date: Wed, 29 Apr 2020 16:38:49 -0300 [thread overview]
Message-ID: <20200429193849.GA3824@ziepe.ca> (raw)
In-Reply-To: <20200422055229.GB22366@lst.de>
On Wed, Apr 22, 2020 at 07:52:29AM +0200, Christoph Hellwig wrote:
> On Tue, Apr 21, 2020 at 09:21:43PM -0300, Jason Gunthorpe wrote:
> > From: Jason Gunthorpe <jgg@mellanox.com>
> >
> > hmm_vma_walk->last is supposed to be updated after every write to the
> > pfns, so that it can be returned by hmm_range_fault(). However, this is
> > not done consistently. Fortunately nothing checks the return code of
> > hmm_range_fault() for anything other than error.
> >
> > More importantly last must be set before returning -EBUSY as it is used to
> > prevent reading an output pfn as an input flags when the loop restarts.
> >
> > For clarity and simplicity make hmm_range_fault() return 0 or -ERRNO. Only
> > set last when returning -EBUSY.
> >
> > Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
> > Documentation/vm/hmm.rst | 2 +-
> > drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 ++--
> > drivers/gpu/drm/nouveau/nouveau_svm.c | 6 +++---
> > include/linux/hmm.h | 2 +-
> > mm/hmm.c | 25 +++++++++----------------
> > 5 files changed, 16 insertions(+), 23 deletions(-)
> >
> > diff --git a/Documentation/vm/hmm.rst b/Documentation/vm/hmm.rst
> > index 4e3e9362afeb10..9924f2caa0184c 100644
> > +++ b/Documentation/vm/hmm.rst
> > @@ -161,7 +161,7 @@ device must complete the update before the driver callback returns.
> > When the device driver wants to populate a range of virtual addresses, it can
> > use::
> >
> > - long hmm_range_fault(struct hmm_range *range);
> > + int hmm_range_fault(struct hmm_range *range);
> >
> > It will trigger a page fault on missing or read-only entries if write access is
> > requested (see below). Page faults use the generic mm page fault code path just
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > index 6309ff72bd7876..efc1329a019127 100644
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > @@ -852,12 +852,12 @@ int amdgpu_ttm_tt_get_user_pages(struct amdgpu_bo *bo, struct page **pages)
> > down_read(&mm->mmap_sem);
> > r = hmm_range_fault(range);
> > up_read(&mm->mmap_sem);
> > - if (unlikely(r <= 0)) {
> > + if (unlikely(r)) {
> > /*
> > * FIXME: This timeout should encompass the retry from
> > * mmu_interval_read_retry() as well.
> > */
> > - if ((r == 0 || r == -EBUSY) && !time_after(jiffies, timeout))
> > + if ((r == -EBUSY) && !time_after(jiffies, timeout))
>
> Please also kill the superflous inner braces here.
>
> > + * Return: 0 or -ERRNO with one of the following status codes:
>
> Maybe say something like:
>
> * Returns 0 on success or one of the following error codes:
>
> Otherwise this looks good:
Got it, thanks
Jason
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@ziepe.ca>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-mm@kvack.org, "Ralph Campbell" <rcampbell@nvidia.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
amd-gfx@lists.freedesktop.org, "Ben Skeggs" <bskeggs@redhat.com>,
"Christian König" <christian.koenig@amd.com>,
"David (ChunMing) Zhou" <David1.Zhou@amd.com>,
dri-devel@lists.freedesktop.org, "Kuehling,
Felix" <Felix.Kuehling@amd.com>,
intel-gfx@lists.freedesktop.org,
"Jérôme Glisse" <jglisse@redhat.com>,
"John Hubbard" <jhubbard@nvidia.com>,
linux-kernel@vger.kernel.org,
"Niranjana Vishwanathapura" <niranjana.vishwanathapura@intel.com>,
nouveau@lists.freedesktop.org
Subject: Re: [PATCH hmm 2/5] mm/hmm: make hmm_range_fault return 0 or -1
Date: Wed, 29 Apr 2020 16:38:49 -0300 [thread overview]
Message-ID: <20200429193849.GA3824@ziepe.ca> (raw)
In-Reply-To: <20200422055229.GB22366@lst.de>
On Wed, Apr 22, 2020 at 07:52:29AM +0200, Christoph Hellwig wrote:
> On Tue, Apr 21, 2020 at 09:21:43PM -0300, Jason Gunthorpe wrote:
> > From: Jason Gunthorpe <jgg@mellanox.com>
> >
> > hmm_vma_walk->last is supposed to be updated after every write to the
> > pfns, so that it can be returned by hmm_range_fault(). However, this is
> > not done consistently. Fortunately nothing checks the return code of
> > hmm_range_fault() for anything other than error.
> >
> > More importantly last must be set before returning -EBUSY as it is used to
> > prevent reading an output pfn as an input flags when the loop restarts.
> >
> > For clarity and simplicity make hmm_range_fault() return 0 or -ERRNO. Only
> > set last when returning -EBUSY.
> >
> > Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
> > Documentation/vm/hmm.rst | 2 +-
> > drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 ++--
> > drivers/gpu/drm/nouveau/nouveau_svm.c | 6 +++---
> > include/linux/hmm.h | 2 +-
> > mm/hmm.c | 25 +++++++++----------------
> > 5 files changed, 16 insertions(+), 23 deletions(-)
> >
> > diff --git a/Documentation/vm/hmm.rst b/Documentation/vm/hmm.rst
> > index 4e3e9362afeb10..9924f2caa0184c 100644
> > +++ b/Documentation/vm/hmm.rst
> > @@ -161,7 +161,7 @@ device must complete the update before the driver callback returns.
> > When the device driver wants to populate a range of virtual addresses, it can
> > use::
> >
> > - long hmm_range_fault(struct hmm_range *range);
> > + int hmm_range_fault(struct hmm_range *range);
> >
> > It will trigger a page fault on missing or read-only entries if write access is
> > requested (see below). Page faults use the generic mm page fault code path just
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > index 6309ff72bd7876..efc1329a019127 100644
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > @@ -852,12 +852,12 @@ int amdgpu_ttm_tt_get_user_pages(struct amdgpu_bo *bo, struct page **pages)
> > down_read(&mm->mmap_sem);
> > r = hmm_range_fault(range);
> > up_read(&mm->mmap_sem);
> > - if (unlikely(r <= 0)) {
> > + if (unlikely(r)) {
> > /*
> > * FIXME: This timeout should encompass the retry from
> > * mmu_interval_read_retry() as well.
> > */
> > - if ((r == 0 || r == -EBUSY) && !time_after(jiffies, timeout))
> > + if ((r == -EBUSY) && !time_after(jiffies, timeout))
>
> Please also kill the superflous inner braces here.
>
> > + * Return: 0 or -ERRNO with one of the following status codes:
>
> Maybe say something like:
>
> * Returns 0 on success or one of the following error codes:
>
> Otherwise this looks good:
Got it, thanks
Jason
next prev parent reply other threads:[~2020-04-29 19:41 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-22 0:21 [PATCH hmm 0/5] Adjust hmm_range_fault() API Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 0:21 ` [PATCH hmm 1/5] mm/hmm: make CONFIG_DEVICE_PRIVATE into a select Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 5:50 ` Christoph Hellwig
2020-04-22 5:50 ` Christoph Hellwig
2020-04-22 5:50 ` [Intel-gfx] " Christoph Hellwig
2020-04-22 5:50 ` Christoph Hellwig
2020-04-22 0:21 ` [PATCH hmm 2/5] mm/hmm: make hmm_range_fault return 0 or -1 Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 5:52 ` Christoph Hellwig
2020-04-22 5:52 ` Christoph Hellwig
2020-04-22 5:52 ` [Intel-gfx] " Christoph Hellwig
2020-04-22 5:52 ` Christoph Hellwig
2020-04-29 19:38 ` Jason Gunthorpe [this message]
2020-04-29 19:38 ` Jason Gunthorpe
2020-04-29 19:38 ` Jason Gunthorpe
2020-04-29 19:38 ` Jason Gunthorpe
2020-04-22 0:21 ` [PATCH hmm 3/5] drm/amdgpu: remove dead code after hmm_range_fault() Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 0:21 ` [PATCH hmm 4/5] mm/hmm: remove HMM_PFN_SPECIAL Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 5:53 ` Christoph Hellwig
2020-04-22 5:53 ` Christoph Hellwig
2020-04-22 5:53 ` [Intel-gfx] " Christoph Hellwig
2020-04-22 5:53 ` Christoph Hellwig
2020-04-22 0:21 ` [PATCH hmm 5/5] mm/hmm: remove the customizable pfn format from hmm_range_fault Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 0:21 ` Jason Gunthorpe
2020-04-22 6:03 ` Christoph Hellwig
2020-04-22 6:03 ` [Intel-gfx] " Christoph Hellwig
2020-04-22 6:03 ` Christoph Hellwig
2020-04-22 12:39 ` Jason Gunthorpe
2020-04-22 12:39 ` Jason Gunthorpe
2020-04-22 12:39 ` Jason Gunthorpe
2020-04-23 6:10 ` Christoph Hellwig
2020-04-23 6:10 ` [Intel-gfx] " Christoph Hellwig
2020-04-23 6:10 ` Christoph Hellwig
2020-04-22 17:52 ` Felix Kuehling
2020-04-22 17:52 ` Felix Kuehling
2020-04-22 17:52 ` [Intel-gfx] " Felix Kuehling
2020-04-22 17:52 ` Felix Kuehling
2020-04-22 17:52 ` Felix Kuehling
2020-04-29 22:41 ` Jason Gunthorpe
2020-04-29 22:41 ` Jason Gunthorpe
2020-04-29 22:41 ` Jason Gunthorpe
2020-04-22 19:09 ` [PATCH hmm 0/5] Adjust hmm_range_fault() API Ralph Campbell
2020-04-22 19:09 ` Ralph Campbell
2020-04-22 19:09 ` [Intel-gfx] " Ralph Campbell
2020-04-22 19:09 ` Ralph Campbell
2020-04-22 19:09 ` Ralph Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200429193849.GA3824@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=David1.Zhou@amd.com \
--cc=Felix.Kuehling@amd.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=bskeggs@redhat.com \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hch@lst.de \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jglisse@redhat.com \
--cc=jhubbard@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=niranjana.vishwanathapura@intel.com \
--cc=nouveau@lists.freedesktop.org \
--cc=rcampbell@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.