On Mon, Sep 22, 2025 at 03:00:32PM -0600, Alex Williamson wrote:
But then later in patch 8/ and again in 10/ why exactly do we cache the provider on the vfio_pci_core_device rather than ask for it on demand from the p2pdma?
It makes the most sense if the P2P is activated once during probe(), it is just a cheap memory allocation, so no reason not to.
If you try to do it on-demand then it will require more locking.
It also seems like the coordination of a valid provider is ad-hoc between p2pdma and vfio-pci. For example, this only fills providers for MMIO BARs and vfio-pci validates that dmabuf operations are for MMIO BARs, but it would be more consistent if vfio-pci relied on p2pdma to give it a valid provider for a given BAR. Thanks,
Yeah, validate_dmabuf_input() should check priv->vdev->provider[priv->bar] for NULL and I think we should directly store the non-NUL: provider in the dmabuf priv struct instead of the bar index and replace these:
+ provider = priv->vdev->provider[priv->bar]; + provider = priv->vdev->provider[priv->bar];
Jason