Re: [PATCH V3 4/7] x86/entry: move PUSH_AND_CLEAR_REGS out of error_entry

From: Peter Zijlstra
Date: Wed Mar 16 2022 - 11:07:57 EST


On Tue, Mar 15, 2022 at 03:39:46PM +0800, Lai Jiangshan wrote:
> From: Lai Jiangshan <jiangshan.ljs@xxxxxxxxxxxx>
>
> 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.

So I don't much care about the orc data, that's only used when
unwinding, a relatively rare occasion, anyway. But the text increase
does bother me a little, this can blow up I$ misses on syscall heavy
workloads.