]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/Kconfig
f6e98c5d894f8076d7566267226951822a713e7b
[l4.git] / kernel / fiasco / src / Kconfig
1
2
3 mainmenu "Fiasco configuration"
4
5 config KERNELVERSION
6         string
7         option env="KERNELVERSION"
8
9 config INCLUDE_PPC32
10         bool
11         option env="INCLUDE_PPC32"
12         help
13           Use "INCLUDE_PPC32=y make config" to include ppc32 options.
14
15 config INCLUDE_SPARC
16         bool
17         option env="INCLUDE_SPARC"
18         help
19           Use "INCLUDE_SPARC=y make config" to include sparc options.
20
21 menu "Target configuration"
22
23 choice
24         prompt "Architecture"
25         default IA32
26
27 config IA32
28         bool "Intel IA-32 processor family"
29
30 config AMD64
31         bool "AMD64 processor family"
32         select CONTEXT_4K
33
34 config ARM
35         bool "ARM processor family"
36         
37 config PPC32
38         bool "PowerPC 32 processor family (Caution: INCOMPLETE!)"
39         depends on EXPERIMENTAL && INCLUDE_PPC32
40         help
41           PPC32 testing version, mainly for MPC5200 (603e). Currently,
42           there is no support whatsoever.
43         select CONTEXT_4K
44         select BIG_ENDIAN
45
46 config SPARC
47         bool "SPARC v8 processor family (Caution: EXPERIMENTAL)"
48         depends on EXPERIMENTAL && INCLUDE_SPARC
49         help
50           SPARC v8 is supposed to run on the LEON3 platform.
51           It is unsupported at the moment.
52         select CONTEXT_4K
53
54
55 endchoice
56
57 config BIG_ENDIAN
58         bool
59
60 choice
61         prompt "Platform"
62         default PF_INTEGRATOR if ARM
63         default PF_PC         if IA32
64         default PF_PC         if AMD64
65         default PF_MP52CXX    if PPC32
66         default PF_LEON3      if SPARC
67
68 config PF_PC
69         bool "PC platform"
70         depends on IA32 || AMD64
71
72 config PF_UX
73         bool "Linux Usermode Platform"
74         depends on IA32
75         select JDB
76
77 # PF_CHOICE
78         
79 endchoice
80
81 # PF_INCLUDE
82
83 config ABI_VF
84         def_bool y
85
86 config PF_ARM_MP_CAPABLE
87         bool
88         default y if ARM_MPCORE || ARM_CORTEX_A9
89
90 config CAN_ARM_CPU_SA1100
91         bool
92
93 config CAN_ARM_CPU_XSCALE
94         bool
95
96 config CAN_ARM_CPU_920T
97         bool
98
99 config CAN_ARM_CPU_926
100         bool
101
102 config CAN_ARM_CPU_1136
103         bool
104
105 config CAN_ARM_CPU_1176
106         bool
107
108 config CAN_ARM_CPU_MPCORE
109         bool
110
111 config CAN_ARM_CPU_CORTEX_A8
112         bool
113
114 config CAN_ARM_CPU_CORTEX_A9
115         bool
116
117 config CAN_ARM_CACHE_L2CXX0
118         bool
119
120 choice
121         prompt "CPU"
122         default IA32_686   if IA32
123         default ARM_926    if ARM
124         default AMD64_K8   if AMD64
125         default PPC32_603e if PPC32
126         default LEON3      if SPARC
127
128 config ARM_PXA
129         bool "Intel XScale"
130         depends on PF_XSCALE
131
132 config ARM_SA
133         bool "Intel StrongARM"
134         depends on PF_SA1100
135
136 config ARM_920T
137         bool "ARM 920T Processor"
138         depends on PF_S3C2410
139
140 config ARM_926
141         bool "ARM 926 Processor"
142         depends on CAN_ARM_CPU_926
143
144 config ARM_1136
145         bool "ARM 1136 CPU"
146         depends on CAN_ARM_CPU_1136
147
148 config ARM_1176
149         bool "ARM 1176 CPU"
150         depends on CAN_ARM_CPU_1176
151
152 config ARM_MPCORE
153         bool "ARM MPCore CPU"
154         depends on CAN_ARM_CPU_MPCORE
155
156 config ARM_CORTEX_A8
157         bool "ARM Cortex-A8 CPU"
158         depends on CAN_ARM_CPU_CORTEX_A8
159
160 config ARM_CORTEX_A9
161         bool "ARM Cortex-A9 CPU"
162         depends on CAN_ARM_CPU_CORTEX_A9
163
164 config IA32_486
165         bool "Intel 80486"
166         depends on IA32
167         help
168           Choose this if you have an Intel 80486 or equivalent CPU (i486).
169
170 config IA32_586
171         bool "Intel Pentium / AMD K5"
172         depends on IA32
173         help
174           Choose this if you have an Intel Pentium or compatible i586 CPU.
175
176 config IA32_686
177         bool "Intel Pentium Pro"
178         depends on IA32
179         help
180           Choose this if you have an Intel Pentium Pro or compatible i686 CPU.
181
182 config IA32_P2
183         bool "Intel Pentium II / Celeron II"
184         depends on IA32
185         help
186           Choose this if you have an Intel Pentium II or Pentium II based Celeron.
187
188 config IA32_P3
189         bool "Intel Pentium III / Celeron III"
190         depends on IA32
191         help
192           Choose this if you have an Intel Pentium III or Pentium III based Celeron.
193
194 config IA32_P4
195         bool "Intel Pentium 4 / Celeron 4"
196         depends on IA32
197         help
198           Choose this if you have an Intel Pentium 4 or Pentium 4 based Celeron.
199
200 config IA32_PM
201         bool "Intel Pentium M"
202         depends on IA32
203         help
204           Choose this if you have an Intel Pentium M.
205
206 config IA32_CORE2
207         bool "Intel Core 2"
208         depends on IA32
209         help
210           Choose this if you have an Intel Core 2.
211
212 config IA32_ATOM
213         bool "Intel Atom"
214         depends on IA32
215         help
216           Choose this if you have an Intel Atom.
217
218 config IA32_K6
219         bool "AMD K6 / K6-II / K6-III"
220         depends on IA32
221         help
222           Choose this if you have an AMD K6 CPU.
223
224 config IA32_K7
225         bool "AMD Athlon / Duron"
226         depends on IA32
227         help
228           Choose this if you have an AMD Athlon or Duron CPU.
229
230 config IA32_K8
231         bool "AMD Opteron / Athlon64"
232         depends on IA32
233         help
234           Choose this if you have an AMD Opteron or Athlon64 CPU.
235
236 config IA32_K10
237         bool "AMD Barcelona (K10)"
238         depends on IA32
239         help
240           Choose this if you have an AMD Barcelona based CPU.
241
242
243 config AMD64_K8
244         bool "AMD Opteron / Athlon64"
245         depends on AMD64
246         help
247           Choose this if you have an AMD Opteron or Athlon64 CPU.
248
249 config AMD64_CORE2
250         bool "Intel Core 2"
251         depends on AMD64
252         help
253           Choose this if you have an Intel Core 2.
254
255 config AMD64_ATOM
256         bool "Intel Atom"
257         depends on AMD64
258         help
259           Choose this if you have an Intel Atom.
260
261 config AMD64_K10
262         bool "AMD Barcelona (K10)"
263         depends on AMD64
264         help
265           Choose this if you have an AMD Barcelona based CPU.
266
267
268 config PPC32_603e
269         bool "PowerPC 603e"
270         depends on PPC32
271         help
272           Choose this if you have an PowerPC 603e CPU.
273
274 config LEON3
275         bool "Gaisler SPARC LEON3"
276         depends on SPARC
277         help
278           Choose this if you have a LEON3 CPU.
279 endchoice
280
281
282
283 config CPU_VIRT
284         bool "Enable CPU virtualization (SVM and VT)"
285         depends on PF_PC
286         help
287           Support virtualization extensions that comes with x86 CPUs,
288           including nested paging. This feature allows you to run a virtual
289           machine monitor (VMM) on top of Fiasco.
290
291 config ARM_ALIGNMENT_CHECK
292         bool "Enable alignment check"
293         depends on ARM
294         help
295           Enable if you want to have alignment check enabled.
296
297 config ARM_TZ
298         bool "Enable ARM TrustZone support"
299         depends on (ARM_1176 || ARM_CORTEX_A8 || ARM_CORTEX_A9) && EXPERIMENTAL
300         help
301           Support ARM TrustZone security extension.
302
303 config ARM_CA9_ENABLE_SWP
304         bool "Enable the deprecated 'swp' instruction"
305         depends on ARM_CORTEX_A9
306         help
307           Enabling this option enables the deprecated 'swp' instruction.
308           Avoid to enable it.
309
310 config ARM_CACHE_L2CXX0
311         bool "Enable L2 Cache"
312         default y
313         depends on CAN_ARM_CACHE_L2CXX0
314         help 
315           Enable L2 cache functionality.
316
317 choice
318         prompt "Timer tick source"
319         depends on PF_PC || PF_UX
320         default SCHED_APIC
321
322 config SCHED_PIT
323         bool "Use PIT for scheduling"
324         depends on (PF_PC || PF_UX) && !MP
325         help
326           Normally, Fiasco uses the RTC at IRQ8 for scheduling. This can be
327           disadvantageous in certain circumstances, e.g. VMWare doesn't seem
328           to emulate the RTC good enough so that not enough timer interrupts
329           are produced. The PIT mode (using IRQ0) seems to work better in
330           this case.  It is generally safe to use this option, so if you are
331           unsure, say 'Y'.
332
333           Consider that the interrupt priorities change: Using RTC, IRQ8 has
334           the highest priority. Using PIT, IRQ0 has the highest priority.
335           The only case where PIT scheduling does not work is with
336           profiling. If profiling is enabled the PIT is used for generating
337           the profiling interrupts.
338
339 config SCHED_RTC
340         bool "Use RTC for scheduling"
341         depends on PF_PC && !MP
342         help
343           'Yes' is the standard for this option. If this option is set
344           Fiasco uses the RTC on IRQ 8 for scheduling.  This can be
345           disadvantageous in certain circumstances, e.g. VMWare doesn't seem
346           to emulate the RTC good enough so that not enough timer interrupts
347           are produced.  The PIT (8254) mode (say 'no' here), seems to work
348           better in this case. It is generally safe to use the PIT, so if
349           you are unsure, say 'no'.
350           Consider that the interrupt priorities change: Using RTC, IRQ8 has
351           the highest priority. Using PIT, IRQ0 has the highest priority.
352           The only case where PIT scheduling does not work is with
353           profiling. If profiling is enabled the PIT is used for generating
354           the profiling interrupts and the RTC must be used for scheduling.
355           In the case where profiling shall be used within VMWare the
356           SLOW_RTC option must be set, so that the timer resolution of
357           Fiasco is reduced to 100Hz.
358
359 config SCHED_APIC
360         bool "Use APIC timer for scheduling"
361         depends on PF_PC
362         help
363           Use the Local APIC for scheduling.
364
365 config SCHED_HPET
366         bool "Use HPET timer for scheduling (EXPERIMENTAL)"
367         depends on PF_PC && !MP && EXPERIMENTAL
368         help
369           Use the HPET timer for scheduling.
370
371 endchoice
372
373 config WORKAROUND_AMD_FPU_LEAK
374         bool "Enables workaroud for AMD FPU security leak"
375         depends on PF_PC
376         help
377           If you use Fiasco for high assurance, high security and use AMD
378           CPUs you should enable this option. In any other case it is no
379           harm to disable it.
380
381 config REGPARM3
382         bool "Compile with regparm=3"
383         default y
384         depends on IA32 && PF_PC
385         help
386           Compile Fiasco with -mregparm=3. This uses a different ABI and
387           passes the first three arguments of a function call in registers.
388
389 config FPU
390         bool "Enable FPU co-processor"
391         depends on ARM
392         help
393           Enable this if your platform has hardware floating point support.
394
395 config ARM_1176_CACHE_ALIAS_FIX
396         bool "Use cache restriction to supress aliasing issue on ARM1176"
397         depends on ARM_1176
398         help
399           The ARM1176 processor might have a memory aliasing problem when
400           using cache sizes of more than 16kB cache. Enabling this option
401           enables the workaround of reducing the cache size to 16kB.
402
403 config ARM_CPU_ERRATA
404         bool "Enable CPU errata workarounds"
405         depends on ARM && !ARM_TZ
406
407 endmenu # target
408
409 menu "Kernel options"
410
411 config MP
412         bool "Enable multi processor support"
413         depends on (PF_PC || PF_ARM_MP_CAPABLE || (PF_UX && EXPERIMENTAL))
414         help
415           Enable support for machines with multiple processors.
416
417 config MP_MAX_CPUS
418         int "Maximal supported number of CPUs"
419         depends on MP
420         range 1 128
421         default 4
422         help
423           The maximum number of CPUs the kernel supports.
424
425 #config ASSEMBLER_IPC_SHORTCUT
426 #       bool "Assembler IPC shortcut"
427 #       default y
428 #       depends on (PF_PC || PF_UX) && !MP
429 #       help
430 #         Use the assembler IPC shortcut to get even better short IPC
431 #         performance in the common case.
432
433 config CONTEXT_4K
434         bool #"TCB size of 4k"
435         default y
436         help
437           Use this option to use 4K kernel stacks. Only disable this option
438           when you know what you're doing.
439
440 config SLOW_RTC
441         bool "Use RTC with 100 ticks per second"
442         depends on SCHED_RTC
443         help
444           This option should be enabled if you use VMWare and no PIT
445           scheduling. The timer resolution is lowered to 100 ticks per
446           second.
447
448 config ONE_SHOT
449         bool "Use scheduling timer in one-shot mode"
450         depends on SCHED_APIC && SYNC_TSC
451         help
452           More costly than periodic but more fine-granular scheduling
453           possible.  EXPERIMENTAL!
454
455 config SYNC_TSC
456         bool "Use time-stamp counter for KIP and scheduling accounting"
457         depends on PF_PC && IA32
458         help
459           Synchronize the internal kernel clock with the CPU time stamp
460           counter.
461
462 config FINE_GRAINED_CPUTIME
463         bool "Fine-grained CPU time"
464         help
465           Measure CPU time consumed by a thread from switching to the thread
466           until switching to another thread. Induces an overhead during each
467           thread switch, so only activate it for debugging.
468
469 config UX_CON
470         bool "Graphical console (requires SDL library!)"
471         depends on PF_UX
472         help
473           Fiasco-UX can supply a graphical console for the L4 program it is
474           running.  Enabling this option will build the additional program
475           but needs the SDL library including development header files
476           installed.
477
478 config UX_NET
479         bool "Network support"
480         depends on PF_UX
481         help
482           Enabling this option makes Fiasco-UX provide network support for
483           L4 programs.
484
485 choice 
486         prompt "Scheduler"
487         default FIXED_PRIO
488
489 config SCHED_FIXED_PRIO
490         bool "Fixed priority scheduler"
491         help
492           Choose this for the standard fixed priority scheduler with
493           256 priority levels.
494
495 config SCHED_WFQ
496         bool "Weighted fair queueing scheduler"
497         depends on EXPERIMENTAL
498         help
499           Choose this scheduler for a weighted fair queueing scheduler
500           running with dynamic priorities.
501
502 config SCHED_FP_WFQ
503         bool "Combined fixed priority RT and WFQ scheduler"
504         depends on EXPERIMENTAL
505         help
506           Combination of Fixed priority and weighted fair queueing
507           scheduler.
508
509 endchoice
510
511 config DISABLE_VIRT_OBJ_SPACE
512         bool "No virtually mapped array for cap tables"
513         depends on (PF_PC || ARM) &&  EXPERIMENTAL
514         default n
515
516 endmenu # kernel options
517
518 menu "Debugging"
519
520 config INLINE
521         bool "Generate inline code"
522         default y
523         help
524           Inlining specifies that it is desirable for the compiler to
525           integrate functions declared 'inline' into the calling routine.
526           This usually leads to faster code, so unless you want to debug the
527           kernel you should say 'Y' here.
528
529 config NDEBUG
530         bool "Do not compile assertions"
531         help
532           Don't insert assertions into the code. Should be enabled for
533           kernels which are used for measurements.
534
535 config NO_FRAME_PTR
536         bool "Compile without frame pointer"
537         default y
538         help
539           Enabling this option optimizes for speed but makes debugging more
540           difficult.
541
542 config STACK_DEPTH
543         bool "Measure stack depth of threads"
544         help
545           When this option is enabled, each thread control block is marked
546           with magic numbers while creation. The function ``show thread
547           lists'' scans the TCB for these magic numbers and shows the
548           currently used depth of each thread.
549
550 config LIST_ALLOC_SANITY
551         bool "Sanity checks in low level allocator"
552         help
553           When this option is enabled the low level memory allocator does
554           extra sanity checks on its data structures before and after every
555           operation. This can halp detect  flaws like double frees or memory
556           corruption by other means.
557
558           These tests are very expensive so only enable them if a problem
559           with memory allocation is expected.
560
561 config BEFORE_IRET_SANITY
562         bool "Sanity checks at syscall entry/exit"
563         depends on PF_PC
564         help
565           Perform the following additional sanity checks before returning to
566           usermode:
567             - Does the thread hold any locks?
568             - Is the thread locked by any other thread?
569             - Does the thread have the right state:
570               * Thread_ready must be set.
571               * Thread_cancel and Thread_fpu_owner might be set.
572               * Any other state bit must not be set.
573           Don't use Fiasco compiled with this option for performance analysis!
574
575 config GSTABS
576         bool "Compile with gstabs+ debugging information"
577         depends on n
578         help
579           Enabling this option includes the debugging information using the
580           older gstabs+ format into the kernel image. This is necessary to
581           access line number information of the kernel from JDB.
582
583 config IRQ_SPINNER
584         bool "Display IRQ activity on VGA screen"
585         depends on PF_PC
586         help
587           Display IRQ activity on VGA screen.
588
589 config WATCHDOG
590         bool "Enable Watchdog support"
591         default y
592         depends on PF_PC
593         help
594           Enable support for watchdog using the builtin Local APIC and a
595           performance counter. The watchdog can be enabled using the
596           -watchdog command line option.
597
598 config SERIAL
599         bool "Support for debugging over serial line"
600         depends on PF_PC || ARM || PPC32 || SPARC
601         default y
602         help
603           This option enables support for input/output over serial interface.
604
605 menuconfig JDB
606         bool "JDB kernel debugger"
607         default y
608         help
609           The powerful Fiasco kernel debugger.
610
611 if JDB
612
613 config JDB_LOGGING
614         bool "JDB extended logging"
615         help
616           There are two classes of logging events: Basic events don't
617           consume any time if they are disabled (ipc, ipc result,
618           pagefaults, unmap). Extended logging events add an additional
619           overhead of most probably less than 10 cycles if they are
620           disabled. These events can be activated/deactivated by the 'O'
621           command in jdb.
622
623           Should be disabled for kernels which are used for measurements.
624
625 config JDB_DISASM
626         bool "JDB disassembler"
627         default n if ARM
628         default y
629         help
630           Add support for disassembly. Increases memory foot-print, only
631           enable when needed.
632
633 config JDB_GZIP
634         bool "GZIP compressed dumps"
635         default n if ARM
636         default y
637         help
638           Add supprt for gzip compressed dumps of the trace buffer.
639           Increases memory foot-print, only enabled when needed.
640
641 config JDB_ACCOUNTING
642         bool "JDB accounting"
643         depends on IA32
644         help
645           Enable accounting information about IPCs, context switches, page
646           faults, and other events. The counters are accessible from
647           userland through the tbuf status page.
648
649           Should be disabled for kernels which are used for measurements.
650
651 config JDB_MISC
652         bool "Miscellaneous JDB modules"
653         depends on PF_UX || PF_PC
654
655 endif # JDB
656
657
658 config VMEM_ALLOC_TEST
659         bool "Run test for Vmem_alloc allocator"
660         depends on ARM
661
662 config DEBUG_KERNEL_PAGE_FAULTS
663         bool "Debugging of kernel page-faults"
664         depends on ARM
665         help
666           This option enables logging of kernel page-faults (aka page faults
667           from kernel mode). The page faults are logged to the normal
668           console in the format *KP[pfa, error_code, ip].
669
670 config POWERSAVE_GETCHAR
671         bool "Save power in getchar()"
672         default y
673         depends on PF_PC
674         help
675           This option uses a processor HALT in getchar() to save power and
676           prevent some P4 processors from being overheated. This option
677           requires a working timer IRQ to wakeup getchar periodically.
678
679 choice
680         prompt "Warn levels"
681         default WARN_WARNING
682
683 config WARN_NONE
684         bool "Do not show show any kernel warning"
685
686 config WARN_WARNING
687         bool "Show messages of warning level"
688
689 config WARN_ANY
690         bool "Show all kernel warnings"
691
692 endchoice # warn levels
693
694 endmenu # debugging
695
696 menu "Compiling"
697
698 config CC
699         string "C compiler"
700         default "gcc"
701         help
702           Use this option to override the default C compiler (gcc).
703
704 config CXX
705         string "C++ compiler"
706         default "g++"
707         help
708           Use this option to override the default C++ compiler (g++).
709
710 config HOST_CC
711         string "C host compiler"
712         default "gcc"
713         help
714           Use this option to override the default C host compiler (gcc).
715
716 config HOST_CXX
717         string "C++ host compiler"
718         default "g++"
719         help
720           Use this option to override the default C++ host compiler (g++).
721
722 config MAINTAINER_MODE
723         bool "Do additional checks at build time"
724         help
725           This enables the circular dependency and initcall checks.
726           Say 'Yes' here if you do kernel hacking.
727
728 config LABEL
729         string "Configuration label"
730         help
731           Text string with a name for this configuration. To be displayed in
732           the kernel boot-up.
733
734 endmenu
735
736 config EXPERIMENTAL
737         bool "Prompt for experimental features"
738         help
739           Experimental features are available when enabling this option.
740           Enabling these features might be less than fully secure and may
741           disrupt the stability of your kernel.
742
743           Use with caution!
744
745 config PERF_CNT
746         def_bool y if JDB && (IA32 || AMD64 || ARM)
747
748 config BIT32
749         def_bool y if ARM || IA32 || PPC32 || SPARC
750
751 config BIT64
752         def_bool y if AMD64
753
754 config ARM_V6
755         def_bool y if ARM_1136 || ARM_1176 || ARM_MPCORE
756
757 config ARM_V7
758         def_bool y if ARM_CORTEX_A8 || ARM_CORTEX_A9
759
760 config ARM_V6PLUS
761         def_bool y if ARM_V6 || ARM_V7
762
763 config WARN_LEVEL
764         int
765         default 2 if WARN_ANY
766         default 1 if WARN_WARNING
767         default 0 if WARN_NONE
768
769 config XARCH
770         string
771         default "arm" if ARM
772         default "ux" if PF_UX
773         default "amd64" if AMD64 && PF_PC
774         default "ia32" if IA32 && PF_PC
775         default "ppc32" if PPC32
776         default "sparc" if SPARC
777
778 config IA32_TARGET
779         string
780         default "Intel 80486" if IA32_486
781         default "Intel Pentium" if IA32_586
782         default "Intel Pentium Pro" if IA32_686
783         default "Intel Pentium II" if IA32_P2
784         default "Intel Pentium III" if IA32_P3
785         default "Intel Pentium 4" if IA32_P4
786         default "Pentium M" if IA32_PM
787         default "AMD K6" if IA32_K6
788         default "AMD Athlon" if IA32_K7
789         default "Intel Core2" if IA32_CORE2 || AMD64_CORE2
790         default "Intel Atom" if IA32_ATOM || AMD64_ATOM
791         default "AMD Opteron" if IA32_K8 || AMD64_K8 || AMD64_K10 || IA32_K10
792
793 config ABI
794         string
795         default "vf"