Re: [PATCH 2/4] char: xillybus: replace __get_free_pages() with kmalloc()

From: David Laight

Date: Mon Aug 31 2026 - 07:47:37 EST


On Mon, 31 Aug 2026 12:13:08 +0200
Eli Billauer <eli.billauer@xxxxxxxxx> wrote:

> On 30/08/2026 9:47, Mike Rapoport (Microsoft) wrote:
> > fifo_init() allocates the buffers backing the software FIFO and
> > endpoint_alloc() allocates the transfer buffers of a USB endpoint.
> >
> > These buffers can be allocated with kmalloc() as there's nothing special
> > about them to go directly to the page allocator.
>
> Except that they are a bit large.
>
> fifo_init() may be requested to allocate up to 256 MB of buffer memory.
> This memory resource is split into an array of buffers (fifo->mem[i]),
> each 64 kiB (or less, if there's trouble obtaining segments of this size).

Would it really make sense to allocate the four buffers separately?
And/or use vmalloc().

David

>
> Citing Documentation/core-api/memory-allocation.rst:
>
> "The maximal size of a chunk that can be allocated with `kmalloc` is
> limited. The actual limit depends on the hardware and the kernel
> configuration, but it is a good practice to use `kmalloc` for objects
> smaller than page size."
>
> Regards,
> Eli
>