On 1/31/26 06:34, Leon Romanovsky wrote:
> From: Leon Romanovsky <[email protected]>
>
> 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 <[email protected]>
> Reviewed-by: Alex Williamson <[email protected]>
> Reviewed-by: Christian König <[email protected]>
> Signed-off-by: Leon Romanovsky <[email protected]>
> ---
> 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,
>