xref: /openbmc/linux/arch/s390/Kconfig (revision baa7eb025ab14f3cba2e35c0a8648f9c9f01d24f)
1config SCHED_MC
2	def_bool y
3	depends on SMP
4
5config MMU
6	def_bool y
7
8config ZONE_DMA
9	def_bool y
10	depends on 64BIT
11
12config LOCKDEP_SUPPORT
13	def_bool y
14
15config STACKTRACE_SUPPORT
16	def_bool y
17
18config HAVE_LATENCYTOP_SUPPORT
19	def_bool y
20
21config RWSEM_GENERIC_SPINLOCK
22	bool
23
24config RWSEM_XCHGADD_ALGORITHM
25	def_bool y
26
27config ARCH_HAS_ILOG2_U32
28	bool
29	default n
30
31config ARCH_HAS_ILOG2_U64
32	bool
33	default n
34
35config GENERIC_HWEIGHT
36	def_bool y
37
38config GENERIC_TIME_VSYSCALL
39	def_bool y
40
41config GENERIC_CLOCKEVENTS
42	def_bool y
43
44config GENERIC_BUG
45	bool
46	depends on BUG
47	default y
48
49config GENERIC_BUG_RELATIVE_POINTERS
50	def_bool y
51
52config NO_IOMEM
53	def_bool y
54
55config NO_DMA
56	def_bool y
57
58config ARCH_DMA_ADDR_T_64BIT
59	def_bool 64BIT
60
61config GENERIC_LOCKBREAK
62	bool
63	default y
64	depends on SMP && PREEMPT
65
66config PGSTE
67	bool
68	default y if KVM
69
70config VIRT_CPU_ACCOUNTING
71	def_bool y
72
73config ARCH_SUPPORTS_DEBUG_PAGEALLOC
74	def_bool y
75
76config S390
77	def_bool y
78	select USE_GENERIC_SMP_HELPERS if SMP
79	select HAVE_SYSCALL_WRAPPERS
80	select HAVE_FUNCTION_TRACER
81	select HAVE_FUNCTION_TRACE_MCOUNT_TEST
82	select HAVE_FTRACE_MCOUNT_RECORD
83	select HAVE_C_RECORDMCOUNT
84	select HAVE_SYSCALL_TRACEPOINTS
85	select HAVE_DYNAMIC_FTRACE
86	select HAVE_FUNCTION_GRAPH_TRACER
87	select HAVE_REGS_AND_STACK_ACCESS_API
88	select HAVE_DEFAULT_NO_SPIN_MUTEXES
89	select HAVE_OPROFILE
90	select HAVE_KPROBES
91	select HAVE_KRETPROBES
92	select HAVE_KVM if 64BIT
93	select HAVE_ARCH_TRACEHOOK
94	select INIT_ALL_POSSIBLE
95	select HAVE_IRQ_WORK
96	select HAVE_PERF_EVENTS
97	select HAVE_KERNEL_GZIP
98	select HAVE_KERNEL_BZIP2
99	select HAVE_KERNEL_LZMA
100	select HAVE_KERNEL_LZO
101	select HAVE_GET_USER_PAGES_FAST
102	select HAVE_ARCH_MUTEX_CPU_RELAX
103	select ARCH_INLINE_SPIN_TRYLOCK
104	select ARCH_INLINE_SPIN_TRYLOCK_BH
105	select ARCH_INLINE_SPIN_LOCK
106	select ARCH_INLINE_SPIN_LOCK_BH
107	select ARCH_INLINE_SPIN_LOCK_IRQ
108	select ARCH_INLINE_SPIN_LOCK_IRQSAVE
109	select ARCH_INLINE_SPIN_UNLOCK
110	select ARCH_INLINE_SPIN_UNLOCK_BH
111	select ARCH_INLINE_SPIN_UNLOCK_IRQ
112	select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE
113	select ARCH_INLINE_READ_TRYLOCK
114	select ARCH_INLINE_READ_LOCK
115	select ARCH_INLINE_READ_LOCK_BH
116	select ARCH_INLINE_READ_LOCK_IRQ
117	select ARCH_INLINE_READ_LOCK_IRQSAVE
118	select ARCH_INLINE_READ_UNLOCK
119	select ARCH_INLINE_READ_UNLOCK_BH
120	select ARCH_INLINE_READ_UNLOCK_IRQ
121	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE
122	select ARCH_INLINE_WRITE_TRYLOCK
123	select ARCH_INLINE_WRITE_LOCK
124	select ARCH_INLINE_WRITE_LOCK_BH
125	select ARCH_INLINE_WRITE_LOCK_IRQ
126	select ARCH_INLINE_WRITE_LOCK_IRQSAVE
127	select ARCH_INLINE_WRITE_UNLOCK
128	select ARCH_INLINE_WRITE_UNLOCK_BH
129	select ARCH_INLINE_WRITE_UNLOCK_IRQ
130	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
131
132config SCHED_OMIT_FRAME_POINTER
133	bool
134	default y
135
136source "init/Kconfig"
137
138source "kernel/Kconfig.freezer"
139
140menu "Base setup"
141
142comment "Processor type and features"
143
144source "kernel/time/Kconfig"
145
146config 64BIT
147	bool "64 bit kernel"
148	help
149	  Select this option if you have an IBM z/Architecture machine
150	  and want to use the 64 bit addressing mode.
151
152config 32BIT
153	bool
154	default y if !64BIT
155
156config KTIME_SCALAR
157	def_bool 32BIT
158
159config SMP
160	bool "Symmetric multi-processing support"
161	---help---
162	  This enables support for systems with more than one CPU. If you have
163	  a system with only one CPU, like most personal computers, say N. If
164	  you have a system with more than one CPU, say Y.
165
166	  If you say N here, the kernel will run on single and multiprocessor
167	  machines, but will use only one CPU of a multiprocessor machine. If
168	  you say Y here, the kernel will run on many, but not all,
169	  singleprocessor machines. On a singleprocessor machine, the kernel
170	  will run faster if you say N here.
171
172	  See also the SMP-HOWTO available at
173	  <http://www.tldp.org/docs.html#howto>.
174
175	  Even if you don't know what to do here, say Y.
176
177config NR_CPUS
178	int "Maximum number of CPUs (2-64)"
179	range 2 64
180	depends on SMP
181	default "32" if !64BIT
182	default "64" if 64BIT
183	help
184	  This allows you to specify the maximum number of CPUs which this
185	  kernel will support.  The maximum supported value is 64 and the
186	  minimum value which makes sense is 2.
187
188	  This is purely to save memory - each supported CPU adds
189	  approximately sixteen kilobytes to the kernel image.
190
191config HOTPLUG_CPU
192	bool "Support for hot-pluggable CPUs"
193	depends on SMP
194	select HOTPLUG
195	default n
196	help
197	  Say Y here to be able to turn CPUs off and on. CPUs
198	  can be controlled through /sys/devices/system/cpu/cpu#.
199	  Say N if you want to disable CPU hotplug.
200
201config SCHED_MC
202	def_bool y
203	prompt "Multi-core scheduler support"
204	depends on SMP
205	help
206	  Multi-core scheduler support improves the CPU scheduler's decision
207	  making when dealing with multi-core CPU chips at a cost of slightly
208	  increased overhead in some places.
209
210config SCHED_BOOK
211	bool "Book scheduler support"
212	depends on SMP && SCHED_MC
213	help
214	  Book scheduler support improves the CPU scheduler's decision making
215	  when dealing with machines that have several books.
216
217config MATHEMU
218	bool "IEEE FPU emulation"
219	depends on MARCH_G5
220	help
221	  This option is required for IEEE compliant floating point arithmetic
222	  on older ESA/390 machines. Say Y unless you know your machine doesn't
223	  need this.
224
225config COMPAT
226	bool "Kernel support for 31 bit emulation"
227	depends on 64BIT
228	select COMPAT_BINFMT_ELF
229	help
230	  Select this option if you want to enable your system kernel to
231	  handle system-calls from ELF binaries for 31 bit ESA.  This option
232	  (and some other stuff like libraries and such) is needed for
233	  executing 31 bit applications.  It is safe to say "Y".
234
235config SYSVIPC_COMPAT
236	bool
237	depends on COMPAT && SYSVIPC
238	default y
239
240config AUDIT_ARCH
241	bool
242	default y
243
244config S390_EXEC_PROTECT
245	bool "Data execute protection"
246	help
247	  This option allows to enable a buffer overflow protection for user
248	  space programs and it also selects the addressing mode option above.
249	  The kernel parameter noexec=on will enable this feature and also
250	  switch the addressing modes, default is disabled. Enabling this (via
251	  kernel parameter) on machines earlier than IBM System z9 this will
252	  reduce system performance.
253
254comment "Code generation options"
255
256choice
257	prompt "Processor type"
258	default MARCH_G5
259
260config MARCH_G5
261	bool "System/390 model G5 and G6"
262	depends on !64BIT
263	help
264	  Select this to build a 31 bit kernel that works
265	  on all ESA/390 and z/Architecture machines.
266
267config MARCH_Z900
268	bool "IBM zSeries model z800 and z900"
269	help
270	  Select this to enable optimizations for model z800/z900 (2064 and
271	  2066 series). This will enable some optimizations that are not
272	  available on older ESA/390 (31 Bit) only CPUs.
273
274config MARCH_Z990
275	bool "IBM zSeries model z890 and z990"
276	help
277	  Select this to enable optimizations for model z890/z990 (2084 and
278	  2086 series). The kernel will be slightly faster but will not work
279	  on older machines.
280
281config MARCH_Z9_109
282	bool "IBM System z9"
283	help
284	  Select this to enable optimizations for IBM System z9 (2094 and
285	  2096 series). The kernel will be slightly faster but will not work
286	  on older machines.
287
288config MARCH_Z10
289	bool "IBM System z10"
290	help
291	  Select this to enable optimizations for IBM System z10 (2097 and
292	  2098 series). The kernel will be slightly faster but will not work
293	  on older machines.
294
295config MARCH_Z196
296	bool "IBM zEnterprise 196"
297	help
298	  Select this to enable optimizations for IBM zEnterprise 196
299	  (2817 series). The kernel will be slightly faster but will not work
300	  on older machines.
301
302endchoice
303
304config PACK_STACK
305	bool "Pack kernel stack"
306	help
307	  This option enables the compiler option -mkernel-backchain if it
308	  is available. If the option is available the compiler supports
309	  the new stack layout which dramatically reduces the minimum stack
310	  frame size. With an old compiler a non-leaf function needs a
311	  minimum of 96 bytes on 31 bit and 160 bytes on 64 bit. With
312	  -mkernel-backchain the minimum size drops to 16 byte on 31 bit
313	  and 24 byte on 64 bit.
314
315	  Say Y if you are unsure.
316
317config SMALL_STACK
318	bool "Use 8kb for kernel stack instead of 16kb"
319	depends on PACK_STACK && 64BIT && !LOCKDEP
320	help
321	  If you say Y here and the compiler supports the -mkernel-backchain
322	  option the kernel will use a smaller kernel stack size. The reduced
323	  size is 8kb instead of 16kb. This allows to run more threads on a
324	  system and reduces the pressure on the memory management for higher
325	  order page allocations.
326
327	  Say N if you are unsure.
328
329config CHECK_STACK
330	bool "Detect kernel stack overflow"
331	help
332	  This option enables the compiler option -mstack-guard and
333	  -mstack-size if they are available. If the compiler supports them
334	  it will emit additional code to each function prolog to trigger
335	  an illegal operation if the kernel stack is about to overflow.
336
337	  Say N if you are unsure.
338
339config STACK_GUARD
340	int "Size of the guard area (128-1024)"
341	range 128 1024
342	depends on CHECK_STACK
343	default "256"
344	help
345	  This allows you to specify the size of the guard area at the lower
346	  end of the kernel stack. If the kernel stack points into the guard
347	  area on function entry an illegal operation is triggered. The size
348	  needs to be a power of 2. Please keep in mind that the size of an
349	  interrupt frame is 184 bytes for 31 bit and 328 bytes on 64 bit.
350	  The minimum size for the stack guard should be 256 for 31 bit and
351	  512 for 64 bit.
352
353config WARN_STACK
354	bool "Emit compiler warnings for function with broken stack usage"
355	help
356	  This option enables the compiler options -mwarn-framesize and
357	  -mwarn-dynamicstack. If the compiler supports these options it
358	  will generate warnings for function which either use alloca or
359	  create a stack frame bigger than CONFIG_WARN_STACK_SIZE.
360
361	  Say N if you are unsure.
362
363config WARN_STACK_SIZE
364	int "Maximum frame size considered safe (128-2048)"
365	range 128 2048
366	depends on WARN_STACK
367	default "2048"
368	help
369	  This allows you to specify the maximum frame size a function may
370	  have without the compiler complaining about it.
371
372config ARCH_POPULATES_NODE_MAP
373	def_bool y
374
375comment "Kernel preemption"
376
377source "kernel/Kconfig.preempt"
378
379config ARCH_SPARSEMEM_ENABLE
380	def_bool y
381	select SPARSEMEM_VMEMMAP_ENABLE
382	select SPARSEMEM_VMEMMAP
383	select SPARSEMEM_STATIC if !64BIT
384
385config ARCH_SPARSEMEM_DEFAULT
386	def_bool y
387
388config ARCH_SELECT_MEMORY_MODEL
389       def_bool y
390
391config ARCH_ENABLE_MEMORY_HOTPLUG
392	def_bool y
393	depends on SPARSEMEM
394
395config ARCH_ENABLE_MEMORY_HOTREMOVE
396	def_bool y
397
398config ARCH_HIBERNATION_POSSIBLE
399       def_bool y if 64BIT
400
401source "mm/Kconfig"
402
403comment "I/O subsystem configuration"
404
405config QDIO
406	tristate "QDIO support"
407	---help---
408	  This driver provides the Queued Direct I/O base support for
409	  IBM System z.
410
411	  To compile this driver as a module, choose M here: the
412	  module will be called qdio.
413
414	  If unsure, say Y.
415
416config CHSC_SCH
417	tristate "Support for CHSC subchannels"
418	help
419	  This driver allows usage of CHSC subchannels. A CHSC subchannel
420	  is usually present on LPAR only.
421	  The driver creates a device /dev/chsc, which may be used to
422	  obtain I/O configuration information about the machine and
423	  to issue asynchronous chsc commands (DANGEROUS).
424	  You will usually only want to use this interface on a special
425	  LPAR designated for system management.
426
427	  To compile this driver as a module, choose M here: the
428	  module will be called chsc_sch.
429
430	  If unsure, say N.
431
432comment "Misc"
433
434config IPL
435	bool "Builtin IPL record support"
436	help
437	  If you want to use the produced kernel to IPL directly from a
438	  device, you have to merge a bootsector specific to the device
439	  into the first bytes of the kernel. You will have to select the
440	  IPL device.
441
442choice
443	prompt "IPL method generated into head.S"
444	depends on IPL
445	default IPL_VM
446	help
447	  Select "tape" if you want to IPL the image from a Tape.
448
449	  Select "vm_reader" if you are running under VM/ESA and want
450	  to IPL the image from the emulated card reader.
451
452config IPL_TAPE
453	bool "tape"
454
455config IPL_VM
456	bool "vm_reader"
457
458endchoice
459
460source "fs/Kconfig.binfmt"
461
462config FORCE_MAX_ZONEORDER
463	int
464	default "9"
465
466config PFAULT
467	bool "Pseudo page fault support"
468	help
469	  Select this option, if you want to use PFAULT pseudo page fault
470	  handling under VM. If running native or in LPAR, this option
471	  has no effect. If your VM does not support PFAULT, PAGEEX
472	  pseudo page fault handling will be used.
473	  Note that VM 4.2 supports PFAULT but has a bug in its
474	  implementation that causes some problems.
475	  Everybody who wants to run Linux under VM != VM4.2 should select
476	  this option.
477
478config SHARED_KERNEL
479	bool "VM shared kernel support"
480	help
481	  Select this option, if you want to share the text segment of the
482	  Linux kernel between different VM guests. This reduces memory
483	  usage with lots of guests but greatly increases kernel size.
484	  Also if a kernel was IPL'ed from a shared segment the kexec system
485	  call will not work.
486	  You should only select this option if you know what you are
487	  doing and want to exploit this feature.
488
489config CMM
490	tristate "Cooperative memory management"
491	help
492	  Select this option, if you want to enable the kernel interface
493	  to reduce the memory size of the system. This is accomplished
494	  by allocating pages of memory and put them "on hold". This only
495	  makes sense for a system running under VM where the unused pages
496	  will be reused by VM for other guest systems. The interface
497	  allows an external monitor to balance memory of many systems.
498	  Everybody who wants to run Linux under VM should select this
499	  option.
500
501config CMM_IUCV
502	bool "IUCV special message interface to cooperative memory management"
503	depends on CMM && (SMSGIUCV=y || CMM=SMSGIUCV)
504	help
505	  Select this option to enable the special message interface to
506	  the cooperative memory management.
507
508config APPLDATA_BASE
509	bool "Linux - VM Monitor Stream, base infrastructure"
510	depends on PROC_FS
511	help
512	  This provides a kernel interface for creating and updating z/VM APPLDATA
513	  monitor records. The monitor records are updated at certain time
514	  intervals, once the timer is started.
515	  Writing 1 or 0 to /proc/appldata/timer starts(1) or stops(0) the timer,
516	  i.e. enables or disables monitoring on the Linux side.
517	  A custom interval value (in seconds) can be written to
518	  /proc/appldata/interval.
519
520	  Defaults are 60 seconds interval and timer off.
521	  The /proc entries can also be read from, showing the current settings.
522
523config APPLDATA_MEM
524	tristate "Monitor memory management statistics"
525	depends on APPLDATA_BASE && VM_EVENT_COUNTERS
526	help
527	  This provides memory management related data to the Linux - VM Monitor
528	  Stream, like paging/swapping rate, memory utilisation, etc.
529	  Writing 1 or 0 to /proc/appldata/memory creates(1) or removes(0) a z/VM
530	  APPLDATA monitor record, i.e. enables or disables monitoring this record
531	  on the z/VM side.
532
533	  Default is disabled.
534	  The /proc entry can also be read from, showing the current settings.
535
536	  This can also be compiled as a module, which will be called
537	  appldata_mem.o.
538
539config APPLDATA_OS
540	tristate "Monitor OS statistics"
541	depends on APPLDATA_BASE
542	help
543	  This provides OS related data to the Linux - VM Monitor Stream, like
544	  CPU utilisation, etc.
545	  Writing 1 or 0 to /proc/appldata/os creates(1) or removes(0) a z/VM
546	  APPLDATA monitor record, i.e. enables or disables monitoring this record
547	  on the z/VM side.
548
549	  Default is disabled.
550	  This can also be compiled as a module, which will be called
551	  appldata_os.o.
552
553config APPLDATA_NET_SUM
554	tristate "Monitor overall network statistics"
555	depends on APPLDATA_BASE && NET
556	help
557	  This provides network related data to the Linux - VM Monitor Stream,
558	  currently there is only a total sum of network I/O statistics, no
559	  per-interface data.
560	  Writing 1 or 0 to /proc/appldata/net_sum creates(1) or removes(0) a z/VM
561	  APPLDATA monitor record, i.e. enables or disables monitoring this record
562	  on the z/VM side.
563
564	  Default is disabled.
565	  This can also be compiled as a module, which will be called
566	  appldata_net_sum.o.
567
568source kernel/Kconfig.hz
569
570config S390_HYPFS_FS
571	bool "s390 hypervisor file system support"
572	select SYS_HYPERVISOR
573	default y
574	help
575	  This is a virtual file system intended to provide accounting
576	  information in an s390 hypervisor environment.
577
578config KEXEC
579	bool "kexec system call"
580	help
581	  kexec is a system call that implements the ability to shutdown your
582	  current kernel, and to start another kernel.  It is like a reboot
583	  but is independent of hardware/microcode support.
584
585config ZFCPDUMP
586	bool "zfcpdump support"
587	select SMP
588	default n
589	help
590	  Select this option if you want to build an zfcpdump enabled kernel.
591	  Refer to <file:Documentation/s390/zfcpdump.txt> for more details on this.
592
593config S390_GUEST
594bool "s390 guest support for KVM (EXPERIMENTAL)"
595	depends on 64BIT && EXPERIMENTAL
596	select VIRTIO
597	select VIRTIO_RING
598	select VIRTIO_CONSOLE
599	help
600	  Select this option if you want to run the kernel as a guest under
601	  the KVM hypervisor. This will add detection for KVM as well  as a
602	  virtio transport. If KVM is detected, the virtio console will be
603	  the default console.
604
605config SECCOMP
606	bool "Enable seccomp to safely compute untrusted bytecode"
607	depends on PROC_FS
608	default y
609	help
610	  This kernel feature is useful for number crunching applications
611	  that may need to compute untrusted bytecode during their
612	  execution. By using pipes or other transports made available to
613	  the process as file descriptors supporting the read/write
614	  syscalls, it's possible to isolate those applications in
615	  their own address space using seccomp. Once seccomp is
616	  enabled via /proc/<pid>/seccomp, it cannot be disabled
617	  and the task is only allowed to execute a few safe syscalls
618	  defined by each seccomp mode.
619
620	  If unsure, say Y.
621
622endmenu
623
624menu "Power Management"
625
626source "kernel/power/Kconfig"
627
628endmenu
629
630source "net/Kconfig"
631
632config PCMCIA
633	def_bool n
634
635config CCW
636	def_bool y
637
638source "drivers/Kconfig"
639
640source "fs/Kconfig"
641
642source "arch/s390/Kconfig.debug"
643
644source "security/Kconfig"
645
646source "crypto/Kconfig"
647
648source "lib/Kconfig"
649
650source "arch/s390/kvm/Kconfig"
651