On Fri, Aug 19, 2022 at 12:53:32PM +0200, Uladzislau Rezki wrote: > Looks pretty straightforward. One thing though, if we can combine it > together with vmap(), since it is a copy paste in some sense, say to > have something __vmap() to reuse it in the vmap_folio() and vmap(). > > But that is just a thought. Thanks for looking it over! Combining it with vmap() or vm_map_ram() is tricky. Today, we assume that each struct page pointer refers to exactly PAGE_SIZE bytes, so if somebody calls alloc_pages(GFP_COMPOUND, 4) and then passes the head page to vmap(), only that one page gets mapped. I don't know whether any current callers depend on that behaviour. Now that I look at the future customers of this, I think I erred in basing this on vmap(), it looks like vm_map_ram() is preferred. So I'll redo based on vm_map_ram().