From: Benjamin Berg
Conceptually, we want the memory mappings to always be up to date and
represent whatever is in the TLB. To ensure that, we need to sync them
over in the userspace case and for the kernel we need to process the
mappings.
The kernel will call flush_tlb_* if page table entries t
From: Benjamin Berg
There should be no need for this. It may be that this used to work
around another issue where after a clone the MM was in a bad state.
Signed-off-by: Benjamin Berg
---
arch/um/include/asm/mmu_context.h | 2 --
arch/um/kernel/process.c | 2 --
arch/um/kernel/tlb.c
From: Benjamin Berg
The HVC update was mostly used to compress consecutive calls into one.
This is mostly relevant for userspace where it is already handled by the
syscall stub code.
Simplify the whole logic and consolidate it for both kernel and
userspace. This does remove the sequential syscal
From: Benjamin Berg
The kernel flushes the memory ranges anyway for CoW and does not assume
that the userspace process has anything set up already. So, start with a
fresh process for the new mm context.
Signed-off-by: Benjamin Berg
---
v3: Remove further unused code
---
arch/um/include/share
From: Benjamin Berg
The current LDT code has a few issues that mean it should be redone in a
different way once we always start with a fresh MM even when cloning.
In a new and better world, the kernel would just ensure its own LDT is
clear at startup. At that point, all that is needed is a simpl
From: Benjamin Berg
There should be no need to flush the memory in flush_thread. Doing this
likely worked around some issue where memory was still incorrectly
mapped when creating or cloning an MM.
With the removal of the special clone path, that isn't relevant anymore.
However, add the flush in
From: Benjamin Berg
As running the syscalls is expensive due to context switches, we should
do so as late as possible in case more syscalls need to be queued later
on. This will also benefit a later move to a SECCOMP enabled userspace
as in that case the need of extra context switches is removed
From: Benjamin Berg
Rework syscall handling to be platform independent. Also create a clean
split between queueing of syscalls and flushing them out, removing the
need to keep state in the code that triggers the syscalls.
The code adds syscall_data_len to the global mm_id structure. This will
be
From: Benjamin Berg
This function will be used by the new syscall handling code.
Signed-off-by: Benjamin Berg
---
arch/x86/um/shared/sysdep/stub_32.h | 22 ++
arch/x86/um/shared/sysdep/stub_64.h | 16
2 files changed, 38 insertions(+)
diff --git a/arch/x86
From: Benjamin Berg
To keep the number of syscalls that the stub has to do lower, compress
two consecutive syscalls of the same type if the second is just a
continuation of the first.
Signed-off-by: Benjamin Berg
---
arch/um/os-Linux/skas/mem.c | 39 +
1 fil
From: Benjamin Berg
Further commits will require values from common-offsets.h inside
stub-data.h. Resolve the possible circular dependency and simply use
offsetof() inside stub_32.h and stub_64.h.
Signed-off-by: Benjamin Berg
---
arch/um/include/shared/common-offsets.h | 5 -
arch/x86/um/s
From: Benjamin Berg
This patchset reworks the stub syscall handling and also redos how page
table updates are tracked and synchronized. Some of this originated in
the SECCOMP patchset, but it became clear that these refactorings make
sense independently as they result in a considerably fewer page
From: Benjamin Berg
When we switch to use seccomp, we need both the signal stack and other
data (i.e. syscall information) to co-exist in the stub data. To
facilitate this, start by defining separate memory areas for the stack
and syscall data.
This moves the signal stack onto a new page as the
Linus,
The following changes since commit ed30a4a51bb196781c8058073ea720133a65596f:
Linux 6.9-rc5 (2024-04-21 12:35:54 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/uml/linux.git
tags/uml-for-linus-6.10-rc1
for you to fetch changes up to 919e
14 matches
Mail list logo