From: Christoph Hellwig <h...@infradead.org> Sent: Wednesday, November 22, 2023 
11:32 PM
> 
> On Thu, Nov 23, 2023 at 12:24:49AM +0000, Michael Kelley wrote:
> > > I really do not want to expose vmap_pages_range.  Please try to come up
> > > with a good way to encapsulate your map at a certain address primitive
> > > and implement it in vmalloc.c.
> >
> > To clarify, is your concern narrowly about vmap_pages_range()
> > specifically?
> 
> The prime concern is that it took a lot of effort to make
> vmap_pages_range static and remove all the abuses.  I absolutely
> object to undoing that.

OK, so I assume that means a new variant of vmap_pages_range(),
such as one that always sets the page_shift parameter to PAGE_SIZE,
is also disallowed because of the same potential for abuse.

So the only way to map a system memory page to a vmalloc
vaddr is via vmap() or some vmap() variant, which always
creates a new vmalloc area via get_vm_area().  I've done the
perf measurements, and that approach won't work for this use
case.  Independent of the alignment requirements, the churn in
creating and removing a lot of vmalloc areas has too much perf
impact.   The use case needs to create a single vmalloc area, and
then repeatedly map/unmap a page in that existing area.

I'll have to handle the top-level problem in this patch set in
a completely different way.

Michael

Reply via email to