PCI/P2PDMA: Add provider's pci_dev to pci_p2pdma_pagemap struct
authorLogan Gunthorpe <logang@deltatee.com>
Mon, 12 Aug 2019 17:30:36 +0000 (11:30 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 16 Aug 2019 13:40:05 +0000 (08:40 -0500)
The provider will be needed to figure out how to map a device.

Link: https://lore.kernel.org/r/20190730163545.4915-3-logang@deltatee.com
Link: https://lore.kernel.org/r/20190812173048.9186-3-logang@deltatee.com
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
drivers/pci/p2pdma.c

index 03e9c887bdfbcfaab2703b90d64984723e4bfbef..93fbda14f4a9bd98ada1cd98ccca1374e34449fa 100644 (file)
@@ -27,6 +27,7 @@ struct pci_p2pdma {
 
 struct pci_p2pdma_pagemap {
        struct dev_pagemap pgmap;
+       struct pci_dev *provider;
        u64 bus_offset;
 };
 
@@ -178,6 +179,7 @@ int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size,
        pgmap->res.flags = pci_resource_flags(pdev, bar);
        pgmap->type = MEMORY_DEVICE_PCI_P2PDMA;
 
+       p2p_pgmap->provider = pdev;
        p2p_pgmap->bus_offset = pci_bus_address(pdev, bar) -
                pci_resource_start(pdev, bar);