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.
