2 # For a description of the syntax of this configuration file,
3 # see Linux's Documentation/kbuild/kconfig-language.txt.
5 mainmenu "Akaros/$SRCARCH Kernel Configuration"
7 # This is info, not a setable option. Must make ARCH=arch to change.
16 Say yes to build a 64-bit kernel. Must be 'y' for x86.
18 menuconfig RUN_INIT_SCRIPT
19 bool "Run init script after boot"
22 Run an init script after boot instead of dropping into the monitor
24 config INIT_SCRIPT_PATH_AND_ARGS
25 depends on RUN_INIT_SCRIPT
26 string "Path to init script, followed by its arguments."
29 Path to the init script run at boot time, followed by a space separated
32 source "kern/arch/$SRCARCH/Kconfig"
34 source "kern/src/net/Kconfig"
36 source "kern/drivers/Kconfig"
44 KFS is an initramfs bundled into the kernel, and contains your root
49 string "KFS/Initramfs paths"
52 Space separated list of paths to directories to bundle into KFS. This
53 will be your root filesystem.
57 string "KFS CPIO helper"
60 This binary (relative to the root directory) will be run before
61 bundling the KFS Paths into the CPIO.
64 bool "Ext2 filesystem"
67 Build in support for ext2. Extremely experimental, and only works with
68 a block device image, which will be mounted at /mnt. If you select
69 this, you must specify a block device.
73 string "Ext2 image file"
74 default mnt/ext2fs.img
76 This file needs to be an ext2 image (file that looks like a block
77 device). You should be able to mount this file in your host OS. It
78 will be bundled into the kernel and mounted at /mnt.
82 menu "Memory Management"
88 Turns on internal support for page coloring. When turned off, the page
89 allocator acts like there is only one color. Hasn't been used in a few
93 depends on PAGE_COLORING
94 bool "Boxboro-specific page coloring"
101 menu "Kernel Debugging"
103 menu "Per-cpu Tracers"
109 Turns on KMSG tracing, using the per-cpu ring buffer (holds about 256
110 events). You can access this from the monitor via "trace pcpui". Turn
111 this off for a slight performance improvement on every KMSG (and every
116 depends on SPINLOCK_DEBUG
119 Turns on lock tracing, using the per-cpu ring buffer. This records the
120 a timestamp and lock address, in an over-write tracing style (meaning
121 it'll clobber older events). If you have locking issues, this may give
122 you clues as to which locks were grabbed recently.
126 config DEVELOPMENT_ASSERTIONS
130 Turn on dassert() in code, dassert will compile to assert().
132 config SPINLOCK_DEBUG
133 bool "Spinlock debugging"
136 Turns on debugging, which tracks the last time a lock was acquired and
137 detects improper lock acquisition based on IRQ levels (e.g. using
138 spin_lock() in IRQ context). This will slow down all lock
142 bool "Seqlock debugging"
145 Provides asserts to detect seqlock errors. This will allow a malicious
146 userspace to trigger a panic in the kernel.
148 config SEMAPHORE_DEBUG
149 bool "Semaphore debugging"
152 Turns on debugging, which tracks the last time and location that a
153 semaphore was downed, and provides a linked list of all semaphores that
154 have waiters. This will slow down all semaphore ups and downs.
157 bool "Semaphore spinwaiting"
160 Turns on semaphore spinwaiting. In lieu of intelligent Adaptive
161 Mutexes, busy semaphores will just spin for a while before fully
164 config SEM_SPINWAIT_NR_LOOPS
165 int "Number of polls before sleeping"
166 depends on SEM_SPINWAIT
169 How many times to poll a busy semaphore before going to sleep.
171 config SEM_TRACE_BLOCKERS
172 bool "Semaphore Blocker Tracing"
175 Drops a TRACEME whenever a semaphore would block (barring slight
176 races). To access the trace data, you'll need to use the opcontrols
177 and process the data with op2.
183 When idling, the kernel will reset the stack of its kernel thread to
184 the top of the stack, abandoning its context. This is useful so we do
185 not run off the end of our stacks, but makes backtracing difficult.
188 bool "Large (two-page) Kernel Stacks"
191 Ideally, we'd like to use single-page stacks, which are easier on the
192 memory allocator. Some of the Plan 9 code hogs stack space, and we may
193 run off the end of a single-page stack.
195 Say 'y' to play it safe and use the larger, slower stacks. Say 'n' for
196 higher performance, and mention this setting if you have any weird
199 config KTHREAD_POISON
200 bool "Kthread Poison Canary"
203 Kthreads will use a bit of storage at the bottom of the stack to track
204 the state of the kthread. This is useful to catch various bugs with
205 kthreading, such as launching the same kthread twice concurrently.
208 bool "Disables symmetric multithreading"
211 Disables hyperthreading by telling the kernel to never give out even
212 numbered cores to MCPs. This does not check to see if the threads are
213 in fact siblings, or if the target machine is hyperthreaded.
215 config PRINTK_NO_BACKSPACE
216 bool "Printk with no backspace"
219 One of the serial devices I was using a while back had issues printing
220 backspaces. This was an old hack to deal with that.
222 config SYSCALL_STRING_SAVING
223 bool "Syscall string saving"
226 Kmallocs a small buffer for each syscall and attaches it to the
227 kthread, which can be viewed when debugging semaphores. Individual
228 syscalls can save info in this buffer.
231 bool "Block Extra Data"
234 Extends blocks to have a list of other memory blocks. Useful for
235 networking performance. This is only an option while we debug the
236 implementation. Say y. If you have networking bugs, try turning this
237 off, and if that helps, tell someone.
242 bool "Virtual Machine support"
245 VM support -- not working! Based on KVM.
251 NIX support -- Sort of working. You can start kernels that don't enable
257 hex "Physical address for the NIX image"
261 Physical address that the NIX device will allocate during
265 hex "Size of the NIX image"
269 Size in bytes of the NIX image. Must be a power of two.
273 menu "Misc/Old Options"
276 bool "Asynchronous remote syscalls"
279 Code to run a syscall-server on a core. A process can submit syscalls
280 and get the results asynchronously. Hasn't been used in years. Say
281 'n' unless you want to play around.
283 # SPARC auto-selects this
288 Old school I/O was through a remote machine. Not sure if anyone uses
295 Like the appserver, serial I/O was an old attempt to process I/O on a
296 remote machine across the serial port.
302 Have the kernel boot only a single core. Can be useful for debugging,
303 but hasn't been used in years.
309 This was an old joke. Say 'n', since we can't simply #include <bsd>.
313 source "kern/lib/Kconfig"
315 source "kern/src/ktest/Kconfig"