aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/x86.c
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2010-04-11 08:33:32 -0400
committerAvi Kivity <avi@redhat.com>2010-05-17 05:17:36 -0400
commitf7a711971edd952352a89698db1d36f469e25f77 (patch)
tree69e0ea723f0a408c634af5dea10dcccdfe4aef35 /arch/x86/kvm/x86.c
parente46479f852adab6027e4950d69400d967bf7bc6f (diff)
KVM: Fix MAXPHYADDR calculation when cpuid does not support it
MAXPHYADDR is derived from cpuid 0x80000008, but when that isn't present, we get some random value. Fix by checking first that cpuid 0x80000008 is supported. Acked-by: Pekka Enberg <penberg@cs.helsinki.fi> Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch/x86/kvm/x86.c')
-rw-r--r--arch/x86/kvm/x86.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 33a40c544c7a..d65e481c5fa4 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -4171,9 +4171,13 @@ int cpuid_maxphyaddr(struct kvm_vcpu *vcpu)
4171{ 4171{
4172 struct kvm_cpuid_entry2 *best; 4172 struct kvm_cpuid_entry2 *best;
4173 4173
4174 best = kvm_find_cpuid_entry(vcpu, 0x80000000, 0);
4175 if (!best || best->eax < 0x80000008)
4176 goto not_found;
4174 best = kvm_find_cpuid_entry(vcpu, 0x80000008, 0); 4177 best = kvm_find_cpuid_entry(vcpu, 0x80000008, 0);
4175 if (best) 4178 if (best)
4176 return best->eax & 0xff; 4179 return best->eax & 0xff;
4180not_found:
4177 return 36; 4181 return 36;
4178} 4182}
4179 4183