xref: /openbmc/linux/arch/s390/Kconfig (revision 87c2ce3b)
1#
2# For a description of the syntax of this configuration file,
3# see Documentation/kbuild/kconfig-language.txt.
4#
5
6config MMU
7	bool
8	default y
9
10config RWSEM_GENERIC_SPINLOCK
11	bool
12
13config RWSEM_XCHGADD_ALGORITHM
14	bool
15	default y
16
17config GENERIC_CALIBRATE_DELAY
18	bool
19	default y
20
21config GENERIC_BUST_SPINLOCK
22	bool
23
24mainmenu "Linux Kernel Configuration"
25
26config S390
27	bool
28	default y
29
30source "init/Kconfig"
31
32menu "Base setup"
33
34comment "Processor type and features"
35
36config 64BIT
37	bool "64 bit kernel"
38	help
39	  Select this option if you have a 64 bit IBM zSeries machine
40	  and want to use the 64 bit addressing mode.
41
42config SMP
43	bool "Symmetric multi-processing support"
44	---help---
45	  This enables support for systems with more than one CPU. If you have
46	  a system with only one CPU, like most personal computers, say N. If
47	  you have a system with more than one CPU, say Y.
48
49	  If you say N here, the kernel will run on single and multiprocessor
50	  machines, but will use only one CPU of a multiprocessor machine. If
51	  you say Y here, the kernel will run on many, but not all,
52	  singleprocessor machines. On a singleprocessor machine, the kernel
53	  will run faster if you say N here.
54
55	  See also the <file:Documentation/smp.txt> and the SMP-HOWTO
56	  available at <http://www.tldp.org/docs.html#howto>.
57
58	  Even if you don't know what to do here, say Y.
59
60config NR_CPUS
61	int "Maximum number of CPUs (2-64)"
62	range 2 64
63	depends on SMP
64	default "32"
65	help
66	  This allows you to specify the maximum number of CPUs which this
67	  kernel will support.  The maximum supported value is 64 and the
68	  minimum value which makes sense is 2.
69
70	  This is purely to save memory - each supported CPU adds
71	  approximately sixteen kilobytes to the kernel image.
72
73config HOTPLUG_CPU
74	bool "Support for hot-pluggable CPUs"
75	depends on SMP
76	select HOTPLUG
77	default n
78	help
79	  Say Y here to be able to turn CPUs off and on. CPUs
80	  can be controlled through /sys/devices/system/cpu/cpu#.
81	  Say N if you want to disable CPU hotplug.
82
83config MATHEMU
84	bool "IEEE FPU emulation"
85	depends on MARCH_G5
86	help
87	  This option is required for IEEE compliant floating point arithmetic
88	  on older S/390 machines. Say Y unless you know your machine doesn't
89	  need this.
90
91config COMPAT
92	bool "Kernel support for 31 bit emulation"
93	depends on 64BIT
94	help
95	  Select this option if you want to enable your system kernel to
96	  handle system-calls from ELF binaries for 31 bit ESA.  This option
97	  (and some other stuff like libraries and such) is needed for
98	  executing 31 bit applications.  It is safe to say "Y".
99
100config SYSVIPC_COMPAT
101	bool
102	depends on COMPAT && SYSVIPC
103	default y
104
105config BINFMT_ELF32
106	tristate "Kernel support for 31 bit ELF binaries"
107	depends on COMPAT
108	help
109	  This allows you to run 32-bit Linux/ELF binaries on your zSeries
110	  in 64 bit mode. Everybody wants this; say Y.
111
112comment "Code generation options"
113
114choice
115	prompt "Processor type"
116	default MARCH_G5
117
118config MARCH_G5
119	bool "S/390 model G5 and G6"
120	depends on !64BIT
121	help
122	  Select this to build a 31 bit kernel that works
123	  on all S/390 and zSeries machines.
124
125config MARCH_Z900
126	bool "IBM eServer zSeries model z800 and z900"
127	help
128	  Select this to optimize for zSeries machines. This
129	  will enable some optimizations that are not available
130	  on older 31 bit only CPUs.
131
132config MARCH_Z990
133	bool "IBM eServer zSeries model z890 and z990"
134	help
135	  Select this enable optimizations for model z890/z990.
136	  This will be slightly faster but does not work on
137	  older machines such as the z900.
138
139endchoice
140
141config PACK_STACK
142	bool "Pack kernel stack"
143	help
144	  This option enables the compiler option -mkernel-backchain if it
145	  is available. If the option is available the compiler supports
146	  the new stack layout which dramatically reduces the minimum stack
147	  frame size. With an old compiler a non-leaf function needs a
148	  minimum of 96 bytes on 31 bit and 160 bytes on 64 bit. With
149	  -mkernel-backchain the minimum size drops to 16 byte on 31 bit
150	  and 24 byte on 64 bit.
151
152	  Say Y if you are unsure.
153
154config SMALL_STACK
155	bool "Use 4kb/8kb for kernel stack instead of 8kb/16kb"
156	depends on PACK_STACK
157	help
158	  If you say Y here and the compiler supports the -mkernel-backchain
159	  option the kernel will use a smaller kernel stack size. For 31 bit
160	  the reduced size is 4kb instead of 8kb and for 64 bit it is 8kb
161	  instead of 16kb. This allows to run more thread on a system and
162	  reduces the pressure on the memory management for higher order
163	  page allocations.
164
165	  Say N if you are unsure.
166
167
168config CHECK_STACK
169	bool "Detect kernel stack overflow"
170	help
171	  This option enables the compiler option -mstack-guard and
172	  -mstack-size if they are available. If the compiler supports them
173	  it will emit additional code to each function prolog to trigger
174	  an illegal operation if the kernel stack is about to overflow.
175
176	  Say N if you are unsure.
177
178config STACK_GUARD
179	int "Size of the guard area (128-1024)"
180	range 128 1024
181	depends on CHECK_STACK
182	default "256"
183	help
184	  This allows you to specify the size of the guard area at the lower
185	  end of the kernel stack. If the kernel stack points into the guard
186	  area on function entry an illegal operation is triggered. The size
187	  needs to be a power of 2. Please keep in mind that the size of an
188	  interrupt frame is 184 bytes for 31 bit and 328 bytes on 64 bit.
189	  The minimum size for the stack guard should be 256 for 31 bit and
190	  512 for 64 bit.
191
192config WARN_STACK
193	bool "Emit compiler warnings for function with broken stack usage"
194	help
195	  This option enables the compiler options -mwarn-framesize and
196	  -mwarn-dynamicstack. If the compiler supports these options it
197	  will generate warnings for function which either use alloca or
198	  create a stack frame bigger then CONFIG_WARN_STACK_SIZE.
199
200	  Say N if you are unsure.
201
202config WARN_STACK_SIZE
203	int "Maximum frame size considered safe (128-2048)"
204	range 128 2048
205	depends on WARN_STACK
206	default "256"
207	help
208	  This allows you to specify the maximum frame size a function may
209	  have without the compiler complaining about it.
210
211source "mm/Kconfig"
212
213comment "I/O subsystem configuration"
214
215config MACHCHK_WARNING
216	bool "Process warning machine checks"
217	help
218	  Select this option if you want the machine check handler on IBM S/390 or
219	  zSeries to process warning machine checks (e.g. on power failures).
220	  If unsure, say "Y".
221
222config QDIO
223	tristate "QDIO support"
224	---help---
225	  This driver provides the Queued Direct I/O base support for
226	  IBM mainframes.
227
228	  For details please refer to the documentation provided by IBM at
229	  <http://www10.software.ibm.com/developerworks/opensource/linux390>
230
231	  To compile this driver as a module, choose M here: the
232	  module will be called qdio.
233
234	  If unsure, say Y.
235
236config QDIO_PERF_STATS
237	bool "Performance statistics in /proc"
238	depends on QDIO
239	help
240	  Say Y here to get performance statistics in /proc/qdio_perf
241
242	  If unsure, say N.
243
244config QDIO_DEBUG
245	bool "Extended debugging information"
246	depends on QDIO
247	help
248	  Say Y here to get extended debugging output in
249	    /sys/kernel/debug/s390dbf/qdio...
250	  Warning: this option reduces the performance of the QDIO module.
251
252	  If unsure, say N.
253
254comment "Misc"
255
256config PREEMPT
257	bool "Preemptible Kernel"
258	help
259	  This option reduces the latency of the kernel when reacting to
260	  real-time or interactive events by allowing a low priority process to
261	  be preempted even if it is in kernel mode executing a system call.
262	  This allows applications to run more reliably even when the system is
263	  under load.
264
265	  Say N if you are unsure.
266
267config IPL
268	bool "Builtin IPL record support"
269	help
270	  If you want to use the produced kernel to IPL directly from a
271	  device, you have to merge a bootsector specific to the device
272	  into the first bytes of the kernel. You will have to select the
273	  IPL device.
274
275choice
276	prompt "IPL method generated into head.S"
277	depends on IPL
278	default IPL_TAPE
279	help
280	  Select "tape" if you want to IPL the image from a Tape.
281
282	  Select "vm_reader" if you are running under VM/ESA and want
283	  to IPL the image from the emulated card reader.
284
285config IPL_TAPE
286	bool "tape"
287
288config IPL_VM
289	bool "vm_reader"
290
291endchoice
292
293source "fs/Kconfig.binfmt"
294
295config PROCESS_DEBUG
296	bool "Show crashed user process info"
297	help
298	  Say Y to print all process fault locations to the console.  This is
299	  a debugging option; you probably do not want to set it unless you
300	  are an S390 port maintainer.
301
302config PFAULT
303	bool "Pseudo page fault support"
304	help
305	  Select this option, if you want to use PFAULT pseudo page fault
306	  handling under VM. If running native or in LPAR, this option
307	  has no effect. If your VM does not support PFAULT, PAGEEX
308	  pseudo page fault handling will be used.
309	  Note that VM 4.2 supports PFAULT but has a bug in its
310	  implementation that causes some problems.
311	  Everybody who wants to run Linux under VM != VM4.2 should select
312	  this option.
313
314config SHARED_KERNEL
315	bool "VM shared kernel support"
316	help
317	  Select this option, if you want to share the text segment of the
318	  Linux kernel between different VM guests. This reduces memory
319	  usage with lots of guests but greatly increases kernel size.
320	  You should only select this option if you know what you are
321	  doing and want to exploit this feature.
322
323config CMM
324	tristate "Cooperative memory management"
325	help
326	  Select this option, if you want to enable the kernel interface
327	  to reduce the memory size of the system. This is accomplished
328	  by allocating pages of memory and put them "on hold". This only
329	  makes sense for a system running under VM where the unused pages
330	  will be reused by VM for other guest systems. The interface
331	  allows an external monitor to balance memory of many systems.
332	  Everybody who wants to run Linux under VM should select this
333	  option.
334
335config CMM_PROC
336	bool "/proc interface to cooperative memory management"
337	depends on CMM
338	help
339	  Select this option to enable the /proc interface to the
340	  cooperative memory management.
341
342config CMM_IUCV
343	bool "IUCV special message interface to cooperative memory management"
344	depends on CMM && (SMSGIUCV=y || CMM=SMSGIUCV)
345	help
346	  Select this option to enable the special message interface to
347	  the cooperative memory management.
348
349config VIRT_TIMER
350	bool "Virtual CPU timer support"
351	help
352	  This provides a kernel interface for virtual CPU timers.
353	  Default is disabled.
354
355config VIRT_CPU_ACCOUNTING
356	bool "Base user process accounting on virtual cpu timer"
357	depends on VIRT_TIMER
358	help
359	  Select this option to use CPU timer deltas to do user
360	  process accounting.
361
362config APPLDATA_BASE
363	bool "Linux - VM Monitor Stream, base infrastructure"
364	depends on PROC_FS && VIRT_TIMER=y
365	help
366	  This provides a kernel interface for creating and updating z/VM APPLDATA
367	  monitor records. The monitor records are updated at certain time
368	  intervals, once the timer is started.
369	  Writing 1 or 0 to /proc/appldata/timer starts(1) or stops(0) the timer,
370	  i.e. enables or disables monitoring on the Linux side.
371	  A custom interval value (in seconds) can be written to
372	  /proc/appldata/interval.
373
374	  Defaults are 60 seconds interval and timer off.
375	  The /proc entries can also be read from, showing the current settings.
376
377config APPLDATA_MEM
378	tristate "Monitor memory management statistics"
379	depends on APPLDATA_BASE
380	help
381	  This provides memory management related data to the Linux - VM Monitor
382	  Stream, like paging/swapping rate, memory utilisation, etc.
383	  Writing 1 or 0 to /proc/appldata/memory creates(1) or removes(0) a z/VM
384	  APPLDATA monitor record, i.e. enables or disables monitoring this record
385	  on the z/VM side.
386
387	  Default is disabled.
388	  The /proc entry can also be read from, showing the current settings.
389
390	  This can also be compiled as a module, which will be called
391	  appldata_mem.o.
392
393config APPLDATA_OS
394	tristate "Monitor OS statistics"
395	depends on APPLDATA_BASE
396	help
397	  This provides OS related data to the Linux - VM Monitor Stream, like
398	  CPU utilisation, etc.
399	  Writing 1 or 0 to /proc/appldata/os creates(1) or removes(0) a z/VM
400	  APPLDATA monitor record, i.e. enables or disables monitoring this record
401	  on the z/VM side.
402
403	  Default is disabled.
404	  This can also be compiled as a module, which will be called
405	  appldata_os.o.
406
407config APPLDATA_NET_SUM
408	tristate "Monitor overall network statistics"
409	depends on APPLDATA_BASE
410	help
411	  This provides network related data to the Linux - VM Monitor Stream,
412	  currently there is only a total sum of network I/O statistics, no
413	  per-interface data.
414	  Writing 1 or 0 to /proc/appldata/net_sum creates(1) or removes(0) a z/VM
415	  APPLDATA monitor record, i.e. enables or disables monitoring this record
416	  on the z/VM side.
417
418	  Default is disabled.
419	  This can also be compiled as a module, which will be called
420	  appldata_net_sum.o.
421
422config NO_IDLE_HZ
423	bool "No HZ timer ticks in idle"
424	help
425	  Switches the regular HZ timer off when the system is going idle.
426	  This helps z/VM to detect that the Linux system is idle. VM can
427	  then "swap-out" this guest which reduces memory usage. It also
428	  reduces the overhead of idle systems.
429
430	  The HZ timer can be switched on/off via /proc/sys/kernel/hz_timer.
431	  hz_timer=0 means HZ timer is disabled. hz_timer=1 means HZ
432	  timer is active.
433
434config NO_IDLE_HZ_INIT
435	bool "HZ timer in idle off by default"
436	depends on NO_IDLE_HZ
437	help
438	  The HZ timer is switched off in idle by default. That means the
439	  HZ timer is already disabled at boot time.
440
441config KEXEC
442	bool "kexec system call (EXPERIMENTAL)"
443	depends on EXPERIMENTAL
444	help
445	  kexec is a system call that implements the ability to shutdown your
446	  current kernel, and to start another kernel.  It is like a reboot
447	  but is independent of hardware/microcode support.
448
449endmenu
450
451source "net/Kconfig"
452
453config PCMCIA
454	bool
455	default n
456
457source "drivers/base/Kconfig"
458
459source "drivers/scsi/Kconfig"
460
461source "drivers/s390/Kconfig"
462
463source "drivers/net/Kconfig"
464
465source "fs/Kconfig"
466
467source "arch/s390/oprofile/Kconfig"
468
469source "arch/s390/Kconfig.debug"
470
471source "security/Kconfig"
472
473source "crypto/Kconfig"
474
475source "lib/Kconfig"
476