Re: [PATCH v7 7/8] vfio: Permit VFIO to work with pinned importers

From: Christian König

Date: Wed Feb 04 2026 - 11:24:07 EST


On 1/31/26 06:34, Leon Romanovsky wrote:
> From: Leon Romanovsky <leonro@xxxxxxxxxx>
>
> Till now VFIO has rejected pinned importers, largely to avoid being used
> with the RDMA pinned importer that cannot handle a move_notify() to revoke
> access.
>
> Using dma_buf_attach_revocable() it can tell the difference between pinned
> importers that support the flow described in dma_buf_invalidate_mappings()
> and those that don't.
>
> Thus permit compatible pinned importers.
>
> This is one of two items IOMMUFD requires to remove its private interface
> to VFIO's dma-buf.
>
> Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>
> Reviewed-by: Alex Williamson <alex@xxxxxxxxxxx>
> Reviewed-by: Christian König <christian.koenig@xxxxxxx>
> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx>
> ---
> drivers/vfio/pci/vfio_pci_dmabuf.c | 15 +++------------
> 1 file changed, 3 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/vfio/pci/vfio_pci_dmabuf.c b/drivers/vfio/pci/vfio_pci_dmabuf.c
> index 78d47e260f34..a5fb80e068ee 100644
> --- a/drivers/vfio/pci/vfio_pci_dmabuf.c
> +++ b/drivers/vfio/pci/vfio_pci_dmabuf.c
> @@ -22,16 +22,6 @@ struct vfio_pci_dma_buf {
> u8 revoked : 1;
> };
>
> -static int vfio_pci_dma_buf_pin(struct dma_buf_attachment *attachment)
> -{
> - return -EOPNOTSUPP;
> -}
> -
> -static void vfio_pci_dma_buf_unpin(struct dma_buf_attachment *attachment)
> -{
> - /* Do nothing */
> -}
> -

This chunk here doesn't want to apply to drm-misc-next, my educated guess is that the patch adding those lines is missing in that tree.

How should we handle that? Patches 1-3 have already been pushed to drm-misc-next and I would rather like to push patches 4-6 through that branch as well.

I can request a backmerge from the drm-misc-next maintainers, but then we clearly don't get that upstream this week.

Regards,
Christian.

> static int vfio_pci_dma_buf_attach(struct dma_buf *dmabuf,
> struct dma_buf_attachment *attachment)
> {
> @@ -43,6 +33,9 @@ static int vfio_pci_dma_buf_attach(struct dma_buf *dmabuf,
> if (priv->revoked)
> return -ENODEV;
>
> + if (!dma_buf_attach_revocable(attachment))
> + return -EOPNOTSUPP;
> +
> return 0;
> }
>
> @@ -107,8 +100,6 @@ static void vfio_pci_dma_buf_release(struct dma_buf *dmabuf)
> }
>
> static const struct dma_buf_ops vfio_pci_dmabuf_ops = {
> - .pin = vfio_pci_dma_buf_pin,
> - .unpin = vfio_pci_dma_buf_unpin,
> .attach = vfio_pci_dma_buf_attach,
> .map_dma_buf = vfio_pci_dma_buf_map,
> .unmap_dma_buf = vfio_pci_dma_buf_unmap,
>