| Date | Tue, 28 Sep 2021 17:05:06 -0300 | From | Jason Gunthorpe <> | Subject | Re: [PATCH v3 19/20] PCI/P2PDMA: introduce pci_mmap_p2pmem() |
| |
On Thu, Sep 16, 2021 at 05:40:59PM -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); > + > + p2pdma->active = false; > + synchronize_rcu(); > + unmap_mapping_range(p2pdma->inode->i_mapping, 0, 0, 1); > + pci_p2pdma_free_mappings(p2pdma->inode->i_mapping); > +}
If this is going to rely on unmap_mapping_range then GUP should also reject this memory for FOLL_LONGTERM..
What along this control flow:
> + error = devm_add_action_or_reset(&pdev->dev, pci_p2pdma_unmap_mappings, > + pdev);
Waits for all the page refcounts to go to zero?
Jason
|