KVM side has added the framework (kvm.git:d1d93fa90) to support MSR based features. Here is the QEMU part, including data structure changes/expanding, referring functions changes, and the implementations on KVM_GET_MSR_FEATURE_INDEX_LIST and KVM_GET_MSRS system ioctl.
Changelog: v6: In cpu feature filtering, filter out MSR features whose CPUID feature dependency is not there. Check feature word type for other accelerator, like hvf, for otherwise it would return bogus EAX/ECX values in x86_cpu_get_supported_feature_word(). v5: Re-order patches. Complement feature MSR set routines. v4: Re-organize patch set to conform to request of individually build pass. Add KVM capability check for KVM_GET_MSR_INDEX_LIST before fetch. Special treatment for MSR_IA32_ARCH_CAPABILITIES.RSBA. Use more convenient glib wrapper (g_strdup_printf) instead of native (sprintf). v3: patch 2&3 in v2 are corrupted. Re-format patches. v2: coding style changes to pass ./scripts/checkpatch.pl. Robert Hoo (3): kvm: Add support to KVM_GET_MSR_FEATURE_INDEX_LIST and KVM_GET_MSRS system ioctl x86: Data structure changes to support MSR based features x86: define a new MSR based feature word -- FEATURE_WORDS_ARCH_CAPABILITIES include/sysemu/kvm.h | 2 + target/i386/cpu.c | 234 +++++++++++++++++++++++++++++++++++++++------------ target/i386/cpu.h | 15 +++- target/i386/kvm.c | 91 ++++++++++++++++++++ 4 files changed, 289 insertions(+), 53 deletions(-) -- 1.8.3.1