3 mainmenu "Fiasco configuration"
7 option env="KERNELVERSION"
11 option env="INCLUDE_PPC32"
13 Use "INCLUDE_PPC32=y make config" to include ppc32 options.
17 option env="INCLUDE_SPARC"
19 Use "INCLUDE_SPARC=y make config" to include sparc options.
21 # generic options that might be selected by platforms etc.
25 config HAS_VIRT_OBJ_SPACE_OPTION
28 config HAS_SERIAL_OPTION
31 config HAS_WATCHDOG_OPTION
34 config HAS_JDB_DISASM_OPTION
37 config HAS_JDB_GZIP_OPTION
40 config HAS_IOMMU_OPTION
49 menu "Target configuration"
56 bool "Intel IA-32 processor family"
58 select HAS_VIRT_OBJ_SPACE_OPTION
59 select HAS_JDB_DISASM_OPTION
60 select HAS_JDB_GZIP_OPTION
63 bool "AMD64 processor family"
65 select HAS_VIRT_OBJ_SPACE_OPTION
66 select HAS_JDB_DISASM_OPTION
67 select HAS_JDB_GZIP_OPTION
79 default PF_PC if AMD64
84 depends on IA32 || AMD64
85 select HAS_SERIAL_OPTION
86 select HAS_WATCHDOG_OPTION
87 select HAS_IOMMU_OPTION
92 bool "Linux Usermode Platform"
107 depends on IA32 || AMD64 || UX
108 default IA32_686 if IA32
109 default AMD64_K8 if AMD64
115 Choose this if you have an Intel 80486 or equivalent CPU (i486).
118 bool "Intel Pentium / AMD K5"
121 Choose this if you have an Intel Pentium or compatible i586 CPU.
124 bool "Intel Pentium Pro"
127 Choose this if you have an Intel Pentium Pro or compatible i686 CPU.
130 bool "Intel Pentium II / Celeron II"
133 Choose this if you have an Intel Pentium II or Pentium II based Celeron.
136 bool "Intel Pentium III / Celeron III"
139 Choose this if you have an Intel Pentium III or Pentium III based Celeron.
142 bool "Intel Pentium 4 / Celeron 4"
145 Choose this if you have an Intel Pentium 4 or Pentium 4 based Celeron.
148 bool "Intel Pentium M"
151 Choose this if you have an Intel Pentium M.
157 Choose this if you have an Intel Core 2.
163 Choose this if you want to optimize for Core-i class CPUs.
169 Choose this if you have an Intel Atom.
172 bool "AMD K6 / K6-II / K6-III"
175 Choose this if you have an AMD K6 CPU.
178 bool "AMD Athlon / Duron"
181 Choose this if you have an AMD Athlon or Duron CPU.
184 bool "AMD Opteron / Athlon64"
187 Choose this if you have an AMD Opteron or Athlon64 CPU.
190 bool "AMD Barcelona (K10)"
193 Choose this if you have an AMD Barcelona based CPU.
197 bool "AMD Opteron / Athlon64"
200 Choose this if you have an AMD Opteron or Athlon64 CPU.
206 Choose this if you have an Intel Core 2.
212 Choose this if you want to optimize for Core-i class CPUs.
218 Choose this if you have an Intel Atom.
221 bool "AMD Barcelona (K10)"
224 Choose this if you have an AMD Barcelona based CPU.
229 bool "Virtualization"
230 depends on HAS_CPU_VIRT
232 Support virtualization extensions provided by CPUs, including
233 nested paging. This feature allows you to run a virtual machine
234 monitor (VMM) on top of Fiasco.
237 prompt "Timer tick source"
238 depends on PF_PC || PF_UX
242 bool "Use PIT for scheduling"
243 depends on (PF_PC || PF_UX) && !MP
245 Normally, Fiasco uses the RTC at IRQ8 for scheduling. This can be
246 disadvantageous in certain circumstances, e.g. VMWare doesn't seem
247 to emulate the RTC good enough so that not enough timer interrupts
248 are produced. The PIT mode (using IRQ0) seems to work better in
249 this case. It is generally safe to use this option, so if you are
252 Consider that the interrupt priorities change: Using RTC, IRQ8 has
253 the highest priority. Using PIT, IRQ0 has the highest priority.
254 The only case where PIT scheduling does not work is with
255 profiling. If profiling is enabled the PIT is used for generating
256 the profiling interrupts.
259 bool "Use RTC for scheduling"
260 depends on PF_PC && !MP
262 'Yes' is the standard for this option. If this option is set
263 Fiasco uses the RTC on IRQ 8 for scheduling. This can be
264 disadvantageous in certain circumstances, e.g. VMWare doesn't seem
265 to emulate the RTC good enough so that not enough timer interrupts
266 are produced. The PIT (8254) mode (say 'no' here), seems to work
267 better in this case. It is generally safe to use the PIT, so if
268 you are unsure, say 'no'.
269 Consider that the interrupt priorities change: Using RTC, IRQ8 has
270 the highest priority. Using PIT, IRQ0 has the highest priority.
271 The only case where PIT scheduling does not work is with
272 profiling. If profiling is enabled the PIT is used for generating
273 the profiling interrupts and the RTC must be used for scheduling.
274 In the case where profiling shall be used within VMWare the
275 SLOW_RTC option must be set, so that the timer resolution of
276 Fiasco is reduced to 100Hz.
279 bool "Use APIC timer for scheduling"
282 Use the Local APIC for scheduling.
285 bool "Use HPET timer for scheduling (EXPERIMENTAL)"
286 depends on PF_PC && !MP && EXPERIMENTAL
288 Use the HPET timer for scheduling.
292 config WORKAROUND_AMD_FPU_LEAK
293 bool "Enables workaroud for AMD FPU security leak"
296 If you use Fiasco for high assurance, high security and use AMD
297 CPUs you should enable this option. In any other case it is no
301 bool "Compile with regparm=3"
303 depends on IA32 && PF_PC
305 Compile Fiasco with -mregparm=3. This uses a different ABI and
306 passes the first three arguments of a function call in registers.
309 bool "Enable FPU co-processor" if HAS_FPU_OPTION
310 depends on HAS_FPU_OPTION
313 Enable this if your platform has hardware floating point support.
317 menu "Kernel options"
320 bool "Enable multi processor support"
321 depends on HAS_MP_OPTION
323 Enable support for machines with multiple processors.
326 int "Maximal supported number of CPUs"
331 The maximum number of CPUs the kernel supports.
333 #config ASSEMBLER_IPC_SHORTCUT
334 # bool "Assembler IPC shortcut"
336 # depends on (PF_PC || PF_UX) && !MP
338 # Use the assembler IPC shortcut to get even better short IPC
339 # performance in the common case.
342 bool #"TCB size of 8k"
345 Use this option to use 8K kernel stacks. Only disable this option
346 when you know what you're doing.
349 bool #"TCB size of 4k"
350 default y if !CONTEXT_8K
352 Use this option to use 4K kernel stacks. Only disable this option
353 when you know what you're doing.
356 bool "Use RTC with 100 ticks per second"
359 This option should be enabled if you use VMWare and no PIT
360 scheduling. The timer resolution is lowered to 100 ticks per
364 bool "Use scheduling timer in one-shot mode"
365 depends on SCHED_APIC && SYNC_TSC
367 More costly than periodic but more fine-granular scheduling
368 possible. EXPERIMENTAL!
371 bool "Use time-stamp counter for KIP and scheduling accounting"
372 depends on PF_PC && (IA32 || AMD64)
374 Synchronize the internal kernel clock with the CPU time stamp
377 config FINE_GRAINED_CPUTIME
378 bool "Fine-grained CPU time"
380 Measure CPU time consumed by a thread from switching to the thread
381 until switching to another thread. Induces an overhead during each
382 thread switch, so only activate it for debugging.
385 bool "Graphical console (requires SDL library!)"
388 Fiasco-UX can supply a graphical console for the L4 program it is
389 running. Enabling this option will build the additional program
390 but needs the SDL library including development header files
394 bool "Network support"
397 Enabling this option makes Fiasco-UX provide network support for
404 config SCHED_FIXED_PRIO
405 bool "Fixed priority scheduler"
407 Choose this for the standard fixed priority scheduler with
411 bool "Weighted fair queueing scheduler"
412 depends on EXPERIMENTAL
414 Choose this scheduler for a weighted fair queueing scheduler
415 running with dynamic priorities.
418 bool "Combined fixed priority RT and WFQ scheduler"
419 depends on EXPERIMENTAL
421 Combination of Fixed priority and weighted fair queueing
427 bool "Enable support for DMA remapping" if HAS_IOMMU_OPTION
428 depends on HAS_IOMMU_OPTION
430 This option enables support for DMA remapping (IO-MMUs).
431 When this option is enabled and the platform has a supported IO-MMU
432 the default is to block all DMA from remappable devices.
433 The user-level must use kernel DMA spaces in combination with
434 the IO-MMU kernel object to allow DMA.
436 config DISABLE_VIRT_OBJ_SPACE
437 bool "No virtually mapped array for cap tables" if HAS_VIRT_OBJ_SPACE_OPTION
438 depends on HAS_VIRT_OBJ_SPACE_OPTION && EXPERIMENTAL
440 config VIRT_OBJ_SPACE
442 depends on HAS_VIRT_OBJ_SPACE_OPTION
443 depends on !DISABLE_VIRT_OBJ_SPACE
445 endmenu # kernel options
450 bool "Generate inline code"
453 Inlining specifies that it is desirable for the compiler to
454 integrate functions declared 'inline' into the calling routine.
455 This usually leads to faster code, so unless you want to debug the
456 kernel you should say 'Y' here.
459 bool "Do not compile assertions"
461 Don't insert assertions into the code. Should be enabled for
462 kernels which are used for measurements.
465 bool "Compile without frame pointer"
468 Enabling this option optimizes for speed but makes debugging more
472 bool "Measure stack depth of threads"
474 When this option is enabled, each thread control block is marked
475 with magic numbers while creation. The function ``show thread
476 lists'' scans the TCB for these magic numbers and shows the
477 currently used depth of each thread.
479 config LIST_ALLOC_SANITY
480 bool "Sanity checks in low level allocator"
482 When this option is enabled the low level memory allocator does
483 extra sanity checks on its data structures before and after every
484 operation. This can halp detect flaws like double frees or memory
485 corruption by other means.
487 These tests are very expensive so only enable them if a problem
488 with memory allocation is expected.
490 config BEFORE_IRET_SANITY
491 bool "Sanity checks at syscall entry/exit"
494 Perform the following additional sanity checks before returning to
496 - Does the thread hold any locks?
497 - Is the thread locked by any other thread?
498 - Does the thread have the right state:
499 * Thread_ready must be set.
500 * Thread_cancel and Thread_fpu_owner might be set.
501 * Any other state bit must not be set.
502 Don't use Fiasco compiled with this option for performance analysis!
505 bool "Compile with gstabs+ debugging information"
508 Enabling this option includes the debugging information using the
509 older gstabs+ format into the kernel image. This is necessary to
510 access line number information of the kernel from JDB.
513 bool "Display IRQ activity on VGA screen"
516 Display IRQ activity on VGA screen.
519 bool "Enable Watchdog support" if HAS_WATCHDOG_OPTION
520 default y if HAS_WATCHDOG_OPTION
521 depends on HAS_WATCHDOG_OPTION
523 Enable support for watchdog using the builtin Local APIC and a
524 performance counter. The watchdog can be enabled using the
525 -watchdog command line option.
528 bool "Support for debugging over serial line" if HAS_SERIAL_OPTION
529 depends on HAS_SERIAL_OPTION
530 default y if HAS_SERIAL_OPTION
532 This option enables support for input/output over serial interface.
535 bool "JDB kernel debugger"
538 The powerful Fiasco kernel debugger.
543 bool "JDB extended logging"
546 There are two classes of logging events: Basic events don't
547 consume any time if they are disabled (ipc, ipc result,
548 pagefaults, unmap). Extended logging events add an additional
549 overhead of most probably less than 10 cycles if they are
550 disabled. These events can be activated/deactivated by the 'O'
553 Should be disabled for kernels which are used for measurements.
556 bool "JDB disassembler" if HAS_JDB_DISASM_OPTION
557 default y if HAS_JDB_DISASM_OPTION
559 Add support for disassembly. Increases memory foot-print, only
563 bool "GZIP compressed dumps" if HAS_JDB_GZIP_OPTION
564 default y if HAS_JDB_GZIP_OPTION
566 Add supprt for gzip compressed dumps of the trace buffer.
567 Increases memory foot-print, only enabled when needed.
569 config JDB_ACCOUNTING
570 bool "JDB accounting"
572 Enable accounting information about IPCs, context switches, page
573 faults, and other events. The counters are accessible from
574 userland through the tbuf status page.
576 Should be disabled for kernels which are used for measurements.
579 bool "Miscellaneous JDB modules"
580 depends on PF_UX || PF_PC
585 config POWERSAVE_GETCHAR
586 bool "Save power in getchar()"
590 This option uses a processor HALT in getchar() to save power and
591 prevent some P4 processors from being overheated. This option
592 requires a working timer IRQ to wakeup getchar periodically.
599 bool "Do not show show any kernel warning"
602 bool "Show messages of warning level"
605 bool "Show all kernel warnings"
607 endchoice # warn levels
617 Use this option to override the default C compiler (gcc).
620 string "C++ compiler"
623 Use this option to override the default C++ compiler (g++).
626 string "C host compiler"
629 Use this option to override the default C host compiler (gcc).
632 string "C++ host compiler"
635 Use this option to override the default C++ host compiler (g++).
637 config MAINTAINER_MODE
638 bool "Do additional checks at build time"
640 This enables the circular dependency and initcall checks.
641 Say 'Yes' here if you do kernel hacking.
644 string "Configuration label"
646 Text string with a name for this configuration. To be displayed in
652 bool "Prompt for experimental features"
654 Experimental features are available when enabling this option.
655 Enabling these features might be less than fully secure and may
656 disrupt the stability of your kernel.
661 def_bool y if JDB && (IA32 || AMD64 || ARM)
671 default 2 if WARN_ANY
672 default 1 if WARN_WARNING
673 default 0 if WARN_NONE
677 default "ux" if PF_UX
678 default "amd64" if AMD64 && PF_PC
679 default "ia32" if IA32 && PF_PC
684 default "Intel 80486" if IA32_486
685 default "Intel Pentium" if IA32_586
686 default "Intel Pentium Pro" if IA32_686
687 default "Intel Pentium II" if IA32_P2
688 default "Intel Pentium III" if IA32_P3
689 default "Intel Pentium 4" if IA32_P4
690 default "Pentium M" if IA32_PM
691 default "AMD K6" if IA32_K6
692 default "AMD Athlon" if IA32_K7
693 default "Intel Core2" if IA32_CORE2 || AMD64_CORE2
694 default "Intel Core-i" if IA32_CORE_I || AMD64_CORE_I
695 default "Intel Atom" if IA32_ATOM || AMD64_ATOM
696 default "AMD Opteron" if IA32_K8 || AMD64_K8 || AMD64_K10 || IA32_K10