xref: /linux/arch/um/Kconfig (revision 6522fe5c1b007c376fc5f2de1016c99a18b0af8e)
1# SPDX-License-Identifier: GPL-2.0
2
3menu "UML-specific options"
4
5config UML
6	bool
7	default y
8	select ARCH_DISABLE_KASAN_INLINE if STATIC_LINK
9	select ARCH_NEEDS_DEFER_KASAN if STATIC_LINK
10	select ARCH_WANTS_DYNAMIC_TASK_STRUCT
11	select ARCH_HAS_CACHE_LINE_SIZE
12	select ARCH_HAS_CPU_FINALIZE_INIT
13	select ARCH_HAS_FORTIFY_SOURCE
14	# Clang 20 & 21 miscompute __builtin_object_size() under -fprofile-arcs
15	# on 32-bit, causing spurious compile-time errors in check_copy_size().
16	select ARCH_HAS_GCOV_PROFILE_ALL if !(!64BIT && CLANG_VERSION >= 200000 && CLANG_VERSION < 220100)
17	select ARCH_HAS_KCOV
18	select ARCH_HAS_STRNCPY_FROM_USER
19	select ARCH_HAS_STRNLEN_USER
20	select ARCH_HAS_STRICT_KERNEL_RWX
21	select HAVE_ARCH_AUDITSYSCALL
22	select HAVE_ARCH_KASAN if X86_64
23	select HAVE_ARCH_KASAN_VMALLOC if HAVE_ARCH_KASAN
24	select HAVE_ARCH_SECCOMP_FILTER
25	select HAVE_ASM_MODVERSIONS
26	select HAVE_UID16
27	select HAVE_DEBUG_KMEMLEAK
28	select HAVE_DEBUG_BUGVERBOSE
29	select HAVE_PAGE_SIZE_4KB
30	select NO_DMA if !UML_DMA_EMULATION
31	select OF_EARLY_FLATTREE if OF
32	select GENERIC_IRQ_SHOW
33	select GENERIC_CPU_DEVICES
34	select GENERIC_SMP_IDLE_THREAD
35	select HAVE_GCC_PLUGINS
36	select ARCH_SUPPORTS_LTO_CLANG
37	select ARCH_SUPPORTS_LTO_CLANG_THIN
38	select TRACE_IRQFLAGS_SUPPORT
39	select TTY # Needed for line.c
40	select HAVE_ARCH_VMAP_STACK
41	select HAVE_RUST
42	select ARCH_HAS_UBSAN
43	select HAVE_ARCH_TRACEHOOK
44	select HAVE_SYSCALL_TRACEPOINTS
45	select THREAD_INFO_IN_TASK
46	select SPARSE_IRQ
47	select MMU_GATHER_RCU_TABLE_FREE
48
49config MMU
50	bool
51	default y
52
53config UML_DMA_EMULATION
54	bool
55
56config NO_IOMEM
57	bool "disable IOMEM" if EXPERT
58	depends on !INDIRECT_IOMEM
59	default y
60
61config UML_IOMEM_EMULATION
62	bool
63	select INDIRECT_IOMEM
64	select GENERIC_PCI_IOMAP
65
66config ISA
67	bool
68
69config SBUS
70	bool
71
72config LOCKDEP_SUPPORT
73	bool
74	default y
75
76config STACKTRACE_SUPPORT
77	bool
78	default y
79	select STACKTRACE
80
81config GENERIC_CALIBRATE_DELAY
82	bool
83	default y
84
85config HZ
86	int
87	default 100
88
89config UML_SUBARCH_SUPPORTS_SMP
90	bool
91
92config SMP
93	bool "Symmetric multi-processing support"
94	default n
95	depends on UML_SUBARCH_SUPPORTS_SMP
96	help
97	  This option enables UML SMP support.
98
99	  With this enabled, users can tell UML to start multiple virtual
100	  processors. Each virtual processor is represented as a separate
101	  host thread.
102
103	  In UML, kthreads and normal threads (when running in kernel mode)
104	  can be scheduled and executed simultaneously on different virtual
105	  processors. However, the userspace code of normal threads still
106	  runs within their respective single-threaded stubs.
107
108	  That is, SMP support is available both within the kernel and
109	  across different processes, but remains limited within threads
110	  of the same process in userspace.
111
112config NR_CPUS_RANGE_BEGIN
113	int
114	default 1 if !SMP
115	default 2
116
117config NR_CPUS_RANGE_END
118	int
119	default 1 if !SMP
120	default 64
121
122config NR_CPUS_DEFAULT
123	int
124	default 1 if !SMP
125	default 2
126
127config NR_CPUS
128	int "Maximum number of CPUs" if SMP
129	range NR_CPUS_RANGE_BEGIN NR_CPUS_RANGE_END
130	default NR_CPUS_DEFAULT
131
132source "arch/$(HEADER_ARCH)/um/Kconfig"
133
134config MAY_HAVE_RUNTIME_DEPS
135	bool
136
137config STATIC_LINK
138	bool "Force a static link"
139	depends on !MAY_HAVE_RUNTIME_DEPS
140	help
141	  This option gives you the ability to force a static link of UML.
142	  Normally, UML is linked as a shared binary.  This is inconvenient for
143	  use in a chroot jail.  So, if you intend to run UML inside a chroot,
144	  you probably want to say Y here.
145	  Additionally, this option enables using higher memory spaces (up to
146	  2.75G) for UML.
147
148	  NOTE: This option is incompatible with some networking features which
149	  depend on features that require being dynamically loaded (like NSS).
150
151config LD_SCRIPT_STATIC
152	bool
153	default y
154	depends on STATIC_LINK
155
156config LD_SCRIPT_DYN
157	bool
158	default y
159	depends on !LD_SCRIPT_STATIC
160
161config LD_SCRIPT_DYN_RPATH
162	bool "set rpath in the binary" if EXPERT
163	default y
164	depends on LD_SCRIPT_DYN
165	help
166	  Add /lib (and /lib64 for 64-bit) to the linux binary's rpath
167	  explicitly.
168
169	  You may need to turn this off if compiling for nix systems
170	  that have their libraries in random /nix directories and
171	  might otherwise unexpected use libraries from /lib or /lib64
172	  instead of the desired ones.
173
174config HOSTFS
175	tristate "Host filesystem"
176	help
177	  While the User-Mode Linux port uses its own root file system for
178	  booting and normal file access, this module lets the UML user
179	  access files stored on the host.  It does not require any
180	  network connection between the Host and UML.  An example use of
181	  this might be:
182
183	  mount none /tmp/fromhost -t hostfs -o /tmp/umlshare
184
185	  where /tmp/fromhost is an empty directory inside UML and
186	  /tmp/umlshare is a directory on the host with files the UML user
187	  wishes to access.
188
189	  For more information, see
190	  <http://user-mode-linux.sourceforge.net/hostfs.html>.
191
192	  If you'd like to be able to work with files stored on the host,
193	  say Y or M here; otherwise say N.
194
195config MCONSOLE
196	bool "Management console"
197	depends on PROC_FS
198	default y
199	help
200	  The user mode linux management console is a low-level interface to
201	  the kernel, somewhat like the i386 SysRq interface.  Since there is
202	  a full-blown operating system running under every user mode linux
203	  instance, there is much greater flexibility possible than with the
204	  SysRq mechanism.
205
206	  If you answer 'Y' to this option, to use this feature, you need the
207	  mconsole client (called uml_mconsole) which is present in CVS in
208	  2.4.5-9um and later (path /tools/mconsole), and is also in the
209	  distribution RPM package in 2.4.6 and later.
210
211	  It is safe to say 'Y' here.
212
213config MAGIC_SYSRQ
214	bool "Magic SysRq key"
215	depends on MCONSOLE
216	help
217	  If you say Y here, you will have some control over the system even
218	  if the system crashes for example during kernel debugging (e.g., you
219	  will be able to flush the buffer cache to disk, reboot the system
220	  immediately or dump some status information). A key for each of the
221	  possible requests is provided.
222
223	  This is the feature normally accomplished by pressing a key
224	  while holding SysRq (Alt+PrintScreen).
225
226	  On UML, this is accomplished by sending a "sysrq" command with
227	  mconsole, followed by the letter for the requested command.
228
229	  The keys are documented in <file:Documentation/admin-guide/sysrq.rst>. Don't say Y
230	  unless you really know what this hack does.
231
232config KERNEL_STACK_ORDER
233	int "Kernel stack size order"
234	default 2 if 64BIT
235	range 2 10 if 64BIT
236	default 1 if !64BIT
237	help
238	  This option determines the size of UML kernel stacks.  They will
239	  be 1 << order pages.  The default is OK unless you're running Valgrind
240	  on UML, in which case, set this to 3.
241	  It is possible to reduce the stack to 1 for 64BIT and 0 for 32BIT on
242	  older (pre-2017) CPUs. It is not recommended on newer CPUs due to the
243	  increase in the size of the state which needs to be saved when handling
244	  signals.
245
246config PGTABLE_LEVELS
247	int
248	default 4 if 64BIT
249	default 2 if !64BIT
250
251config UML_TIME_TRAVEL_SUPPORT
252	bool
253	prompt "Support time-travel mode (e.g. for test execution)"
254	# inf-cpu mode is incompatible with the benchmarking
255	depends on !RAID6_PQ_BENCHMARK
256	depends on !SMP
257	help
258	  Enable this option to support time travel inside the UML instance.
259
260	  After enabling this option, two modes are accessible at runtime
261	  (selected by the kernel command line), see the kernel's command-
262	  line help for more details.
263
264	  It is safe to say Y, but you probably don't need this.
265
266config UML_MAX_USERSPACE_ITERATIONS
267	int
268	prompt "Maximum number of unscheduled userspace iterations"
269	default 10000
270	depends on UML_TIME_TRAVEL_SUPPORT
271	help
272	  In UML inf-cpu and ext time-travel mode userspace can run without being
273	  interrupted. This will eventually overwhelm the kernel and create OOM
274	  situations (mainly RCU not running). This setting specifies the number
275	  of kernel/userspace switches (minor/major page fault, signal or syscall)
276	  for the same userspace thread before the sched_clock is advanced by a
277	  jiffie to trigger scheduling.
278
279	  Setting it to zero disables the feature.
280
281config KASAN_SHADOW_OFFSET
282	hex
283	depends on KASAN
284	default 0x100000000000
285	help
286	  This is the offset at which the ~16TB of shadow memory is
287	  mapped and used by KASAN for memory debugging. This can be any
288	  address that has at least KASAN_SHADOW_SIZE (total address space divided
289	  by 8) amount of space so that the KASAN shadow memory does not conflict
290	  with anything. The default is 0x100000000000, which works even if mem is
291	  set to a large value. On low-memory systems, try 0x7fff8000, as it fits
292	  into the immediate of most instructions, improving performance.
293
294endmenu
295
296source "arch/um/drivers/Kconfig"
297
298config ARCH_SUSPEND_POSSIBLE
299	def_bool y
300	depends on !SMP
301
302menu "Power management options"
303
304source "kernel/power/Kconfig"
305
306endmenu
307