From: Andi Kleen <ak@linux.intel.com>
To: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Martin Jambor <mjambor@suse.cz>, Miroslav Benes <mbenes@suse.cz>,
Steven Rostedt <rostedt@goodmis.org>,
Peter Zijlstra <peterz@infradead.org>,
Arnd Bergmann <arnd@arndb.de>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
the arch/x86 maintainers <x86@kernel.org>
Subject: Re: objtool warnings for kernel/trace/trace_selftest_dynamic.o
Date: Tue, 18 Dec 2018 13:20:42 -0800 [thread overview]
Message-ID: <20181218212042.GE25620@tassilo.jf.intel.com> (raw)
In-Reply-To: <20181218140105.ajuiglkpvstt3qxs@treble>
> I whittled it down to a small test case. It turns out the problem is
> caused by the "__optimize__("no-tracer")" atribute, which is used by our
> __noclone macro:
>
>
> # if __has_attribute(__optimize__)
> # define __noclone __attribute__((__noclone__, __optimize__("no-tracer")))
> # else
> # define __noclone __attribute__((__noclone__))
> # endif
Ah interesting. That makes sense. Thanks for tracking that down.
>
> commit 95272c29378ee7dc15f43fa2758cb28a5913a06d
> Author: Paolo Bonzini <pbonzini@redhat.com>
> Date: Thu Mar 31 09:38:51 2016 +0200
>
> compiler-gcc: disable -ftracer for __noclone functions
>
> -ftracer can duplicate asm blocks causing compilation to fail in
> noclone functions. For example, KVM declares a global variable
> in an asm like
>
> asm("2: ... \n
> .pushsection data \n
> .global vmx_return \n
> vmx_return: .long 2b");
>
> and -ftracer causes a double declaration.
Ok. So the real solution would be to add a no tracer to the KVM
function only.
But of course it will drop its frame pointer. So if you rely on
frame pointer for live patching you would still have a problem.
Just fixing the ftrace case independently may not be useful?
ftrace here really not interesting at all for live patching because
the ftracing self test only happens at boot, when there is no live patching.
Likely it's even in __init code.
KVM on the other hand is quite important and actually happens at boot.
So I would concentrate on fixing that one instead, but leave ftrace
alone.
My suggestion to fix KVM would be to drop the inline assembler
and use out of line assembler in a separate file. Then disabling
the tracer wouldn't be needed.
VM entries are very expensive anyways, I doubt avoiding a single call/ret
makes any difference at all.
-Andi
next prev parent reply other threads:[~2018-12-18 21:20 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-16 18:33 objtool warnings for kernel/trace/trace_selftest_dynamic.o Arnd Bergmann
2018-12-17 17:39 ` Josh Poimboeuf
2018-12-17 18:04 ` Andi Kleen
2018-12-17 18:16 ` Josh Poimboeuf
2018-12-17 19:29 ` Peter Zijlstra
2018-12-17 20:55 ` Andi Kleen
2018-12-17 22:35 ` Peter Zijlstra
2018-12-17 23:59 ` Andi Kleen
2018-12-18 9:19 ` Peter Zijlstra
2018-12-18 21:22 ` Andi Kleen
2018-12-17 21:31 ` Josh Poimboeuf
2018-12-17 22:36 ` Steven Rostedt
2018-12-18 0:06 ` Andi Kleen
2018-12-18 2:49 ` Josh Poimboeuf
2018-12-18 4:22 ` Andi Kleen
2018-12-18 9:28 ` Miroslav Benes
2018-12-18 12:15 ` Martin Jambor
2018-12-18 12:31 ` Steven Rostedt
2018-12-18 14:01 ` Josh Poimboeuf
2018-12-18 21:20 ` Andi Kleen [this message]
2018-12-19 3:44 ` Sean Christopherson
2018-12-19 17:31 ` Martin Jambor
2018-12-18 21:15 ` Andi Kleen
2018-12-18 21:57 ` Steven Rostedt
2018-12-18 22:13 ` Andi Kleen
2018-12-18 22:16 ` Steven Rostedt
2018-12-18 23:26 ` Andi Kleen
2018-12-18 23:40 ` Steven Rostedt
2018-12-19 17:38 ` Martin Jambor
2018-12-18 3:05 ` Josh Poimboeuf
2018-12-17 23:54 ` Andi Kleen
2018-12-17 21:03 ` Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181218212042.GE25620@tassilo.jf.intel.com \
--to=ak@linux.intel.com \
--cc=arnd@arndb.de \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mbenes@suse.cz \
--cc=mjambor@suse.cz \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.