[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <56A1FEE2.3020605@redhat.com>
Date: Fri, 22 Jan 2016 11:05:22 +0100
From: Paolo Bonzini <pbonzini@...hat.com>
To: Josh Poimboeuf <jpoimboe@...hat.com>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>,
"H. Peter Anvin" <hpa@...or.com>, x86@...nel.org
Cc: linux-kernel@...r.kernel.org, live-patching@...r.kernel.org,
Michal Marek <mmarek@...e.cz>,
Peter Zijlstra <peterz@...radead.org>,
Andy Lutomirski <luto@...nel.org>,
Borislav Petkov <bp@...en8.de>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Andi Kleen <andi@...stfloor.org>,
Pedro Alves <palves@...hat.com>,
Namhyung Kim <namhyung@...il.com>,
Bernd Petrovitsch <bernd@...rovitsch.priv.at>,
Chris J Arges <chris.j.arges@...onical.com>,
Andrew Morton <akpm@...ux-foundation.org>,
Jiri Slaby <jslaby@...e.cz>,
Arnaldo Carvalho de Melo <acme@...nel.org>,
Gleb Natapov <gleb@...nel.org>, kvm@...r.kernel.org
Subject: Re: [PATCH 25/33] x86/kvm: Set ELF function type for fastop functions
On 21/01/2016 23:49, Josh Poimboeuf wrote:
> The callable functions created with the FOP* and FASTOP* macros are
> missing ELF function annotations, which confuses tools like stacktool.
> Properly annotate them.
>
> This adds some additional labels to the assembly, but the generated
> binary code is unchanged (with the exception of instructions which have
> embedded references to __LINE__).
>
> Signed-off-by: Josh Poimboeuf <jpoimboe@...hat.com>
> Cc: Gleb Natapov <gleb@...nel.org>
> Cc: Paolo Bonzini <pbonzini@...hat.com>
> Cc: kvm@...r.kernel.org
> ---
> arch/x86/kvm/emulate.c | 29 +++++++++++++++++++++--------
> 1 file changed, 21 insertions(+), 8 deletions(-)
>
> diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
> index 1505587..aa4d726 100644
> --- a/arch/x86/kvm/emulate.c
> +++ b/arch/x86/kvm/emulate.c
> @@ -309,23 +309,29 @@ static void invalidate_registers(struct x86_emulate_ctxt *ctxt)
>
> static int fastop(struct x86_emulate_ctxt *ctxt, void (*fop)(struct fastop *));
>
> -#define FOP_ALIGN ".align " __stringify(FASTOP_SIZE) " \n\t"
> +#define FOP_FUNC(name) \
> + ".align " __stringify(FASTOP_SIZE) " \n\t" \
> + ".type " name ", @function \n\t" \
> + name ":\n\t"
> +
> #define FOP_RET "ret \n\t"
>
> #define FOP_START(op) \
> extern void em_##op(struct fastop *fake); \
> asm(".pushsection .text, \"ax\" \n\t" \
> ".global em_" #op " \n\t" \
> - FOP_ALIGN \
> - "em_" #op ": \n\t"
> + FOP_FUNC("em_" #op)
>
> #define FOP_END \
> ".popsection")
>
> -#define FOPNOP() FOP_ALIGN FOP_RET
> +#define FOPNOP() \
> + FOP_FUNC(__stringify(__UNIQUE_ID(nop))) \
> + FOP_RET
>
> #define FOP1E(op, dst) \
> - FOP_ALIGN "10: " #op " %" #dst " \n\t" FOP_RET
> + FOP_FUNC(#op "_" #dst) \
> + "10: " #op " %" #dst " \n\t" FOP_RET
>
> #define FOP1EEX(op, dst) \
> FOP1E(op, dst) _ASM_EXTABLE(10b, kvm_fastop_exception)
> @@ -357,7 +363,8 @@ static int fastop(struct x86_emulate_ctxt *ctxt, void (*fop)(struct fastop *));
> FOP_END
>
> #define FOP2E(op, dst, src) \
> - FOP_ALIGN #op " %" #src ", %" #dst " \n\t" FOP_RET
> + FOP_FUNC(#op "_" #dst "_" #src) \
> + #op " %" #src ", %" #dst " \n\t" FOP_RET
>
> #define FASTOP2(op) \
> FOP_START(op) \
> @@ -395,7 +402,8 @@ static int fastop(struct x86_emulate_ctxt *ctxt, void (*fop)(struct fastop *));
> FOP_END
>
> #define FOP3E(op, dst, src, src2) \
> - FOP_ALIGN #op " %" #src2 ", %" #src ", %" #dst " \n\t" FOP_RET
> + FOP_FUNC(#op "_" #dst "_" #src "_" #src2) \
> + #op " %" #src2 ", %" #src ", %" #dst " \n\t" FOP_RET
>
> /* 3-operand, word-only, src2=cl */
> #define FASTOP3WCL(op) \
> @@ -407,7 +415,12 @@ static int fastop(struct x86_emulate_ctxt *ctxt, void (*fop)(struct fastop *));
> FOP_END
>
> /* Special case for SETcc - 1 instruction per cc */
> -#define FOP_SETCC(op) ".align 4; " #op " %al; ret \n\t"
> +#define FOP_SETCC(op) \
> + ".align 4 \n\t" \
> + ".type " #op ", @function \n\t" \
> + #op ": \n\t" \
> + #op " %al \n\t" \
> + FOP_RET
>
> asm(".global kvm_fastop_exception \n"
> "kvm_fastop_exception: xor %esi, %esi; ret");
>
Acked-by: Paolo Bonzini <pbonzini@...hat.com>
Powered by blists - more mailing lists