OSDN Git Service

x86/cpu: Provide a config option to disable static_cpu_has
authorBorislav Petkov <bp@suse.de>
Sat, 14 Jul 2018 09:26:17 +0000 (02:26 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 17 Jul 2018 09:31:44 +0000 (11:31 +0200)
commit 6e1315fe82308cd29e7550eab967262e8bbc71a3 upstream

This brings .text savings of about ~1.6K when building a tinyconfig. It
is off by default so nothing changes for the default.

Kconfig help text from Josh.

Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Link: http://lkml.kernel.org/r/1449481182-27541-5-git-send-email-bp@alien8.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Srivatsa S. Bhat <srivatsa@csail.mit.edu>
Reviewed-by: Matt Helsley (VMware) <matt.helsley@gmail.com>
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>
Reviewed-by: Bo Gan <ganb@vmware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/Kconfig
arch/x86/include/asm/cpufeature.h

index eab1ef2..d9afe6d 100644 (file)
@@ -346,6 +346,17 @@ config X86_FEATURE_NAMES
 
          If in doubt, say Y.
 
+config X86_FAST_FEATURE_TESTS
+       bool "Fast CPU feature tests" if EMBEDDED
+       default y
+       ---help---
+         Some fast-paths in the kernel depend on the capabilities of the CPU.
+         Say Y here for the kernel to patch in the appropriate code at runtime
+         based on the capabilities of the CPU. The infrastructure for patching
+         code at runtime takes up some additional space; space-constrained
+         embedded systems may wish to say N here to produce smaller, slightly
+         slower code.
+
 config X86_X2APIC
        bool "Support x2apic"
        depends on X86_LOCAL_APIC && X86_64 && (IRQ_REMAP || HYPERVISOR_GUEST)
index 54c7a0b..67f917b 100644 (file)
@@ -422,7 +422,7 @@ extern const char * const x86_bug_flags[NBUGINTS*32];
  * fast paths and boot_cpu_has() otherwise!
  */
 
-#if __GNUC__ >= 4
+#if __GNUC__ >= 4 && defined(CONFIG_X86_FAST_FEATURE_TESTS)
 extern void warn_pre_alternatives(void);
 extern bool __static_cpu_has_safe(u16 bit);