Commit cd01672d authored by Anton Ivanov's avatar Anton Ivanov Committed by Johannes Berg
Browse files

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: default avatarAnton Ivanov <anton.ivanov@cambridgegreys.com>
Link: https://patch.msgid.link/20240702102549.d2fcea450854.I12f5a53d80ec1e425e66ef272b1e95cb523b608e@changeid


[rebase, remove FPU save/restore, fix x86/um Makefile,
 rewrite commit message]
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent bcf3d957
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+2 −0
Original line number Diff line number Diff line
@@ -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)
+0 −1
Original line number Diff line number Diff line
@@ -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