On 2024-03-17 19:02, Christoph Hellwig wrote:
On Mon, Mar 04, 2024 at 06:01:37PM -0800, Mina Almasry wrote:
From: Jakub Kicinski kuba@kernel.org
The page providers which try to reuse the same pages will need to hold onto the ref, even if page gets released from the pool - as in releasing the page from the pp just transfers the "ownership" reference from pp to the provider, and provider will wait for other references to be gone before feeding this page back into the pool.
The word hook always rings a giant warning bell for me, and looking into this series I am concerned indeed.
The only provider provided here is the dma-buf one, and that basically is the only sensible one for the documented design. So instead of adding hooks that random proprietary crap can hook into, why not hard code the dma buf provide and just use a flag? That'll also avoid expensive indirect calls.
I'm working on a similar proposal for zero copy Rx but to host memory and depend on this memory provider API.
Jakub also designed this API for hugepages too IIRC. Basically there's going to be at least three fancy ways of providing pages (one of which isn't actually pages, hence the merged netmem_t series) to drivers.