Re: [PATCH v4 1/2] tty: hvc: pass DMA capable memory to put_chars()

From: Xianting TIan
Date: Thu Aug 12 2021 - 05:14:14 EST



在 2021/8/12 下午4:54, Arnd Bergmann 写道:
On Thu, Aug 12, 2021 at 10:08 AM Xianting TIan
<xianting.tian@xxxxxxxxxxxxxxxxx> wrote:
在 2021/8/6 下午10:51, Arnd Bergmann 写道:
On Fri, Aug 6, 2021 at 5:01 AM Xianting Tian
+#define __ALIGNED__ __attribute__((__aligned__(sizeof(long))))
I think you need a higher alignment for DMA buffers, instead of sizeof(long),
I would suggest ARCH_DMA_MINALIGN.
As some ARCH(eg, x86, riscv) doesn't define ARCH_DMA_MINALIG, so i think
it 's better remain the code unchanged,

I will send v5 patch soon.
I think you could just use "L1_CACHE_BYTES" as the alignment in this case.
This will make the structure slightly larger for architectures that do not have
alignment constraints on DMA buffers, but using a smaller alignment is
clearly wrong. Another option would be to use ARCH_KMALLOC_MINALIGN.
yes, I unstand you, the align size must  L1_CACHE_BYTES at least.

Note that there is a patch to add ARCH_DMA_MINALIGN to riscv already,
yes, I summited this patch, it is discussing, seems they don't want to apply it.
as some implementations do not have coherent DMA. I had failed to
realized though that on x86 you do not get an ARCH_DMA_MINALIGN
definition.
I didn't find the definition in arch/x86/include/asm/cache.h and other place, x86 is dma coherent, it may doesn't need it.

Arnd