[PATCH v6 00/13] nommu UML

Benjamin Berg benjamin at sipsolutions.net
Tue Jan 14 10:53:36 PST 2025


Hi,

On Tue, 2025-01-14 at 20:30 +0900, Hajime Tazaki wrote:
> This patchset is another spin of nommu mode addition to UML.  It doesn't
> change a lot since the last version (v5), but contain clean ups.  It would
> be nice to hear about your opinions on that.
> 
> There are still several limitations/issues which we already found;
> here is the list of those issues.
> 
> - memory mapped by loadable modules are not distinguished from
>   userspace memory.

Maybe I am missing it, but I do not yet see proper FP register
handling. This will be needed for task/thread switches and also signal
emission/sigreturn. I am attaching the test program that I used to
verify the correct behaviour when dealing with the recent changes to FP
register handling in UML.

Benjamin

> 
> -- Hajime
> 
> v6:
> - rebase to the latest uml/next tree
> - more clean up on mmu/nommu for signal handling [10/13]
> - rename functions of mcontext routines [06,10/13]
> - added Acked-by tag for binfmt_elf_fdpic [02/13]
> 
> v5:
> - clean up stack manipulation code [05,06,07,10/13]
> -
> https://lore.kernel.org/linux-um/cover.1733998168.git.thehajime@gmail.com/
> 
> v4:
> - add arch/um/nommu, arch/x86/um/nommu to contain !MMU specific codes
> - remove zpoline patch
> - drop binfmt_elf_fdpic patch
> - reduce ifndef CONFIG_MMU if possible
> - split to elf header cleanup patch [01/13]
> - fix kernel test robot warnings [06/13]
> - fix coding styles [07/13]
> - move task_top_of_stack definition [05/13]
> -
> https://lore.kernel.org/linux-um/cover.1733652929.git.thehajime@gmail.com/
> 
> v3:
> -
> https://lore.kernel.org/linux-um/cover.1733199769.git.thehajime@gmail.com/
> - add seccomp-based syscall hook in addition to zpoline [06/13]
> - remove RFC, add a line to MAINTAINERS file
> - fix kernel test robot warnings [02/13,08/13,10/13]
> - add base-commit tag to cover letter
> - pull the latest uml/next
> - clean up SIGSEGV handling [10/13]
> - detect fsgsbase availability with elf aux vector [08/13]
> - simplify vdso code with macros [09/13]
> 
> RFC v2:
> -
> https://lore.kernel.org/linux-um/cover.1731290567.git.thehajime@gmail.com/
> - 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@gmail.com/
> 
> RFC:
> -
> https://lore.kernel.org/linux-um/cover.1729770373.git.thehajime@gmail.com/
> 
> Hajime Tazaki (13):
>   x86/um: clean up elf specific definitions
>   x86/um: nommu: elf loader for fdpic
>   um: decouple MMU specific code from the common part
>   um: nommu: memory handling
>   x86/um: nommu: syscall handling
>   um: nommu: seccomp syscalls hook
>   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    | 177 ++++++++++++++++++++++
>  MAINTAINERS                             |   1 +
>  arch/um/Kconfig                         |  14 +-
>  arch/um/Makefile                        |  10 ++
>  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       |   2 +
>  arch/um/include/asm/ptrace-generic.h    |   6 +
>  arch/um/include/asm/uaccess.h           |   7 +-
>  arch/um/include/shared/kern_util.h      |  12 ++
>  arch/um/include/shared/os.h             |  16 ++
>  arch/um/kernel/Makefile                 |   5 +-
>  arch/um/kernel/mem-pgtable.c            |  55 +++++++
>  arch/um/kernel/mem.c                    |  39 +----
>  arch/um/kernel/process.c                |  25 ++++
>  arch/um/kernel/skas/process.c           |  27 ----
>  arch/um/kernel/um_arch.c                |   3 +
>  arch/um/nommu/Makefile                  |   3 +
>  arch/um/nommu/os-Linux/Makefile         |   7 +
>  arch/um/nommu/os-Linux/signal.c         |  28 ++++
>  arch/um/nommu/trap.c                    | 188
> ++++++++++++++++++++++++
>  arch/um/os-Linux/Makefile               |   8 +-
>  arch/um/os-Linux/internal.h             |   5 +
>  arch/um/os-Linux/mem.c                  |   4 +
>  arch/um/os-Linux/process.c              | 149 ++++++++++++++++++-
>  arch/um/os-Linux/seccomp.c              |  87 +++++++++++
>  arch/um/os-Linux/signal.c               |  31 +++-
>  arch/um/os-Linux/skas/process.c         | 132 -----------------
>  arch/um/os-Linux/start_up.c             |  20 +++
>  arch/um/os-Linux/util.c                 |   3 +-
>  arch/x86/um/Makefile                    |   7 +-
>  arch/x86/um/asm/elf.h                   |   8 +-
>  arch/x86/um/asm/module.h                |  24 ---
>  arch/x86/um/nommu/Makefile              |   8 +
>  arch/x86/um/nommu/do_syscall_64.c       |  74 ++++++++++
>  arch/x86/um/nommu/entry_64.S            | 113 ++++++++++++++
>  arch/x86/um/nommu/os-Linux/Makefile     |   6 +
>  arch/x86/um/nommu/os-Linux/mcontext.c   |  24 +++
>  arch/x86/um/nommu/syscalls.h            |  16 ++
>  arch/x86/um/nommu/syscalls_64.c         | 115 +++++++++++++++
>  arch/x86/um/shared/sysdep/mcontext.h    |   4 +
>  arch/x86/um/shared/sysdep/syscalls_64.h |   6 +
>  arch/x86/um/signal.c                    |   7 +
>  arch/x86/um/vdso/vma.c                  |  17 ++-
>  fs/Kconfig.binfmt                       |   2 +-
>  47 files changed, 1328 insertions(+), 244 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/kernel/mem-pgtable.c
>  create mode 100644 arch/um/nommu/Makefile
>  create mode 100644 arch/um/nommu/os-Linux/Makefile
>  create mode 100644 arch/um/nommu/os-Linux/signal.c
>  create mode 100644 arch/um/nommu/trap.c
>  create mode 100644 arch/um/os-Linux/seccomp.c
>  delete mode 100644 arch/x86/um/asm/module.h
>  create mode 100644 arch/x86/um/nommu/Makefile
>  create mode 100644 arch/x86/um/nommu/do_syscall_64.c
>  create mode 100644 arch/x86/um/nommu/entry_64.S
>  create mode 100644 arch/x86/um/nommu/os-Linux/Makefile
>  create mode 100644 arch/x86/um/nommu/os-Linux/mcontext.c
>  create mode 100644 arch/x86/um/nommu/syscalls.h
>  create mode 100644 arch/x86/um/nommu/syscalls_64.c
> 
> 
> base-commit: 2d2b61ae38bd91217ea7cc5bc700a2b9e75b3937

-------------- next part --------------
A non-text attachment was scrubbed...
Name: test-signal-restore.c
Type: text/x-csrc
Size: 7215 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-um/attachments/20250114/766eef6d/attachment-0001.bin>


More information about the linux-um mailing list