On Jul 9, 2024, at 19:19, Christoph Hellwig <hch@xxxxxx> wrote:
On Tue, Jul 09, 2024 at 05:25:29PM +0800, Yangyu Chen wrote:
Currently, we have some code in kernel/dma/direct.c which references
arch_dma_set_uncached and arch_dma_clear_uncached. However, many
architectures do not provide these symbols, and the code currently
relies on compiler optimization to cut the unnecessary code. When the
compiler fails to optimize it, the code will reference the symbol and
cause a link error. I found this bug when developing some new extensions
for RISC-V on LLVM. The error message is shown below:
Same comment as for the last one. I think your compiler misbehaves,
and the typical reason for that would be if you disable all
optimizations.
The reason is that some optimizations failed to apply after adding
some passes. I will fix the compiler later. Whatever, we should not
rely on this optimization to get the code being successfully compiled.