> +/* > + * Helpers for changing XSAVES system states. > + */ > +static inline void modify_fpu_regs_begin(void) > +{ > + fpregs_lock(); > + if (test_thread_flag(TIF_NEED_FPU_LOAD)) > + __fpregs_load_activate(); > +} > + > +static inline void modify_fpu_regs_end(void) > +{ > + fpregs_unlock(); > +} These are massively under-commented and under-changelogged. This looks like it's intended to ensure that we have supervisor FPU state for this task loaded before we go and run the MSRs that might be modifying it. But, that seems broken. If we have supervisor state, we can't always defer the load until return to userspace, so we'll never?? have TIF_NEED_FPU_LOAD. That would certainly be true for cet_kernel_state. It seems like we actually need three classes of XSAVE states: 1. User state 2. Supervisor state that affects user mode 3. Supervisor state that affects kernel mode We can delay the load of 1 and 2, but not 3. But I don't see any infrastructure for this.