b67c9ddf175fb90a486a537e48027afb027f4068
[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 source "kern/arch/$SRCARCH/Kconfig"
13
14 source "kern/src/net/Kconfig"
15
16 menu "Drivers"
17
18 menuconfig E1000
19         depends on NETWORKING && X86
20         bool "e1000 driver"
21         default n
22         help
23                 Buggy e1000 driver.  Use at your own risk.
24
25 if E1000
26 config E1000_MMIO_HACK
27         bool "e1000 MMIO hack"
28         default n
29         help
30                 Legacy option, say 'n'.
31
32 config E1000_ON_BOXBORO
33         bool "e1000 on Boxboro"
34         default n
35         help
36                 Legacy option, say 'n'.
37
38 config E1000_ON_S142
39         bool "e1000 on s142"
40         default n
41         help
42                 Legacy option, say 'n'.
43
44 endif # E1000
45
46 # Mostly just a placeholder.  These options do nothing.
47 config REALTEK8168
48         depends on NETWORKING && X86
49         bool "Realtek 8168"
50         default n
51         help
52                 Buggy realtek driver.  Use at your own risk.  This CONFIG option
53                 actually does nothing; the code is built regardless.
54
55 config ETH_AUDIO
56         depends on NETWORKING && X86
57         bool "Ethernet audio"
58         default n
59         help
60                 Build old support for David Wessel's ethernet audio device.
61
62 endmenu
63
64 menu "Filesystems"
65
66 config KFS
67         bool "KFS filesystem"
68         default y
69         help
70                 KFS is an initramfs bundled into the kernel, and contains your root
71                 filesystem.
72
73 config KFS_PATHS
74         depends on KFS
75         string "KFS/Initramfs paths"
76         default kern/kfs
77         help
78                 Space separated list of paths to directories to bundle into KFS.  This
79                 will be your root filesystem.
80
81 config KFS_CPIO_BIN
82         depends on KFS
83         string "KFS CPIO helper"
84         default ""
85         help
86                 This binary (relative to the root directory) will be run before
87                 bundling the KFS Paths into the CPIO.
88
89 config EXT2FS
90         bool "Ext2 filesystem"
91         default n
92         help
93                 Build in support for ext2.  Extremely experimental, and only works with
94                 a block device image, which will be mounted at /mnt.  If you select
95                 this, you must specify a block device.
96
97 config EXT2_BDEV
98         depends on EXT2FS
99         string "Ext2 image file"
100         default mnt/ext2fs.img
101         help
102                 This file needs to be an ext2 image (file that looks like a block
103                 device).  You should be able to mount this file in your host OS.  It
104                 will be bundled into the kernel and mounted at /mnt.
105
106 endmenu
107
108 menu "Memory Management"
109
110 config DEMAND_PAGING
111         bool "Demand paging"
112         default n
113         help
114                 When turned on, mmap() calls do not immediately populate their pages.
115                 This does not turn on any sort of real paging.  Saying 'n' will act
116                 like all mmap()s have MAP_POPULATE.
117
118 config PAGE_COLORING
119         bool "Page coloring"
120         default n
121         help
122                 Turns on internal support for page coloring.  When turned off, the page
123                 allocator acts like there is only one color.  Hasn't been used in a few
124                 years.
125
126 config BOXBORO
127         depends on PAGE_COLORING
128         bool "Boxboro-specific page coloring"
129         default n
130         help
131                 Say 'n'.
132
133 endmenu
134
135 menu "Kernel Debugging"
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 RESET_STACKS
154         bool "Reset Stacks"
155         default y
156         help
157                 When idling, the kernel will reset the stack of its kernel thread to
158                 the top of the stack, abandoning its context.  This is useful so we do
159                 not run off the end of our stacks, but makes backtracing difficult.
160
161 config KTHREAD_POISON
162         bool "Kthread Poison Canary"
163         default n
164         help
165                 Kthreads will use a bit of storage at the bottom of the stack to track
166                 the state of the kthread.  This is useful to catch various bugs with
167                 kthreading, such as launching the same kthread twice concurrently.
168
169 config DISABLE_SMT
170         bool "Disables symmetric multithreading"
171         default n
172         help
173                 Disables hyperthreading by telling the kernel to never give out even
174                 numbered cores to MCPs.  This does not check to see if the threads are
175                 in fact siblings, or if the target machine is hyperthreaded.
176
177 config PRINTK_NO_BACKSPACE
178         bool "Printk with no backspace"
179         default n
180         help
181                 One of the serial devices I was using a while back had issues printing
182                 backspaces.  This was an old hack to deal with that.
183
184 endmenu
185
186 menu "Misc/Old Options"
187
188 config ARSC_SERVER
189         bool "Asynchronous remote syscalls"
190         default n
191         help
192                 Code to run a syscall-server on a core.  A process can submit syscalls
193                 and get the results asynchronously.  Hasn't been used in years.  Say
194                 'n' unless you want to play around.
195
196 # SPARC auto-selects this
197 config APPSERVER
198         bool "Appserver"
199         default n
200         help
201                 Old school I/O was through a remote machine.  Not sure if anyone uses
202                 this anymore.
203
204 config SERIAL_IO
205         bool "Serial IO"
206         default n
207         help
208                 Like the appserver, serial I/O was an old attempt to process I/O on a
209                 remote machine across the serial port.
210
211 config SINGLE_CORE
212         bool "Single core"
213         default n
214         help
215                 Have the kernel boot only a single core.  Can be useful for debugging,
216                 but hasn't been used in years.
217
218 config BSD_ON_CORE0
219         bool "BSD on core 0"
220         default n
221         help
222                 This was an old joke.  Say 'n', since we can't simply #include <bsd>.
223
224 endmenu