2020-08-17 05:35:24

by Lai Jiangshan

[permalink] [raw]
Subject: Re: [PATCH V3 0/3] x86/entry: simply stack switching when exception on userspace


Deeply sorry, the cover-letter was forgotten to send to LKML.

Here it is:

On 2020/8/17 14:23, Lai Jiangshan wrote:
> From: Lai Jiangshan <[email protected]>
>
> 7f2590a110b8("x86/entry/64: Use a per-CPU trampoline stack for IDT entries")
> has resulted that when exception on userspace, the kernel (error_entry)
> always push the pt_regs to entry stack(sp0), and then copy them to the
> kernel stack.
>
> And recent x86/entry work makes interrupt also use idtentry
> and makes all the interrupt code save the pt_regs on the sp0 stack
> and then copy it to the thread stack like exception.
>
> This is hot path (page fault, ipi), such overhead should be avoided.
> And the original interrupt_entry directly switches to kernel stack
> and pushes pt_regs to kernel stack. We should do it for error_entry.
> This is the job of patch1.
>
> Patch 2-3 simplify stack switching for .Lerror_bad_iret by just doing
> all the work in one function (fixup_bad_iret()).
>
> The patch set is based on v5.9-rc1
>
> Changed from V1:
> based on tip/master -> based on tip/x86/entry
>
> patch 1 replaces the patch1,2 of V1, it borrows the
> original interrupt_entry's code into error_entry.
>
> patch2-4 is V1's patch3-5, unchanged (but rebased)
>
> Changed from V2:
> (re-)based on v5.9-rc1
> drop the patch4 of V2 patchset
>
> Cc: Andy Lutomirski <[email protected]>,
> Cc: Thomas Gleixner <[email protected]>,
> Cc: Ingo Molnar <[email protected]>,
> Cc: Borislav Petkov <[email protected]>,
> Cc: [email protected],
> Cc: "H. Peter Anvin" <[email protected]>,
> Cc: Peter Zijlstra <[email protected]>,
> Cc: Alexandre Chartre <[email protected]>,
> Cc: "Eric W. Biederman" <[email protected]>,
> Cc: Jann Horn <[email protected]>,
> Cc: Dave Hansen <[email protected]>
>
>
> Lai Jiangshan (3):
> x86/entry: avoid calling into sync_regs() when entering from userspace
> x86/entry: directly switch to kernel stack when .Lerror_bad_iret
> x86/entry: remove unused sync_regs()
>
> arch/x86/entry/entry_64.S | 52 +++++++++++++++++++++++-------------
> arch/x86/include/asm/traps.h | 1 -
> arch/x86/kernel/traps.c | 22 +++------------
> 3 files changed, 38 insertions(+), 37 deletions(-)
>


2020-09-10 10:13:19

by Lai Jiangshan

[permalink] [raw]
Subject: Re: [PATCH V3 0/3] x86/entry: simply stack switching when exception on userspace

> There are definitely good cleanups in here, but I think it would be
> nice rebased to whatever lands in 5.8-rc1 settles.

Hello, tglx, Andy:

Could you have a review on the patches please?

They are based on 5.9-rc1 and sent when 5.9-rc1 was just settled,
and hoped to get their way into 5.10-rc1.

The first two patches can still be applied to today's tip/master,
(Sep 10 2020). The third can't, and conflicts with a commit just
added 3 days ago(#VC related). But the third removes a short snip
of code only, and is easy to be reviewed or even easy to be
applied manually. I will rebase all of them after they or the first
two are reviewed.

I'm sorry that I have to ask you to review again, because the
patches change the code you've recently changed.

Thanks
Lai