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

Re: Re [PATCH] x86/CET: Fix build following c/s 43b98e7190


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Wed, 3 Jun 2020 12:44:34 +0100
  • Authentication-results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Wed, 03 Jun 2020 11:44:49 +0000
  • Ironport-sdr: IZTmpl3bIBHHpNBltS3GaBREVzm7EROitnIadLmDc9/nwLtsOAhbbcXCXJRHkYx+zMRfdgBwqz NY5bnZ+L04Ha7xEenfUNCbQwBC0yNVuRTXdgqDRIqtdm0dHIMDqszkFpGVXKWS1yLaOw1znWd0 M3I3HKVW8c1eObfptRBINhiDrN7Sp9X6aXqD9/2cTLHPhYV5KvQUQeef5UFz37v2AH9uqS2T9q ccEyMexJbE1mAn9OLZJHb9FW5Uta8Jjj8ywG0U+xzfv9F1eILGY2LRWlc1F8kAOLrW7iCPsRcJ mo8=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 03/06/2020 10:50, Jan Beulich wrote:
> On 02.06.2020 19:15, Andrew Cooper wrote:
>> On 02/06/2020 15:21, Jan Beulich wrote:
>>>> OSSTest reports:
>>>>
>>>>   x86_64.S: Assembler messages:
>>>>   x86_64.S:57: Error: no such instruction: `setssbsy'
>>>>   /home/osstest/build.150510.build-amd64/xen/xen/Rules.mk:183: recipe for 
>>>> target 'head.o' failed
>>>>   make[4]: Leaving directory 
>>>> '/home/osstest/build.150510.build-amd64/xen/xen/arch/x86/boot'
>>>>   make[4]: *** [head.o] Error 1
>>>>
>>>> All use of CET instructions, even those inside alternative blocks, needs 
>>>> to be
>>>> behind CONFIG_XEN_SHSTK, as it indicates suitable toolchain support.
>>>>
>>>> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
>>> That's quite a bit of #ifdef-ary here. Simple (operand-less) insns
>>> like SETSSBSY could easily be made available via .byte directives.
>>> Would you be amenable to to ack-ing a patch to replace some of the
>>> #ifdef-s (at least the ones at the lstar, cstar, and sysenter
>>> entry points), after 4.14?
>> Yeah - that was a bit of a mess in the end.  (But given the
>> circumstances, and that I've got past form typo'ing the SETSSBSY opcode,
>> it probably was the right move even in hindsight).
>>
>> Reducing it to .byte should be fine so long as some form of /* setssbsy
>> */ comment appears.
> Sure.
>
>> One other option would be to introduce a SETSSBSY macro, but that hides
>> the alternative so is something I'd prefer to avoid.
> With this you mean you'd rather not see us go the CLAC/STAC route?
> I was instead thinking of a pure assembly macro named "setssbsy".
> In fact we could switch the CLAC/STAC ugliness to some such, if we
> end up being happy with the model.

The thing about the current STAC / CLAC is that, as written, they give
the impression of being unconditional.  This is poor in terms of code
clarity.

Furthermore, making them indistinguishable from the plain instructions
is definitely a no-go, because then we've got assembly source (again,
which appears unconditional) which doesn't match its disassembly (the
backing nops) - at least with the macros in upper case, it is obvious
that something is up, even if you have to searching for why.

If we went for pure assembly macros with an alt_ or maybe_ prefix, then
that would be reasonable.  It looks as close to regular instruction as
possible, but also makes it explicitly clear that it is conditional.

~Andrew



 


Rackspace

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