On Mon, Jul 22, 2019 at 05:08:52PM -0600, Logan Gunthorpe wrote: > diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c > index 143e11d2a5c3..70c262b7c731 100644 > --- a/drivers/pci/p2pdma.c > +++ b/drivers/pci/p2pdma.c > @@ -168,6 +168,7 @@ int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, > pgmap->res.end = pgmap->res.start + size - 1; > pgmap->res.flags = pci_resource_flags(pdev, bar); > pgmap->type = MEMORY_DEVICE_PCI_P2PDMA; > + pgmap->pci_p2pdma_provider = pdev; > pgmap->pci_p2pdma_bus_offset = pci_bus_address(pdev, bar) - > pci_resource_start(pdev, bar); I think we need to bite the bullet and move the PCIe P2P specific information out of struct dev_pagemap and into a pci-specific structure that embedds struct dev_pagemap.