blob: b9c1310fe451dad37e1643e37f69da2f72e2776d [file] [log] [blame] [edit]
#
# For a description of the syntax of this configuration file,
# see Linux's Documentation/kbuild/kconfig-language.txt.
#
mainmenu "Akaros/$SRCARCH Kernel Configuration"
# This is info, not a setable option. Must make ARCH=arch to change.
config SRCARCH
string
option env="ARCH"
config 64BIT
bool "64-bit kernel"
default y
help
Say yes to build a 64-bit kernel. Must be 'y' for x86.
menuconfig RUN_INIT_SCRIPT
bool "Run init script after boot"
default n
help
Run an init script after boot instead of dropping into the monitor
config INIT_SCRIPT_PATH_AND_ARGS
depends on RUN_INIT_SCRIPT
string "Path to init script, followed by its arguments."
default /bin/init.sh
help
Path to the init script run at boot time, followed by a space separated
list of arguments
source "kern/arch/$SRCARCH/Kconfig"
source "kern/src/net/Kconfig"
source "kern/drivers/Kconfig"
menu "Filesystems"
config KFS
bool "KFS filesystem"
default y
help
KFS is an initramfs bundled into the kernel, and contains your root
filesystem.
config KFS_PATHS
depends on KFS
string "KFS/Initramfs paths"
default kern/kfs
help
Space separated list of paths to directories to bundle into KFS. This
will be your root filesystem.
config KFS_CPIO_BIN
depends on KFS
string "KFS CPIO helper"
default ""
help
This binary (relative to the root directory) will be run before
bundling the KFS Paths into the CPIO.
config EXT2FS
bool "Ext2 filesystem"
default n
help
Build in support for ext2. Extremely experimental, and only works with
a block device image, which will be mounted at /mnt. If you select
this, you must specify a block device.
config EXT2_BDEV
depends on EXT2FS
string "Ext2 image file"
default mnt/ext2fs.img
help
This file needs to be an ext2 image (file that looks like a block
device). You should be able to mount this file in your host OS. It
will be bundled into the kernel and mounted at /mnt.
endmenu
menu "Memory Management"
config PAGE_COLORING
bool "Page coloring"
default n
help
Turns on internal support for page coloring. When turned off, the page
allocator acts like there is only one color. Hasn't been used in a few
years.
config BOXBORO
depends on PAGE_COLORING
bool "Boxboro-specific page coloring"
default n
help
Say 'n'.
endmenu
menu "Kernel Debugging"
menu "Per-cpu Tracers"
config TRACE_KMSGS
bool "KMSG Tracing"
default n
help
Turns on KMSG tracing, using the per-cpu ring buffer (holds about 256
events). You can access this from the monitor via "trace pcpui". Turn
this off for a slight performance improvement on every KMSG (and every
MCP proc_yield).
config TRACE_LOCKS
bool "Lock Tracing"
depends on SPINLOCK_DEBUG
default n
help
Turns on lock tracing, using the per-cpu ring buffer. This records the
a timestamp and lock address, in an over-write tracing style (meaning
it'll clobber older events). If you have locking issues, this may give
you clues as to which locks were grabbed recently.
endmenu
config DEVELOPMENT_ASSERTIONS
bool "dasserts"
default n
help
Turn on dassert() in code, dassert will compile to assert().
config SPINLOCK_DEBUG
bool "Spinlock debugging"
default n
help
Turns on debugging, which tracks the last time a lock was acquired and
detects improper lock acquisition based on IRQ levels (e.g. using
spin_lock() in IRQ context). This will slow down all lock
acquisitions.
config SEQLOCK_DEBUG
bool "Seqlock debugging"
default n
help
Provides asserts to detect seqlock errors. This will allow a malicious
userspace to trigger a panic in the kernel.
config SEMAPHORE_DEBUG
bool "Semaphore debugging"
default n
help
Turns on debugging, which tracks the last time and location that a
semaphore was downed, and provides a linked list of all semaphores that
have waiters. This will slow down all semaphore ups and downs.
config SEM_SPINWAIT
bool "Semaphore spinwaiting"
default n
help
Turns on semaphore spinwaiting. In lieu of intelligent Adaptive
Mutexes, busy semaphores will just spin for a while before fully
sleeping.
config SEM_SPINWAIT_NR_LOOPS
int "Number of polls before sleeping"
depends on SEM_SPINWAIT
default 100
help
How many times to poll a busy semaphore before going to sleep.
config SEM_TRACE_BLOCKERS
bool "Semaphore Blocker Tracing"
default n
help
Drops a TRACEME whenever a semaphore would block (barring slight
races). To access the trace data, you'll need to use the opcontrols
and process the data with op2.
config RESET_STACKS
bool "Reset Stacks"
default y
help
When idling, the kernel will reset the stack of its kernel thread to
the top of the stack, abandoning its context. This is useful so we do
not run off the end of our stacks, but makes backtracing difficult.
config LARGE_KSTACKS
bool "Large (two-page) Kernel Stacks"
default y
help
Ideally, we'd like to use single-page stacks, which are easier on the
memory allocator. Some of the Plan 9 code hogs stack space, and we may
run off the end of a single-page stack.
Say 'y' to play it safe and use the larger, slower stacks. Say 'n' for
higher performance, and mention this setting if you have any weird
crashes or panics.
config KTHREAD_POISON
bool "Kthread Poison Canary"
default n
help
Kthreads will use a bit of storage at the bottom of the stack to track
the state of the kthread. This is useful to catch various bugs with
kthreading, such as launching the same kthread twice concurrently.
config DISABLE_SMT
bool "Disables symmetric multithreading"
default n
help
Disables hyperthreading by telling the kernel to never give out even
numbered cores to MCPs. This does not check to see if the threads are
in fact siblings, or if the target machine is hyperthreaded.
config PRINTK_NO_BACKSPACE
bool "Printk with no backspace"
default n
help
One of the serial devices I was using a while back had issues printing
backspaces. This was an old hack to deal with that.
config SYSCALL_STRING_SAVING
bool "Syscall string saving"
default n
help
Kmallocs a small buffer for each syscall and attaches it to the
kthread, which can be viewed when debugging semaphores. Individual
syscalls can save info in this buffer.
config BLOCK_EXTRAS
bool "Block Extra Data"
default y
help
Extends blocks to have a list of other memory blocks. Useful for
networking performance. This is only an option while we debug the
implementation. Say y. If you have networking bugs, try turning this
off, and if that helps, tell someone.
endmenu
config VM
bool "Virtual Machine support"
default n
help
VM support -- not working! Based on KVM.
menuconfig NIX
bool "NIX support"
default n
help
NIX support -- Sort of working. You can start kernels that don't enable
interrupts.
if NIX
config NIX_IMG_PADDR
hex "Physical address for the NIX image"
depends on NIX
default 0x40000000
help
Physical address that the NIX device will allocate during
initialization.
config NIX_IMG_SIZE
hex "Size of the NIX image"
depends on NIX
default 0x40000000
help
Size in bytes of the NIX image. Must be a power of two.
endif # NIX
menu "Misc/Old Options"
config ARSC_SERVER
bool "Asynchronous remote syscalls"
default n
help
Code to run a syscall-server on a core. A process can submit syscalls
and get the results asynchronously. Hasn't been used in years. Say
'n' unless you want to play around.
# SPARC auto-selects this
config APPSERVER
bool "Appserver"
default n
help
Old school I/O was through a remote machine. Not sure if anyone uses
this anymore.
config SERIAL_IO
bool "Serial IO"
default n
help
Like the appserver, serial I/O was an old attempt to process I/O on a
remote machine across the serial port.
config SINGLE_CORE
bool "Single core"
default n
help
Have the kernel boot only a single core. Can be useful for debugging,
but hasn't been used in years.
config BSD_ON_CORE0
bool "BSD on core 0"
default n
help
This was an old joke. Say 'n', since we can't simply #include <bsd>.
endmenu
source "kern/lib/Kconfig"
source "kern/src/ktest/Kconfig"