Extend the X86_FEATURE_* magic to multi-bit values, which I'm calling "properties" (feel free to suggest a better name). The basic concept, and even the core code, is the same, the difference is really just one bit versus many bits. The main goal is to move away from open coding CPUID checks, which almost always end up needing a comment to explain what all the magic numbers mean. Sean Christopherson (12): KVM: selftests: Add X86_FEATURE_PAE and use it calc "fallback" MAXPHYADDR KVM: selftests: Refactor X86_FEATURE_* framework to prep for X86_PROPERTY_* KVM: selftests: Add X86_PROPERTY_* framework to retrieve CPUID values KVM: selftests: Use X86_PROPERTY_MAX_KVM_LEAF in CPUID test KVM: selftests: Refactor kvm_cpuid_has() to prep for X86_PROPERTY_* support KVM: selftests: Add kvm_cpu_*() support for X86_PROPERTY_* KVM: selftests: Convert AMX test to use X86_PROPRETY_XXX KVM: selftests: Convert vmx_pmu_caps_test to use X86_PROPERTY_* KVM: selftest: Add PMU feature framework, use in PMU event filter test KVM: selftests: Add dedicated helpers for getting x86 Family and Model KVM: selftests: Add and use KVM helpers for x86 Family and Model KVM: selftest: Drop helpers for getting specific KVM supported CPUID entry .../selftests/kvm/include/x86_64/processor.h | 279 ++++++++++++++---- .../selftests/kvm/lib/x86_64/processor.c | 60 ++-- tools/testing/selftests/kvm/x86_64/amx_test.c | 105 ++----- .../testing/selftests/kvm/x86_64/cpuid_test.c | 11 +- .../kvm/x86_64/pmu_event_filter_test.c | 74 ++--- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 19 +- 6 files changed, 304 insertions(+), 244 deletions(-) base-commit: e18d6152ff0f41b7f01f9817372022df04e0d354 -- 2.38.0.rc1.362.ged0d419d3c-goog