diff options
Diffstat (limited to 'arch/x86/kvm/reverse_cpuid.h')
| -rw-r--r-- | arch/x86/kvm/reverse_cpuid.h | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/kvm/reverse_cpuid.h b/arch/x86/kvm/reverse_cpuid.h index a5717282bb9c..56cbdb24400a 100644 --- a/arch/x86/kvm/reverse_cpuid.h +++ b/arch/x86/kvm/reverse_cpuid.h @@ -15,6 +15,7 @@ enum kvm_only_cpuid_leafs {  	CPUID_12_EAX	 = NCAPINTS,  	CPUID_7_1_EDX,  	CPUID_8000_0007_EDX, +	CPUID_8000_0022_EAX,  	NR_KVM_CPU_CAPS,  	NKVMCAPINTS = NR_KVM_CPU_CAPS - NCAPINTS, @@ -47,6 +48,9 @@ enum kvm_only_cpuid_leafs {  /* CPUID level 0x80000007 (EDX). */  #define KVM_X86_FEATURE_CONSTANT_TSC	KVM_X86_FEATURE(CPUID_8000_0007_EDX, 8) +/* CPUID level 0x80000022 (EAX) */ +#define KVM_X86_FEATURE_PERFMON_V2	KVM_X86_FEATURE(CPUID_8000_0022_EAX, 0) +  struct cpuid_reg {  	u32 function;  	u32 index; @@ -74,6 +78,7 @@ static const struct cpuid_reg reverse_cpuid[] = {  	[CPUID_7_1_EDX]       = {         7, 1, CPUID_EDX},  	[CPUID_8000_0007_EDX] = {0x80000007, 0, CPUID_EDX},  	[CPUID_8000_0021_EAX] = {0x80000021, 0, CPUID_EAX}, +	[CPUID_8000_0022_EAX] = {0x80000022, 0, CPUID_EAX},  };  /* @@ -108,6 +113,8 @@ static __always_inline u32 __feature_translate(int x86_feature)  		return KVM_X86_FEATURE_SGX_EDECCSSA;  	else if (x86_feature == X86_FEATURE_CONSTANT_TSC)  		return KVM_X86_FEATURE_CONSTANT_TSC; +	else if (x86_feature == X86_FEATURE_PERFMON_V2) +		return KVM_X86_FEATURE_PERFMON_V2;  	return x86_feature;  }  |