mm: Fix type bug
[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 y
15         help
16                 Say yes to build a 64-bit kernel.  Must be 'y' for x86.
17
18 menuconfig RUN_INIT_SCRIPT
19         bool "Run init script after boot"
20         default n
21         help
22                 Run an init script after boot instead of dropping into the monitor
23
24 config INIT_SCRIPT_PATH_AND_ARGS
25     depends on RUN_INIT_SCRIPT
26     string "Path to init script, followed by its arguments."
27     default /bin/init.sh
28     help
29                 Path to the init script run at boot time, followed by a space separated
30                 list of arguments
31
32 source "kern/arch/$SRCARCH/Kconfig"
33
34 source "kern/src/net/Kconfig"
35
36 source "kern/drivers/Kconfig"
37
38 menu "Filesystems"
39
40 config KFS
41         bool "KFS filesystem"
42         default y
43         help
44                 KFS is an initramfs bundled into the kernel, and contains your root
45                 filesystem.
46
47 config KFS_PATHS
48         depends on KFS
49         string "KFS/Initramfs paths"
50         default kern/kfs
51         help
52                 Space separated list of paths to directories to bundle into KFS.  This
53                 will be your root filesystem.
54
55 config KFS_CPIO_BIN
56         depends on KFS
57         string "KFS CPIO helper"
58         default ""
59         help
60                 This binary (relative to the root directory) will be run before
61                 bundling the KFS Paths into the CPIO.
62
63 config EXT2FS
64         bool "Ext2 filesystem"
65         default n
66         help
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.
70
71 config EXT2_BDEV
72         depends on EXT2FS
73         string "Ext2 image file"
74         default mnt/ext2fs.img
75         help
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.
79
80 endmenu
81
82 choice COREALLOC_POLICY
83         prompt "Core Allocation Policy"
84         help
85                 Select a policy for allocating cores to a process upon request.  All
86                 strategies first allocate cores from the set of provisioned cores for a
87                 process, but differ in how they select cores beyond this.
88
89 config COREALLOC_FCFS
90         bool "Simple FCFS"
91         help
92                 Allocate cores to processes on a first-come-first-served basis. All
93                 cores are treated equally, and no topology information is used to try
94                 and optimize which cores are given to which processes upon request.
95
96 config COREALLOC_PACKED
97         bool "Packed Topology"
98         help
99                 Allocate cores to a process based on a topology-aware algorithm that
100                 tries to pack allocated cores as close together as possible.  It first
101                 tries to pair new cores with their hyper-threaded pair, then keep them
102                 on the same socket, then the same numa domain.
103
104 endchoice
105
106 menu "Kernel Debugging"
107
108 menu "Per-cpu Tracers"
109
110 config TRACE_KMSGS
111         bool "KMSG Tracing"
112         default n
113         help
114                 Turns on KMSG tracing, using the per-cpu ring buffer (holds about 256
115                 events).  You can access this from the monitor via "trace pcpui".  Turn
116                 this off for a slight performance improvement on every KMSG (and every
117                 MCP proc_yield).
118
119 config TRACE_LOCKS
120         bool "Lock Tracing"
121         depends on SPINLOCK_DEBUG
122         default n
123         help
124                 Turns on lock tracing, using the per-cpu ring buffer.  This records the
125                 a timestamp and lock address, in an over-write tracing style (meaning
126                 it'll clobber older events).  If you have locking issues, this may give
127                 you clues as to which locks were grabbed recently.
128
129 endmenu
130
131 config DEVELOPMENT_ASSERTIONS
132         bool "dasserts"
133         default n
134         help
135                 Turn on dassert() in code, dassert will compile to assert().
136
137 config SPINLOCK_DEBUG
138         bool "Spinlock debugging"
139         default n
140         help
141                 Turns on debugging, which tracks the last time a lock was acquired and
142                 detects improper lock acquisition based on IRQ levels (e.g. using
143                 spin_lock() in IRQ context).  This will slow down all lock
144                 acquisitions.
145
146 config SEQLOCK_DEBUG
147         bool "Seqlock debugging"
148         default n
149         help
150                 Provides asserts to detect seqlock errors.  This will allow a malicious
151                 userspace to trigger a panic in the kernel.
152
153 config SEMAPHORE_DEBUG
154         bool "Semaphore debugging"
155         default n
156         help
157                 Turns on debugging, which tracks the last time and location that a
158                 semaphore was downed, and provides a linked list of all semaphores that
159                 have waiters.  This will slow down all semaphore ups and downs.
160
161 config SEM_SPINWAIT
162         bool "Semaphore spinwaiting"
163         default n
164         help
165                 Turns on semaphore spinwaiting.  In lieu of intelligent Adaptive
166                 Mutexes, busy semaphores will just spin for a while before fully
167                 sleeping.
168
169 config SEM_SPINWAIT_NR_LOOPS
170         int "Number of polls before sleeping"
171         depends on SEM_SPINWAIT
172         default 100
173         help
174                 How many times to poll a busy semaphore before going to sleep.
175
176 config LARGE_KSTACKS
177         bool "Large (two-page) Kernel Stacks"
178         default y
179         help
180                 Ideally, we'd like to use single-page stacks, which are easier on the
181                 memory allocator.  Some of the Plan 9 code hogs stack space, and we may
182                 run off the end of a single-page stack.
183
184                 Say 'y' to play it safe and use the larger, slower stacks.  Say 'n' for
185                 higher performance, and mention this setting if you have any weird
186                 crashes or panics.
187
188 config DISABLE_SMT
189         bool "Disables symmetric multithreading"
190         default n
191         help
192                 Disables hyperthreading by telling the kernel to never give out even
193                 numbered cores to MCPs.  This does not check to see if the threads are
194                 in fact siblings, or if the target machine is hyperthreaded.
195
196 config PRINTK_NO_BACKSPACE
197         bool "Printk with no backspace"
198         default n
199         help
200                 One of the serial devices I was using a while back had issues printing
201                 backspaces.  This was an old hack to deal with that.
202
203 config SYSCALL_STRING_SAVING
204         bool "Syscall string saving"
205         default n
206         help
207                 Kmallocs a small buffer for each syscall and attaches it to the
208                 kthread, which can be viewed when debugging semaphores.  Individual
209                 syscalls can save info in this buffer.
210
211 config BLOCK_EXTRAS
212         bool "Block Extra Data"
213         default y
214         help
215                 Extends blocks to have a list of other memory blocks.  Useful for
216                 networking performance.  This is only an option while we debug the
217                 implementation.  Say y.  If you have networking bugs, try turning this
218                 off, and if that helps, tell someone.
219
220 config BETTER_BACKTRACE
221         bool "Better backtraces, less optimizations"
222         default n
223         help
224                 The kernel uses the frame pointer and call stacks for backtraces.
225                 Tail-call optimizations remove some of this information.  Say 'Y' here
226                 to have better backtraces, at the expense of performance.
227
228 endmenu
229
230 menu "Misc/Old Options"
231
232 config ARSC_SERVER
233         bool "Asynchronous remote syscalls"
234         default n
235         help
236                 Code to run a syscall-server on a core.  A process can submit syscalls
237                 and get the results asynchronously.  Hasn't been used in years.  Say
238                 'n' unless you want to play around.
239
240 # SPARC auto-selects this
241 config APPSERVER
242         bool "Appserver"
243         default n
244         help
245                 Old school I/O was through a remote machine.  Not sure if anyone uses
246                 this anymore.
247
248 config SERIAL_IO
249         bool "Serial IO"
250         default n
251         help
252                 Like the appserver, serial I/O was an old attempt to process I/O on a
253                 remote machine across the serial port.
254
255 config SINGLE_CORE
256         bool "Single core"
257         default n
258         help
259                 Have the kernel boot only a single core.  Can be useful for debugging,
260                 but hasn't been used in years.
261
262 config BSD_ON_CORE0
263         bool "BSD on core 0"
264         default n
265         help
266                 This was an old joke.  Say 'n', since we can't simply #include <bsd>.
267
268 endmenu
269
270 source "kern/lib/Kconfig"
271
272 source "kern/src/ktest/Kconfig"