Skip to content

Commit

Permalink
um: nommu: plug nommu code into build system
Browse files Browse the repository at this point in the history
Add nommu kernel for um build.  defconfig is also provided.

Signed-off-by: Hajime Tazaki <thehajime@gmail.com>
Signed-off-by: Ricardo Koller <ricarkol@google.com>
  • Loading branch information
thehajime committed Dec 3, 2024
1 parent cd3fe97 commit 4f8fefb
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 2 deletions.
14 changes: 12 additions & 2 deletions arch/um/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,17 @@ config UML
select ARCH_SUPPORTS_LTO_CLANG_THIN
select TRACE_IRQFLAGS_SUPPORT
select TTY # Needed for line.c
select HAVE_ARCH_VMAP_STACK
select HAVE_ARCH_VMAP_STACK if MMU
select HAVE_RUST
select ARCH_HAS_UBSAN
select HAVE_ARCH_TRACEHOOK
select THREAD_INFO_IN_TASK
select UACCESS_MEMCPY if !MMU
select GENERIC_STRNLEN_USER if !MMU
select GENERIC_STRNCPY_FROM_USER if !MMU

config MMU
bool
bool "MMU-based Paged Memory Management Support" if 64BIT
default y

config UML_DMA_EMULATION
Expand Down Expand Up @@ -190,8 +193,15 @@ config MAGIC_SYSRQ
The keys are documented in <file:Documentation/admin-guide/sysrq.rst>. Don't say Y
unless you really know what this hack does.

config ARCH_FORCE_MAX_ORDER
int "Order of maximal physically contiguous allocations" if EXPERT
default "10" if MMU
default "16" if !MMU

config KERNEL_STACK_ORDER
int "Kernel stack size order"
default 3 if !MMU
range 3 10 if !MMU
default 2 if 64BIT
range 2 10 if 64BIT
default 1 if !64BIT
Expand Down
64 changes: 64 additions & 0 deletions arch/um/configs/x86_64_nommu_defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CGROUPS=y
CONFIG_BLK_CGROUP=y
CONFIG_CGROUP_SCHED=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
# CONFIG_PID_NS is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
# CONFIG_MMU is not set
CONFIG_HOSTFS=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_SSL=y
CONFIG_NULL_CHAN=y
CONFIG_PORT_CHAN=y
CONFIG_PTY_CHAN=y
CONFIG_TTY_CHAN=y
CONFIG_CON_CHAN="pts"
CONFIG_SSL_CHAN="pts"
CONFIG_UML_SOUND=m
CONFIG_UML_NET=y
CONFIG_UML_NET_ETHERTAP=y
CONFIG_UML_NET_TUNTAP=y
CONFIG_UML_NET_SLIP=y
CONFIG_UML_NET_DAEMON=y
CONFIG_UML_NET_MCAST=y
CONFIG_UML_NET_SLIRP=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_IOSCHED_BFQ=m
CONFIG_BINFMT_MISC=m
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_BLK_DEV_UBD=y
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_NBD=m
CONFIG_DUMMY=m
CONFIG_TUN=m
CONFIG_PPP=m
CONFIG_SLIP=m
CONFIG_LEGACY_PTY_COUNT=32
CONFIG_UML_RANDOM=y
CONFIG_SOUND=m
CONFIG_EXT4_FS=y
CONFIG_REISERFS_FS=y
CONFIG_QUOTA=y
CONFIG_AUTOFS_FS=m
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_NLS=y
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
CONFIG_FRAME_WARN=1024
CONFIG_IPV6=y
18 changes: 18 additions & 0 deletions arch/x86/um/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,24 @@ obj-y += syscalls_64.o vdso/
subarch-y = ../lib/csum-partial_64.o ../lib/memcpy_64.o \
../lib/memmove_64.o ../lib/memset_64.o


# used by zpoline.c to translate syscall/sysenter instructions
# note: only in x86_64 w/ !CONFIG_MMU
ifneq ($(CONFIG_MMU),y)
inat_tables_script = $(srctree)/arch/x86/tools/gen-insn-attr-x86.awk
inat_tables_maps = $(srctree)/arch/x86/lib/x86-opcode-map.txt
quiet_cmd_inat_tables = GEN $@
cmd_inat_tables = $(AWK) -f $(inat_tables_script) $(inat_tables_maps) > $@
$(obj)/inat-tables.c: $(inat_tables_script) $(inat_tables_maps)
$(call cmd,inat_tables)
targets += inat-tables.c
$(obj)/../lib/inat.o: $(obj)/inat-tables.c
subarch-y += ../lib/insn.o ../lib/inat.o


obj-y += do_syscall_$(BITS).o entry_$(BITS).o zpoline.o
endif

endif

subarch-$(CONFIG_MODULES) += ../kernel/module.o
Expand Down

0 comments on commit 4f8fefb

Please sign in to comment.