From: Anton Ivanov Date: Tue, 2 Jul 2024 08:25:50 +0000 (+0200) Subject: um: Enable preemption in UML X-Git-Tag: v6.11-rc1~48^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cd01672d64a358cccc087c8b845ebe6b7e9e2ca4;p=thirdparty%2Fkernel%2Flinux.git um: Enable preemption in UML 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 Link: https://patch.msgid.link/20240702102549.d2fcea450854.I12f5a53d80ec1e425e66ef272b1e95cb523b608e@changeid [rebase, remove FPU save/restore, fix x86/um Makefile, rewrite commit message] Signed-off-by: Johannes Berg --- diff --git a/arch/um/Kconfig b/arch/um/Kconfig index 1faefc0a18eac..dca84fd6d00a5 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 ceda4bd2e5ed1..534e91797f892 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 17b85209c43d5..36e67fc97c22f 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