Hi, > > +/* extract pages referenced by sgt */ > > +static struct page **extr_pgs(struct sg_table *sgt, int *nents, int *last_len) > > Nack, this doesn't work on dma-buf. And it'll blow up at runtime when you > enable the very recently merged CONFIG_DMABUF_DEBUG (would be good to test > with that, just to make sure). > Aside from this, for virtio/kvm use-cases we've already merged the udmabuf > driver. Does this not work for your usecase? udmabuf can be used on the host side to make a collection of guest pages available as host dmabuf. It's part of the puzzle, but not a complete solution. As I understand it the intended workflow is this: (1) guest gpu driver exports some object as dma-buf (2) dma-buf is imported into this new driver. (3) driver sends the pages to the host. (4) hypervisor uses udmabuf to create a host dma-buf. (5) host dma-buf is passed on. And step (3) is the problematic one as this will not work in case the dma-buf doesn't live in guest ram but in -- for example -- gpu device memory. Reversing the driver roles in the guest (virtio driver allocates pages and exports the dma-buf to the guest gpu driver) should work fine. Which btw is something you can do today with virtio-gpu. Maybe it makes sense to have the option to run virtio-gpu in render-only mode for that use case. take care, Gerd