2022-12-20 05:39:14

by Deepak R Varma

[permalink] [raw]
Subject: [PATCH] ARM/dma-mapping: use kvzalloc for fallback memory allocation need

When the memory sizes are not known upfront, it is preferred to use the
kvzalloc helper function instead of direct conditional evaluation of
size and kzalloc/vzalloc fallback design. The kvzalloc helper function
in this case is more efficient as it avoids indefinite kzalloc retries
when a small memory size is needed but is unavailable.
This LWN article has further details on the advantages of using
kvzalloc in case of fallback memory allocation needs:
https://lwn.net/Articles/711653/

This patch proposal is based on following Coccinelle warning using the
kvmalloc.cocci semantic patch.

arch/arm/mm/dma-mapping.c:858:28-29: WARNING opportunity for kvmalloc

Signed-off-by: Deepak R Varma <[email protected]>
---
Note: The patch proposal is compile tested only.

arch/arm/mm/dma-mapping.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index c135f6e37a00..2b79af377a81 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -855,10 +855,7 @@ static struct page **__iommu_alloc_buffer(struct device *dev, size_t size,
int i = 0;
int order_idx = 0;

- if (array_size <= PAGE_SIZE)
- pages = kzalloc(array_size, GFP_KERNEL);
- else
- pages = vzalloc(array_size);
+ pages = kvzalloc(array_size, GFP_KERNEL);
if (!pages)
return NULL;

--
2.34.1




2023-01-20 12:04:58

by Deepak R Varma

[permalink] [raw]
Subject: Re: [PATCH] ARM/dma-mapping: use kvzalloc for fallback memory allocation need

On Tue, Dec 20, 2022 at 10:55:11AM +0530, Deepak R Varma wrote:
> When the memory sizes are not known upfront, it is preferred to use the
> kvzalloc helper function instead of direct conditional evaluation of
> size and kzalloc/vzalloc fallback design. The kvzalloc helper function
> in this case is more efficient as it avoids indefinite kzalloc retries
> when a small memory size is needed but is unavailable.
> This LWN article has further details on the advantages of using
> kvzalloc in case of fallback memory allocation needs:
> https://lwn.net/Articles/711653/
>
> This patch proposal is based on following Coccinelle warning using the
> kvmalloc.cocci semantic patch.
>
> arch/arm/mm/dma-mapping.c:858:28-29: WARNING opportunity for kvmalloc
>
> Signed-off-by: Deepak R Varma <[email protected]>

Hello,
May I please request a review and feedback on this patch proposal?

Thank you,
./drv

> ---
> Note: The patch proposal is compile tested only.
>
> arch/arm/mm/dma-mapping.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
> index c135f6e37a00..2b79af377a81 100644
> --- a/arch/arm/mm/dma-mapping.c
> +++ b/arch/arm/mm/dma-mapping.c
> @@ -855,10 +855,7 @@ static struct page **__iommu_alloc_buffer(struct device *dev, size_t size,
> int i = 0;
> int order_idx = 0;
>
> - if (array_size <= PAGE_SIZE)
> - pages = kzalloc(array_size, GFP_KERNEL);
> - else
> - pages = vzalloc(array_size);
> + pages = kvzalloc(array_size, GFP_KERNEL);
> if (!pages)
> return NULL;
>
> --
> 2.34.1
>