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