> From: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Sent: Wednesday, December 15, 2021 5:53 PM > > On Wed, Dec 15 2021 at 05:46, Kevin Tian wrote: > >> From: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > >> + if (guest_fpu) { > >> + newfps->is_guest = true; > >> + newfps->is_confidential = curfps->is_confidential; > >> + newfps->in_use = curfps->in_use; > > > > What is the purpose of this 'in_use' field? Currently it's only > > touched in three places: > > > > - set when entering guest; > > - cleared when exiting to userspace; > > - checked when freeing a guest FPU; > > > > The last one can be easily checked by comparing to current fps. > > I added it for paranoia sake because the destruction of the KVM FPU > state is not necessarily in the context of the vCPU thread. Yes, it > should not happen... > > >> + if (guest_fpu) { > >> + curfps = xchg(&guest_fpu->fpstate, newfps); > > > > This can be a direct value update to guest_fpu->fpstate since > > curfps has already been acquired in the start. > > Indeed. > Thanks for confirmation. We'll include those changes in next version. Thanks Kevin