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
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to