mutexes, sched: Introduce arch_mutex_cpu_relax()
[linux-flexiantxendom0.git] / arch / s390 / Kconfig
1 config SCHED_MC
2         def_bool y
3         depends on SMP
4
5 config MMU
6         def_bool y
7
8 config ZONE_DMA
9         def_bool y
10         depends on 64BIT
11
12 config LOCKDEP_SUPPORT
13         def_bool y
14
15 config STACKTRACE_SUPPORT
16         def_bool y
17
18 config HAVE_LATENCYTOP_SUPPORT
19         def_bool y
20
21 config RWSEM_GENERIC_SPINLOCK
22         bool
23
24 config RWSEM_XCHGADD_ALGORITHM
25         def_bool y
26
27 config ARCH_HAS_ILOG2_U32
28         bool
29         default n
30
31 config ARCH_HAS_ILOG2_U64
32         bool
33         default n
34
35 config GENERIC_HWEIGHT
36         def_bool y
37
38 config GENERIC_TIME_VSYSCALL
39         def_bool y
40
41 config GENERIC_CLOCKEVENTS
42         def_bool y
43
44 config GENERIC_BUG
45         bool
46         depends on BUG
47         default y
48
49 config GENERIC_BUG_RELATIVE_POINTERS
50         def_bool y
51
52 config NO_IOMEM
53         def_bool y
54
55 config NO_DMA
56         def_bool y
57
58 config ARCH_DMA_ADDR_T_64BIT
59         def_bool 64BIT
60
61 config GENERIC_LOCKBREAK
62         bool
63         default y
64         depends on SMP && PREEMPT
65
66 config PGSTE
67         bool
68         default y if KVM
69
70 config VIRT_CPU_ACCOUNTING
71         def_bool y
72
73 config ARCH_SUPPORTS_DEBUG_PAGEALLOC
74         def_bool y
75
76 config 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
132 config SCHED_OMIT_FRAME_POINTER
133         bool
134         default y
135
136 source "init/Kconfig"
137
138 source "kernel/Kconfig.freezer"
139
140 menu "Base setup"
141
142 comment "Processor type and features"
143
144 source "kernel/time/Kconfig"
145
146 config 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
152 config 32BIT
153         bool
154         default y if !64BIT
155
156 config KTIME_SCALAR
157         def_bool 32BIT
158
159 config 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
177 config 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
191 config 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
201 config 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
210 config 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
217 config 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
225 config 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
235 config SYSVIPC_COMPAT
236         bool
237         depends on COMPAT && SYSVIPC
238         default y
239
240 config AUDIT_ARCH
241         bool
242         default y
243
244 config 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
254 comment "Code generation options"
255
256 choice
257         prompt "Processor type"
258         default MARCH_G5
259
260 config 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
267 config 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
274 config 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
281 config 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
288 config 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
295 config 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
302 endchoice
303
304 config 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
317 config 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
329 config 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
339 config 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
353 config 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
363 config 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
372 config ARCH_POPULATES_NODE_MAP
373         def_bool y
374
375 comment "Kernel preemption"
376
377 source "kernel/Kconfig.preempt"
378
379 config ARCH_SPARSEMEM_ENABLE
380         def_bool y
381         select SPARSEMEM_VMEMMAP_ENABLE
382         select SPARSEMEM_VMEMMAP
383         select SPARSEMEM_STATIC if !64BIT
384
385 config ARCH_SPARSEMEM_DEFAULT
386         def_bool y
387
388 config ARCH_SELECT_MEMORY_MODEL
389        def_bool y
390
391 config ARCH_ENABLE_MEMORY_HOTPLUG
392         def_bool y
393         depends on SPARSEMEM
394
395 config ARCH_ENABLE_MEMORY_HOTREMOVE
396         def_bool y
397
398 config ARCH_HIBERNATION_POSSIBLE
399        def_bool y if 64BIT
400
401 source "mm/Kconfig"
402
403 comment "I/O subsystem configuration"
404
405 config 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
416 config 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
432 comment "Misc"
433
434 config 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
442 choice
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
452 config IPL_TAPE
453         bool "tape"
454
455 config IPL_VM
456         bool "vm_reader"
457
458 endchoice
459
460 source "fs/Kconfig.binfmt"
461
462 config FORCE_MAX_ZONEORDER
463         int
464         default "9"
465
466 config 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
478 config 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
489 config 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
501 config 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
508 config 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
523 config 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
539 config 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
553 config 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
568 source kernel/Kconfig.hz
569
570 config 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
578 config 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
585 config 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
593 config S390_GUEST
594 bool "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
605 config 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
622 endmenu
623
624 menu "Power Management"
625
626 source "kernel/power/Kconfig"
627
628 endmenu
629
630 source "net/Kconfig"
631
632 config PCMCIA
633         def_bool n
634
635 config CCW
636         def_bool y
637
638 source "drivers/Kconfig"
639
640 source "fs/Kconfig"
641
642 source "arch/s390/Kconfig.debug"
643
644 source "security/Kconfig"
645
646 source "crypto/Kconfig"
647
648 source "lib/Kconfig"
649
650 source "arch/s390/kvm/Kconfig"