mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-11-10 20:48:12 +00:00
Currently, dma_alloc_from_pool() unconditionally warns and dumps a stack
trace when an allocation fails, with the message "Failed to get suitable
pool".
This conflates two distinct failure modes:
1. Configuration error: No atomic pool is available for the requested
DMA mask (a fundamental system setup issue)
2. Resource Exhaustion: A suitable pool exists but is currently full (a
recoverable runtime state)
This lack of distinction prevents drivers from using __GFP_NOWARN to
suppress error messages during temporary pressure spikes, such as when
awaiting synchronous reclaim of descriptors.
Refactor the error handling to distinguish these cases:
- If no suitable pool is found, keep the unconditional WARN regarding
the missing pool.
- If a pool was found but is exhausted, respect __GFP_NOWARN and update
the warning message to explicitly state "DMA pool exhausted".
Fixes:
|
History
|
|
|---|---|---|
| .. | ||
| coherent.c | ||
| contiguous.c | ||
| debug.c | ||
| debug.h | ||
| direct.c | ||
| direct.h | ||
| dummy.c | ||
| Kconfig | ||
| Makefile | ||
| map_benchmark.c | ||
| mapping.c | ||
| ops_helpers.c | ||
| pool.c | ||
| remap.c | ||
| swiotlb.c | ||