Re: Current KVM head crashes on startup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Amit Shah wrote:
On (Wed) Feb 18 2009 [13:21:26], Amit Shah wrote:
On (Tue) Feb 17 2009 [12:47:10], Brian Kress wrote:
When I try to run KVM built off the current head, it crashes with a Segmentation fault. KVM-84 does
not.  Seems to be dealing with the CPUID changes:


   0x081a5c70 in host_cpuid ()
       at /home/kressb/kvm/src/qemu/target-i386/helper.c:1426
   1426        asm volatile("pusha \n\t"
This looks like some kind of stack corruption on 32-bit:

1472            if (kvm_enabled())
(gdb)
1473                host_cpuid(0, 0, NULL, ebx, ecx, edx);
(gdb)

Program received signal SIGSEGV, Segmentation fault.
0x081a2d60 in host_cpuid (function=10, count=1231384169, eax=0x0, ebx=0xadfc1914,
    ecx=0xadfc1910, edx=0xadfc190c)
    at /home/amit/src/kvm-userspace/qemu/target-i386/helper.c:1426
1426        asm volatile("pusha \n\t"

I don't see this on 64-bit. Investigating.

Avi, what's the reason for doing this in the host_cpuid code? As I see
it, the first version should work for both 64-bit and 32-bit code.

#ifdef __x86_64__
    asm volatile("cpuid"
                 : "=a"(vec[0]), "=b"(vec[1]),
                   "=c"(vec[2]), "=d"(vec[3])
                 : "0"(function), "c"(count) : "cc");
#else
    asm volatile("pusha \n\t"
                 "cpuid \n\t"
                 "mov %%eax, 0(%1) \n\t"
                 "mov %%ebx, 4(%1) \n\t"
                 "mov %%ecx, 8(%1) \n\t"
                 "mov %%edx, 12(%1) \n\t"
                 "popa"
                 : : "a"(function), "c"(count), "S"(vec)
                 : "memory", "cc");
#endif

The first version generates too much register pressure for some compilers on i386, leading to compilation failures. The second version is surely wrong, though? Counting from zero, the "vec" parameter would be %2, not %1.


(copied Anthony)

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux