KVM: x86: expose invariant tsc cpuid bit
Invariant TSC is a property of TSC, no additional
support code necessary.
Signed-off-by Marcelo Tosatti <[email protected]>
arch/x86/kvm/cpuid.c +5 -1
@@ -495,6 +495,11 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, entry->ecx &= kvm_supported_word6_x86_features;cpuid_mask (&entry->ecx,6 );break ; +case 0x80000007 :/* Advanced power management */ +/* invariant TSC is CPUID.80000007H:EDX[8] */ + entry->edx &= (1 <<8 ); + entry->eax = entry->ebx = entry->ecx =0 ; +break ;case 0x80000008 : {unsigned g_phys_as = (entry->eax >>16 ) &0xff ;unsigned virt_as =max ((entry->eax >>8 ) &0xff ,48U );
@@ -525,7 +530,6 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,case 3 :/* Processor serial number */ case 5 :/* MONITOR/MWAIT */ case 6 :/* Thermal management */ -case 0x80000007 :/* Advanced power management */ case 0xC0000002 :case 0xC0000003 :case 0xC0000004 :
KVM: x86: expose invariant tsc cpuid bit (v2)
Invariant TSC is a property of TSC, no additional
support code necessary.
Signed-off-by Marcelo Tosatti <[email protected]>
arch/x86/kvm/cpuid.c +7 -1
@@ -495,6 +495,13 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, entry->ecx &= kvm_supported_word6_x86_features;cpuid_mask (&entry->ecx,6 );break ; +case 0x80000007 :/* Advanced power management */ +/* invariant TSC is CPUID.80000007H:EDX[8] */ + entry->edx &= (1 <<8 ); +/* mask against host */ + entry->edx &= boot_cpu_data.x86_power; + entry->eax = entry->ebx = entry->ecx =0 ; +break ;case 0x80000008 : {unsigned g_phys_as = (entry->eax >>16 ) &0xff ;unsigned virt_as =max ((entry->eax >>8 ) &0xff ,48U );
@@ -525,7 +532,6 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,case 3 :/* Processor serial number */ case 5 :/* MONITOR/MWAIT */ case 6 :/* Thermal management */ -case 0x80000007 :/* Advanced power management */ case 0xC0000002 :case 0xC0000003 :case 0xC0000004 :
Paolo Bonzini
maintainerRe: KVM: x86: expose invariant tsc cpuid bit (v2)
Il 27/04/2014 03:30, Marcelo Tosatti ha scritto:
Quoted 26 lines
Invariant TSC is a property of TSC, no additional
support code necessary.Signed-off-by Marcelo Tosatti <[email protected]>arch/x86/kvm/cpuid.c +7
-0@@ -495,6 +495,13 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, entry->ecx &= kvm_supported_word6_x86_features;cpuid_mask (&entry->ecx,6 );break ; +case 0x80000007 :/* Advanced power management */ +/* invariant TSC is CPUID.80000007H:EDX[8] */ + entry->edx &= (1 <<8 ); +/* mask against host */ + entry->edx &= boot_cpu_data.x86_power; + entry->eax = entry->ebx = entry->ecx =0 ; +break ;case 0x80000008 : {unsigned g_phys_as = (entry->eax >>16 ) &0xff ;unsigned virt_as =max ((entry->eax >>8 ) &0xff ,48U );
arch/x86/kvm/cpuid.c static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, · line 537
Quoted 7 lines
arch/x86/kvm/cpuid.c +0
-1@@ -525,7 +532,6 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,case 3 :/* Processor serial number */ case 5 :/* MONITOR/MWAIT */ case 6 :/* Thermal management */ -case 0x80000007 :/* Advanced power management */ case 0xC0000002 :case 0xC0000003 :case 0xC0000004 :
Applying to kvm/queue, thanks.
Paolo