Kernel configuration uses Kconfig
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 3 Jun 2013 07:30:54 +0000 (00:30 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 3 Jun 2013 07:35:04 +0000 (00:35 -0700)
To get started, $ make ARCH=<your_arch> defconfig.
To change things, $ make [config | menuconfig].

Rebuild the kernel and test applications.

15 files changed:
GETTING_STARTED
Kconfig
Makeconfig [deleted file]
Makefile
Makelocal.template
arch [new symlink]
config-default [new file with mode: 0644]
kern/arch/i686/Kconfig [new file with mode: 0644]
kern/arch/i686/configs/defconfig [new symlink]
kern/arch/riscv/Kconfig [new file with mode: 0644]
kern/arch/riscv/configs/defconfig [new symlink]
kern/arch/sparc/Kconfig [new file with mode: 0644]
kern/arch/sparc/configs/defconfig [new symlink]
kern/src/net/Kconfig [new file with mode: 0644]
tests/Makefile

index f697f46..588c1bb 100644 (file)
@@ -31,9 +31,10 @@ usually idling in there (alone), and if I'm at my computer, I'll respond.
 I'll describe how to get x86 working.  RISCV is similar.
 
 The first step is to configure the kernel.  config, menuconfig, and some of the
-other KBuild targets work.  For example, to config for 32 bit x86:
+other KBuild targets work.  Defconfig gives you a default configuration.  For
+example, to config for 32 bit x86:
 
-$ make ARCH=i686 config
+$ make ARCH=i686 defconfig
 
 3.1 Cross compiler (and glibc)
 ----------
diff --git a/Kconfig b/Kconfig
index 46c3313..b67c9dd 100644 (file)
--- a/Kconfig
+++ b/Kconfig
 #
 # For a description of the syntax of this configuration file,
-# see Documentation/kbuild/kconfig-language.txt.
+# see Linux's Documentation/kbuild/kconfig-language.txt.
 #
-mainmenu "Akaros/$ARCH $KERNELVERSION Kernel Configuration"
+mainmenu "Akaros/$SRCARCH Kernel Configuration"
 
+# This is info, not a setable option.  Must make ARCH=arch to change.
 config SRCARCH
        string
        option env="ARCH"
 
-#source "arch/$SRCARCH/Kconfig"
+source "kern/arch/$SRCARCH/Kconfig"
+
+source "kern/src/net/Kconfig"
+
+menu "Drivers"
+
+menuconfig E1000
+       depends on NETWORKING && X86
+       bool "e1000 driver"
+       default n
+       help
+               Buggy e1000 driver.  Use at your own risk.
+
+if E1000
+config E1000_MMIO_HACK
+       bool "e1000 MMIO hack"
+       default n
+       help
+               Legacy option, say 'n'.
+
+config E1000_ON_BOXBORO
+       bool "e1000 on Boxboro"
+       default n
+       help
+               Legacy option, say 'n'.
+
+config E1000_ON_S142
+       bool "e1000 on s142"
+       default n
+       help
+               Legacy option, say 'n'.
+
+endif # E1000
+
+# Mostly just a placeholder.  These options do nothing.
+config REALTEK8168
+       depends on NETWORKING && X86
+       bool "Realtek 8168"
+       default n
+       help
+               Buggy realtek driver.  Use at your own risk.  This CONFIG option
+               actually does nothing; the code is built regardless.
+
+config ETH_AUDIO
+       depends on NETWORKING && X86
+       bool "Ethernet audio"
+       default n
+       help
+               Build old support for David Wessel's ethernet audio device.
+
+endmenu
+
+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 DEMAND_PAGING
+       bool "Demand paging"
+       default n
+       help
+               When turned on, mmap() calls do not immediately populate their pages.
+               This does not turn on any sort of real paging.  Saying 'n' will act
+               like all mmap()s have MAP_POPULATE.
+
+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"
+
+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 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 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.
+
+endmenu
+
+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
diff --git a/Makeconfig b/Makeconfig
deleted file mode 100644 (file)
index dd4a0cf..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-# General Purpose configuration parameters
-# By default, each of these options will be turned off
-# To enable any of these options, add a line like the following to your Makelocal
-# CFLAGS += $(CONFIG_APPSERVER)
-CONFIG_APPSERVER:=                 -DCONFIG_APPSERVER
-CONFIG_DEMO_SLAVE:=                -DCONFIG_DEMO_SLAVE
-CONFIG_ARSC_SERVER:=               -DCONFIG_ARSC_SERVER
-
-# Kernel configuration parameters
-# By default, each of these options will be turned off
-# To enable any of these options, add a line like the following to your Makelocal
-# KERN_CFLAGS += $(CONFIG_KFS) $(CONFIG_BSD_ON_CORE0)
-CONFIG_KFS:=                       -DCONFIG_KFS
-CONFIG_EXT2FS:=                    -DCONFIG_EXT2FS
-CONFIG_SINGLE_CORE:=               -DCONFIG_SINGLE_CORE
-CONFIG_NETWORKING:=                -DCONFIG_NETWORKING
-CONFIG_SERIAL_IO:=                 -DCONFIG_SERIAL_IO
-CONFIG_BSD_ON_CORE0:=              -DCONFIG_BSD_ON_CORE0
-CONFIG_SEQLOCK_DEBUG:=             -DCONFIG_SEQLOCK_DEBUG
-CONFIG_SPINLOCK_DEBUG:=            -DCONFIG_SPINLOCK_DEBUG
-CONFIG_SPINPDR_NO_CAS:=            -DCONFIG_SPINPDR_NO_CAS
-CONFIG_PAGE_COLORING:=             -DCONFIG_PAGE_COLORING
-CONFIG_DEMAND_PAGING:=             -DCONFIG_DEMAND_PAGING
-CONFIG_NOMTRRS:=                   -DCONFIG_NOMTRRS
-CONFIG_E1000_MMIO_HACK:=           -DCONFIG_E1000_MMIO_HACK
-CONFIG_E1000_ON_BOXBORO:=          -DE1000_MMIO_ADDR=0x9bb20000
-CONFIG_E1000_ON_S142:=             -DE1000_MMIO_ADDR=0xfbee0000
-CONFIG_ENABLE_MPTABLES:=           -DCONFIG_ENABLE_MPTABLES
-CONFIG_MONITOR_ON_INT:=            -DCONFIG_MONITOR_ON_INT
-CONFIG_DISABLE_SMT:=               -DCONFIG_DISABLE_SMT
-CONFIG_BOXBORO:=                   -DCONFIG_BOXBORO
-CONFIG_RESET_STACKS:=              -DCONFIG_RESET_STACKS
-CONFIG_PCI_VERBOSE:=               -DCONFIG_PCI_VERBOSE
-CONFIG_ETH_AUDIO:=                 -DCONFIG_ETH_AUDIO
-CONFIG_KB_CORE0_ONLY:=             -DCONFIG_KB_CORE0_ONLY
-CONFIG_KTHREAD_POISON:=            -DCONFIG_KTHREAD_POISON
-CONFIG_PRINTK_NO_BACKSPACE:=       -DCONFIG_PRINTK_NO_BACKSPACE
-CONFIG_SOCKET:=                    -DCONFIG_SOCKET
-
-# Userspace configuration parameters
-# By default, each of these options will be turned off
-# To enable any of these options, add a line like the following to your Makelocal
-# USER_CFLAGS += $(CONFIG_SYSCALL_TRAP)
-CONFIG_SYSCALL_TRAP:=              -DCONFIG_SYSCALL_TRAP
-CONFIG_USER_DEBUGINFO:=            -g
-
-# User tests configuration parameters
-# By default, each of these options will be turned off
-# To enable any of these options, add a line like the following to your Makelocal
-# TESTS_CFLAGS += $(CONFIG_STATIC_APPS)
-CONFIG_STATIC_APPS:=               -static
-
index 9897db0..2274775 100644 (file)
--- a/Makefile
+++ b/Makefile
 #      of the default settings that silentoldconfig uses, but I'll leave it as-is
 #      for now, and just symlink that into kern/include.  It'll be easier for us,
 #      and also potentially easier if we ever move kern/ up a level.  Similarly,
-#      there are default Kconfigs in arch/, not in kern/arch.  I might change
-#      that, if we want to support defconfig, or just symlink it.
+#      there are default Kconfigs in arch/, not in kern/arch.  I just symlinked
+#      arch->kern/arch to keep everything simple.
 #
 # TODO:
-#      - Connect to kconfig, have it generate our CONFIGS, instead of makelocal.
-#              - what about userspace / tests?
-#                      the only one is SYSCALL_TRAP.  the others control building
-#                      - keep them using the old style
-#              - might need to symlink arch -> kern/arch/ too
-#                      - though def config is hardcoded to arch/$ARCH, instead of k/a/
-#
 #      - Consider merging the two target-detection bits (Linux's config, mixed, or
-#      dot target, and the symlink handling).
-#
-#      - Do we want some sort of default config?  Or the ability to change arches
-#      and keep common vars?
+#      dot target, and the symlink handling).  Also, could consider moving around
+#      the KFS and EXT2 targets.  Clean doesn't need to know about them, for
+#      instance.
 #
 #      - Review, with an eye for being better about $(srctree).  It might only be
-#      necessary in this file, if we every do the KBUILD_OUTPUT option
+#      necessary in this file, if we every do the KBUILD_OUTPUT option.  But we
+#      don't always want it (like for the implicit rule for Makefile)
 #
 #      - It's a bit crazy that we build symlinks for parlib, instead of it
 #      managing its own links based on $(ARCH)
@@ -119,7 +112,8 @@ symlinks:
     endif # ifneq ($(arch-link),)
 endif # ifeq ($(ARCH),)
 
-export ARCH
+SRCARCH := $(ARCH)
+export ARCH SRCARCH
 
 # Generic Kbuild Environment
 # =========================================================================
@@ -297,6 +291,13 @@ ifeq ($(config-targets),1)
 # ===========================================================================
 # *config targets only - make sure prerequisites are updated, and descend
 # in scripts/kconfig to make the *config target
+
+# Default config file, per arch.  This path will resolve to
+# arch/$ARCH/configs/defconfig (arch -> kern/arch).  Each arch can override
+# this if they want, or just symlink to one in the main root directory.
+KBUILD_DEFCONFIG := defconfig
+export KBUILD_DEFCONFIG
+
 config: scripts_basic symlinks FORCE
        $(Q)mkdir -p include/config
        $(Q)$(MAKE) $(build)=scripts/kconfig $@
@@ -348,16 +349,24 @@ dummy-1 := $(shell mkdir -p $(OBJDIR)/kern/)
 KERNEL_OBJ := $(OBJDIR)/kern/akaros-kernel
 CMP_KERNEL_OBJ := $(KERNEL_OBJ).gz
 
-# TODO: have the KFS paths be determined in .config
-# Give it a reasonable default path for initramfs to avoid build breakage
-INITRAMFS_PATHS = kern/kfs
-FIRST_INITRAMFS_PATH = $(firstword $(INITRAMFS_PATHS))
+# Since we're doing this outside of the dot-config part, some targets, such as
+# clean, won't read in our .config/auto.conf, and won't know about the
+# KFS_PATH.  Future rules related to KFS will have issues (mkdir with no
+# argument, or a find of the entire pwd).  It's also possible someone provided
+# an empty path.  To deal with both, we'll just have a sensible default.
+kfs-paths :=  $(patsubst "%",%,$(CONFIG_KFS_PATHS))
+ifeq ($(kfs-paths),)
+kfs-paths := kern/kfs
+endif
 
-export OBJDIR INITRAMFS_PATHS FIRST_INITRAMFS_PATH
+FIRST_KFS_PATH = $(firstword $(kfs-paths))
+
+export OBJDIR FIRST_KFS_PATH
 
 # Avoiding implicit rules
-$(srctree)/Makeconfig $(srctree)/Makelocal: ;
-include $(srctree)/Makeconfig
+$(srctree)/Makelocal: ;
+# TODO: one issue is that we import all types of targets: build, clean, etc.
+# That makes it a bit tougher to reorganize with ifeqs.
 -include $(srctree)/Makelocal
 
 # Akaros Kernel Build
@@ -388,19 +397,26 @@ akaros-deps := $(kbuild_akaros_main)  kern/arch/$(ARCH)/kernel.ld
 
 kern_cpio := $(OBJDIR)/kern/initramfs.cpio
 kern_cpio_obj := $(kern_cpio).o
-ifneq ($(EXT2_BDEV),)
-ext2_bdev_obj := $(OBJDIR)/kern/$(shell basename $(EXT2_BDEV)).o
+
+# ext2 will crash at runtime if we don't have a block device.  try to catch the
+# errors now.  if it is a bad one, you're just out of luck.
+ifneq ($(CONFIG_EXT2FS),)
+ext2-bdev := $(patsubst "%",%,$(CONFIG_EXT2_BDEV))
+ifeq ($(ext2-bdev),)
+$(error EXT2 selected with no block device [$(ext2-bdev)], fix your .config)
+endif
+ext2_bdev_obj = $(OBJDIR)/kern/$(shell basename $(ext2-bdev)).o
 endif
 
-kern_initramfs_files := $(shell mkdir -p $(INITRAMFS_PATHS); \
-                          find $(INITRAMFS_PATHS))
+kern_initramfs_files := $(shell mkdir -p $(kfs-paths); \
+                          find $(kfs-paths))
 
 $(kern_cpio) initramfs: $(kern_initramfs_files)
        @echo "  Building initramfs:"
-       @if [ "$(INITRAMFS_BIN)" != "" ]; then \
-        sh $(INITRAMFS_BIN); \
+       @if [ "$(CONFIG_KFS_CPIO_BIN)" != "" ]; then \
+        sh $(CONFIG_KFS_CPIO_BIN); \
     fi
-       $(Q)for i in $(INITRAMFS_PATHS); do cd $$i; \
+       $(Q)for i in $(kfs-paths); do cd $$i; \
         echo "    Adding $$i to initramfs..."; \
         find -L . | cpio --quiet -oH newc > \
                        $(CURDIR)/$(kern_cpio); \
@@ -413,7 +429,8 @@ ld_arch = $(shell $(OBJDUMP) -i | grep -v BFD | grep "^  [a-z]" | head -n1)
 $(kern_cpio_obj): $(kern_cpio)
        $(Q)$(OBJCOPY) -I binary -B $(ld_arch) -O $(ld_emulation) $^ $@
 
-$(ext2_bdev_obj): $(EXT2_BDEV)
+# If no ext2, this will be (empty) : (empty)
+$(ext2_bdev_obj): $(ext2-bdev)
        $(Q)$(OBJCOPY) -I binary -B $(ld_arch) -O $(ld_emulation) $^ $@
 
 # TODO super-bugged objdump!  Passing -S (intermix source) and having auto.conf
@@ -497,10 +514,10 @@ install-tests:
 
 # TODO: cp -u all of the .sos, but flush it on an arch change (same with tests)
 fill-kfs: install-libs install-tests
-       @mkdir -p $(FIRST_INITRAMFS_PATH)/lib
+       @mkdir -p $(FIRST_KFS_PATH)/lib
        @cp $(addprefix $(XCC_ROOT)/$(ARCH)-ros/lib/, \
-         libc.so.6 ld.so.1 libm.so libgcc_s.so.1) $(FIRST_INITRAMFS_PATH)/lib
-       $(Q)$(STRIP) --strip-debug $(addprefix $(FIRST_INITRAMFS_PATH)/lib/, \
+         libc.so.6 ld.so.1 libm.so libgcc_s.so.1) $(FIRST_KFS_PATH)/lib
+       $(Q)$(STRIP) --strip-debug $(addprefix $(FIRST_KFS_PATH)/lib/, \
                                               libc.so.6 ld.so.1)
 
 # Use doxygen to make documentation for ROS (Untested since 2010 or so)
@@ -582,6 +599,10 @@ mrproper: $(mrproper-dirs) clean clean_symlinks
 PHONY += FORCE
 FORCE:
 
+# Don't put the srctree on this, make is looking for Makefile, not
+# /full/path/to/Makefile.
+Makefile: ; # avoid implicit rule on Makefile
+
 # Declare the contents of the .PHONY variable as phony.  We keep that
 # information in a variable so we can use it in if_changed and friends.
 .PHONY: $(PHONY)
index de5311c..2783027 100644 (file)
@@ -1,54 +1,8 @@
-# General Purpose configuration parameters
-#CFLAGS_KERNEL += $(CONFIG_APPSERVER)
-#CFLAGS_USER += $(CONFIG_APPSERVER)
-
-# Kernel configuration parameters
-CFLAGS_KERNEL += $(CONFIG_KFS)
-#CFLAGS_KERNEL += $(CONFIG_EXT2FS)
-#CFLAGS_KERNEL += $(CONFIG_SINGLE_CORE)
-#CFLAGS_KERNEL += $(CONFIG_NETWORKING)
-#CFLAGS_KERNEL += $(CONFIG_SERIAL_IO)
-#CFLAGS_KERNEL += $(CONFIG_BSD_ON_CORE0)
-#CFLAGS_KERNEL += $(CONFIG_SPINLOCK_DEBUG)
-#CFLAGS_KERNEL += $(CONFIG_SPINPDR_NO_CAS)
-# Enabling this can cause userspace to make the kernel panic.
-#CFLAGS_KERNEL += $(CONFIG_SEQLOCK_DEBUG)
-#CFLAGS_KERNEL += $(CONFIG_PAGE_COLORING)
-#CFLAGS_KERNEL += $(CONFIG_DEMAND_PAGING)
-#CFLAGS_KERNEL += $(CONFIG_NOMTRRS)
-#CFLAGS_KERNEL += $(CONFIG_E1000_MMIO_HACK)
-#CFLAGS_KERNEL += $(CONFIG_E1000_ON_BOXBORO)
-#CFLAGS_KERNEL += $(CONFIG_E1000_ON_S142)
-#CFLAGS_KERNEL += $(CONFIG_ENABLE_MPTABLES)
-#CFLAGS_KERNEL += $(CONFIG_MONITOR_ON_INT)
-#CFLAGS_KERNEL += $(CONFIG_DISABLE_SMT)
-#CFLAGS_KERNEL += $(CONFIG_BOXBORO)
-#CFLAGS_KERNEL += $(CONFIG_ARSC_SERVER)
-#CFLAGS_KERNEL += $(CONFIG_RESET_STACKS)
-#CFLAGS_KERNEL += $(CONFIG_PCI_VERBOSE)
-#CFLAGS_KERNEL += $(CONFIG_ETH_AUDIO)
-#CFLAGS_KERNEL += $(CONFIG_KB_CORE0_ONLY)
-#CFLAGS_KERNEL += $(CONFIG_KTHREAD_POISON)
-#CFLAGS_KERNEL += $(CONFIG_PRINTK_NO_BACKSPACE)
-#CFLAGS_KERNEL += $(CONFIG_DEBUG_BREAKPOINT)
-
-# Paths for the initramfs (need to be directories)
-#INITRAMFS_PATHS = kern/kfs obj/tests
-INITRAMFS_PATHS = kern/kfs
-#INITRAMFS_BIN = tools/test.sh
-#EXT2_BDEV = mnt/ext2fs.img
-
 # Userspace configuration parameters
-#CFLAGS_USER += $(CONFIG_SYSCALL_TRAP)
-#CFLAGS_USER += $(CONFIG_USER_DEBUGINFO)
-
-# User tests configuration parameters
-#CFLAGS_TESTS += $(CONFIG_STATIC_APPS)
-
-# Default for sparc (i.e. needs an appserver)
-ifeq ($(TARGET_ARCH),sparc)
-CFLAGS_KERNEL += $(CONFIG_APPSERVER)
-endif
+#CFLAGS_USER += -DCONFIG_APPSERVER
+#CFLAGS_USER += -DCONFIG_SYSCALL_TRAP
+#CFLAGS_USER += -g
+#CFLAGS_TESTS += -static
 
 # brho's custom targets.  Customize to your system.
 #$(OBJDIR)/kern/.kvm.touch: $(KERNEL_OBJ)
diff --git a/arch b/arch
new file mode 120000 (symlink)
index 0000000..030c4fe
--- /dev/null
+++ b/arch
@@ -0,0 +1 @@
+kern/arch/
\ No newline at end of file
diff --git a/config-default b/config-default
new file mode 100644 (file)
index 0000000..1eea7f2
--- /dev/null
@@ -0,0 +1,56 @@
+# default config.  While this is x86 specific, when config'd for RISCV, the x86
+# specific items will be ignored.
+#
+# Akaros/i686 Kernel Configuration
+#
+CONFIG_X86=y
+
+#
+# x86 Hacks
+#
+# CONFIG_PCI_VERBOSE is not set
+# CONFIG_NOMTRRS is not set
+# CONFIG_ENABLE_MPTABLES is not set
+# CONFIG_KB_CORE0_ONLY is not set
+CONFIG_NETWORKING=y
+CONFIG_SOCKET=y
+
+#
+# Drivers
+#
+# CONFIG_E1000 is not set
+# CONFIG_REALTEK8168 is not set
+# CONFIG_ETH_AUDIO is not set
+
+#
+# Filesystems
+#
+CONFIG_KFS=y
+CONFIG_KFS_PATHS="kern/kfs"
+CONFIG_KFS_CPIO_BIN=""
+# CONFIG_EXT2FS is not set
+
+#
+# Memory Management
+#
+# CONFIG_DEMAND_PAGING is not set
+# CONFIG_PAGE_COLORING is not set
+
+#
+# Kernel Debugging
+#
+# CONFIG_SPINLOCK_DEBUG is not set
+# CONFIG_SEQLOCK_DEBUG is not set
+CONFIG_RESET_STACKS=y
+# CONFIG_KTHREAD_POISON is not set
+# CONFIG_DISABLE_SMT is not set
+# CONFIG_PRINTK_NO_BACKSPACE is not set
+
+#
+# Misc/Old Options
+#
+# CONFIG_ARSC_SERVER is not set
+# CONFIG_APPSERVER is not set
+# CONFIG_SERIAL_IO is not set
+# CONFIG_SINGLE_CORE is not set
+# CONFIG_BSD_ON_CORE0 is not set
diff --git a/kern/arch/i686/Kconfig b/kern/arch/i686/Kconfig
new file mode 100644 (file)
index 0000000..b18407b
--- /dev/null
@@ -0,0 +1,33 @@
+config X86
+       def_bool y
+
+menu "x86 Hacks"
+
+config PCI_VERBOSE
+       bool "Verbose PCI Output"
+       default n
+       help
+               Will print out extra information related to PCI.
+
+config NOMTRRS
+       bool "Disable MTRRs"
+       default n
+       help
+               Old debug option from when we were having issues with MTRRs.  If your
+               machine won't boot, try turning this on.
+
+config ENABLE_MPTABLES
+       bool "Enable MP Tables"
+       default n
+       help
+               Turns on basic MP tables support.  If you want to route IRQs, you'll
+               need this, until we get around to parsing ACPI tables.
+
+config KB_CORE0_ONLY
+       bool "Keyboard from core0 only"
+       default n
+       help
+               Say 'n' unless you are using a buggy x86 machine that can't handle
+               polling the keyboard PIO from cores other than core 0.
+
+endmenu
diff --git a/kern/arch/i686/configs/defconfig b/kern/arch/i686/configs/defconfig
new file mode 120000 (symlink)
index 0000000..b98ff45
--- /dev/null
@@ -0,0 +1 @@
+../../../../config-default
\ No newline at end of file
diff --git a/kern/arch/riscv/Kconfig b/kern/arch/riscv/Kconfig
new file mode 100644 (file)
index 0000000..fc4ecc1
--- /dev/null
@@ -0,0 +1,2 @@
+config RISCV
+       def_bool y
diff --git a/kern/arch/riscv/configs/defconfig b/kern/arch/riscv/configs/defconfig
new file mode 120000 (symlink)
index 0000000..b98ff45
--- /dev/null
@@ -0,0 +1 @@
+../../../../config-default
\ No newline at end of file
diff --git a/kern/arch/sparc/Kconfig b/kern/arch/sparc/Kconfig
new file mode 100644 (file)
index 0000000..e91f2fa
--- /dev/null
@@ -0,0 +1,3 @@
+config SPARC
+       def_bool y
+       select APPSERVER
diff --git a/kern/arch/sparc/configs/defconfig b/kern/arch/sparc/configs/defconfig
new file mode 120000 (symlink)
index 0000000..b98ff45
--- /dev/null
@@ -0,0 +1 @@
+../../../../config-default
\ No newline at end of file
diff --git a/kern/src/net/Kconfig b/kern/src/net/Kconfig
new file mode 100644 (file)
index 0000000..d644d97
--- /dev/null
@@ -0,0 +1,16 @@
+menuconfig NETWORKING
+       bool "Networking Support"
+       default y
+       help
+               Basic networking (TCP, UDP, IP, etc).
+
+if NETWORKING
+
+config SOCKET
+       bool "Socket support"
+       default y
+       help
+               Early socket work.  Say 'n' if you have issues compiling.
+
+endif # NETWORKING
+
index 4282e8e..e6ab685 100644 (file)
@@ -48,7 +48,7 @@ all: $(TESTS_EXECS_C) $(TESTS_EXECS_CPP)
        @:
 
 install: $(TESTS_EXECS_C) $(TESTS_EXECS_CPP) 
-       $(Q)cp -u $^ $(FIRST_INITRAMFS_PATH)/bin
+       $(Q)cp -u $^ $(FIRST_KFS_PATH)/bin
 
 clean:
        @echo + clean [TESTS]