Allow hardware devices to pad frames to mintu
[akaros.git] / Kconfig
1 #
2 # For a description of the syntax of this configuration file,
3 # see Linux's Documentation/kbuild/kconfig-language.txt.
4 #
5 mainmenu "Akaros/$SRCARCH Kernel Configuration"
6
7 # This is info, not a setable option.  Must make ARCH=arch to change.
8 config SRCARCH
9         string
10         option env="ARCH"
11
12 config 64BIT
13         bool "64-bit kernel"
14         default n
15         help
16                 Say yes to build a 64-bit kernel, amd64 / x86_64, riscv64, etc.
17
18 source "kern/arch/$SRCARCH/Kconfig"
19
20 source "kern/src/net/Kconfig"
21
22 source "kern/drivers/Kconfig"
23
24 menu "Filesystems"
25
26 config KFS
27         bool "KFS filesystem"
28         default y
29         help
30                 KFS is an initramfs bundled into the kernel, and contains your root
31                 filesystem.
32
33 config KFS_PATHS
34         depends on KFS
35         string "KFS/Initramfs paths"
36         default kern/kfs
37         help
38                 Space separated list of paths to directories to bundle into KFS.  This
39                 will be your root filesystem.
40
41 config KFS_CPIO_BIN
42         depends on KFS
43         string "KFS CPIO helper"
44         default ""
45         help
46                 This binary (relative to the root directory) will be run before
47                 bundling the KFS Paths into the CPIO.
48
49 config EXT2FS
50         bool "Ext2 filesystem"
51         default n
52         help
53                 Build in support for ext2.  Extremely experimental, and only works with
54                 a block device image, which will be mounted at /mnt.  If you select
55                 this, you must specify a block device.
56
57 config EXT2_BDEV
58         depends on EXT2FS
59         string "Ext2 image file"
60         default mnt/ext2fs.img
61         help
62                 This file needs to be an ext2 image (file that looks like a block
63                 device).  You should be able to mount this file in your host OS.  It
64                 will be bundled into the kernel and mounted at /mnt.
65
66 endmenu
67
68 menu "Memory Management"
69
70 config PAGE_COLORING
71         bool "Page coloring"
72         default n
73         help
74                 Turns on internal support for page coloring.  When turned off, the page
75                 allocator acts like there is only one color.  Hasn't been used in a few
76                 years.
77
78 config BOXBORO
79         depends on PAGE_COLORING
80         bool "Boxboro-specific page coloring"
81         default n
82         help
83                 Say 'n'.
84
85 endmenu
86
87 menu "Kernel Debugging"
88
89 menu "Per-cpu Tracers"
90
91 config TRACE_KMSGS
92         bool "KMSG Tracing"
93         default n
94         help
95                 Turns on KMSG tracing, using the per-cpu ring buffer (holds about 256
96                 events).  You can access this from the monitor via "trace pcpui".  Turn
97                 this off for a slight performance improvement on every KMSG (and every
98                 MCP proc_yield).
99
100 config TRACE_LOCKS
101         bool "Lock Tracing"
102         depends on SPINLOCK_DEBUG
103         default n
104         help
105                 Turns on lock tracing, using the per-cpu ring buffer.  This records the
106                 a timestamp and lock address, in an over-write tracing style (meaning
107                 it'll clobber older events).  If you have locking issues, this may give
108                 you clues as to which locks were grabbed recently.
109
110 endmenu
111
112 config SPINLOCK_DEBUG
113         bool "Spinlock debugging"
114         default n
115         help
116                 Turns on debugging, which tracks the last time a lock was acquired and
117                 detects improper lock acquisition based on IRQ levels (e.g. using
118                 spin_lock() in IRQ context).  This will slow down all lock
119                 acquisitions.
120
121 config SEQLOCK_DEBUG
122         bool "Seqlock debugging"
123         default n
124         help
125                 Provides asserts to detect seqlock errors.  This will allow a malicious
126                 userspace to trigger a panic in the kernel.
127
128 config SEMAPHORE_DEBUG
129         bool "Semaphore debugging"
130         default n
131         help
132                 Turns on debugging, which tracks the last time and location that a
133                 semaphore was downed, and provides a linked list of all semaphores that
134                 have waiters.  This will slow down all semaphore ups and downs.
135
136 config RESET_STACKS
137         bool "Reset Stacks"
138         default y
139         help
140                 When idling, the kernel will reset the stack of its kernel thread to
141                 the top of the stack, abandoning its context.  This is useful so we do
142                 not run off the end of our stacks, but makes backtracing difficult.
143
144 config LARGE_KSTACKS
145         bool "Large (two-page) Kernel Stacks"
146         default y
147         help
148                 Ideally, we'd like to use single-page stacks, which are easier on the
149                 memory allocator.  Some of the Plan 9 code hogs stack space, and we may
150                 run off the end of a single-page stack.
151
152                 Say 'y' to play it safe and use the larger, slower stacks.  Say 'n' for
153                 higher performance, and mention this setting if you have any weird
154                 crashes or panics.
155
156 config KTHREAD_POISON
157         bool "Kthread Poison Canary"
158         default n
159         help
160                 Kthreads will use a bit of storage at the bottom of the stack to track
161                 the state of the kthread.  This is useful to catch various bugs with
162                 kthreading, such as launching the same kthread twice concurrently.
163
164 config DISABLE_SMT
165         bool "Disables symmetric multithreading"
166         default n
167         help
168                 Disables hyperthreading by telling the kernel to never give out even
169                 numbered cores to MCPs.  This does not check to see if the threads are
170                 in fact siblings, or if the target machine is hyperthreaded.
171
172 config PRINTK_NO_BACKSPACE
173         bool "Printk with no backspace"
174         default n
175         help
176                 One of the serial devices I was using a while back had issues printing
177                 backspaces.  This was an old hack to deal with that.
178
179 config SYSCALL_STRING_SAVING
180         bool "Syscall string saving"
181         default n
182         help
183                 Kmallocs a small buffer for each syscall and attaches it to the
184                 kthread, which can be viewed when debugging semaphores.  Individual
185                 syscalls can save info in this buffer.
186
187 endmenu
188
189 config VM
190         bool "Virtual Machine support"
191         default n
192         help
193                 VM support -- not working! Based on KVM.
194
195
196 menu "Misc/Old Options"
197
198 config ARSC_SERVER
199         bool "Asynchronous remote syscalls"
200         default n
201         help
202                 Code to run a syscall-server on a core.  A process can submit syscalls
203                 and get the results asynchronously.  Hasn't been used in years.  Say
204                 'n' unless you want to play around.
205
206 # SPARC auto-selects this
207 config APPSERVER
208         bool "Appserver"
209         default n
210         help
211                 Old school I/O was through a remote machine.  Not sure if anyone uses
212                 this anymore.
213
214 config SERIAL_IO
215         bool "Serial IO"
216         default n
217         help
218                 Like the appserver, serial I/O was an old attempt to process I/O on a
219                 remote machine across the serial port.
220
221 config SINGLE_CORE
222         bool "Single core"
223         default n
224         help
225                 Have the kernel boot only a single core.  Can be useful for debugging,
226                 but hasn't been used in years.
227
228 config BSD_ON_CORE0
229         bool "BSD on core 0"
230         default n
231         help
232                 This was an old joke.  Say 'n', since we can't simply #include <bsd>.
233
234 endmenu
235
236 source "kern/src/ktest/Kconfig"