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