On Sat, Sep 8, 2018 at 5:58 PM Liran Alon <liran.alon@xxxxxxxxxx> wrote: > > > > On 7 Sep 2018, at 21:37, Jim Mattson <jmattson@xxxxxxxxxx> wrote: > > > > Are these two lists intended to be disjoint? Is it a bug that > > IA32_ARCH_CAPABILITIES appears in both? > > From what I understand, the difference between these two lists is the following: > * KVM_GET_MSR_INDEX_LIST is list of MSRs that are emulated/virtualized by KVM and > their value can be get/set via KVM_GET_MSRS/KVM_SET_MSRS on a *vCPU*. > * KVM_GET_MSR_FEATURE_INDEX_LIST is a list of MSRs that are emulated/virtualized by KVM > and their value can be get via KVM_GET_MSRS on */dev/kvm*. > (But can be set via KVM_SET_MSRS on a *vCPU*). > > It seems that the KVM_GET_MSR_FEATURE_INDEX_LIST exists only for the purpose of > userspace to be able to know how KVM plans to expose these MSRs values to newly created vCPUs > based on KVM capabilities and host CPU capabilities. > > If the above is correct, it seems to me that the MSRs in KVM_GET_MSR_FEATURE_INDEX_LIST are actually > suppose to be a subset of KVM_GET_MSR_INDEX_LIST. So it shouldn’t be an issue that IA32_ARCH_CAPABILITIES > Exist in both of them. > However, it seems that I am wrong because KVM_GET_MSR_FEATURE_INDEX_LIST is not > a subset of KVM_GET_MSR_INDEX_LIST at all. In fact, it seems that IA32_ARCH_CAPABILITIES is the only one > which exists in both lists… > Also, MSR_IA32_UCODE_REV exists only in KVM_GET_MSR_FEATURE_INDEX_LIST but one can clearly see > how it’s value can be get via KVM_GET_MSRS on a *vCPU* so it was also suppose to be part of KVM_GET_MSR_INDEX_LIST > but it’s not… > > So I’m left pretty confused regarding this interface. Would like clarification as-well :) Here's a more basic question: Should any MSR that can be read and written by a guest appear in KVM_GET_MSR_INDEX_LIST? If not, what's the point of this ioctl?