From: Jason Gunthorpe <jgg@ziepe.ca>
To: john.hubbard@gmail.com
Cc: Matthew Wilcox <willy@infradead.org>,
Michal Hocko <mhocko@kernel.org>,
Christopher Lameter <cl@linux.com>,
Dan Williams <dan.j.williams@intel.com>, Jan Kara <jack@suse.cz>,
Al Viro <viro@zeniv.linux.org.uk>,
linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org>,
linux-rdma <linux-rdma@vger.kernel.org>,
linux-fsdevel@vger.kernel.org, John Hubbard <jhubbard@nvidia.com>,
Doug Ledford <dledford@redhat.com>,
Mike Marciniszyn <mike.marciniszyn@intel.com>,
Dennis Dalessandro <dennis.dalessandro@intel.com>,
Christian Benvenuti <benve@cisco.com>
Subject: Re: [PATCH 3/4] infiniband/mm: convert to the new put_user_page() call
Date: Fri, 28 Sep 2018 09:39:22 -0600 [thread overview]
Message-ID: <20180928153922.GA17076@ziepe.ca> (raw)
In-Reply-To: <20180928053949.5381-3-jhubbard@nvidia.com>
On Thu, Sep 27, 2018 at 10:39:47PM -0700, john.hubbard@gmail.com wrote:
> From: John Hubbard <jhubbard@nvidia.com>
>
> For code that retains pages via get_user_pages*(),
> release those pages via the new put_user_page(),
> instead of put_page().
>
> This prepares for eventually fixing the problem described
> in [1], and is following a plan listed in [2].
>
> [1] https://lwn.net/Articles/753027/ : "The Trouble with get_user_pages()"
>
> [2] https://lkml.kernel.org/r/20180709080554.21931-1-jhubbard@nvidia.com
> Proposed steps for fixing get_user_pages() + DMA problems.
>
> CC: Doug Ledford <dledford@redhat.com>
> CC: Jason Gunthorpe <jgg@ziepe.ca>
> CC: Mike Marciniszyn <mike.marciniszyn@intel.com>
> CC: Dennis Dalessandro <dennis.dalessandro@intel.com>
> CC: Christian Benvenuti <benve@cisco.com>
>
> CC: linux-rdma@vger.kernel.org
> CC: linux-kernel@vger.kernel.org
> CC: linux-mm@kvack.org
> Signed-off-by: John Hubbard <jhubbard@nvidia.com>
> drivers/infiniband/core/umem.c | 2 +-
> drivers/infiniband/core/umem_odp.c | 2 +-
> drivers/infiniband/hw/hfi1/user_pages.c | 2 +-
> drivers/infiniband/hw/mthca/mthca_memfree.c | 6 +++---
> drivers/infiniband/hw/qib/qib_user_pages.c | 2 +-
> drivers/infiniband/hw/qib/qib_user_sdma.c | 8 ++++----
> drivers/infiniband/hw/usnic/usnic_uiom.c | 2 +-
> 7 files changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
> index a41792dbae1f..9430d697cb9f 100644
> +++ b/drivers/infiniband/core/umem.c
> @@ -60,7 +60,7 @@ static void __ib_umem_release(struct ib_device *dev, struct ib_umem *umem, int d
> page = sg_page(sg);
> if (!PageDirty(page) && umem->writable && dirty)
> set_page_dirty_lock(page);
> - put_page(page);
> + put_user_page(page);
Would it make sense to have a release/put_user_pages_dirtied to absorb
the set_page_dity pattern too? I notice in this patch there is some
variety here, I wonder what is the right way?
Also, I'm told this code here is a big performance bottleneck when the
number of pages becomes very long (think >> GB of memory), so having a
future path to use some kind of batching/threading sound great.
Otherwise this RDMA part seems fine to me, there might be some minor
conflicts however. I assume you want to run this through the -mm tree?
Acked-by: Jason Gunthorpe <jgg@mellanox.com>
Jason
next prev parent reply other threads:[~2018-09-28 15:39 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-28 5:39 [PATCH 0/4] get_user_pages*() and RDMA: first steps john.hubbard
2018-09-28 5:39 ` [PATCH 1/4] mm: get_user_pages: consolidate error handling john.hubbard
2018-09-28 5:39 ` [PATCH 3/4] infiniband/mm: convert to the new put_user_page() call john.hubbard
2018-09-28 15:39 ` Jason Gunthorpe [this message]
2018-09-29 3:12 ` John Hubbard
2018-09-29 3:12 ` John Hubbard
2018-09-29 16:21 ` Matthew Wilcox
2018-09-29 19:19 ` Jason Gunthorpe
2018-10-01 12:50 ` Christoph Hellwig
2018-10-01 15:29 ` Matthew Wilcox
2018-10-01 15:51 ` Christoph Hellwig
2018-10-01 14:35 ` Dennis Dalessandro
2018-10-03 5:40 ` John Hubbard
2018-10-03 5:40 ` John Hubbard
2018-10-03 16:27 ` Jan Kara
2018-10-03 23:19 ` John Hubbard
2018-10-03 23:19 ` John Hubbard
2018-09-28 5:39 ` [PATCH 2/4] mm: introduce put_user_page(), placeholder version john.hubbard
2018-10-03 16:22 ` Jan Kara
2018-10-03 23:23 ` John Hubbard
2018-10-03 23:23 ` John Hubbard
2018-09-28 5:39 ` [PATCH 4/4] goldfish_pipe/mm: convert to the new release_user_pages() call john.hubbard
2018-09-28 15:29 ` [PATCH 0/4] get_user_pages*() and RDMA: first steps Jerome Glisse
2018-09-28 15:29 ` Jerome Glisse
2018-09-28 15:29 ` Jerome Glisse
2018-09-28 19:06 ` John Hubbard
2018-09-28 19:06 ` John Hubbard
2018-09-28 21:49 ` Jerome Glisse
2018-09-28 21:49 ` Jerome Glisse
2018-09-28 21:49 ` Jerome Glisse
2018-09-29 2:28 ` John Hubbard
2018-09-29 2:28 ` John Hubbard
2018-09-29 8:46 ` Jerome Glisse
2018-09-29 8:46 ` Jerome Glisse
2018-09-29 8:46 ` Jerome Glisse
2018-10-01 6:11 ` Dave Chinner
2018-10-01 12:47 ` Christoph Hellwig
2018-10-02 1:14 ` Dave Chinner
2018-10-03 16:21 ` Jan Kara
2018-10-01 15:31 ` Jason Gunthorpe
2018-10-03 16:08 ` Jan Kara
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=20180928153922.GA17076@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=benve@cisco.com \
--cc=cl@linux.com \
--cc=dan.j.williams@intel.com \
--cc=dennis.dalessandro@intel.com \
--cc=dledford@redhat.com \
--cc=jack@suse.cz \
--cc=jhubbard@nvidia.com \
--cc=john.hubbard@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-rdma@vger.kernel.org \
--cc=mhocko@kernel.org \
--cc=mike.marciniszyn@intel.com \
--cc=viro@zeniv.linux.org.uk \
--cc=willy@infradead.org \
/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.