On 22/02/2024 4:55 pm, Jan Beulich wrote: > On 22.02.2024 17:44, Roger Pau Monne wrote: >> --- a/xen/arch/x86/include/asm/alternative.h >> +++ b/xen/arch/x86/include/asm/alternative.h >> @@ -167,9 +167,25 @@ extern void alternative_branches(void); >> #define ALT_CALL_arg5 "r8" >> #define ALT_CALL_arg6 "r9" >> >> +#ifdef CONFIG_CC_IS_CLANG >> +/* >> + * Use an union with an unsigned long in order to prevent clang from >> skipping a >> + * possible truncation of the value. By using the union any truncation is >> + * carried before the call instruction. >> + * https://github.com/llvm/llvm-project/issues/82598 >> + */ > I think it needs saying that this is relying on compiler behavior not > mandated by the standard, thus explaining why it's restricted to > Clang (down the road we may even want to restrict to old versions, > assuming they fix the issue at some point). Plus also giving future > readers a clear understanding that if something breaks with this, it's > not really a surprise. > > Aiui this bug is only a special case of the other, much older one, so > referencing that one here too would seem advisable. > > As a nit: I think it is "a union" (spelling according to pronunciation), > and I guess the title could now do with saying "optionally" or > mentioning Clang or some such.
Yes. "a union" is the right form here. ~Andrew P.S. Spoken, "an union" would come across as "an onion", which is something very different. P.P.S. As I noted to Matthew concerning https://mjg59.dreamwidth.org/66907.html "There's an interesting sidechannel in your blog post. You seem to call it an S-O-C and not a soc(k), based on the "an""
