RE: [PATCH v10 36/38] x86/fred: Add fred_syscall_init()

H. Peter Anvin
2023-09-21T02:25:58Z

On September 20, 2023 1:18:14 AM PDT, Thomas Gleixner <tglx@linutronix.de> wrote:
>On Wed, Sep 20 2023 at 04:33, Li, Xin3 wrote:
>>> > +static inline void fred_syscall_init(void) {
>>> > + /*
>>> > + * Per FRED spec 5.0, FRED uses the ring 3 FRED entrypoint for SYSCALL
>>> > + * and SYSENTER, and ERETU is the only legit instruction to return to
>>> > + * ring 3, as a result there is _no_ need to setup the SYSCALL and
>>> > + * SYSENTER MSRs.
>>> > + *
>>> > + * Note, both sysexit and sysret cause #UD when FRED is enabled.
>>> > + */
>>> > + wrmsrl(MSR_LSTAR, 0ULL);
>>> > + wrmsrl_cstar(0ULL);
>>>
>>> That write is pointless. See the comment in wrmsrl_cstar().
>>
>> What I heard is that AMD is going to support FRED.
>>
>> Both LSTAR and CSTAR have no function when FRED is enabled, so maybe
>> just do NOT write to them?
>
>Right. If AMD needs to clear it then it's trivial enough to add a
>wrmsrl_cstar(0) to it.

Just to clarify: the only reason I added the writes here was to possibly make bugs easier to track down. There is indeed no functional reason.