On Thu, Jan 30, 2025 at 4:48 PM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > > On Thu, 30 Jan 2025 16:18:04 -0800 "Vishal Moola (Oracle)" <vishal.moola@xxxxxxxxx> wrote: > > > Currently, users have to call vmap() or vmap_pfn() to map pages to > > kernel virtual space. vmap() requires the page references, and > > vmap_pfn() requires page pfns. If we have a file but no page references, > > we have to do extra work to map them. > > > > Create a function, vmap_file(), to map a specified range of a given > > file to kernel virtual space. Also convert a user that benefits from > > vmap_file(). > > > > Seems like a pretty specialized thing. Have you identified any other > potential users of vmap_file()? I couldn't see any. > > If drm is likely to remain the only user of this, perhaps we should > leave the code down in drivers/gpu/drm for now? This function is generally useful for file-systems that use the pagecache. I simply chose to highlight the most obvious user that benefits from it (and so that the function is introduced with a user). I haven't identified any other specific users of vmap_file() myself. I know Matthew has some other ideas for it; I've cc-ed him so he can chime in. > > Also, the amount of copy-n-pasting from vmap() into vmap_file() is > undesirable - code size, maintenance overhead, etc. I wasn't particularly a fan of it either, but I couldn't find a more readable way to do this (without reorganizing multiple other functions). Aside from the initial flags checks, the rest of the function is slightly different from vmap(), so calling existing functions won't suffice. I considered passing more arguments through to vmap(), but I think that would make the code more confusing, especially because the 2 functions have some different usage prerequisites.