Re: [PATCH] arm64: kvm: use -fno-jump-tables with clang

From: Marc Zyngier
Date: Sat May 19 2018 - 05:49:26 EST


On Fri, 18 May 2018 19:31:50 +0100,
Nick Desaulniers wrote:
>
> On Fri, May 18, 2018 at 11:13 AM Marc Zyngier <marc.zyngier@xxxxxxx> wrote:
> > What I'd really like is to apply that patch knowing that:
>
> > - you have checked that with a released version of the compiler, you
> > don't observe any absolute address in any of the objects that are going
> > to be executed at EL2 on a mainline kernel,
>
> To verify, we should disassemble objects from arch/arm64/kvm/hyp/*.o and
> make sure we don't see absolute addresses? I can work with Sami to get a
> sense of what the before and after of this patch looks like in disassembly,
> then verify those changes are pervasive.

That seems sensible. You definitely want to look for things stored in
constant pools and subsequently used as an address. Also, you may have
to look at the .hyp.text section of the vmlinux binary, rather than
the individual *.o files, as the linker will likely rewrite things
(the compiler doesn't know about the kernel link address).

> > - you have successfully run guests with a mainline kernel,
>
> I believe Andrey has already done this. If he can verify (maybe
> during working hours next week), then maybe we can add his Tested-by
> to this patches commit message?

That would definitely be the right thing to do. Make sure you (or
Andrey tests with the latest released mainline kernel (4.16 for now)
or (even better) the tip of Linus' tree.

> > - it works for a reasonable set of common kernel configurations
> > (defconfig and some of the most useful debug options),
>
> It's easy for us to test our kernel configs for Android, ChromeOS,
> and defconfig. I'd be curious to know the shortlist of "most useful
> debug options" just to be a better kernel developer, personally.

Activate the various sanitizers, and all the tracing options, for a
start. They are the most likely to do weird things...

> > - I can reproduce your findings with the same released compiler.
>
> Lets wait for Andrey to confirm his test setup. On the Android side, I
> think you should be able to get by with a released version, but I'd be
> curious to hear from Andrey.

Android has all kind of additional patches, and I'm solely concerned
with mainline. If it is what Andrey runs, that's great.

> > Is that the case? I don't think any of the above is completely outlandish.
>
> These are all reasonable. Thanks for the feedback.

Cheers,

M.

--
Jazz is not dead, it just smell funny.