From: Lai Jiangshan <jiangshanlai@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: x86@kernel.org, Borislav Petkov <bp@alien8.de>,
Peter Zijlstra <peterz@infradead.org>,
Lai Jiangshan <jiangshan.ljs@antgroup.com>,
Andy Lutomirski <luto@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
"H. Peter Anvin" <hpa@zytor.com>
Subject: [PATCH V3 4/7] x86/entry: move PUSH_AND_CLEAR_REGS out of error_entry
Date: Tue, 15 Mar 2022 15:39:46 +0800 [thread overview]
Message-ID: <20220315073949.7541-5-jiangshanlai@gmail.com> (raw)
In-Reply-To: <20220315073949.7541-1-jiangshanlai@gmail.com>
From: Lai Jiangshan <jiangshan.ljs@antgroup.com>
Moving PUSH_AND_CLEAR_REGS out of error_entry doesn't change any
functionality.
It makes error_entry() do not fiddle with the stack.
It will enlarge the size:
size arch/x86/entry/entry_64.o.before:
text data bss dec hex filename
17916 384 0 18300 477c arch/x86/entry/entry_64.o
size --format=SysV arch/x86/entry/entry_64.o.before:
.entry.text 5528 0
.orc_unwind 6456 0
.orc_unwind_ip 4304 0
size arch/x86/entry/entry_64.o.after:
text data bss dec hex filename
26868 384 0 27252 6a74 arch/x86/entry/entry_64.o
size --format=SysV arch/x86/entry/entry_64.o.after:
.entry.text 8200 0
.orc_unwind 10224 0
.orc_unwind_ip 6816 0
But .entry.text in x86_64 is 2M aligned, enlarging it to 8.2k doesn't
enlarge the final text size.
The tables .orc_unwind[_ip] are enlarged due to it adds many pushes.
It is prepared for not calling error_entry() from XENPV in later patch
and for future converting the whole error_entry into C code.
Signed-off-by: Lai Jiangshan <jiangshan.ljs@antgroup.com>
---
arch/x86/entry/entry_64.S | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 7768cdd0c7ed..903da9119e7a 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -325,6 +325,9 @@ SYM_CODE_END(ret_from_fork)
*/
.macro idtentry_body cfunc has_error_code:req
+ PUSH_AND_CLEAR_REGS
+ ENCODE_FRAME_POINTER
+
call error_entry
movq %rax, %rsp /* switch stack settled by sync_regs() */
ENCODE_FRAME_POINTER
@@ -1002,8 +1005,6 @@ SYM_CODE_END(paranoid_exit)
SYM_CODE_START_LOCAL(error_entry)
UNWIND_HINT_FUNC
cld
- PUSH_AND_CLEAR_REGS save_ret=1
- ENCODE_FRAME_POINTER 8
testb $3, CS+8(%rsp)
jz .Lerror_kernelspace
--
2.19.1.6.gb485710b
next prev parent reply other threads:[~2022-03-15 7:39 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-15 7:39 [PATCH V3 0/7] x86/entry: Clean up entry code Lai Jiangshan
2022-03-15 7:39 ` [PATCH V3 1/7] x86/entry: Use idtentry macro for entry_INT80_compat Lai Jiangshan
2022-03-16 13:48 ` Peter Zijlstra
2022-03-15 7:39 ` [PATCH V3 2/7] x86/traps: Move pt_regs only in fixup_bad_iret() Lai Jiangshan
2022-03-15 7:39 ` [PATCH V3 3/7] x86/entry: Switch the stack after error_entry() returns Lai Jiangshan
2022-03-16 2:37 ` Josh Poimboeuf
2022-03-16 3:02 ` Lai Jiangshan
2022-03-16 15:05 ` Peter Zijlstra
2022-03-16 16:43 ` Lai Jiangshan
2022-03-18 11:12 ` Peter Zijlstra
2022-03-15 7:39 ` Lai Jiangshan [this message]
2022-03-16 15:07 ` [PATCH V3 4/7] x86/entry: move PUSH_AND_CLEAR_REGS out of error_entry Peter Zijlstra
2022-03-16 16:18 ` Lai Jiangshan
2022-03-15 7:39 ` [PATCH V3 5/7] x86/entry: Move cld to the start of idtentry Lai Jiangshan
2022-03-15 7:39 ` [PATCH V3 6/7] x86/entry: Don't call error_entry for XENPV Lai Jiangshan
2022-03-16 2:59 ` Josh Poimboeuf
2022-03-16 15:09 ` Peter Zijlstra
2022-03-16 16:48 ` Lai Jiangshan
2022-03-15 7:39 ` [PATCH V3 7/7] x86/entry: Convert SWAPGS to swapgs and remove the definition of SWAPGS Lai Jiangshan
2022-03-16 15:12 ` [PATCH V3 0/7] x86/entry: Clean up entry code Peter Zijlstra
2022-03-16 15:13 ` Peter Zijlstra
2022-03-17 12:58 ` 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=20220315073949.7541-5-jiangshanlai@gmail.com \
--to=jiangshanlai@gmail.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jiangshan.ljs@antgroup.com \
--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.