On Sun, Oct 26, 2025 at 09:44:13PM -0700, Vivek Kasireddy wrote:
> For the map operation, the dma-buf core will create an xarray but
> the exporter needs to populate it with the interconnect specific
> addresses. And, similarly for unmap, the exporter is expected to
> cleanup the individual entries of the xarray.

I don't think we should limit this to xarrays, nor do I think it is a
great datastructure for what is usually needed here..

I just posted the patches showing what iommufd needs, and it wants
something like

struct mapping {
   struct p2p_provider *provider;
   size_t nelms;
   struct phys_vec *phys;
};

Which is not something that make sense as an xarray.

I think the interconnect should have its own functions for map/unmap,
ie instead of trying to have them as a commmon
dma_buf_interconnect_ops do something like

struct dma_buf_interconnect_ops {
        const char *name;
        bool (*supports_interconnects)(struct dma_buf_attachment *attach,
                                      const struct dma_buf_interconnect_match *,
                                      unsigned int num_ics);
};

struct dma_buf_iov_interconnect_ops {
     struct dma_buf_interconnect_ops ic_ops;
     struct xx *(*map)(struct dma_buf_attachment *attach,
                           unsigned int *bar_number,
                           size_t *nelms);
     // No unmap for iov
};

static inline struct xx *dma_buf_iov_map(struct dma_buf_attachment *attach,
                           unsigned int *bar_number,
                           size_t *nelms)
{
     return container_of(attach->ic_ops, struct dma_buf_iov_interconnect_ops, 
ic_ops)->map(
                 attach, bar_number, nelms));
}

> +/**
> + * dma_buf_attachment_is_dynamic - check if the importer can handle 
> move_notify.
> + * @attach: the attachment to check
> + *
> + * Returns true if a DMA-buf importer has indicated that it can handle dmabuf
> + * location changes through the move_notify callback.
> + */
> +static inline bool
> +dma_buf_attachment_is_dynamic(struct dma_buf_attachment *attach)
> +{
> +     return !!attach->importer_ops;
> +}

Why is this in this patch?

I also think this patch should be second in the series, it makes more
sense to figure out how to attach with an interconnect then show how
to map/unmap with that interconnect

Like I'm not sure why this introduces allow_ic?

Jason

Reply via email to