* [PATCH v10] um: Enable preemption in UML
@ 2024-07-02 8:25 Johannes Berg
2024-07-02 10:07 ` Anton Ivanov
2024-07-02 10:24 ` Johannes Berg
0 siblings, 2 replies; 6+ messages in thread
From: Johannes Berg @ 2024-07-02 8:25 UTC (permalink / raw)
To: linux-um; +Cc: Anton Ivanov
From: Anton Ivanov <anton.ivanov@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@cambridgegreys.com>
[vastly simplify, fix x86/um Makefile, rewrite commit message]
Signed-off-by: Johannes Berg <johannes.berg@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
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v10] um: Enable preemption in UML
2024-07-02 8:25 [PATCH v10] um: Enable preemption in UML Johannes Berg
@ 2024-07-02 10:07 ` Anton Ivanov
2024-07-02 10:18 ` Johannes Berg
2024-07-02 10:24 ` Johannes Berg
1 sibling, 1 reply; 6+ messages in thread
From: Anton Ivanov @ 2024-07-02 10:07 UTC (permalink / raw)
To: Johannes Berg, linux-um
On 02/07/2024 09:25, Johannes Berg wrote:
> From: Anton Ivanov <anton.ivanov@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@cambridgegreys.com>
> [vastly simplify, fix x86/um Makefile, rewrite commit message]
> Signed-off-by: Johannes Berg <johannes.berg@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
>
Is that all we have left? I lost track of your mm patches and they do not apply cleanly to master at present.
Otherwise, the fpu-less on top of the older mm works fine for me. Testing it at the moment.
--
Anton R. Ivanov
Cambridgegreys Limited. Registered in England. Company Number 10273661
https://www.cambridgegreys.com/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v10] um: Enable preemption in UML
2024-07-02 10:07 ` Anton Ivanov
@ 2024-07-02 10:18 ` Johannes Berg
2024-07-02 10:20 ` Johannes Berg
2024-07-02 10:21 ` Anton Ivanov
0 siblings, 2 replies; 6+ messages in thread
From: Johannes Berg @ 2024-07-02 10:18 UTC (permalink / raw)
To: Anton Ivanov, linux-um
On Tue, 2024-07-02 at 11:07 +0100, Anton Ivanov wrote:
>
>
> Is that all we have left?
I think so, yes.
> I lost track of your mm patches and they do not apply cleanly to master at present.
Mine actually mostly went away, in favour of Benjamin's, but his also
didn't apply cleanly due to the compiler warning cleanups.
> Otherwise, the fpu-less on top of the older mm works fine for me. Testing it at the moment.
:-)
We have 40 patches in patchwork now, including the 7 64-bit address
space ones from Benjamin where I think some rework is needed. I've
rebased/applied the other 33, I've just pushed that to the 'pending'
branch:
https://git.kernel.org/pub/scm/linux/kernel/git/uml/linux.git/log/?h=pending
johannes
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v10] um: Enable preemption in UML
2024-07-02 10:18 ` Johannes Berg
@ 2024-07-02 10:20 ` Johannes Berg
2024-07-02 10:21 ` Anton Ivanov
1 sibling, 0 replies; 6+ messages in thread
From: Johannes Berg @ 2024-07-02 10:20 UTC (permalink / raw)
To: Anton Ivanov, linux-um
On Tue, 2024-07-02 at 12:18 +0200, Johannes Berg wrote:
>
> We have 40 patches in patchwork now, including the 7 64-bit address
> space ones from Benjamin where I think some rework is needed. I've
> rebased/applied the other 33, I've just pushed that to the 'pending'
> branch:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/uml/linux.git/log/?h=pending
>
I should add - the hostfs fix really should go to 'fixes', not 'next',
perhaps soon? Otherwise I think it's all fine for 'next', some fixes are
there but they're limited to unusual (time-travel) configs.
johannes
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v10] um: Enable preemption in UML
2024-07-02 10:18 ` Johannes Berg
2024-07-02 10:20 ` Johannes Berg
@ 2024-07-02 10:21 ` Anton Ivanov
1 sibling, 0 replies; 6+ messages in thread
From: Anton Ivanov @ 2024-07-02 10:21 UTC (permalink / raw)
To: linux-um
On 02/07/2024 11:18, Johannes Berg wrote:
> On Tue, 2024-07-02 at 11:07 +0100, Anton Ivanov wrote:
>>
>>
>> Is that all we have left?
>
> I think so, yes.
>
>> I lost track of your mm patches and they do not apply cleanly to master at present.
>
> Mine actually mostly went away, in favour of Benjamin's, but his also
> didn't apply cleanly due to the compiler warning cleanups.
Ack.
>
>> Otherwise, the fpu-less on top of the older mm works fine for me. Testing it at the moment.
>
> :-)
>
> We have 40 patches in patchwork now, including the 7 64-bit address
> space ones from Benjamin where I think some rework is needed. I've
> rebased/applied the other 33, I've just pushed that to the 'pending'
> branch:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/uml/linux.git/log/?h=pending
Cool. It will be nice to see all of it in the tree at last.
>
> johannes
>
>
>
--
Anton R. Ivanov
https://www.kot-begemot.co.uk/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v10] um: Enable preemption in UML
2024-07-02 8:25 [PATCH v10] um: Enable preemption in UML Johannes Berg
2024-07-02 10:07 ` Anton Ivanov
@ 2024-07-02 10:24 ` Johannes Berg
1 sibling, 0 replies; 6+ messages in thread
From: Johannes Berg @ 2024-07-02 10:24 UTC (permalink / raw)
To: linux-um; +Cc: Anton Ivanov
On Tue, 2024-07-02 at 10:25 +0200, Johannes Berg wrote:
> From: Anton Ivanov <anton.ivanov@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().
For the record, my main interest in this is to unlock debugging for RCU
lists, sleep, etc.
johannes
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-07-02 10:24 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-02 8:25 [PATCH v10] um: Enable preemption in UML Johannes Berg
2024-07-02 10:07 ` Anton Ivanov
2024-07-02 10:18 ` Johannes Berg
2024-07-02 10:20 ` Johannes Berg
2024-07-02 10:21 ` Anton Ivanov
2024-07-02 10:24 ` Johannes Berg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox