Re: [PATCH 10/19] kvm: x86: Emulate WRMSR of guest IA32_XFD

Paolo Bonzini
2021-12-13T15:06:31Z

On 12/8/21 01:03, Yang Zhong wrote:
> + /*
> + * Update IA32_XFD to the guest value so #NM can be
> + * raised properly in the guest. Instead of directly
> + * writing the MSR, call a helper to avoid breaking
> + * per-cpu cached value in fpu core.
> + */
> + fpregs_lock();
> + current->thread.fpu.fpstate->xfd = data;

This is wrong, it should be written in vcpu->arch.guest_fpu.

> + xfd_update_state(current->thread.fpu.fpstate);

This is okay though, so that KVM_SET_MSR will not write XFD and WRMSR will.

That said, I think xfd_update_state should not have an argument.
current->thread.fpu.fpstate->xfd is the only fpstate that should be
synced with the xfd_state per-CPU variable.

Paolo

> + fpregs_unlock();