aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Christopherson <sean.j.christopherson@intel.com>2018-12-20 15:25:18 -0500
committerPaolo Bonzini <pbonzini@redhat.com>2018-12-21 06:44:28 -0500
commit2bcbd406715dca256912b9c5ae449c7968f15705 (patch)
treeb865cc6b770212b1d6b094c55b00d1bae6d0d92d
parent453eafbe65f72c04fc7c74c5c95c04e78e907dfb (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.h9
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