All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lai Jiangshan <jiangshanlai@gmail.com>
To: Borislav Petkov <bp@alien8.de>
Cc: "Jürgen Gross" <jgross@suse.com>,
	LKML <linux-kernel@vger.kernel.org>,
	"Peter Zijlstra" <peterz@infradead.org>,
	"Josh Poimboeuf" <jpoimboe@redhat.com>,
	"Andy Lutomirski" <luto@kernel.org>,
	"Thomas Gleixner" <tglx@linutronix.de>, "X86 ML" <x86@kernel.org>,
	"Lai Jiangshan" <jiangshan.ljs@antgroup.com>,
	"Ingo Molnar" <mingo@redhat.com>,
	"Dave Hansen" <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"Kirill A. Shutemov" <kirill@shutemov.name>
Subject: Re: [PATCH V6 6/8] x86/entry: Convert SWAPGS to swapgs and remove the definition of SWAPGS
Date: Fri, 29 Apr 2022 19:45:43 +0800	[thread overview]
Message-ID: <CAJhGHyBHPDD=hD-78rQDCj2VfQT21m8JzD-m9DazsUa8VpBVcQ@mail.gmail.com> (raw)
In-Reply-To: <Ymu2XC7k8Xj/vMjG@zn.tnic>

On Fri, Apr 29, 2022 at 5:56 PM Borislav Petkov <bp@alien8.de> wrote:
>
> On Thu, Apr 21, 2022 at 10:10:53PM +0800, Lai Jiangshan wrote:
> > diff --git a/arch/x86/entry/entry_64_compat.S b/arch/x86/entry/entry_64_compat.S
> > index 4fdb007cddbd..c5aeb0819707 100644
> > --- a/arch/x86/entry/entry_64_compat.S
> > +++ b/arch/x86/entry/entry_64_compat.S
> > @@ -50,7 +50,7 @@ SYM_CODE_START(entry_SYSENTER_compat)
> >       UNWIND_HINT_EMPTY
> >       ENDBR
> >       /* Interrupts are off on entry. */
> > -     SWAPGS
> > +     swapgs
> >
> >       pushq   %rax
> >       SWITCH_TO_KERNEL_CR3 scratch_reg=%rax
>
> I'm not sure about this: why can't XENPV do a 32-bit syscall through the vdso?
>
> Also, looking at this, Jürgen, it looks kinda spaghetti to me:
>
> entry_SYSENTER_compat
>
> ...
>
>         /* XEN PV guests always use IRET path */
>         ALTERNATIVE "testl %eax, %eax; jz swapgs_restore_regs_and_return_to_usermode", \
>                     "jmp swapgs_restore_regs_and_return_to_usermode", X86_FEATURE_XENPV
>
>
> then at that swapgs_restore_regs_and_return_to_usermode label:
>
> #ifdef CONFIG_XEN_PV
>         ALTERNATIVE "", "jmp xenpv_restore_regs_and_return_to_usermode", X86_FEATURE_XENPV
> #endif
>
>
> Can we simply jump directly to xenpv_restore_regs_and_return_to_usermode
> from entry_SYSENTER_compat or is that CONFIG_DEBUG_ENTRY chunk there
> needed?

Hello

Adding ALTERNATIVE in swapgs_restore_regs_and_return_to_usermode()
results a simpler patch which is better served as a bug fix:

https://lore.kernel.org/lkml/163861832551.11128.1645285137833652414.tip-bot2@tip-bot2/

which is also your suggestion:

https://lore.kernel.org/lkml/YYD9ohN2Zcy4EdMb@zn.tnic/



While the original patch has sprinkled all those ALTERNATIVE calls
everywhere:

https://lore.kernel.org/lkml/20211026141420.17138-5-jiangshanlai@gmail.com/

And this original version has a SYM_L_WEAK placeholder
which is objected to by some people.

Thanks
Lai

  reply	other threads:[~2022-04-29 11:46 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-21 14:10 [PATCH V6 0/8] x86/entry: Clean up entry code Lai Jiangshan
2022-04-21 14:10 ` [PATCH V6 1/8] x86/traps: Move pt_regs only in fixup_bad_iret() Lai Jiangshan
2022-04-21 14:10 ` [PATCH V6 2/8] x86/entry: Switch the stack after error_entry() returns Lai Jiangshan
2022-04-21 14:10 ` [PATCH V6 3/8] x86/entry: Move PUSH_AND_CLEAR_REGS out of error_entry() Lai Jiangshan
2022-04-27 17:45   ` Borislav Petkov
2022-04-28  0:33     ` Lai Jiangshan
2022-04-28 10:26       ` Borislav Petkov
2022-05-02 12:42       ` Juergen Gross
2022-05-02 18:09         ` Borislav Petkov
2022-04-21 14:10 ` [PATCH V6 4/8] x86/entry: Move cld to the start of idtentry macro Lai Jiangshan
2022-04-21 14:10 ` [PATCH V6 5/8] x86/entry: Don't call error_entry() for XENPV Lai Jiangshan
2022-04-21 14:10 ` [PATCH V6 6/8] x86/entry: Convert SWAPGS to swapgs and remove the definition of SWAPGS Lai Jiangshan
2022-04-29  9:56   ` Borislav Petkov
2022-04-29 11:45     ` Lai Jiangshan [this message]
2022-04-29 12:22       ` Borislav Petkov
2022-05-02 12:18     ` Juergen Gross
2022-05-02 17:56       ` Borislav Petkov
2022-05-03 10:43         ` Borislav Petkov
2022-04-21 14:10 ` [PATCH V6 7/8] x86/entry: Remove the branch in sync_regs() Lai Jiangshan
2022-04-21 14:10 ` [PATCH V6 8/8] x86/entry: Use idtentry macro for entry_INT80_compat() Lai Jiangshan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAJhGHyBHPDD=hD-78rQDCj2VfQT21m8JzD-m9DazsUa8VpBVcQ@mail.gmail.com' \
    --to=jiangshanlai@gmail.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jgross@suse.com \
    --cc=jiangshan.ljs@antgroup.com \
    --cc=jpoimboe@redhat.com \
    --cc=kirill@shutemov.name \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.