| # SPDX-License-Identifier: GPL-2.0 | |
| menu "UML-specific options" | |
| config UML | |
| bool | |
| default y | |
| select ARCH_DISABLE_KASAN_INLINE if STATIC_LINK | |
| select ARCH_NEEDS_DEFER_KASAN if STATIC_LINK | |
| select ARCH_WANTS_DYNAMIC_TASK_STRUCT | |
| select ARCH_HAS_CACHE_LINE_SIZE | |
| select ARCH_HAS_CPU_FINALIZE_INIT | |
| select ARCH_HAS_FORTIFY_SOURCE | |
| # Clang 20 & 21 miscompute __builtin_object_size() under -fprofile-arcs | |
| # on 32-bit, causing spurious compile-time errors in check_copy_size(). | |
| select ARCH_HAS_GCOV_PROFILE_ALL if !(!64BIT && CLANG_VERSION >= 200000 && CLANG_VERSION < 220100) | |
| select ARCH_HAS_KCOV | |
| select ARCH_HAS_STRNCPY_FROM_USER | |
| select ARCH_HAS_STRNLEN_USER | |
| select ARCH_HAS_STRICT_KERNEL_RWX | |
| select HAVE_ARCH_AUDITSYSCALL | |
| select HAVE_ARCH_KASAN if X86_64 | |
| select HAVE_ARCH_KASAN_VMALLOC if HAVE_ARCH_KASAN | |
| select HAVE_ARCH_SECCOMP_FILTER | |
| select HAVE_ASM_MODVERSIONS | |
| select HAVE_UID16 | |
| select HAVE_DEBUG_KMEMLEAK | |
| select HAVE_DEBUG_BUGVERBOSE | |
| select HAVE_PAGE_SIZE_4KB | |
| select NO_DMA if !UML_DMA_EMULATION | |
| select OF_EARLY_FLATTREE if OF | |
| select GENERIC_IRQ_SHOW | |
| select GENERIC_CPU_DEVICES | |
| select GENERIC_SMP_IDLE_THREAD | |
| select HAVE_GCC_PLUGINS | |
| select ARCH_SUPPORTS_LTO_CLANG | |
| select ARCH_SUPPORTS_LTO_CLANG_THIN | |
| select TRACE_IRQFLAGS_SUPPORT | |
| select TTY # Needed for line.c | |
| select HAVE_ARCH_VMAP_STACK | |
| select HAVE_RUST | |
| select ARCH_HAS_UBSAN | |
| select HAVE_ARCH_TRACEHOOK | |
| select HAVE_SYSCALL_TRACEPOINTS | |
| select THREAD_INFO_IN_TASK | |
| select SPARSE_IRQ | |
| select MMU_GATHER_RCU_TABLE_FREE | |
| config MMU | |
| bool | |
| default y | |
| config UML_DMA_EMULATION | |
| bool | |
| config NO_IOMEM | |
| bool "disable IOMEM" if EXPERT | |
| depends on !INDIRECT_IOMEM | |
| default y | |
| config UML_IOMEM_EMULATION | |
| bool | |
| select INDIRECT_IOMEM | |
| select GENERIC_PCI_IOMAP | |
| config ISA | |
| bool | |
| config SBUS | |
| bool | |
| config LOCKDEP_SUPPORT | |
| bool | |
| default y | |
| config STACKTRACE_SUPPORT | |
| bool | |
| default y | |
| select STACKTRACE | |
| config GENERIC_CALIBRATE_DELAY | |
| bool | |
| default y | |
| config HZ | |
| int | |
| default 100 | |
| config UML_SUBARCH_SUPPORTS_SMP | |
| bool | |
| config SMP | |
| bool "Symmetric multi-processing support" | |
| default n | |
| depends on UML_SUBARCH_SUPPORTS_SMP | |
| help | |
| This option enables UML SMP support. | |
| With this enabled, users can tell UML to start multiple virtual | |
| processors. Each virtual processor is represented as a separate | |
| host thread. | |
| In UML, kthreads and normal threads (when running in kernel mode) | |
| can be scheduled and executed simultaneously on different virtual | |
| processors. However, the userspace code of normal threads still | |
| runs within their respective single-threaded stubs. | |
| That is, SMP support is available both within the kernel and | |
| across different processes, but remains limited within threads | |
| of the same process in userspace. | |
| config NR_CPUS_RANGE_BEGIN | |
| int | |
| default 1 if !SMP | |
| default 2 | |
| config NR_CPUS_RANGE_END | |
| int | |
| default 1 if !SMP | |
| default 64 | |
| config NR_CPUS_DEFAULT | |
| int | |
| default 1 if !SMP | |
| default 2 | |
| config NR_CPUS | |
| int "Maximum number of CPUs" if SMP | |
| range NR_CPUS_RANGE_BEGIN NR_CPUS_RANGE_END | |
| default NR_CPUS_DEFAULT | |
| source "arch/$(HEADER_ARCH)/um/Kconfig" | |
| config MAY_HAVE_RUNTIME_DEPS | |
| bool | |
| config STATIC_LINK | |
| bool "Force a static link" | |
| depends on !MAY_HAVE_RUNTIME_DEPS | |
| help | |
| This option gives you the ability to force a static link of UML. | |
| Normally, UML is linked as a shared binary. This is inconvenient for | |
| use in a chroot jail. So, if you intend to run UML inside a chroot, | |
| you probably want to say Y here. | |
| Additionally, this option enables using higher memory spaces (up to | |
| 2.75G) for UML. | |
| NOTE: This option is incompatible with some networking features which | |
| depend on features that require being dynamically loaded (like NSS). | |
| config LD_SCRIPT_STATIC | |
| bool | |
| default y | |
| depends on STATIC_LINK | |
| config LD_SCRIPT_DYN | |
| bool | |
| default y | |
| depends on !LD_SCRIPT_STATIC | |
| config LD_SCRIPT_DYN_RPATH | |
| bool "set rpath in the binary" if EXPERT | |
| default y | |
| depends on LD_SCRIPT_DYN | |
| help | |
| Add /lib (and /lib64 for 64-bit) to the linux binary's rpath | |
| explicitly. | |
| You may need to turn this off if compiling for nix systems | |
| that have their libraries in random /nix directories and | |
| might otherwise unexpected use libraries from /lib or /lib64 | |
| instead of the desired ones. | |
| config HOSTFS | |
| tristate "Host filesystem" | |
| help | |
| While the User-Mode Linux port uses its own root file system for | |
| booting and normal file access, this module lets the UML user | |
| access files stored on the host. It does not require any | |
| network connection between the Host and UML. An example use of | |
| this might be: | |
| mount none /tmp/fromhost -t hostfs -o /tmp/umlshare | |
| where /tmp/fromhost is an empty directory inside UML and | |
| /tmp/umlshare is a directory on the host with files the UML user | |
| wishes to access. | |
| For more information, see | |
| <http://user-mode-linux.sourceforge.net/hostfs.html>. | |
| If you'd like to be able to work with files stored on the host, | |
| say Y or M here; otherwise say N. | |
| config MCONSOLE | |
| bool "Management console" | |
| depends on PROC_FS | |
| default y | |
| help | |
| The user mode linux management console is a low-level interface to | |
| the kernel, somewhat like the i386 SysRq interface. Since there is | |
| a full-blown operating system running under every user mode linux | |
| instance, there is much greater flexibility possible than with the | |
| SysRq mechanism. | |
| If you answer 'Y' to this option, to use this feature, you need the | |
| mconsole client (called uml_mconsole) which is present in CVS in | |
| 2.4.5-9um and later (path /tools/mconsole), and is also in the | |
| distribution RPM package in 2.4.6 and later. | |
| It is safe to say 'Y' here. | |
| config MAGIC_SYSRQ | |
| bool "Magic SysRq key" | |
| depends on MCONSOLE | |
| help | |
| If you say Y here, you will have some control over the system even | |
| if the system crashes for example during kernel debugging (e.g., you | |
| will be able to flush the buffer cache to disk, reboot the system | |
| immediately or dump some status information). A key for each of the | |
| possible requests is provided. | |
| This is the feature normally accomplished by pressing a key | |
| while holding SysRq (Alt+PrintScreen). | |
| On UML, this is accomplished by sending a "sysrq" command with | |
| mconsole, followed by the letter for the requested command. | |
| The keys are documented in <file:Documentation/admin-guide/sysrq.rst>. Don't say Y | |
| unless you really know what this hack does. | |
| config KERNEL_STACK_ORDER | |
| int "Kernel stack size order" | |
| default 2 if 64BIT | |
| range 2 10 if 64BIT | |
| default 1 if !64BIT | |
| help | |
| This option determines the size of UML kernel stacks. They will | |
| be 1 << order pages. The default is OK unless you're running Valgrind | |
| on UML, in which case, set this to 3. | |
| It is possible to reduce the stack to 1 for 64BIT and 0 for 32BIT on | |
| older (pre-2017) CPUs. It is not recommended on newer CPUs due to the | |
| increase in the size of the state which needs to be saved when handling | |
| signals. | |
| config PGTABLE_LEVELS | |
| int | |
| default 4 if 64BIT | |
| default 2 if !64BIT | |
| config UML_TIME_TRAVEL_SUPPORT | |
| bool | |
| prompt "Support time-travel mode (e.g. for test execution)" | |
| # inf-cpu mode is incompatible with the benchmarking | |
| depends on !RAID6_PQ_BENCHMARK | |
| depends on !SMP | |
| help | |
| Enable this option to support time travel inside the UML instance. | |
| After enabling this option, two modes are accessible at runtime | |
| (selected by the kernel command line), see the kernel's command- | |
| line help for more details. | |
| It is safe to say Y, but you probably don't need this. | |
| config UML_MAX_USERSPACE_ITERATIONS | |
| int | |
| prompt "Maximum number of unscheduled userspace iterations" | |
| default 10000 | |
| depends on UML_TIME_TRAVEL_SUPPORT | |
| help | |
| In UML inf-cpu and ext time-travel mode userspace can run without being | |
| interrupted. This will eventually overwhelm the kernel and create OOM | |
| situations (mainly RCU not running). This setting specifies the number | |
| of kernel/userspace switches (minor/major page fault, signal or syscall) | |
| for the same userspace thread before the sched_clock is advanced by a | |
| jiffie to trigger scheduling. | |
| Setting it to zero disables the feature. | |
| config KASAN_SHADOW_OFFSET | |
| hex | |
| depends on KASAN | |
| default 0x100000000000 | |
| help | |
| This is the offset at which the ~16TB of shadow memory is | |
| mapped and used by KASAN for memory debugging. This can be any | |
| address that has at least KASAN_SHADOW_SIZE (total address space divided | |
| by 8) amount of space so that the KASAN shadow memory does not conflict | |
| with anything. The default is 0x100000000000, which works even if mem is | |
| set to a large value. On low-memory systems, try 0x7fff8000, as it fits | |
| into the immediate of most instructions, improving performance. | |
| endmenu | |
| source "arch/um/drivers/Kconfig" | |
| config ARCH_SUSPEND_POSSIBLE | |
| def_bool y | |
| depends on !SMP | |
| menu "Power management options" | |
| source "kernel/power/Kconfig" | |
| endmenu |