Lines Matching +full:has +full:- +full:builtin +full:- +full:dma
1 # SPDX-License-Identifier: GPL-2.0
21 # Selected by architectures that need custom DMA operations for e.g. legacy
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,
143 If it is detected that the compiler has support for "asm goto",
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 Modern versions of GCC (since 4.4) have builtin functions
236 for handling byte-swapping. Using these, instead of the old
241 with a nearby load or store and use load-and-swap or
242 store-and-swap instructions if the architecture has them. It
244 hand-coded assembler in <asm/swab.h>. But just in case it
247 Any architecture with load-and-swap or store-and-swap
265 Provide a kernel-internal notification when a cpu is about to
310 # arch_has_single_step() if there is hardware single-step support
311 # arch_has_block_step() if there is hardware block-step support
312 # asm/syscall.h supplying asm-generic/syscall.h interface
343 # Select if arch has all set_memory_ro/rw/x/nx() functions in asm/cacheflush.h
347 # Select if arch has all set_direct_map_invalid/default() functions
353 # either provide an uncached segment alias for a DMA allocation, or
361 # to undo an in-place page table remap for uncached access.
369 # The architecture has a per-task state that includes the mm's PASID
399 All new 32-bit architectures should have 64-bit off_t type on
402 still support 32-bit off_t. This option is enabled for all such
413 <asm/asm-prototypes.h> to support the module versioning for symbols
422 For example the kprobes-based event tracer needs this API.
466 subsystem. Also has support for calculating CPU cycle events
473 The arch chooses to use the generic perf-NMI-based hardlockup
496 bit-mapping of each registers and a unique architecture id.
545 # multi-threaded application), by reducing contention on the mm refcount.
554 # the lazy tlb reference of a kthread's ->active_mm (non-arch code has been
568 # - At the time of the final mmdrop of the mm, ensure mm_cpumask(mm) contains
570 # - It must meet the requirements for MMU_LAZY_TLB_REFCOUNT=n (see above).
581 arch-specific ELF note section to core files. It must provide two
621 and compat syscalls if the asm-generic/seccomp.h defaults need adjustment:
622 - __NR_seccomp_read_32
623 - __NR_seccomp_write_32
624 - __NR_seccomp_exit_32
625 - __NR_seccomp_sigreturn_32
632 - all the requirements for HAVE_ARCH_SECCOMP
633 - syscall_get_arch()
634 - syscall_get_arguments()
635 - syscall_rollback()
636 - syscall_set_return_value()
637 - SIGSYS siginfo_t support
638 - secure_computing is called from a ptrace_event()-safe context
639 - secure_computing return value is checked and a return value of -1
641 - seccomp syscall wired up
642 - if !HAVE_SPARSE_SYSCALL_NR, have SECCOMP_ARCH_NATIVE,
669 task-defined system call filtering polices.
671 See Documentation/userspace-api/seccomp_filter.rst for details.
690 An architecture should select this if it has the code which
698 - it has implemented a stack canary (e.g. __stack_chk_guard)
703 depends on $(cc-option,-fstack-protector)
706 This option turns on the "stack-protector" GCC feature. This
714 Functions will have the stack-protector canary logic added if they
715 have an 8-byte or larger character array on the stack.
718 gcc with the feature backported ("-fstack-protector").
727 depends on $(cc-option,-fstack-protector-strong)
730 Functions will have the stack-protector canary logic added in any
733 - local variable's address used as part of the right hand side of an
735 - local variable is an array (or union containing an array),
737 - uses register local variables
740 gcc with the feature backported ("-fstack-protector-strong").
764 - Clang: https://clang.llvm.org/docs/ShadowCallStack.html
765 - GCC: https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#Instrumentation-Options
795 - compiling with Clang,
796 - compiling inline assembly with Clang's integrated assembler,
797 - and linking with LLD.
808 depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
809 depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
827 If unsure, select LTO_NONE. Note that LTO is very resource-intensive
912 Control-Flow Integrity (CFI) checking (-fsanitize=kcfi).
924 KCFIPass in LLVM to expand kCFI bundles instead of architecture-specific
931 depends on $(cc-option,-fsanitize=kcfi)
933 This option enables forward-edge Control Flow Integrity (CFI)
967 depends on $(cc-option,-fsanitize=kcfi -fsanitize-cfi-icall-experimental-normalize-integers)
968 # With GCOV/KASAN we need this fix: https://github.com/llvm/llvm-project/pull/104826
976 # With GCOV/KASAN we need this fix: https://github.com/rust-lang/rust/pull/129373
1004 Syscalls need to be wrapped inside user_exit()-user_enter(), either
1020 - Critical entry code isn't preemptible (or better yet:
1022 - No use of RCU read side critical sections, unless ct_nmi_enter()
1024 - No use of instrumentation, unless instrumentation_begin() got
1039 Architecture has its own way to account idle CPU time and therefore
1049 With VIRT_CPU_ACCOUNTING_GEN, cputime_t becomes 64-bit.
1052 cputime_t. For example, reading/writing 64-bit cputime_t on
1053 some 32-bit arches may require multiple accesses, so proper
1084 # Archs that select this would be capable of PMD-sized vmaps (i.e.,
1110 just need a simple module loader without arch specific data - those
1144 with read-only execute permissions. Architecture must implement
1182 - arch_mmap_rnd()
1183 - arch_randomize_brk()
1190 allocations, has MMU enabled and provides values for both:
1191 - ARCH_MMAP_RND_BITS_MIN
1192 - ARCH_MMAP_RND_BITS_MAX
1228 use in establishing the base address for mmap allocations, has MMU
1230 - ARCH_MMAP_RND_COMPAT_BITS_MIN
1231 - ARCH_MMAP_RND_COMPAT_BITS_MAX
1261 This allows 64bit applications to invoke 32-bit mmap() syscall
1262 and vice-versa 32-bit applications to call 64-bit mmap().
1312 per-page operations in the kernel at the expense of a larger
1332 This is not suitable for general-purpose workloads but the
1335 large in-memory data rather than small files.
1343 that have been compiled with '-zmax-page-size' set to 256KiB
1367 # address by giving priority to top-down scheme only if the process
1371 # - STACK_RND_MASK
1396 Architecture supports objtool compile-time frame pointer rule
1402 Architecture has either save_stack_trace_tsk_reliable() or
1411 file which provides platform-specific implementations of some
1426 Architecture has tls passed as the 4th argument of clone(2),
1432 Architecture has the first two arguments of clone(2) swapped.
1437 Architecture has tls passed as the 3rd argument of clone(2),
1443 Architecture has unusual rt_sigaction(2) arguments
1448 Architecture has old sigsuspend(2) syscall, of one-argument variety
1453 Even weirder antique ABI - three-argument sigsuspend(2)
1458 Architecture has old sigaction(2) syscall. Nope, not the same
1459 as OLD_SIGSUSPEND | OLD_SIGSUSPEND3 - alpha has sigsuspend(2),
1467 bool "Provide system calls for 32-bit time_t"
1471 This is relevant on all 32-bit architectures, and 64-bit architectures
1489 - vmalloc space must be large enough to hold many kernel stacks.
1490 This may rule out many 32-bit architectures.
1492 - Stacks in vmalloc space need to work reliably. For example, if
1499 - If the stack overflows into a guard page, something reasonable
1505 bool "Use a virtually-mapped stack"
1509 Enable this if you want the use virtually-mapped kernel stacks
1511 caught immediately rather than causing difficult-to-diagnose
1524 syscall exit. Careful removal of -fstack-protector-strong and
1525 -fstack-protector should also be applied to the entry code and
1538 cross-syscall address exposures.
1541 kernel boot param, and if turned off has zero overhead due to its use
1564 bool "Make kernel text and rodata read-only" if ARCH_OPTIONAL_KERNEL_RWX
1568 If this is set, kernel text and rodata memory will be made read-only,
1569 and non-text memory will be made non-executable. This provides
1584 If this is set, module text and rodata memory will be made read-only,
1585 and non-text memory will be made non-executable. This provides
1588 # select if the architecture provides an asm/dma-direct.h header
1605 linux/compiler-*.h in order to override macro definitions that those
1619 May be selected by an architecture if it supports place-relative
1620 32-bit relocations, both in the toolchain and in the module loader,
1633 Enable light-weight counting of various locking related events
1638 # Select if the architecture has support for applying RELR relocations.
1649 well as compatible NM and OBJCOPY utilities (llvm-nm and llvm-objcopy
1662 to save space. For example, MIPS architecture has a syscall array with
1711 static key. This should have slightly lower overhead than non-inline
1723 included, size-asserted, or discarded in the linker scripts. This is
1740 If a 32-bit architecture requires 64-bit arguments to be split into
1741 pairs of 32-bit arguments, select this option.
1755 # Select, if arch has a named attribute group bound to NUMA device nodes.
1771 accessed bit in non-leaf PMD entries when using them as part of linear
1778 Architectures that select this option can run floating-point code in
1779 the kernel, as described in Documentation/core-api/floating-point.rst.
1794 source "scripts/gcc-plugins/Kconfig"
1821 # Detect availability of the GCC option -fmin-function-alignment which
1823 # -falign-functions which the compiler ignores for cold functions.
1824 def_bool $(cc-option, -fmin-function-alignment=8)
1827 # Set if the guaranteed alignment with -fmin-function-alignment is
1829 # strict alignment always, even with -falign-functions.