diff options
author | Sean Christopherson <sean.j.christopherson@intel.com> | 2018-12-20 15:25:18 -0500 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2018-12-21 06:44:28 -0500 |
commit | 2bcbd406715dca256912b9c5ae449c7968f15705 (patch) | |
tree | b865cc6b770212b1d6b094c55b00d1bae6d0d92d | |
parent | 453eafbe65f72c04fc7c74c5c95c04e78e907dfb (diff) |
Revert "compiler-gcc: disable -ftracer for __noclone functions"
The -ftracer optimization was disabled in __noclone as a workaround to
GCC duplicating a blob of inline assembly that happened to define a
global variable. It has been pointed out that no amount of workarounds
can guarantee the compiler won't duplicate inline assembly[1], and that
disabling the -ftracer optimization has several unintended and nasty
side effects[2][3].
Now that the offending KVM code which required the workaround has
been properly fixed and no longer uses __noclone, remove the -ftracer
optimization tweak from __noclone.
[1] https://lore.kernel.org/lkml/ri6y38lo23g.fsf@suse.cz/T/#u
[2] https://lore.kernel.org/lkml/20181218140105.ajuiglkpvstt3qxs@treble/T/#u
[3] https://patchwork.kernel.org/patch/8707981/#21817015
This reverts commit 95272c29378ee7dc15f43fa2758cb28a5913a06d.
Suggested-by: Andi Kleen <ak@linux.intel.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Nadav Amit <namit@vmware.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Martin Jambor <mjambor@suse.cz>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Miroslav Benes <mbenes@suse.cz>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Reviewed-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | include/linux/compiler_attributes.h | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/include/linux/compiler_attributes.h b/include/linux/compiler_attributes.h index f8c400ba1929..fe07b680dd4a 100644 --- a/include/linux/compiler_attributes.h +++ b/include/linux/compiler_attributes.h | |||
@@ -37,7 +37,6 @@ | |||
37 | # define __GCC4_has_attribute___designated_init__ 0 | 37 | # define __GCC4_has_attribute___designated_init__ 0 |
38 | # define __GCC4_has_attribute___externally_visible__ 1 | 38 | # define __GCC4_has_attribute___externally_visible__ 1 |
39 | # define __GCC4_has_attribute___noclone__ 1 | 39 | # define __GCC4_has_attribute___noclone__ 1 |
40 | # define __GCC4_has_attribute___optimize__ 1 | ||
41 | # define __GCC4_has_attribute___nonstring__ 0 | 40 | # define __GCC4_has_attribute___nonstring__ 0 |
42 | # define __GCC4_has_attribute___no_sanitize_address__ (__GNUC_MINOR__ >= 8) | 41 | # define __GCC4_has_attribute___no_sanitize_address__ (__GNUC_MINOR__ >= 8) |
43 | #endif | 42 | #endif |
@@ -163,17 +162,11 @@ | |||
163 | 162 | ||
164 | /* | 163 | /* |
165 | * Optional: not supported by clang | 164 | * Optional: not supported by clang |
166 | * Note: icc does not recognize gcc's no-tracer | ||
167 | * | 165 | * |
168 | * gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-noclone-function-attribute | 166 | * gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-noclone-function-attribute |
169 | * gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-optimize-function-attribute | ||
170 | */ | 167 | */ |
171 | #if __has_attribute(__noclone__) | 168 | #if __has_attribute(__noclone__) |
172 | # if __has_attribute(__optimize__) | 169 | # define __noclone __attribute__((__noclone__)) |
173 | # define __noclone __attribute__((__noclone__, __optimize__("no-tracer"))) | ||
174 | # else | ||
175 | # define __noclone __attribute__((__noclone__)) | ||
176 | # endif | ||
177 | #else | 170 | #else |
178 | # define __noclone | 171 | # define __noclone |
179 | #endif | 172 | #endif |