[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 16:21:13 +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=QIh6qFKQWXJZtftb2PcCVf8CVwO630hgrWNeo3m09Y8=; b=DZIfg9H8c9x1nLWLoWmHJHOk2KTbt5OYZcDnpACI3tHFo+Y1yL19VcKab1bq5jlWsRBItj4W/VKqUNlQWT6MHh/AM+806vxKYdKYK9O7ga60Be7tBnIQAXGN1ZSfr6BUu2t0u3bgvq1rtyvW4nn87GKsDjRypdpJxHTSV+Y4MqP3RH/7/rEBNqSwUMJzUGHJ2clJZ2X/t2MWTPvs8z+MlBSLAln1aZOfjyJH0wdaugR+mf+zxw0barqwyhQBMwJSrPa1TmS5K/VslPrlCI7SeWylcUerNKfPgLhThcxmmtJB3N3Urn1auzHOj0EfSA2tkJEdUypfRdZVj6bJKH2nmA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YRLQczpMOnOxj56Ap+loJbHD63oD4WLUgSBFQWURmDaO81S9P2nlWi/W5pDrbiO2iSDrBEFlVgl6w2DSnU/sImji/6efDloQaubMqroh4YCIUvv/gtEqQupEp1YwssxsKa70UKUDAKp8i0Y3ue10N7rJrMGnsb4uTlAvPgYDbg450IKPREtaZFS7QMZT3b+UtS21ezOljhQcnN+nViRIaY+GmQHeplzCbEWHTZoGLwo/REPL1TXBrBw/xkwWDlVXAPf+5qQHmc7M5urFnNGLGZKsyK7QBKj1JWjzaOiebqhz0KoYvL8JRinJk3NtfmRuu3OIm8ILTMpi+COF+OASLA==
  • 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 16:21:27 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 10/02/2026 11:55 am, Jan Beulich wrote:
> On 10.02.2026 12:15, Andrew Cooper wrote:
>> 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.
> Thinking about it more, are you perhaps referring to assembler macros?
> There indeed I prefer to have the % inside the macros; the same may go
> for $ there, but I don't think we had the need so far. For inline
> assembly the situation is different: The compiler emits the % (and also
> the $), unless special modifiers are used. It wouldn't even occur to me
> to ask that we use %%%V[val] for a register operand. That really is the
> register equivalent of the $%c[val] that you use above.

We can't use %V anyway because it's not available in our toolchain baseline.

But, bottom line.  How insistent are you going to be here, because this
is the only thing holding up committing 6 patches.

~Andrew



 


Rackspace

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