BNX2X: manually removes the PTP code
[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 menu "Memory Management"
83
84 config PAGE_COLORING
85         bool "Page coloring"
86         default n
87         help
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
90                 years.
91
92 config BOXBORO
93         depends on PAGE_COLORING
94         bool "Boxboro-specific page coloring"
95         default n
96         help
97                 Say 'n'.
98
99 endmenu
100
101 menu "Kernel Debugging"
102
103 menu "Per-cpu Tracers"
104
105 config TRACE_KMSGS
106         bool "KMSG Tracing"
107         default n
108         help
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
112                 MCP proc_yield).
113
114 config TRACE_LOCKS
115         bool "Lock Tracing"
116         depends on SPINLOCK_DEBUG
117         default n
118         help
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.
123
124 endmenu
125
126 config DEVELOPMENT_ASSERTIONS
127         bool "dasserts"
128         default n
129         help
130                 Turn on dassert() in code, dassert will compile to assert().
131
132 config SPINLOCK_DEBUG
133         bool "Spinlock debugging"
134         default n
135         help
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
139                 acquisitions.
140
141 config SEQLOCK_DEBUG
142         bool "Seqlock debugging"
143         default n
144         help
145                 Provides asserts to detect seqlock errors.  This will allow a malicious
146                 userspace to trigger a panic in the kernel.
147
148 config SEMAPHORE_DEBUG
149         bool "Semaphore debugging"
150         default n
151         help
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.
155
156 config SEM_SPINWAIT
157         bool "Semaphore spinwaiting"
158         default n
159         help
160                 Turns on semaphore spinwaiting.  In lieu of intelligent Adaptive
161                 Mutexes, busy semaphores will just spin for a while before fully
162                 sleeping.
163
164 config SEM_SPINWAIT_NR_LOOPS
165         int "Number of polls before sleeping"
166         depends on SEM_SPINWAIT
167         default 100
168         help
169                 How many times to poll a busy semaphore before going to sleep.
170
171 config SEM_TRACE_BLOCKERS
172         bool "Semaphore Blocker Tracing"
173         default n
174         help
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.
178
179 config RESET_STACKS
180         bool "Reset Stacks"
181         default y
182         help
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.
186
187 config LARGE_KSTACKS
188         bool "Large (two-page) Kernel Stacks"
189         default y
190         help
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.
194
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
197                 crashes or panics.
198
199 config KTHREAD_POISON
200         bool "Kthread Poison Canary"
201         default n
202         help
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.
206
207 config DISABLE_SMT
208         bool "Disables symmetric multithreading"
209         default n
210         help
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.
214
215 config PRINTK_NO_BACKSPACE
216         bool "Printk with no backspace"
217         default n
218         help
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.
221
222 config SYSCALL_STRING_SAVING
223         bool "Syscall string saving"
224         default n
225         help
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.
229
230 config BLOCK_EXTRAS
231         bool "Block Extra Data"
232         default y
233         help
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.
238
239 endmenu
240
241 config VM
242         bool "Virtual Machine support"
243         default n
244         help
245                 VM support -- not working! Based on KVM.
246
247 menuconfig NIX
248         bool "NIX support"
249         default n
250         help
251                 NIX support -- Sort of working. You can start kernels that don't enable
252                 interrupts.
253
254 if NIX
255
256 config NIX_IMG_PADDR
257         hex "Physical address for the NIX image"
258         depends on NIX
259         default 0x40000000
260         help
261                 Physical address that the NIX device will allocate during
262                 initialization.
263
264 config NIX_IMG_SIZE
265         hex "Size of the NIX image"
266         depends on NIX
267         default 0x40000000
268         help
269                 Size in bytes of the NIX image.  Must be a power of two.
270
271 endif # NIX
272
273 menu "Misc/Old Options"
274
275 config ARSC_SERVER
276         bool "Asynchronous remote syscalls"
277         default n
278         help
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.
282
283 # SPARC auto-selects this
284 config APPSERVER
285         bool "Appserver"
286         default n
287         help
288                 Old school I/O was through a remote machine.  Not sure if anyone uses
289                 this anymore.
290
291 config SERIAL_IO
292         bool "Serial IO"
293         default n
294         help
295                 Like the appserver, serial I/O was an old attempt to process I/O on a
296                 remote machine across the serial port.
297
298 config SINGLE_CORE
299         bool "Single core"
300         default n
301         help
302                 Have the kernel boot only a single core.  Can be useful for debugging,
303                 but hasn't been used in years.
304
305 config BSD_ON_CORE0
306         bool "BSD on core 0"
307         default n
308         help
309                 This was an old joke.  Say 'n', since we can't simply #include <bsd>.
310
311 endmenu
312
313 source "kern/lib/Kconfig"
314
315 source "kern/src/ktest/Kconfig"