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