On 2021-05-11 10:06 a.m., Don Dutile wrote: > On 4/8/21 1:01 PM, Logan Gunthorpe wrote: >> pci_p2pdma_map_type() will be needed by the dma-iommu map_sg >> implementation because it will need to determine the mapping type >> ahead of actually doing the mapping to create the actual iommu mapping. >> >> Signed-off-by: Logan Gunthorpe <logang@xxxxxxxxxxxx> >> --- >> drivers/pci/p2pdma.c | 34 +++++++++++++++++++++++----------- >> include/linux/pci-p2pdma.h | 15 +++++++++++++++ >> 2 files changed, 38 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c >> index bcb1a6d6119d..38c93f57a941 100644 >> --- a/drivers/pci/p2pdma.c >> +++ b/drivers/pci/p2pdma.c >> @@ -20,13 +20,6 @@ >> #include <linux/seq_buf.h> >> #include <linux/xarray.h> >> >> -enum pci_p2pdma_map_type { >> - PCI_P2PDMA_MAP_UNKNOWN = 0, >> - PCI_P2PDMA_MAP_NOT_SUPPORTED, >> - PCI_P2PDMA_MAP_BUS_ADDR, >> - PCI_P2PDMA_MAP_THRU_HOST_BRIDGE, >> -}; >> - >> struct pci_p2pdma { >> struct gen_pool *pool; >> bool p2pmem_published; >> @@ -822,13 +815,30 @@ void pci_p2pmem_publish(struct pci_dev *pdev, bool publish) >> } >> EXPORT_SYMBOL_GPL(pci_p2pmem_publish); >> >> -static enum pci_p2pdma_map_type pci_p2pdma_map_type(struct dev_pagemap *pgmap, >> - struct device *dev) >> +/** >> + * pci_p2pdma_map_type - return the type of mapping that should be used for >> + * a given device and pgmap >> + * @pgmap: the pagemap of a page to determine the mapping type for >> + * @dev: device that is mapping the page >> + * @dma_attrs: the attributes passed to the dma_map operation -- >> + * this is so they can be checked to ensure P2PDMA pages were not >> + * introduced into an incorrect interface (like dma_map_sg). * >> + * >> + * Returns one of: >> + * PCI_P2PDMA_MAP_NOT_SUPPORTED - The mapping should not be done >> + * PCI_P2PDMA_MAP_BUS_ADDR - The mapping should use the PCI bus address >> + * PCI_P2PDMA_MAP_THRU_HOST_BRIDGE - The mapping should be done directly >> + */ > I'd recommend putting these descriptions in the enum's in pci-p2pdma.h . > Also, can you use a better description for THRU_HOST_BRIDGE -- it leaves the reader wondering what 'done directly' means. Will do. Logan