| Message ID | 20251111-dmabuf-vfio-v8-9-fd9aa5df478f@nvidia.com |
|---|---|
| State | New |
| Headers | show |
| Series | vfio/pci: Allow MMIO regions to be exported through dma-buf | expand |
> From: Leon Romanovsky <leon@kernel.org> > Sent: Tuesday, November 11, 2025 5:58 PM > > From: Leon Romanovsky <leonro@nvidia.com> not required with only your own s-o-b > @@ -2090,6 +2092,9 @@ 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); > + ret = pcim_p2pdma_init(vdev->pdev); > + if (ret && ret != -EOPNOTSUPP) > + return ret; Reading the commit msg seems -EOPNOTSUPP is only returned for fake PCI devices, otherwise it implies regression. better add a comment for it? otherwise, Reviewed-by: Kevin Tian <kevin.tian@intel.com>
On Tue, 18 Nov 2025 07:18:36 +0000 "Tian, Kevin" <kevin.tian@intel.com> wrote: > > From: Leon Romanovsky <leon@kernel.org> > > Sent: Tuesday, November 11, 2025 5:58 PM > > > > From: Leon Romanovsky <leonro@nvidia.com> > > not required with only your own s-o-b > > > @@ -2090,6 +2092,9 @@ 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); > > + ret = pcim_p2pdma_init(vdev->pdev); > > + if (ret && ret != -EOPNOTSUPP) > > + return ret; > > Reading the commit msg seems -EOPNOTSUPP is only returned for fake > PCI devices, otherwise it implies regression. better add a comment for it? I think the commit log is saying that if a device comes along that can't support this, we'd quirk the init path to return -EOPNOTSUPP for that particular device here. This path is currently used when !CONFIG_PCI_P2PDMA to make this error non-fatal to the device init. I don't see a regression if such a device comes along and while we could survive other types of failures by disabling p2pdma here, I think all such cases are sufficient rare out of memory cases to consider them catastrophic. Thanks, Alex
On Tue, Nov 18, 2025 at 07:18:36AM +0000, Tian, Kevin wrote: > > From: Leon Romanovsky <leon@kernel.org> > > Sent: Tuesday, November 11, 2025 5:58 PM > > > > From: Leon Romanovsky <leonro@nvidia.com> > > not required with only your own s-o-b That's automatically appended when the sender and signer don't match. It's not uncommon for developers to send from a kernel.org email but sign off with a corporate account, or the other way around.
> From: Alex Williamson <alex@shazbot.org> > Sent: Wednesday, November 19, 2025 4:11 AM > > On Tue, 18 Nov 2025 07:18:36 +0000 > "Tian, Kevin" <kevin.tian@intel.com> wrote: > > > > From: Leon Romanovsky <leon@kernel.org> > > > Sent: Tuesday, November 11, 2025 5:58 PM > > > > > > From: Leon Romanovsky <leonro@nvidia.com> > > > > not required with only your own s-o-b > > > > > @@ -2090,6 +2092,9 @@ 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); > > > + ret = pcim_p2pdma_init(vdev->pdev); > > > + if (ret && ret != -EOPNOTSUPP) > > > + return ret; > > > > Reading the commit msg seems -EOPNOTSUPP is only returned for fake > > PCI devices, otherwise it implies regression. better add a comment for it? > > I think the commit log is saying that if a device comes along that > can't support this, we'd quirk the init path to return -EOPNOTSUPP for > that particular device here. This path is currently used when > !CONFIG_PCI_P2PDMA to make this error non-fatal to the device init. > > I don't see a regression if such a device comes along and while we > could survive other types of failures by disabling p2pdma here, I think > all such cases are sufficient rare out of memory cases to consider them > catastrophic. Thanks, > ah yes. I read it inaccurately.
> From: Keith Busch <kbusch@kernel.org> > Sent: Wednesday, November 19, 2025 4:19 AM > > On Tue, Nov 18, 2025 at 07:18:36AM +0000, Tian, Kevin wrote: > > > From: Leon Romanovsky <leon@kernel.org> > > > Sent: Tuesday, November 11, 2025 5:58 PM > > > > > > From: Leon Romanovsky <leonro@nvidia.com> > > > > not required with only your own s-o-b > > That's automatically appended when the sender and signer don't match. > It's not uncommon for developers to send from a kernel.org email but > sign off with a corporate account, or the other way around. Good to know.
On Wed, Nov 19, 2025 at 12:02:02AM +0000, Tian, Kevin wrote: > > From: Keith Busch <kbusch@kernel.org> > > Sent: Wednesday, November 19, 2025 4:19 AM > > > > On Tue, Nov 18, 2025 at 07:18:36AM +0000, Tian, Kevin wrote: > > > > From: Leon Romanovsky <leon@kernel.org> > > > > Sent: Tuesday, November 11, 2025 5:58 PM > > > > > > > > From: Leon Romanovsky <leonro@nvidia.com> > > > > > > not required with only your own s-o-b > > > > That's automatically appended when the sender and signer don't match. > > It's not uncommon for developers to send from a kernel.org email but > > sign off with a corporate account, or the other way around. > > Good to know. Yes, in addition, I used to separate between code authorship and my open-source activity. Code belongs to my employer and this is why corporate address is used as an author, but all emails and communications are coming from my kernel.org account. Thanks
diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c index ca9a95716a85..142b84b3f225 100644 --- a/drivers/vfio/pci/vfio_pci_core.c +++ b/drivers/vfio/pci/vfio_pci_core.c @@ -28,6 +28,7 @@ #include <linux/nospec.h> #include <linux/sched/mm.h> #include <linux/iommufd.h> +#include <linux/pci-p2pdma.h> #if IS_ENABLED(CONFIG_EEH) #include <asm/eeh.h> #endif @@ -2081,6 +2082,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 ret; vdev->pdev = to_pci_dev(core_vdev->dev); vdev->irq_type = VFIO_PCI_NUM_IRQS; @@ -2090,6 +2092,9 @@ 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); + ret = pcim_p2pdma_init(vdev->pdev); + if (ret && ret != -EOPNOTSUPP) + return ret; init_rwsem(&vdev->memory_lock); xa_init(&vdev->ctx);