LoongArch: Increase ARCH_DMA_MINALIGN up to 16
authorHuacai Chen <chenhuacai@loongson.cn>
Sun, 30 Mar 2025 08:31:09 +0000 (16:31 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Sun, 30 Mar 2025 08:31:09 +0000 (16:31 +0800)
ARCH_DMA_MINALIGN is 1 by default, but some LoongArch-specific devices
(such as APBDMA) require 16 bytes alignment. When the data buffer length
is too small, the hardware may make an error writing cacheline. Thus, it
is dangerous to allocate a small memory buffer for DMA. It's always safe
to define ARCH_DMA_MINALIGN as L1_CACHE_BYTES but unnecessary (kmalloc()
need small memory objects). Therefore, just increase it to 16.

Cc: stable@vger.kernel.org
Tested-by: Binbin Zhou <zhoubinbin@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/include/asm/cache.h

index 1b6d0961719989b9352aa90d55578df21e256c8d..aa622c754414426c6c47e9daaa6ac7225f6d4978 100644 (file)
@@ -8,6 +8,8 @@
 #define L1_CACHE_SHIFT         CONFIG_L1_CACHE_SHIFT
 #define L1_CACHE_BYTES         (1 << L1_CACHE_SHIFT)
 
+#define ARCH_DMA_MINALIGN      (16)
+
 #define __read_mostly __section(".data..read_mostly")
 
 #endif /* _ASM_CACHE_H */