As noted in the code comments, KVM allows VMREAD/VMWRITE to all defined
fields, whether or not the field should actually exist for the vCPU model doesn't
enter into the equation. That's technically wrong as there are a number of
fields that the SDM explicitly states exist iff a certain feature is supported. To
fix that we'd need to add a "feature flag" to vmcs_field_to_offset_table that is
checked against the vCPU model, though updating the MSR would probably fall
onto userspace's shoulders?
[Hu, Robert]
Perhaps more easier and proper to do this in KVM side.
QEMU sets actual feature set down to KVM, and KVM updates IA32_VMX_VMCS_ENUM
MSR accordingly. We don't see a channel that QEMU constructs a VMCS and sets a whole
to KVM.