From: Logan Gunthorpe <logang@deltatee.com>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org,
linux-block@vger.kernel.org, linux-pci@vger.kernel.org,
linux-mm@kvack.org, iommu@lists.linux-foundation.org,
"Stephen Bates" <sbates@raithlin.com>,
"Christoph Hellwig" <hch@lst.de>,
"Dan Williams" <dan.j.williams@intel.com>,
"Christian König" <christian.koenig@amd.com>,
"John Hubbard" <jhubbard@nvidia.com>,
"Don Dutile" <ddutile@redhat.com>,
"Matthew Wilcox" <willy@infradead.org>,
"Daniel Vetter" <daniel.vetter@ffwll.ch>,
"Jakowski Andrzej" <andrzej.jakowski@intel.com>,
"Minturn Dave B" <dave.b.minturn@intel.com>,
"Jason Ekstrand" <jason@jlekstrand.net>,
"Dave Hansen" <dave.hansen@linux.intel.com>,
"Xiong Jianxin" <jianxin.xiong@intel.com>,
"Bjorn Helgaas" <helgaas@kernel.org>,
"Ira Weiny" <ira.weiny@intel.com>,
"Robin Murphy" <robin.murphy@arm.com>,
"Martin Oliveira" <martin.oliveira@eideticom.com>,
"Chaitanya Kulkarni" <ckulkarnilinux@gmail.com>,
"Ralph Campbell" <rcampbell@nvidia.com>,
"Bjorn Helgaas" <bhelgaas@google.com>
Subject: Re: [PATCH v6 20/21] PCI/P2PDMA: Introduce pci_mmap_p2pmem()
Date: Fri, 27 May 2022 16:41:08 -0600 [thread overview]
Message-ID: <d336cfe8-2451-04c3-a2ce-0e8e47afd1e3@deltatee.com> (raw)
In-Reply-To: <20220527190307.GG2960187@ziepe.ca>
On 2022-05-27 13:03, Jason Gunthorpe wrote:
> On Fri, May 27, 2022 at 09:35:07AM -0600, Logan Gunthorpe wrote:
>>
>>
>> On 2022-05-27 06:55, Jason Gunthorpe wrote:
>>> On Thu, Apr 07, 2022 at 09:47:16AM -0600, Logan Gunthorpe wrote:
>>>> +static void pci_p2pdma_unmap_mappings(void *data)
>>>> +{
>>>> + struct pci_dev *pdev = data;
>>>> + struct pci_p2pdma *p2pdma = rcu_dereference_protected(pdev->p2pdma, 1);
>>>> +
>>>> + /* Ensure no new pages can be allocated in mappings */
>>>> + p2pdma->active = false;
>>>> + synchronize_rcu();
>>>> +
>>>> + unmap_mapping_range(p2pdma->inode->i_mapping, 0, 0, 1);
>>>> +
>>>> + /*
>>>> + * On some architectures, TLB flushes are done with call_rcu()
>>>> + * so to ensure GUP fast is done with the pages, call synchronize_rcu()
>>>> + * before freeing them.
>>>> + */
>>>> + synchronize_rcu();
>>>> + pci_p2pdma_free_mappings(p2pdma->inode->i_mapping);
>>>
>>> With the series from Felix getting close this should get updated to
>>> not set pte_devmap and use proper natural refcounting without any of
>>> this stuff.
>>
>> Can you send a link? I'm not sure what you are referring to.
>
> IIRC this is the last part:
>
> https://lore.kernel.org/linux-mm/20220524190632.3304-1-alex.sierra@amd.com/
>
> And the earlier bit with Christoph's pieces looks like it might get
> merged to v5.19..
>
> The general idea is once pte_devmap is not set then all the
> refcounting works the way it should. This is what all new ZONE_DEVICE
> users should do..
Ok, I don't actually follow how those patches relate to this.
Based on your description I guess I don't need to set PFN_DEV and
perhaps not use vmf_insert_mixed()? And then just use vm_normal_page()?
But the refcounting of the pages seemed like it was already sane to me,
unless you mean that the code no longer has to synchronize_rcu() before
returning the pages... that would be spectacular and clean things up a
lot (plus fix an annoying issue where if you use then free all the
memory you can't allocate new memory for an indeterminate amount of time).
Logan
next prev parent reply other threads:[~2022-05-27 22:41 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-07 15:46 [PATCH v6 00/21] Userspace P2PDMA with O_DIRECT NVMe devices Logan Gunthorpe
2022-04-07 15:46 ` [PATCH v6 01/21] lib/scatterlist: add flag for indicating P2PDMA segments in an SGL Logan Gunthorpe
2022-04-07 15:46 ` [PATCH v6 02/21] PCI/P2PDMA: Attempt to set map_type if it has not been set Logan Gunthorpe
2022-04-07 15:46 ` [PATCH v6 03/21] PCI/P2PDMA: Expose pci_p2pdma_map_type() Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 04/21] PCI/P2PDMA: Introduce helpers for dma_map_sg implementations Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 05/21] dma-mapping: allow EREMOTEIO return code for P2PDMA transfers Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 06/21] dma-direct: support PCI P2PDMA pages in dma-direct map_sg Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 07/21] dma-mapping: add flags to dma_map_ops to indicate PCI P2PDMA support Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 08/21] iommu/dma: support PCI P2PDMA pages in dma-iommu map_sg Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 09/21] nvme-pci: check DMA ops when indicating support for PCI P2PDMA Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 10/21] nvme-pci: convert to using dma_map_sgtable() Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 11/21] RDMA/core: introduce ib_dma_pci_p2p_dma_supported() Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 12/21] RDMA/rw: drop pci_p2pdma_[un]map_sg() Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 13/21] PCI/P2PDMA: Remove pci_p2pdma_[un]map_sg() Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 14/21] mm: introduce FOLL_PCI_P2PDMA to gate getting PCI P2PDMA pages Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 15/21] iov_iter: introduce iov_iter_get_pages_[alloc_]flags() Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 16/21] block: add check when merging zone device pages Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 17/21] lib/scatterlist: " Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 18/21] block: set FOLL_PCI_P2PDMA in __bio_iov_iter_get_pages() Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 19/21] block: set FOLL_PCI_P2PDMA in bio_map_user_iov() Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 20/21] PCI/P2PDMA: Introduce pci_mmap_p2pmem() Logan Gunthorpe
2022-05-27 12:55 ` Jason Gunthorpe
2022-05-27 15:35 ` Logan Gunthorpe
2022-05-27 19:03 ` Jason Gunthorpe
2022-05-27 22:41 ` Logan Gunthorpe [this message]
2022-06-02 0:00 ` Jason Gunthorpe
2022-06-02 16:16 ` Logan Gunthorpe
2022-06-02 16:30 ` Jason Gunthorpe
2022-06-02 16:45 ` Logan Gunthorpe
2022-06-02 17:18 ` Jason Gunthorpe
2022-06-02 16:49 ` Logan Gunthorpe
2022-06-02 17:28 ` Jason Gunthorpe
2022-06-02 17:49 ` Logan Gunthorpe
2022-04-07 15:47 ` [PATCH v6 21/21] nvme-pci: allow mmaping the CMB in userspace Logan Gunthorpe
2022-05-16 22:31 ` [PATCH v6 00/21] Userspace P2PDMA with O_DIRECT NVMe devices Chaitanya Kulkarni
2022-05-16 22:35 ` Logan Gunthorpe
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=d336cfe8-2451-04c3-a2ce-0e8e47afd1e3@deltatee.com \
--to=logang@deltatee.com \
--cc=andrzej.jakowski@intel.com \
--cc=bhelgaas@google.com \
--cc=christian.koenig@amd.com \
--cc=ckulkarnilinux@gmail.com \
--cc=dan.j.williams@intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dave.b.minturn@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=ddutile@redhat.com \
--cc=hch@lst.de \
--cc=helgaas@kernel.org \
--cc=iommu@lists.linux-foundation.org \
--cc=ira.weiny@intel.com \
--cc=jason@jlekstrand.net \
--cc=jgg@ziepe.ca \
--cc=jhubbard@nvidia.com \
--cc=jianxin.xiong@intel.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=martin.oliveira@eideticom.com \
--cc=rcampbell@nvidia.com \
--cc=robin.murphy@arm.com \
--cc=sbates@raithlin.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).