On Wed, Oct 23, 2024 at 03:34:53PM +0100, Pavel Begunkov wrote:
It doesn't care much what kind of memory it is, nor it's important for internals how it's imported, it's user addresses -> pages for user convenience sake. All the net_iov setup code is in the page pool core code. What it does, however, is implementing the user API, so
That's not what this series does. It adds the new memory_provider_ops set of hooks, with once implementation for dmabufs, and one for io_uring zero copy.
So you are precluding zero copy RX into anything but your magic io_uring buffers, and using an odd abstraction for that.
The right way would be to support zero copy RX into every designated dmabuf, and make io_uring work with udmabuf or if absolutely needed it's own kind of dmabuf. Instead we create a maze of incompatible abstractions here. The use case of e.g. doing zero copy receive into a NVMe CMB using PCIe P2P transactions is every but made up, so this does create a problem.
linaro-mm-sig@lists.linaro.org