[PATCH v10] um: Enable preemption in UML
Johannes Berg
johannes at sipsolutions.net
Tue Jul 2 01:25:50 PDT 2024
From: Anton Ivanov <anton.ivanov at cambridgegreys.com>
Since userspace state is saved in the MM process, kernel using
FPU still doesn't really need to do anything, so this really
is as simple as enabling preemption. The irq critical section
in sigio_handler() needs preempt_disable()/preempt_enable().
Signed-off-by: Anton Ivanov <anton.ivanov at cambridgegreys.com>
[vastly simplify, fix x86/um Makefile, rewrite commit message]
Signed-off-by: Johannes Berg <johannes.berg at intel.com>
---
v10:
- rebase on top of various other patchsets, including Benjamin's
page table updates: https://patchwork.ozlabs.org/project/linux-um/list/?series=408104
- fix x86/um Makefile
- remove FPU save/restore code since it's not needed
---
arch/um/Kconfig | 2 +-
arch/um/kernel/irq.c | 2 ++
arch/x86/um/Makefile | 1 -
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/um/Kconfig b/arch/um/Kconfig
index 1faefc0a18ea..dca84fd6d00a 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig
@@ -11,7 +11,7 @@ config UML
select ARCH_HAS_KCOV
select ARCH_HAS_STRNCPY_FROM_USER
select ARCH_HAS_STRNLEN_USER
- select ARCH_NO_PREEMPT
+ select ARCH_NO_PREEMPT_DYNAMIC
select HAVE_ARCH_AUDITSYSCALL
select HAVE_ARCH_KASAN if X86_64
select HAVE_ARCH_KASAN_VMALLOC if HAVE_ARCH_KASAN
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c
index ceda4bd2e5ed..534e91797f89 100644
--- a/arch/um/kernel/irq.c
+++ b/arch/um/kernel/irq.c
@@ -238,7 +238,9 @@ static void _sigio_handler(struct uml_pt_regs *regs,
void sigio_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs)
{
+ preempt_disable();
_sigio_handler(regs, irqs_suspended);
+ preempt_enable();
}
static struct irq_entry *get_irq_entry_by_fd(int fd)
diff --git a/arch/x86/um/Makefile b/arch/x86/um/Makefile
index 17b85209c43d..36e67fc97c22 100644
--- a/arch/x86/um/Makefile
+++ b/arch/x86/um/Makefile
@@ -31,7 +31,6 @@ 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
-subarch-$(CONFIG_PREEMPTION) += ../entry/thunk_64.o
endif
--
2.45.2
More information about the linux-um
mailing list