[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <55b3b816-23f5-40ae-a1fb-5820cb8de0de@arm.com>
Date: Tue, 9 Jul 2024 12:53:41 +0100
From: Robin Murphy <robin.murphy@....com>
To: Yangyu Chen <cyy@...self.name>
Cc: iommu@...ts.linux.dev,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Marek Szyprowski <m.szyprowski@...sung.com>, Christoph Hellwig <hch@....de>
Subject: Re: [PATCH -fixes] dma-mapping: add default implementation to
arch_dma_{set|clear}_uncached
On 09/07/2024 12:39 pm, Yangyu Chen wrote:
>
>
>> On Jul 9, 2024, at 19:19, Christoph Hellwig <hch@....de> 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.
We rely on unreachable code being optimised out *all over* the place -
it's kind of the main point of constructs like IS_ENABLED(), and why the
kernel as a whole does not and will not support being compiled with -O0.
Frankly I'm quite surprised that this one would be the only case you hit
if your compiler is not doing that properly.
Thanks,
Robin.
Powered by blists - more mailing lists