Adds a KMSG tracer
[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 DEMAND_PAGING
71         bool "Demand paging"
72         default n
73         help
74                 When turned on, mmap() calls do not immediately populate their pages.
75                 This does not turn on any sort of real paging.  Saying 'n' will act
76                 like all mmap()s have MAP_POPULATE.
77
78 config PAGE_COLORING
79         bool "Page coloring"
80         default n
81         help
82                 Turns on internal support for page coloring.  When turned off, the page
83                 allocator acts like there is only one color.  Hasn't been used in a few
84                 years.
85
86 config BOXBORO
87         depends on PAGE_COLORING
88         bool "Boxboro-specific page coloring"
89         default n
90         help
91                 Say 'n'.
92
93 endmenu
94
95 menu "Kernel Debugging"
96
97 config TRACE_KMSGS
98         bool "KMSG Tracing"
99         default n
100         help
101                 Turns on KMSG tracing, using the per-cpu ring buffer (holds about 256
102                 events).  You can access this from the monitor via "trace pcpui".  Turn
103                 this off for a slight performance improvement on every KMSG (and every
104                 MCP proc_yield).
105
106 config SPINLOCK_DEBUG
107         bool "Spinlock debugging"
108         default n
109         help
110                 Turns on debugging, which tracks the last time a lock was acquired and
111                 detects improper lock acquisition based on IRQ levels (e.g. using
112                 spin_lock() in IRQ context).  This will slow down all lock
113                 acquisitions.
114
115 config SEQLOCK_DEBUG
116         bool "Seqlock debugging"
117         default n
118         help
119                 Provides asserts to detect seqlock errors.  This will allow a malicious
120                 userspace to trigger a panic in the kernel.
121
122 config RESET_STACKS
123         bool "Reset Stacks"
124         default y
125         help
126                 When idling, the kernel will reset the stack of its kernel thread to
127                 the top of the stack, abandoning its context.  This is useful so we do
128                 not run off the end of our stacks, but makes backtracing difficult.
129
130 config KTHREAD_POISON
131         bool "Kthread Poison Canary"
132         default n
133         help
134                 Kthreads will use a bit of storage at the bottom of the stack to track
135                 the state of the kthread.  This is useful to catch various bugs with
136                 kthreading, such as launching the same kthread twice concurrently.
137
138 config DISABLE_SMT
139         bool "Disables symmetric multithreading"
140         default n
141         help
142                 Disables hyperthreading by telling the kernel to never give out even
143                 numbered cores to MCPs.  This does not check to see if the threads are
144                 in fact siblings, or if the target machine is hyperthreaded.
145
146 config PRINTK_NO_BACKSPACE
147         bool "Printk with no backspace"
148         default n
149         help
150                 One of the serial devices I was using a while back had issues printing
151                 backspaces.  This was an old hack to deal with that.
152
153 endmenu
154
155 menu "Misc/Old Options"
156
157 config ARSC_SERVER
158         bool "Asynchronous remote syscalls"
159         default n
160         help
161                 Code to run a syscall-server on a core.  A process can submit syscalls
162                 and get the results asynchronously.  Hasn't been used in years.  Say
163                 'n' unless you want to play around.
164
165 # SPARC auto-selects this
166 config APPSERVER
167         bool "Appserver"
168         default n
169         help
170                 Old school I/O was through a remote machine.  Not sure if anyone uses
171                 this anymore.
172
173 config SERIAL_IO
174         bool "Serial IO"
175         default n
176         help
177                 Like the appserver, serial I/O was an old attempt to process I/O on a
178                 remote machine across the serial port.
179
180 config SINGLE_CORE
181         bool "Single core"
182         default n
183         help
184                 Have the kernel boot only a single core.  Can be useful for debugging,
185                 but hasn't been used in years.
186
187 config BSD_ON_CORE0
188         bool "BSD on core 0"
189         default n
190         help
191                 This was an old joke.  Say 'n', since we can't simply #include <bsd>.
192
193 endmenu