From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pekka Enberg Subject: Re: Problem with KVM guest switching to x86 long mode Date: Sun, 11 Apr 2010 13:02:10 +0300 Message-ID: <4BC19E22.7050602@cs.helsinki.fi> References: <4BBE2213.6020802@redhat.com> <4BBE277B.1090908@cs.helsinki.fi> <4BBE2EF3.6010304@redhat.com> <4BC16CA3.8060804@cs.helsinki.fi> <4BC1936F.5060009@redhat.com> <4BC19AF6.6030407@cs.helsinki.fi> <4BC19D71.2060703@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: KVM General To: Avi Kivity Return-path: Received: from courier.cs.helsinki.fi ([128.214.9.1]:46795 "EHLO mail.cs.helsinki.fi" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750770Ab0DKKCQ (ORCPT ); Sun, 11 Apr 2010 06:02:16 -0400 In-Reply-To: <4BC19D71.2060703@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: Avi Kivity wrote: > On 04/11/2010 12:48 PM, Pekka Enberg wrote: >>> So the guest is in long mode, happily trying to access pci config space. >>> >>> MAXPHYADDR comes from cpuid 80000008.eax[0:7]. Typical values are >>> 36-40 (number of physical address bits supported by the processor). >>> What value does your guest see? >> >> >> Ah, nice catch! The host cpuid doesn't seem to support 80000008 at so >> I didn't set it up in the guest either. I now added dummy emulation >> for it and the triple fault is fixed. > > It should work without 80000008 set up - failure should happen only if > it is setup incorrectly: > > int cpuid_maxphyaddr(struct kvm_vcpu *vcpu) > { > struct kvm_cpuid_entry2 *best; > > best = kvm_find_cpuid_entry(vcpu, 0x80000008, 0); > if (best) > return best->eax & 0xff; > return 36; > } Well, like I said, if I don't add an entry for it in struct kvm_cpuid2 that's passed to KVM_SET_CPUID2 ioctl, I see a triple fault on Core 2 Duo CPU that doesn't seem to have native 0x80000008. Pekka