On Sun, 28 Sep 2025 17:50:18 +0300 Leon Romanovsky <[email protected]> wrote:
> From: Leon Romanovsky <[email protected]> > > Make sure that all VFIO PCI devices have peer-to-peer capabilities > enables, so we would be able to export their MMIO memory through DMABUF, > > Signed-off-by: Leon Romanovsky <[email protected]> > --- > drivers/vfio/pci/vfio_pci_core.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/vfio/pci/vfio_pci_core.c > b/drivers/vfio/pci/vfio_pci_core.c > index 7dcf5439dedc..608af135308e 100644 > --- a/drivers/vfio/pci/vfio_pci_core.c > +++ b/drivers/vfio/pci/vfio_pci_core.c > @@ -28,6 +28,9 @@ > #include <linux/nospec.h> > #include <linux/sched/mm.h> > #include <linux/iommufd.h> > +#ifdef CONFIG_VFIO_PCI_DMABUF > +#include <linux/pci-p2pdma.h> > +#endif > #if IS_ENABLED(CONFIG_EEH) > #include <asm/eeh.h> > #endif > @@ -2085,6 +2088,7 @@ int vfio_pci_core_init_dev(struct vfio_device > *core_vdev) > { > struct vfio_pci_core_device *vdev = > container_of(core_vdev, struct vfio_pci_core_device, vdev); > + int __maybe_unused ret; > > vdev->pdev = to_pci_dev(core_vdev->dev); > vdev->irq_type = VFIO_PCI_NUM_IRQS; > @@ -2094,6 +2098,11 @@ int vfio_pci_core_init_dev(struct vfio_device > *core_vdev) > INIT_LIST_HEAD(&vdev->dummy_resources_list); > INIT_LIST_HEAD(&vdev->ioeventfds_list); > INIT_LIST_HEAD(&vdev->sriov_pfs_item); > +#ifdef CONFIG_VFIO_PCI_DMABUF > + ret = pcim_p2pdma_init(vdev->pdev); > + if (ret) > + return ret; > +#endif > init_rwsem(&vdev->memory_lock); > xa_init(&vdev->ctx); > What breaks if we don't test the return value and remove all the #ifdefs? The feature call should fail if we don't have a provider but that seems more robust than failing to register the device. Thanks, Alex
