Re: [tip:x86/urgent] x86/mm/kaslr: Use the _ASM_MUL macro for multiplication to work around Clang incompatibility

From: hpa
Date: Sun May 07 2017 - 18:00:48 EST

On May 6, 2017 1:16:35 AM PDT, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>On Fri, May 05, 2017 at 01:36:34PM -0700, Michael Davidson wrote:
>> There are a few lingering places in the kernel which use variable
>> length arrays in structs (eg the raid10 driver) which don't build
>> clang and that is about it.
>So the other point I raised is lack of asm goto (and asm flags output).
>Without that our static key infrastructure reverts to runtime branches
>and affects performance.
>> So, while I completely understand the resistance to adding arbitrary
>> hacks to the kernel just to support another compiler it is important
>> to also understand just how close things are to "just working".
>Reading up on the LLVM thread on asm goto they appear to want to
>an intrinsic to allow doing the patchable branch thing. That would be
>fairly limiting, and the proposal I've seen doesn't even cover the two
>(or rather 4) states of patchable branches we have in the kernel.
>Not to mention that such an intrinsic doesn't even begin to cover all
>the other (perhaps creative) uses we have got asm goto used.
>But my main point is that we'd have to rewrite and maintain _two_
>versions of the static key infrastructure if we were to support LLVM's
>intrinsic and the GCC asm goto. That is a very undesirable place to be.
>So while they'll say they support the feature, I'll say its worthless
>since I'm not inclined to support their variant of it. As is, I'm not
>getting the feeling the LLVM team really cares about Linux.

This has been a common problem with LLVM: they say that they will provide feature compatibility with gcc, but then they say this or that gcc extension "doesn't make sense" and is something they don't want to support.
Sent from my Android device with K-9 Mail. Please excuse my brevity.