[PATCH v4 02/15] dma: Allow dma_get_cache_alignment() to return the smaller cache_line_size()
Christoph Hellwig
hch at lst.de
Fri May 19 22:42:09 PDT 2023
On Thu, May 18, 2023 at 06:33:50PM +0100, Catalin Marinas wrote:
> On architectures like arm64, ARCH_DMA_MINALIGN is larger than most cache
> line size configurations deployed. However, the single kernel binary
> requirement doesn't allow the smaller ARCH_DMA_MINALIGN. Permit an
> architecture to opt in to dma_get_cache_alignment() returning
> cache_line_size() which can be probed at run-time.
>
> Signed-off-by: Catalin Marinas <catalin.marinas at arm.com>
> Cc: Christoph Hellwig <hch at lst.de>
> Cc: Robin Murphy <robin.murphy at arm.com>
> Cc: Will Deacon <will at kernel.org>
> ---
> include/linux/dma-mapping.h | 2 ++
> kernel/dma/Kconfig | 7 +++++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
> index 3288a1339271..b29124341317 100644
> --- a/include/linux/dma-mapping.h
> +++ b/include/linux/dma-mapping.h
> @@ -545,6 +545,8 @@ static inline int dma_set_min_align_mask(struct device *dev,
>
> static inline int dma_get_cache_alignment(void)
> {
> + if (IS_ENABLED(CONFIG_ARCH_HAS_DMA_CACHE_LINE_SIZE))
> + return cache_line_size();
> #ifdef ARCH_HAS_DMA_MINALIGN
> return ARCH_DMA_MINALIGN;
> #endif
Maybe allowing architectures to simply override
dma_get_cache_alignment would be a little cleaner rather than adding
yet another abstraction? That might also be able to repace
ARCH_DMA_MINALIGN in follow on cleanup.
More information about the linux-arm-kernel
mailing list