On Wed, 2018-01-31 at 11:53 -0800, Jim Mattson wrote: > On Wed, Jan 31, 2018 at 11:37 AM, KarimAllah Ahmed wrote: > > > + > > + if (to_vmx(vcpu)->save_spec_ctrl_on_exit) { > > + nested_vmx_disable_intercept_for_msr( > > + msr_bitmap_l1, msr_bitmap_l0, > > + MSR_IA32_SPEC_CTRL, > > + MSR_TYPE_R | MSR_TYPE_W); > > + } > > + > > As this is written, L2 will never get direct access to this MSR until > after L1 writes it. What if L1 never writes it? The condition should > really be something that captures, "if L0 is willing to yield this MSR > to the guest..." I'm still kind of lost here, but don't forget the requirement that the MSR must *not* be passed through for direct access by L1 or L2 guests, unless that ->save_spec_ctrl_on_exit flag is set. Because that's what makes us set it back to zero on vmexit. So the above condition doesn't look *so* wrong to me. Perhaps the issue is that we're missing a way for L2 to actually cause that flag to get set?
Attachment:
smime.p7s
Description: S/MIME cryptographic signature