ALSA: memalloc: Count continuous pages in vmalloc buffer handler
authorTakashi Iwai <tiwai@suse.de>
Fri, 13 Aug 2021 08:16:45 +0000 (10:16 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 13 Aug 2021 08:17:25 +0000 (10:17 +0200)
commitbda36b0fc2b6ab0c35d68c1cec8968ee4b920cd9
treeb93d7d896fb8efaf7900d27f924401413d6ec1b1
parent1a04830169d00cde48e13072a1ed2222784a958b
ALSA: memalloc: Count continuous pages in vmalloc buffer handler

This is an enhancement for the SG-style page handling in vmalloc
buffer handler to calculate the continuous pages.
When snd_sgbuf_get_chunk_size() is called for a vmalloc buffer,
currently we return only the size that fits into a single page.
However, this API call is rather supposed for obtaining the continuous
pages and most of vmalloc or noncontig buffers do have lots of
continuous pages indeed.  So, in this patch, the callback now
calculates the possibly continuous pages up to the given size limit.

Note that the end address in the function is calculated from the last
byte, hence it's one byte shorter.  This is because ofs + size can be
above the actual buffer size boundary.

Until now, this feature isn't really used, but it'll become useful in
a later patch that adds the non-contiguous buffer type that shares the
same callback function as vmalloc.

Link: https://lore.kernel.org/r/20210812113818.6479-1-tiwai@suse.de
Link: https://lore.kernel.org/r/20210813081645.4680-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/memalloc.c