On Tue, 1 Apr 2025 18:26:43 +0300
Mike Rapoport <[email protected]> wrote:

> > But if I use vmap_page_range(), how do I give that back to the memory 
> > allocator?  
> 
> But you don't need neither vmap() nor vmap_page_range() to have kernel page
> tables for memory that you get from reserve_mem. It's already mapped and
> plain phys_to_virt() gives you the virtual address you can use.

Oh! That makes things so much easier! Especially since that means it should
work like the normal buffer where virt_to_page() should also work. Right?

Now I do support mapping the persistent ring buffer via memmap, but I can
just give up on allowing that to be memory mapped to user space, or even
freed.

>  
> > Calling vunmap() on that memory gives me:
> > 
> >  1779.832484] ------------[ cut here ]------------
> > [ 1779.834076] Trying to vunmap() nonexistent vm area (000000027c000000)
> > [ 1779.835941] WARNING: CPU: 6 PID: 956 at mm/vmalloc.c:3413 
> > vunmap+0x5a/0x60
> > 
> > What's the proper way to say: "I no longer need this physical memory I
> > reserved, the kernel can now use it"?  
>  
> free_reserved_area()

Awesome!

Thanks,

-- Steve

Reply via email to