On Tue, Mar 3, 2026 at 4:25 PM Linus Walleij <linusw(a)kernel.org> wrote:
>
> As of commit 62a9f5a85b98
> "mm: introduce clear_pages() and clear_user_pages()" we can
> clear a range of pages with a potentially assembly-optimized
> call.
>
> Instead of using a memset, use this helper to clear the whole
> range of pages from the CMA allocation.
>
> Signed-off-by: Linus Walleij <linusw(a)kernel.org>
> ---
> drivers/dma-buf/heaps/cma_heap.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/dma-buf/heaps/cma_heap.c
b/drivers/dma-buf/heaps/cma_heap.c
> index bd3370b9a3f6..f0bacf25ed9d 100644
> --- a/drivers/dma-buf/heaps/cma_heap.c
> +++ b/drivers/dma-buf/heaps/cma_heap.c
> @@ -343,7 +343,7 @@ static struct dma_buf *cma_heap_allocate(struct
dma_heap *heap,
> nr_clear_pages--;
> }
> } else {
> - memset(page_address(cma_pages), 0, size);
> + clear_pages(page_address(cma_pages), pagecount);
> }
>
> buffer->pages = kmalloc_objs(*buffer->pages, pagecount);
>
> ---
> base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
> change-id: 20260303-cma-heap-clear-pages-540f3ac9f734
>
> Best regards,
> --
> Linus Walleij <linusw(a)kernel.org>
>
Hi Linus,
I think we can also use clear_highpage (singular) instead of memset in the
while loop above here to be a little more concise.
Thanks,
T.J.