Messages in this thread Patch in this message |  | | Date | Tue, 5 May 2026 00:27:35 +0000 | | Subject | [RFC PATCH 2/4] dma/pool: Add an API to check if DMA allocation is from pool | | From | Samiullah Khawaja <> |
| |
DMA allocations can be done through DMA pools, add an API that can be used to check if an allocation is done from a pool. This will be used in the later commit during preservation of DMA allocation.
Signed-off-by: Samiullah Khawaja <skhawaja@google.com> --- include/linux/dma-map-ops.h | 1 + kernel/dma/pool.c | 13 +++++++++++++ 2 files changed, 14 insertions(+)
diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h index 6a1832a73cad..6a0bc4ea2467 100644 --- a/include/linux/dma-map-ops.h +++ b/include/linux/dma-map-ops.h @@ -216,6 +216,7 @@ struct page *dma_alloc_from_pool(struct device *dev, size_t size, bool (*phys_addr_ok)(struct device *, phys_addr_t, size_t)); bool dma_free_from_pool(struct device *dev, void *start, size_t size); +bool dma_is_from_pool(struct device *dev, void *start, size_t size); int dma_direct_set_offset(struct device *dev, phys_addr_t cpu_start, dma_addr_t dma_start, u64 size); diff --git a/kernel/dma/pool.c b/kernel/dma/pool.c index 2b2fbb709242..32ce4d6d7683 100644 --- a/kernel/dma/pool.c +++ b/kernel/dma/pool.c @@ -307,3 +307,16 @@ bool dma_free_from_pool(struct device *dev, void *start, size_t size) return false; } + +bool dma_is_from_pool(struct device *dev, void *start, size_t size) +{ + struct gen_pool *pool = NULL; + + while ((pool = dma_guess_pool(pool, 0))) { + if (!gen_pool_has_addr(pool, (unsigned long)start, size)) + continue; + return true; + } + + return false; +} -- 2.54.0.545.g6539524ca2-goog
|  |