On Fri, Oct 03, 2025 at 11:53:19PM +0100, Andrew Cooper wrote:
> FRED and IDT differ by a Supervisor Token on the base of the shstk.  This
> means that switch_stack_and_jump() needs to discard one extra word when FRED
> is active.
> 
> Fix a typo in the parameter name, which should be shstk_base.
> 
> Signed-off-by: Andrew Cooper <[email protected]>
> Reviewed-by: Jan Beulich <[email protected]>

Reviewed-by: Roger Pau Monné <[email protected]>

> ---
> CC: Jan Beulich <[email protected]>
> CC: Roger Pau Monné <[email protected]>
> 
> Leave as $%c.  Otherwise it doesn't assemble correctly presented with $$24568
> to parse as an instruction immediate.
> 
> v3:
>  * Fix a typo in the parameter name.
> v2:
>  * Use X86_FEATURE_XEN_FRED
> ---
>  xen/arch/x86/include/asm/current.h | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/x86/include/asm/current.h 
> b/xen/arch/x86/include/asm/current.h
> index c1eb27b1c4c2..62817e8476ec 100644
> --- a/xen/arch/x86/include/asm/current.h
> +++ b/xen/arch/x86/include/asm/current.h
> @@ -154,7 +154,9 @@ unsigned long get_stack_dump_bottom (unsigned long sp);
>      "rdsspd %[ssp];"                                            \
>      "cmp $1, %[ssp];"                                           \
>      "je .L_shstk_done.%=;" /* CET not active?  Skip. */         \
> -    "mov $%c[skstk_base], %[val];"                              \
> +    ALTERNATIVE("mov $%c[shstk_base], %[val];",                 \
> +                "mov $%c[shstk_base] + 8, %[val];",             \

I would also be fine with using the more simple '%' if that yields the
same result.  But seeing existing code is already using this
formatter, I think it makes more sense for this commit to not change
it.  It can always be adjusted in a followup commit if there's a
pressing need to change this.

I wouldn't have used %c myself unless it was already present, simply
because I'm not that proficient in inline assembly.

Thanks, Roger.

Reply via email to