[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 07/22] x86/traps: Alter switch_stack_and_jump() for FRED mode


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Tue, 10 Feb 2026 11:15:18 +0000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RFW+V4tlPkO41690Rx6DZso/o+PEWzlkq6pyciYOmcs=; b=AtyXtOO05x36PYoL5W8iuOafObtHrrY1OZK7w39/HErfU3bEkDgwanyv2hPGBq9U4x+vj2ZFCDVy6khAxMGeSgVNZVb/FGCDnLL9OjIOc8Oy487pNVJQfg4wtBC3RwgfMRR8iXHYeD0NYNNZigViW+ftmD/Fl6ggBhylkV5pEI9T0gVaAXgDyU9PkgJL+XAZoLHC3MvN6A45tKes0bzwz3wuFegLj6VV0j2n1jb2YW8syw8FeuOpLDeMWT77BS+db8+0/ZrKBX7hZ91MznHT3WHjwKgy1mB5IVBDe+87OoIeP3SwZulpf2xSVFK9YXlcGAIpYYbUPxV7AYmWnGFgjQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LjHTI9FLMDcvN46oEdSlc3VIxGMwpwjbqq8hNT1XpYuRHfk32FG+EbMjtNhbcn2yaGXP79gY8aF4Y4ymVFlaRxrZHCrkaBhemr61FPtj2wCQvTKYXcMD6acpMP0EC+APLP3inmgvcBJydWWlkaF++0EagprPB30cUy7jb8Po3EwrST9NpUklfzi8NcxBPTLvyzMyn4eq2aR5C/cT0XLhLbcHcKaMepkc/RJy0XFl5umnm18m5hSEDEdM/tKhN28PtvO0TkHjRGt/nMYiJD4kkut/EqqZt+X84CcJEa0y0CUDrPZ1uL1iCp1q3dv14uVynJCCwPnH1/OZqX5weKPNJw==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Tue, 10 Feb 2026 11:15:47 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 07/10/2025 4:58 pm, Jan Beulich wrote:
> On 04.10.2025 00:53, 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 <andrew.cooper3@xxxxxxxxxx>
>> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
>> ---
>> CC: Jan Beulich <JBeulich@xxxxxxxx>
>> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
>>
>> Leave as $%c.  Otherwise it doesn't assemble correctly presented with $$24568
>> to parse as an instruction immediate.
> I don't follow. Where would the 2nd $ come from if you write ...
>
>> --- 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];",             \
>> +                X86_FEATURE_XEN_FRED)                           \
>     ALTERNATIVE("mov %[shstk_base], %[val];",                   \
>                 "mov %[shstk_base] + 8, %[val];",               \
>                 X86_FEATURE_XEN_FRED)                           \

I find this feedback completely uncharacteristic.  You always goes out
of your way to hide % inside macros to prohibit non-register operands.

This is exactly the same, except to force an immediate operand, so the
length of the two instructions is the same.

~Andrew



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.