tools headers UAPI: Sync openat2.h with the kernel sources
[linux-2.6-microblaze.git] / arch / Kconfig
index 24862d1..2bb3067 100644 (file)
@@ -33,38 +33,6 @@ config HOTPLUG_SMT
 config GENERIC_ENTRY
        bool
 
-config OPROFILE
-       tristate "OProfile system profiling"
-       depends on PROFILING
-       depends on HAVE_OPROFILE
-       select RING_BUFFER
-       select RING_BUFFER_ALLOW_SWAP
-       help
-         OProfile is a profiling system capable of profiling the
-         whole system, include the kernel, kernel modules, libraries,
-         and applications.
-
-         If unsure, say N.
-
-config OPROFILE_EVENT_MULTIPLEX
-       bool "OProfile multiplexing support (EXPERIMENTAL)"
-       default n
-       depends on OPROFILE && X86
-       help
-         The number of hardware counters is limited. The multiplexing
-         feature enables OProfile to gather more events than counters
-         are provided by the hardware. This is realized by switching
-         between events at a user specified time interval.
-
-         If unsure, say N.
-
-config HAVE_OPROFILE
-       bool
-
-config OPROFILE_NMI_TIMER
-       def_bool y
-       depends on PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !PPC64
-
 config KPROBES
        bool "Kprobes"
        depends on MODULES
@@ -156,8 +124,8 @@ config HAVE_64BIT_ALIGNED_ACCESS
          accesses are required to be 64 bit aligned in this way even
          though it is not a 64 bit architecture.
 
-         See Documentation/unaligned-memory-access.txt for more
-         information on the topic of unaligned memory accesses.
+         See Documentation/core-api/unaligned-memory-access.rst for
+         more information on the topic of unaligned memory accesses.
 
 config HAVE_EFFICIENT_UNALIGNED_ACCESS
        bool
@@ -327,6 +295,10 @@ config ARCH_32BIT_OFF_T
          still support 32-bit off_t. This option is enabled for all such
          architectures explicitly.
 
+# Selected by 64 bit architectures which have a 32 bit f_tinode in struct ustat
+config ARCH_32BIT_USTAT_F_TINODE
+       bool
+
 config HAVE_ASM_MODVERSIONS
        bool
        help
@@ -631,6 +603,96 @@ config SHADOW_CALL_STACK
          reading and writing arbitrary memory may be able to locate them
          and hijack control flow by modifying the stacks.
 
+config LTO
+       bool
+       help
+         Selected if the kernel will be built using the compiler's LTO feature.
+
+config LTO_CLANG
+       bool
+       select LTO
+       help
+         Selected if the kernel will be built using Clang's LTO feature.
+
+config ARCH_SUPPORTS_LTO_CLANG
+       bool
+       help
+         An architecture should select this option if it supports:
+         - compiling with Clang,
+         - compiling inline assembly with Clang's integrated assembler,
+         - and linking with LLD.
+
+config ARCH_SUPPORTS_LTO_CLANG_THIN
+       bool
+       help
+         An architecture should select this option if it can support Clang's
+         ThinLTO mode.
+
+config HAS_LTO_CLANG
+       def_bool y
+       # Clang >= 11: https://github.com/ClangBuiltLinux/linux/issues/510
+       depends on CC_IS_CLANG && CLANG_VERSION >= 110000 && LD_IS_LLD
+       depends on $(success,test $(LLVM) -eq 1)
+       depends on $(success,test $(LLVM_IAS) -eq 1)
+       depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
+       depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
+       depends on ARCH_SUPPORTS_LTO_CLANG
+       depends on !FTRACE_MCOUNT_USE_RECORDMCOUNT
+       depends on !KASAN
+       depends on !GCOV_KERNEL
+       help
+         The compiler and Kconfig options support building with Clang's
+         LTO.
+
+choice
+       prompt "Link Time Optimization (LTO)"
+       default LTO_NONE
+       help
+         This option enables Link Time Optimization (LTO), which allows the
+         compiler to optimize binaries globally.
+
+         If unsure, select LTO_NONE. Note that LTO is very resource-intensive
+         so it's disabled by default.
+
+config LTO_NONE
+       bool "None"
+       help
+         Build the kernel normally, without Link Time Optimization (LTO).
+
+config LTO_CLANG_FULL
+       bool "Clang Full LTO (EXPERIMENTAL)"
+       depends on HAS_LTO_CLANG
+       depends on !COMPILE_TEST
+       select LTO_CLANG
+       help
+          This option enables Clang's full Link Time Optimization (LTO), which
+          allows the compiler to optimize the kernel globally. If you enable
+          this option, the compiler generates LLVM bitcode instead of ELF
+          object files, and the actual compilation from bitcode happens at
+          the LTO link step, which may take several minutes depending on the
+          kernel configuration. More information can be found from LLVM's
+          documentation:
+
+           https://llvm.org/docs/LinkTimeOptimization.html
+
+         During link time, this option can use a large amount of RAM, and
+         may take much longer than the ThinLTO option.
+
+config LTO_CLANG_THIN
+       bool "Clang ThinLTO (EXPERIMENTAL)"
+       depends on HAS_LTO_CLANG && ARCH_SUPPORTS_LTO_CLANG_THIN
+       select LTO_CLANG
+       help
+         This option enables Clang's ThinLTO, which allows for parallel
+         optimization and faster incremental compiles compared to the
+         CONFIG_LTO_CLANG_FULL option. More information can be found
+         from Clang's documentation:
+
+           https://clang.llvm.org/docs/ThinLTO.html
+
+         If unsure, say Y.
+endchoice
+
 config HAVE_ARCH_WITHIN_STACK_FRAMES
        bool
        help
@@ -759,6 +821,12 @@ config HAVE_IRQ_EXIT_ON_IRQ_STACK
          This spares a stack switch and improves cache usage on softirq
          processing.
 
+config HAVE_SOFTIRQ_ON_OWN_STACK
+       bool
+       help
+         Architecture provides a function to run __do_softirq() on a
+         seperate stack.
+
 config PGTABLE_LEVELS
        int
        default 2
@@ -1090,6 +1158,15 @@ config HAVE_STATIC_CALL_INLINE
        bool
        depends on HAVE_STATIC_CALL
 
+config HAVE_PREEMPT_DYNAMIC
+       bool
+       depends on HAVE_STATIC_CALL
+       depends on GENERIC_ENTRY
+       help
+          Select this if the architecture support boot time preempt setting
+          on top of static calls. It is strongly advised to support inline
+          static call to avoid any overhead.
+
 config ARCH_WANT_LD_ORPHAN_WARN
        bool
        help
@@ -1111,6 +1188,9 @@ config ARCH_SPLIT_ARG64
           If a 32-bit architecture requires 64-bit arguments to be split into
           pairs of 32-bit arguments, select this option.
 
+config ARCH_HAS_ELFCORE_COMPAT
+       bool
+
 source "kernel/gcov/Kconfig"
 
 source "scripts/gcc-plugins/Kconfig"