[PATCH] dma/pool: eliminate alloc_pages warning in atomic_pool_expand

Dave Kleikamp posted 1 patch 2 months, 1 week ago
kernel/dma/pool.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] dma/pool: eliminate alloc_pages warning in atomic_pool_expand
Posted by Dave Kleikamp 2 months, 1 week ago
atomic_pool_expand iterately tries the allocation while decrementing the
page order. There is no need to issue a warning if an attempted
allocation fails.

Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
---
 kernel/dma/pool.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/dma/pool.c b/kernel/dma/pool.c
index ee45dee33d49..26392badc36b 100644
--- a/kernel/dma/pool.c
+++ b/kernel/dma/pool.c
@@ -93,7 +93,7 @@ static int atomic_pool_expand(struct gen_pool *pool, size_t pool_size,
 			page = dma_alloc_from_contiguous(NULL, 1 << order,
 							 order, false);
 		if (!page)
-			page = alloc_pages(gfp, order);
+			page = alloc_pages(gfp | __GFP_NOWARN, order);
 	} while (!page && order-- > 0);
 	if (!page)
 		goto out;
-- 
2.52.0
Re: [PATCH] dma/pool: eliminate alloc_pages warning in atomic_pool_expand
Posted by Marek Szyprowski 2 months ago
On 02.12.2025 16:28, Dave Kleikamp wrote:
> atomic_pool_expand iterately tries the allocation while decrementing the
> page order. There is no need to issue a warning if an attempted
> allocation fails.
>
> Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>

Fixes: d7e673ec2c8e ("dma-pool: Only allocate from CMA when in same 
memory zone")

Applied to dma-mapping-fixes branch with typo in commit message fixed.

> ---
>   kernel/dma/pool.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/dma/pool.c b/kernel/dma/pool.c
> index ee45dee33d49..26392badc36b 100644
> --- a/kernel/dma/pool.c
> +++ b/kernel/dma/pool.c
> @@ -93,7 +93,7 @@ static int atomic_pool_expand(struct gen_pool *pool, size_t pool_size,
>   			page = dma_alloc_from_contiguous(NULL, 1 << order,
>   							 order, false);
>   		if (!page)
> -			page = alloc_pages(gfp, order);
> +			page = alloc_pages(gfp | __GFP_NOWARN, order);
>   	} while (!page && order-- > 0);
>   	if (!page)
>   		goto out;

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland
Re: [PATCH] dma/pool: eliminate alloc_pages warning in atomic_pool_expand
Posted by Robin Murphy 2 months, 1 week ago
On 2025-12-02 3:28 pm, Dave Kleikamp wrote:
> atomic_pool_expand iterately tries the allocation while decrementing the

"iteratively"?

> page order. There is no need to issue a warning if an attempted
> allocation fails.
> 
> Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
> ---
>   kernel/dma/pool.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/kernel/dma/pool.c b/kernel/dma/pool.c
> index ee45dee33d49..26392badc36b 100644
> --- a/kernel/dma/pool.c
> +++ b/kernel/dma/pool.c
> @@ -93,7 +93,7 @@ static int atomic_pool_expand(struct gen_pool *pool, size_t pool_size,
>   			page = dma_alloc_from_contiguous(NULL, 1 << order,
>   							 order, false);
>   		if (!page)
> -			page = alloc_pages(gfp, order);
> +			page = alloc_pages(gfp | __GFP_NOWARN, order);

Might be nice to keep some kind of warning if we entirely fail all the 
way down to order 0, although I guess if it matters it would show up via 
the warning on dma_alloc_from_pool() failure soon enough anyway...

Either way it certainly makes sense in general;

Reviewed-by: Robin Murphy <robin.murphy@arm.com>

>   	} while (!page && order-- > 0);
>   	if (!page)
>   		goto out;
Re: [PATCH] dma/pool: eliminate alloc_pages warning in atomic_pool_expand
Posted by Dave Kleikamp 2 months, 1 week ago
On 12/2/25 9:47AM, Robin Murphy wrote:
> On 2025-12-02 3:28 pm, Dave Kleikamp wrote:
>> atomic_pool_expand iterately tries the allocation while decrementing the
> 
> "iteratively"?

Oops.

> 
>> page order. There is no need to issue a warning if an attempted
>> allocation fails.
>>
>> Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
>> ---
>>   kernel/dma/pool.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/kernel/dma/pool.c b/kernel/dma/pool.c
>> index ee45dee33d49..26392badc36b 100644
>> --- a/kernel/dma/pool.c
>> +++ b/kernel/dma/pool.c
>> @@ -93,7 +93,7 @@ static int atomic_pool_expand(struct gen_pool *pool, 
>> size_t pool_size,
>>               page = dma_alloc_from_contiguous(NULL, 1 << order,
>>                                order, false);
>>           if (!page)
>> -            page = alloc_pages(gfp, order);
>> +            page = alloc_pages(gfp | __GFP_NOWARN, order);
> 
> Might be nice to keep some kind of warning if we entirely fail all the 
> way down to order 0, although I guess if it matters it would show up via 
> the warning on dma_alloc_from_pool() failure soon enough anyway...
> 
> Either way it certainly makes sense in general;
> 
> Reviewed-by: Robin Murphy <robin.murphy@arm.com>

Thanks

> 
>>       } while (!page && order-- > 0);
>>       if (!page)
>>           goto out;
>