[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <f6925ee5-bbd7-42e3-9e3b-59d2e8ec2681@zytor.com>
Date: Fri, 25 Jul 2025 21:54:32 -0700
From: Xin Li <xin@...or.com>
To: Peter Zijlstra <peterz@...radead.org>, x86@...nel.org
Cc: kys@...rosoft.com, haiyangz@...rosoft.com, wei.liu@...nel.org,
decui@...rosoft.com, tglx@...utronix.de, mingo@...hat.com,
bp@...en8.de, dave.hansen@...ux.intel.com, hpa@...or.com,
seanjc@...gle.com, pbonzini@...hat.com, ardb@...nel.org,
kees@...nel.org, Arnd Bergmann <arnd@...db.de>,
gregkh@...uxfoundation.org, jpoimboe@...nel.org,
linux-hyperv@...r.kernel.org, linux-kernel@...r.kernel.org,
kvm@...r.kernel.org, linux-efi@...r.kernel.org,
samitolvanen@...gle.com, ojeda@...nel.org
Subject: Re: [PATCH v3 14/16] x86/fred: Play nice with invoking
asm_fred_entry_from_kvm() on non-FRED hardware
On 7/14/2025 3:20 AM, Peter Zijlstra wrote:
> call __fred_entry_from_kvm /* Call the C entry point */
> - POP_REGS
> - ERETS
> -1:
> +
> +1: /*
The symbol "1" is misplaced; it needs to be put after the ERETS
instruction.
> + * When FRED, use ERETS to potentially clear NMIs, otherwise simply
> + * restore the stack pointer.
> + */
> + ALTERNATIVE "nop; nop; mov %rbp, %rsp", \
Why explicitly add two nops here?
ALTERNATIVE will still pad three-byte nop after the MOV instruction.
> + __stringify(add $C_PTREGS_SIZE, %rsp; ERETS), \
> + X86_FEATURE_FRED
> +
> /*
> - * Objtool doesn't understand what ERETS does, this hint tells it that
> - * yes, we'll reach here and with what stack state. A save/restore pair
> - * isn't strictly needed, but it's the simplest form.
> + * Objtool doesn't understand ERETS, and the cfi register state is
> + * different from initial_func_cfi due to PUSH_REGS. Tell it the state
> + * is similar to where UNWIND_HINT_SAVE is.
> */
> UNWIND_HINT_RESTORE
> +
> pop %rbp
> RET
>
Powered by blists - more mailing lists