From: Robin Murphy <robin.murphy@arm.com>
To: "Adivi, Sai Sree Kartheek" <s-adivi@ti.com>,
m.szyprowski@samsung.com, iommu@lists.linux.dev,
linux-kernel@vger.kernel.org
Cc: vigneshr@ti.com
Subject: Re: [PATCH v2] dma/pool: respect __GFP_NOWARN in dma_alloc_from_pool()
Date: Tue, 13 Jan 2026 15:02:44 +0000 [thread overview]
Message-ID: <3a8f32c8-a5e5-4e6c-8af1-dbf0ff22b966@arm.com> (raw)
In-Reply-To: <d27d0a15-36a6-4399-a904-b0163804298d@ti.com>
On 2026-01-13 8:45 am, Adivi, Sai Sree Kartheek wrote:
>
>
> On 1/12/2026 7:43 PM, Robin Murphy wrote:
>> On 2026-01-12 10:47 am, Sai Sree Kartheek Adivi wrote:
>>> Currently, dma_alloc_from_pool() unconditionally warns and dumps a stack
>>> trace when an allocation fails.
>>>
>>> This prevents callers from using the __GFP_NOWARN flag to suppress error
>>> messages, breaking the expectation that this flag will silence
>>> allocation failure logs.
>>
>> This is not an "allocation failure" in that sense, though. It's not
>> like the caller has opportunistically requested a large allocation,
>> and is happy to try again with a smaller size - if someone has asked
>> for an allocation in atomic context that can only be satisfied from an
>> atomic pool, and there is no atomic pool at all, that points at
>> something being more fundamentally wrong with the system, in a manner
>> that the caller probably isn't expecting.
>>
>> Under what circumstances are you seeing the warning without things
>> being totally broken anyway?
>
> Hi Robin,
>
> To clarify this specific circumstance: I am testing a dmaengine driver
> using the in-kernel crypto test framework, which generates a synthetic
> high load.
>
> The driver attempts to allocate descriptors in an atomic context using
> GFP_NOWAIT. When the atomic pool is exhausted under this stress, we want
> to return NULL silently so the driver can gracefully handle the back
> pressure by either:
> 1. Falling back to non-DMA (PIO) mode, or
> 2. Triggering dmaengine_synchronize() to allow async threads to actually
> free up used descriptors.
>
> Since the driver implements a valid fallback for this exhaustion, the
> current unconditional WARN generates false alarms in the log.
>
> This change would align dma_pool behavior with the core page allocator.
> For example, warn_alloc() in mm/page_alloc.c explicitly checks for
> __GFP_NOWARN to allow callers to suppress failure messages when they
> have a recovery path.
Oof, apologies - looking again at the code in context, now I finally see
what the bug really is: this warning still serves its original purpose,
but due to the refactoring in 9420139f516d indeed it's *also* ended up
in the path where the correct pool was found but was simply unable to
satisfy the allocation. I agree that's not right - we never used to warn
on an actual gen_pool_alloc() failure either way, so whether we have a
suppressible (and more appropriately worded) warning for that condition
I'm not too fussed. However, what I don't want to do is go too far the
other way and lose the intended message when the requested allocation
flags could *never* be satisfied by the current system configuration.
What distracted me is that I think the latter can be falsely reported
for __GFP_DMA32 on a system where CONFIG_ZONE_DMA32 is enabled, but all
the memory is in ZONE_DMA, so I was wondering whether your system was in
that situation. The other series I sent should fix that.
> However if you feel the atomic pool should strictly not support silent
> failures, the alternative would be for the driver to manually track its
> own usage against the pool size and stop allocating before hitting the
> limit. We prefer the __GFP_NOWARN approach as it avoids duplicating
> resource tracking logic in the driver.
Eww, no, that would be far worse :) Just untangling the "failed to
allocate from a valid pool" condition from the "failed to find an
appropriate pool at all" one in this code is fine!
Thanks,
Robin.
next prev parent reply other threads:[~2026-01-13 15:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-12 10:47 Sai Sree Kartheek Adivi
2026-01-12 14:13 ` Robin Murphy
2026-01-13 8:45 ` Adivi, Sai Sree Kartheek
2026-01-13 15:02 ` Robin Murphy [this message]
2026-01-22 10:06 ` Sai Sree Kartheek Adivi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3a8f32c8-a5e5-4e6c-8af1-dbf0ff22b966@arm.com \
--to=robin.murphy@arm.com \
--cc=iommu@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=s-adivi@ti.com \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®