All of lore.kernel.org
 help / color / mirror / Atom feed
From: "tip-bot2 for Lai Jiangshan" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: Lai Jiangshan <jiangshan.ljs@antgroup.com>,
	Borislav Petkov <bp@suse.de>, Juergen Gross <jgross@suse.com>,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [tip: x86/asm] x86/entry: Don't call error_entry() for XENPV
Date: Tue, 03 May 2022 19:01:03 -0000	[thread overview]
Message-ID: <165160446318.4207.9852653161107393222.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20220503032107.680190-6-jiangshanlai@gmail.com>

The following commit has been merged into the x86/asm branch of tip:

Commit-ID:     64cbd0acb58203fb769ed2f4eab526d43e243847
Gitweb:        https://git.kernel.org/tip/64cbd0acb58203fb769ed2f4eab526d43e243847
Author:        Lai Jiangshan <jiangshan.ljs@antgroup.com>
AuthorDate:    Tue, 03 May 2022 11:21:06 +08:00
Committer:     Borislav Petkov <bp@suse.de>
CommitterDate: Tue, 03 May 2022 12:21:35 +02:00

x86/entry: Don't call error_entry() for XENPV

XENPV guests enter already on the task stack and they can't fault for
native_iret() nor native_load_gs_index() since they use their own pvop
for IRET and load_gs_index(). A CR3 switch is not needed either.

So there is no reason to call error_entry() in XENPV.

  [ bp: Massage commit message. ]

Signed-off-by: Lai Jiangshan <jiangshan.ljs@antgroup.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Juergen Gross <jgross@suse.com>
Link: https://lore.kernel.org/r/20220503032107.680190-6-jiangshanlai@gmail.com
---
 arch/x86/entry/entry_64.S | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index ab6ab6d..062aa9d 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -336,8 +336,17 @@ SYM_CODE_END(push_and_clear_regs)
 	call push_and_clear_regs
 	UNWIND_HINT_REGS
 
-	call	error_entry
-	movq	%rax, %rsp			/* switch to the task stack if from userspace */
+	/*
+	 * Call error_entry() and switch to the task stack if from userspace.
+	 *
+	 * When in XENPV, it is already in the task stack, and it can't fault
+	 * for native_iret() nor native_load_gs_index() since XENPV uses its
+	 * own pvops for IRET and load_gs_index().  And it doesn't need to
+	 * switch the CR3.  So it can skip invoking error_entry().
+	 */
+	ALTERNATIVE "call error_entry; movq %rax, %rsp", \
+		"", X86_FEATURE_XENPV
+
 	ENCODE_FRAME_POINTER
 	UNWIND_HINT_REGS
 

  parent reply	other threads:[~2022-05-03 19:01 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-03  3:21 [PATCH V7 0/6] x86/entry: Clean up entry code Lai Jiangshan
2022-05-03  3:21 ` [PATCH V7 1/6] x86/traps: Move pt_regs only in fixup_bad_iret() Lai Jiangshan
2022-05-03 19:01   ` [tip: x86/asm] x86/traps: Use pt_regs directly " tip-bot2 for Lai Jiangshan
2022-05-03  3:21 ` [PATCH V7 2/6] x86/entry: Switch the stack after error_entry() returns Lai Jiangshan
2022-05-03 19:01   ` [tip: x86/asm] " tip-bot2 for Lai Jiangshan
2022-05-03  3:21 ` [PATCH V7 3/6] x86/entry: Move PUSH_AND_CLEAR_REGS out of error_entry() Lai Jiangshan
2022-05-03  7:23   ` Juergen Gross
2022-05-03 19:01   ` [tip: x86/asm] " tip-bot2 for Lai Jiangshan
2022-05-03  3:21 ` [PATCH V7 4/6] x86/entry: Move cld to the start of idtentry macro Lai Jiangshan
2022-05-03 19:01   ` [tip: x86/asm] x86/entry: Move CLD to the start of the " tip-bot2 for Lai Jiangshan
2022-05-03  3:21 ` [PATCH V7 5/6] x86/entry: Don't call error_entry() for XENPV Lai Jiangshan
2022-05-03  7:24   ` Juergen Gross
2022-05-03 19:01   ` tip-bot2 for Lai Jiangshan [this message]
2022-05-03  3:21 ` [PATCH V7 6/6] x86/entry: Convert SWAPGS to swapgs and remove the definition of SWAPGS Lai Jiangshan
2022-05-03 19:01   ` [tip: x86/asm] " tip-bot2 for 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=165160446318.4207.9852653161107393222.tip-bot2@tip-bot2 \
    --to=tip-bot2@linutronix.de \
    --cc=bp@suse.de \
    --cc=jgross@suse.com \
    --cc=jiangshan.ljs@antgroup.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --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.