Re: [RFC PATCH 04/13] x86/fpu/xstate: Enumerate User Interrupts supervisor state

From: Sohil Mehta
Date: Mon Sep 27 2021 - 18:25:52 EST

On 9/23/2021 3:34 PM, Thomas Gleixner wrote:
On Mon, Sep 13 2021 at 13:01, Sohil Mehta wrote:
Enable xstate supervisor support for User Interrupts by default.
What means enabled by default? It's enabled when available and not
disabled on the command line.

I'll remove it.

The user interrupt state for a task consists of the MSR state and the
User Interrupt Flag (UIF) value. XSAVES and XRSTORS handle saving and
restoring both of these states.

<The supervisor XSTATE code might be reworked based on issues reported
in the past. The Uintr context switching code would also need rework and
additional testing in that regard.>
What? Which issues were reported and if they have been reported then how
is the provided code correct?

I apologize for causing this confusion. This comment was added a few months back when the PKRU and FPU code was being reworked. This comment is no longer valid.

+ * State component 14 is supervisor state used for User Interrupts state.
+ * The size of this state is 48 bytes
+ */
+struct uintr_state {
+ u64 handler;
+ u64 stack_adjust;
+ u32 uitt_size;
+ u8 uinv;
+ u8 pad1;
+ u8 pad2;
+ u8 uif_pad3; /* bit 7 - UIF, bits 6:0 - reserved */
Please do not use tail comments. Also what kind of name is uif_pad3?
Bitfields exist for a reason.

An internal version of this used bitfields. I was suggested that use of bitfields is not recommended for x86 code.

The name uif_pad3 is really ugly though. I'll change it to a bitfield next time.