Lines Matching +full:boot +full:- +full:page +full:- +full:step

1 # SPDX-License-Identifier: GPL-2.0
22 # IOMMUs not handled by dma-iommu. Drivers must never select this symbol.
29 menu "General architecture-dependent options"
34 Select if the architecture can check permissions at sub-page
70 by sharing mid-level caches, last-level cache tags or internal
74 bool "Multi-Core Cache (MC) scheduler support"
78 Multi-core scheduler support improves the CPU scheduler's decision
79 making when dealing with multi-core CPU chips at a cost of slightly
127 for kernel debugging, non-intrusive instrumentation and testing.
136 makes certain almost-always-true or almost-always-false branch
139 Certain performance-sensitive kernel code, such as trace points,
153 ( On 32-bit x86, the necessary options added to the compiler
160 Boot time self-test of the branch patching code.
166 Boot time self-test of the call patching code.
187 Uprobes is the user-space counterpart to kprobes: they
189 to establish unintrusive probes in user-space binaries and
191 are hit by user-space applications.
193 ( These probes come in the form of single-byte breakpoints,
210 See Documentation/core-api/unaligned-memory-access.rst for
229 See Documentation/core-api/unaligned-memory-access.rst for more
235 GCC and Clang have builtin functions for handling byte-swapping.
239 or store and use load-and-swap or store-and-swap instructions if
241 which is worse than the hand-coded assembler in <asm/swab.h>.
244 Any architecture with load-and-swap or store-and-swap
262 Provide a kernel-internal notification when a cpu is about to
307 # arch_has_single_step() if there is hardware single-step support
308 # arch_has_block_step() if there is hardware block-step support
309 # asm/syscall.h supplying asm-generic/syscall.h interface
351 # to remap the page tables in place.
358 # to undo an in-place page table remap for uncached access.
366 # The architecture has a per-task state that includes the mm's PASID
396 All new 32-bit architectures should have 64-bit off_t type on
399 still support 32-bit off_t. This option is enabled for all such
410 <asm/asm-prototypes.h> to support the module versioning for symbols
419 For example the kprobes-based event tracer needs this API.
470 The arch chooses to use the generic perf-NMI-based hardlockup
493 bit-mapping of each registers and a unique architecture id.
542 # multi-threaded application), by reducing contention on the mm refcount.
546 # or its kernel page tables). This could be arranged by arch_exit_mmap(), or
551 # the lazy tlb reference of a kthread's ->active_mm (non-arch code has been
565 # - At the time of the final mmdrop of the mm, ensure mm_cpumask(mm) contains
567 # - It must meet the requirements for MMU_LAZY_TLB_REFCOUNT=n (see above).
578 arch-specific ELF note section to core files. It must provide two
591 on a struct page for better performance. However selecting this
592 might increase the size of a struct page by a word.
618 and compat syscalls if the asm-generic/seccomp.h defaults need adjustment:
619 - __NR_seccomp_read_32
620 - __NR_seccomp_write_32
621 - __NR_seccomp_exit_32
622 - __NR_seccomp_sigreturn_32
629 - all the requirements for HAVE_ARCH_SECCOMP
630 - syscall_get_arch()
631 - syscall_get_arguments()
632 - syscall_rollback()
633 - syscall_set_return_value()
634 - SIGSYS siginfo_t support
635 - secure_computing is called from a ptrace_event()-safe context
636 - secure_computing return value is checked and a return value of -1
638 - seccomp syscall wired up
639 - if !HAVE_SPARSE_SYSCALL_NR, have SECCOMP_ARCH_NATIVE,
666 task-defined system call filtering polices.
668 See Documentation/userspace-api/seccomp_filter.rst for details.
695 - it has implemented a stack canary (e.g. __stack_chk_guard)
700 depends on $(cc-option,-fstack-protector)
703 This option turns on the "stack-protector" GCC feature. This
711 Functions will have the stack-protector canary logic added if they
712 have an 8-byte or larger character array on the stack.
715 gcc with the feature backported ("-fstack-protector").
724 depends on $(cc-option,-fstack-protector-strong)
727 Functions will have the stack-protector canary logic added in any
730 - local variable's address used as part of the right hand side of an
732 - local variable is an array (or union containing an array),
734 - uses register local variables
737 gcc with the feature backported ("-fstack-protector-strong").
761 - Clang: https://clang.llvm.org/docs/ShadowCallStack.html
762 - GCC: https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#Instrumentation-Options
792 - compiling with Clang,
793 - compiling inline assembly with Clang's integrated assembler,
794 - and linking with LLD.
805 depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
806 depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
824 If unsure, select LTO_NONE. Note that LTO is very resource-intensive
842 the LTO link step, which may take several minutes depending on the
909 Control-Flow Integrity (CFI) checking (-fsanitize=kcfi).
921 KCFIPass in LLVM to expand kCFI bundles instead of architecture-specific
928 depends on $(cc-option,-fsanitize=kcfi)
930 This option enables forward-edge Control Flow Integrity (CFI)
964 depends on $(cc-option,-fsanitize=kcfi -fsanitize-cfi-icall-experimental-normalize-integers)
965 # With GCOV/KASAN we need this fix: https://github.com/llvm/llvm-project/pull/104826
973 # With GCOV/KASAN we need this fix: https://github.com/rust-lang/rust/pull/129373
1001 Syscalls need to be wrapped inside user_exit()-user_enter(), either
1017 - Critical entry code isn't preemptible (or better yet:
1019 - No use of RCU read side critical sections, unless ct_nmi_enter()
1021 - No use of instrumentation, unless instrumentation_begin() got
1046 With VIRT_CPU_ACCOUNTING_GEN, cputime_t becomes 64-bit.
1049 cputime_t. For example, reading/writing 64-bit cputime_t on
1050 some 32-bit arches may require multiple accesses, so proper
1062 Architectures that select this are able to move page tables at the
1063 PUD level. If there are only 3 page table levels, the move effectively
1069 Archs that select this are able to move page tables at the PMD level.
1081 # Archs that select this would be capable of PMD-sized vmaps (i.e.,
1107 just need a simple module loader without arch specific data - those
1132 boot, but rather require its initialization late when there is
1141 with read-only execute permissions. Architecture must implement
1179 - arch_mmap_rnd()
1180 - arch_randomize_brk()
1188 - ARCH_MMAP_RND_BITS_MIN
1189 - ARCH_MMAP_RND_BITS_MAX
1217 This value can be changed after boot using the
1227 - ARCH_MMAP_RND_COMPAT_BITS_MIN
1228 - ARCH_MMAP_RND_COMPAT_BITS_MAX
1252 This value can be changed after boot using the
1258 This allows 64bit applications to invoke 32-bit mmap() syscall
1259 and vice-versa 32-bit applications to call 64-bit mmap().
1281 prompt "MMU page size"
1287 This option select the standard 4KiB Linux page size and the only
1288 available option on many architectures. Using 4KiB page size will
1292 assumptions about the page size and only runs on 4KiB pages.
1298 This option is the only supported page size on a few older
1307 workloads, often saving a level of page table lookups compared
1309 per-page operations in the kernel at the expense of a larger
1310 page cache.
1316 Using 32KiB page size will result in slightly higher performance
1326 Using 64KiB page size will result in slightly higher performance
1329 This is not suitable for general-purpose workloads but the
1332 large in-memory data rather than small files.
1340 that have been compiled with '-zmax-page-size' set to 256KiB
1364 # address by giving priority to top-down scheme only if the process
1368 # - STACK_RND_MASK
1393 Architecture supports objtool compile-time frame pointer rule
1408 file which provides platform-specific implementations of some
1445 Architecture has old sigsuspend(2) syscall, of one-argument variety
1450 Even weirder antique ABI - three-argument sigsuspend(2)
1456 as OLD_SIGSUSPEND | OLD_SIGSUSPEND3 - alpha has sigsuspend(2),
1464 bool "Provide system calls for 32-bit time_t"
1468 This is relevant on all 32-bit architectures, and 64-bit architectures
1486 - vmalloc space must be large enough to hold many kernel stacks.
1487 This may rule out many 32-bit architectures.
1489 - Stacks in vmalloc space need to work reliably. For example, if
1490 vmap page tables are created on demand, either this mechanism
1492 unpopulated page tables or arch code (switch_to() and switch_mm(),
1493 most likely) needs to ensure that the stack's page table entries
1496 - If the stack overflows into a guard page, something reasonable
1502 bool "Use a virtually-mapped stack"
1506 Enable this if you want the use virtually-mapped kernel stacks
1508 caught immediately rather than causing difficult-to-diagnose
1521 syscall exit. Careful removal of -fstack-protector-strong and
1522 -fstack-protector should also be applied to the entry code and
1535 cross-syscall address exposures.
1538 kernel boot param, and if turned off has zero overhead due to its use
1547 Kernel stack offset randomization is controlled by kernel boot param
1549 boot state.
1561 bool "Make kernel text and rodata read-only" if ARCH_OPTIONAL_KERNEL_RWX
1565 If this is set, kernel text and rodata memory will be made read-only,
1566 and non-text memory will be made non-executable. This provides
1581 If this is set, module text and rodata memory will be made read-only,
1582 and non-text memory will be made non-executable. This provides
1585 # select if the architecture provides an asm/dma-direct.h header
1602 linux/compiler-*.h in order to override macro definitions that those
1616 May be selected by an architecture if it supports place-relative
1617 32-bit relocations, both in the toolchain and in the module loader,
1630 Enable light-weight counting of various locking related events
1646 well as compatible NM and OBJCOPY utilities (llvm-nm and llvm-objcopy
1687 model being selected at boot time using static calls.
1705 model being selected at boot time using static keys.
1708 static key. This should have slightly lower overhead than non-inline
1720 included, size-asserted, or discarded in the linker scripts. This is
1737 If a 32-bit architecture requires 64-bit arguments to be split into
1738 pairs of 32-bit arguments, select this option.
1768 accessed bit in non-leaf PMD entries when using them as part of linear
1769 address translations. Page table walkers that clear the accessed bit
1775 Architectures that select this option can run floating-point code in
1776 the kernel, as described in Documentation/core-api/floating-point.rst.
1791 source "scripts/gcc-plugins/Kconfig"
1818 # Detect availability of the GCC option -fmin-function-alignment which
1820 # -falign-functions which the compiler ignores for cold functions.
1821 def_bool $(cc-option, -fmin-function-alignment=8)
1824 # Set if the guaranteed alignment with -fmin-function-alignment is
1826 # strict alignment always, even with -falign-functions.