Merge tag 'modules-for-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/jeyu...
[linux-2.6-block.git] / init / Kconfig
index ec1021fd33712afdc98b5ff454518320d858d8f5..57123594a7ca3a80ed23b8862f5c0f3f961b05df 100644 (file)
@@ -33,6 +33,9 @@ config CC_HAS_ASM_GOTO
 config TOOLS_SUPPORT_RELR
        def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh)
 
+config CC_HAS_ASM_INLINE
+       def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
+
 config CC_HAS_WARN_MAYBE_UNINITIALIZED
        def_bool $(cc-option,-Wmaybe-uninitialized)
        help
@@ -51,7 +54,6 @@ config CC_DISABLE_WARN_MAYBE_UNINITIALIZED
 
 config CONSTRUCTORS
        bool
-       depends on !UML
 
 config IRQ_WORK
        bool
@@ -1234,20 +1236,26 @@ choice
        default CC_OPTIMIZE_FOR_PERFORMANCE
 
 config CC_OPTIMIZE_FOR_PERFORMANCE
-       bool "Optimize for performance"
+       bool "Optimize for performance (-O2)"
        help
          This is the default optimization level for the kernel, building
          with the "-O2" compiler flag for best performance and most
          helpful compile-time warnings.
 
-config CC_OPTIMIZE_FOR_SIZE
-       bool "Optimize for size"
+config CC_OPTIMIZE_FOR_PERFORMANCE_O3
+       bool "Optimize more for performance (-O3)"
+       depends on ARC
        imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED  # avoid false positives
        help
-         Enabling this option will pass "-Os" instead of "-O2" to
-         your compiler resulting in a smaller kernel.
+         Choosing this option will pass "-O3" to your compiler to optimize
+         the kernel yet more for performance.
 
-         If unsure, say N.
+config CC_OPTIMIZE_FOR_SIZE
+       bool "Optimize for size (-Os)"
+       imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED  # avoid false positives
+       help
+         Choosing this option will pass "-Os" to your compiler resulting
+         in a smaller kernel.
 
 endchoice
 
@@ -2014,6 +2022,14 @@ config MODVERSIONS
          make them incompatible with the kernel you are running.  If
          unsure, say N.
 
+config ASM_MODVERSIONS
+       bool
+       default HAVE_ASM_MODVERSIONS && MODVERSIONS
+       help
+         This enables module versioning for exported symbols also from
+         assembly. This can be enabled only when the target architecture
+         supports it.
+
 config MODULE_REL_CRCS
        bool
        depends on MODVERSIONS
@@ -2031,7 +2047,6 @@ config MODULE_SRCVERSION_ALL
 
 config MODULE_SIG
        bool "Module signature verification"
-       depends on MODULES
        select SYSTEM_DATA_VERIFICATION
        help
          Check modules for valid signatures upon load: the signature
@@ -2108,7 +2123,6 @@ config MODULE_SIG_HASH
 
 config MODULE_COMPRESS
        bool "Compress modules on installation"
-       depends on MODULES
        help
 
          Compresses kernel modules when 'make modules_install' is run; gzip or
@@ -2144,9 +2158,38 @@ config MODULE_COMPRESS_XZ
 
 endchoice
 
+config MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS
+       bool "Allow loading of modules with missing namespace imports"
+       help
+         Symbols exported with EXPORT_SYMBOL_NS*() are considered exported in
+         a namespace. A module that makes use of a symbol exported with such a
+         namespace is required to import the namespace via MODULE_IMPORT_NS().
+         There is no technical reason to enforce correct namespace imports,
+         but it creates consistency between symbols defining namespaces and
+         users importing namespaces they make use of. This option relaxes this
+         requirement and lifts the enforcement when loading a module.
+
+         If unsure, say N.
+
+config UNUSED_SYMBOLS
+       bool "Enable unused/obsolete exported symbols"
+       default y if X86
+       help
+         Unused but exported symbols make the kernel needlessly bigger.  For
+         that reason most of these unused exports will soon be removed.  This
+         option is provided temporarily to provide a transition period in case
+         some external kernel module needs one of these symbols anyway. If you
+         encounter such a case in your module, consider if you are actually
+         using the right API.  (rationale: since nobody in the kernel is using
+         this in a module, there is a pretty good chance it's actually the
+         wrong interface to use).  If you really need the symbol, please send a
+         mail to the linux kernel mailing list mentioning the symbol and why
+         you really need it, and what the merge plan to the mainline kernel for
+         your module is.
+
 config TRIM_UNUSED_KSYMS
        bool "Trim unused exported kernel symbols"
-       depends on MODULES && !UNUSED_SYMBOLS
+       depends on !UNUSED_SYMBOLS
        help
          The kernel and some modules make many symbols available for
          other modules to use via EXPORT_SYMBOL() and variants. Depending