[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190626084927.GI3419@hirez.programming.kicks-ass.net>
Date: Wed, 26 Jun 2019 10:49:27 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Nick Desaulniers <ndesaulniers@...gle.com>
Cc: "Gustavo A. R. Silva" <gustavo@...eddedor.com>,
Joe Perches <joe@...ches.com>,
Miguel Ojeda <miguel.ojeda.sandonis@...il.com>,
Ingo Molnar <mingo@...hat.com>,
Arnaldo Carvalho de Melo <acme@...nel.org>,
Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
Jiri Olsa <jolsa@...hat.com>,
Namhyung Kim <namhyung@...nel.org>,
Thomas Gleixner <tglx@...utronix.de>,
Borislav Petkov <bp@...en8.de>,
"H. Peter Anvin" <hpa@...or.com>,
"maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)" <x86@...nel.org>,
Kan Liang <kan.liang@...ux.intel.com>,
linux-kernel <linux-kernel@...r.kernel.org>,
Kees Cook <keescook@...omium.org>,
Shawn Landden <shawn@....icu>,
Nathan Chancellor <natechancellor@...il.com>,
Luc Van Oostenryck <luc.vanoostenryck@...il.com>,
Chandler Carruth <chandlerc@...gle.com>
Subject: Re: [PATCH] perf/x86/intel: Mark expected switch fall-throughs
On Tue, Jun 25, 2019 at 11:15:57AM -0700, Nick Desaulniers wrote:
> Unreleased versions of Clang built from source can;
I've bad experiences with using unreleased compilers; life is too short.
> We're currently planning multiple output constraint support w/ asm
> goto, and have recently implemented things like
> __GCC_ASM_FLAG_OUTPUTS__.
That's good to hear.
> If there's other features that we should
> start implementing, please let us know.
If you've got any ideas on how to make this:
https://lkml.kernel.org/r/20190621120923.GT3463@hirez.programming.kicks-ass.net
work, that'd be nice. Basically I wanted the asm goto to emit a 2 or 5
byte JMP/NOP depending on the displacement size. We can trivially get
JMP right by using:
jmp \l_yes
and letting the assembler sort it, but getting the NOP right has so far
eluded me:
.if \l_yes - (. + 2) < 127
.byte 0x66, 0x90
.else
.byte STATIC_KEY_INIT_NOP
.endif
doesn't work. We can ofcourse unconditionally emit the JMP and then
rewrite the binary afterward, and replace the emitted jumps with the
right size NOP, but that's a bit yuck.
Once it emits the variable size instruction consistently, we can update
the patching side to use the same condition to select the new
instruction (and fix objtool).
Powered by blists - more mailing lists