+ VMA people, mm list On Mon, Nov 11, 2024 at 03:27:00PM +0900, Hajime Tazaki wrote: > This is a series of patches of nommu arch addition to UML. It would > be nice to ask comments/opinions on this. In general, while I appreciate your work and don't mean to be negative, we in mm consistently have problems with nommu as it is a rarely-tested more-or-less hack used for very few very old architectures and a constant source of problems and maintenance overhead for us. It also complicates mm code and time taken to develop new features. So ideally we'd avoid doing anything that requires us maintain it going forward unless the benefits really overwhelmingly outweigh the drawbacks. There have been various murmourings about moving towards elimination of nommu, obviously this would entirely prevent that. Thanks, Lorenzo > > There are still several limitations/issues which we already found; > here is the list of those issues. > > - prompt configured with /etc/profile is broken (variables are not > expanded, ${HOSTNAME%%.*}:$PWD#) > - there are no mechanism implemented to cache for mapped memory of > exec(2) thus, always read files from filesystem upon every exec, > which makes slow on some benchmark (lmbench). > > -- Hajime > > > RFC v2: > - base branch is now uml/linux.git instead of torvalds/linux.git. > - reorganize the patch series to clean up > - fixed various coding styles issues > - clean up exec code path [07/13] > - fixed the crash/SIGSEGV case on userspace programs [10/13] > - add seccomp filter to limit syscall caller address [06/13] > - detect fsgsbase availability with sigsetjmp/siglongjmp [08/13] > - removes unrelated changes > - removes unneeded ifndef CONFIG_MMU > - convert UML_CONFIG_MMU to CONFIG_MMU as using uml/linux.git > - proposed a patch of maple-tree issue (resolving a limitation in RFC v1) > https://lore.kernel.org/linux-mm/20241108222834.3625217-1-thehajime@xxxxxxxxx/ > > RFC: > - https://lore.kernel.org/linux-um/cover.1729770373.git.thehajime@xxxxxxxxx/ > > Hajime Tazaki (13): > fs: binfmt_elf_efpic: add architecture hook elf_arch_finalize_exec > x86/um: nommu: elf loader for fdpic > um: nommu: memory handling > x86/um: nommu: syscall handling > x86/um: nommu: syscall translation by zpoline > um: nommu: prevent host syscalls from userspace by seccomp filter > x86/um: nommu: process/thread handling > um: nommu: configure fs register on host syscall invocation > x86/um/vdso: nommu: vdso memory update > x86/um: nommu: signal handling > um: change machine name for uname output > um: nommu: add documentation of nommu UML > um: nommu: plug nommu code into build system > > Documentation/virt/uml/nommu-uml.rst | 221 +++++++++++++++++++++++ > arch/um/Kconfig | 14 +- > arch/um/Makefile | 6 + > arch/um/configs/x86_64_nommu_defconfig | 64 +++++++ > arch/um/include/asm/Kbuild | 1 + > arch/um/include/asm/futex.h | 4 + > arch/um/include/asm/mmu.h | 8 + > arch/um/include/asm/mmu_context.h | 13 +- > arch/um/include/asm/ptrace-generic.h | 6 + > arch/um/include/asm/tlbflush.h | 22 +++ > arch/um/include/asm/uaccess.h | 7 +- > arch/um/include/shared/kern_util.h | 3 + > arch/um/include/shared/os.h | 14 ++ > arch/um/kernel/Makefile | 3 +- > arch/um/kernel/mem.c | 12 +- > arch/um/kernel/physmem.c | 6 + > arch/um/kernel/process.c | 33 +++- > arch/um/kernel/skas/Makefile | 4 +- > arch/um/kernel/trap.c | 14 ++ > arch/um/kernel/um_arch.c | 4 + > arch/um/os-Linux/Makefile | 5 +- > arch/um/os-Linux/cpu.c | 50 ++++++ > arch/um/os-Linux/internal.h | 5 + > arch/um/os-Linux/main.c | 5 + > arch/um/os-Linux/process.c | 94 +++++++++- > arch/um/os-Linux/signal.c | 18 +- > arch/um/os-Linux/skas/process.c | 4 + > arch/um/os-Linux/start_up.c | 3 + > arch/um/os-Linux/util.c | 3 +- > arch/x86/um/Makefile | 18 ++ > arch/x86/um/asm/elf.h | 11 +- > arch/x86/um/asm/module.h | 24 --- > arch/x86/um/asm/processor.h | 12 ++ > arch/x86/um/do_syscall_64.c | 108 ++++++++++++ > arch/x86/um/entry_64.S | 108 ++++++++++++ > arch/x86/um/shared/sysdep/syscalls_64.h | 6 + > arch/x86/um/signal.c | 37 +++- > arch/x86/um/syscalls_64.c | 69 ++++++++ > arch/x86/um/vdso/um_vdso.c | 20 +++ > arch/x86/um/vdso/vma.c | 14 ++ > arch/x86/um/zpoline.c | 223 ++++++++++++++++++++++++ > fs/Kconfig.binfmt | 2 +- > fs/binfmt_elf_fdpic.c | 10 ++ > 43 files changed, 1262 insertions(+), 46 deletions(-) > create mode 100644 Documentation/virt/uml/nommu-uml.rst > create mode 100644 arch/um/configs/x86_64_nommu_defconfig > create mode 100644 arch/um/os-Linux/cpu.c > delete mode 100644 arch/x86/um/asm/module.h > create mode 100644 arch/x86/um/do_syscall_64.c > create mode 100644 arch/x86/um/entry_64.S > create mode 100644 arch/x86/um/zpoline.c > > -- > 2.43.0 > >