[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] cpuid problem in upstream qemu with kvm
From: |
Gleb Natapov |
Subject: |
Re: [Qemu-devel] cpuid problem in upstream qemu with kvm |
Date: |
Mon, 14 Dec 2009 22:00:02 +0200 |
On Mon, Dec 14, 2009 at 01:57:29PM -0600, Anthony Liguori wrote:
> Michael S. Tsirkin wrote:
> >On Mon, Dec 14, 2009 at 01:44:22PM -0600, Anthony Liguori wrote:
> >>Michael S. Tsirkin wrote:
> >>>Hi!
> >>>I have a linux guest where init crashes during boot with invalid opcode
> >>>error
> >>>with kernel 2.6.31, but works fine with kernel 2.6.32.
> >>>It also works fine even with 2.6.31 with qemu-kvm.
> >>>
> >>>With Gleb's help, we figured out that the opcode in question is syscall,
> >>>which
> >>>is unsupported by hardware on kvm with intel hosts, and is emulated in
> >>>software
> >>>with intel hosts in 2.6.32 and up. AMD hosts support this natively.
> >>>
> >>>The root cause: by default qemu with kvm enabled reports the following CPU
> >>>ID:
> >>> address@hidden:~$ less /proc/cpuinfo
> >>> processor : 0
> >>> vendor_id : AuthenticAMD
> >>> cpu family : 6
> >>> model : 2
> >>> model name : QEMU Virtual CPU version 0.11.50
> >>> stepping : 3
> >>> cpu MHz : 2493.679
> >>> cache size : 512 KB
> >>> fdiv_bug : no
> >>> hlt_bug : no
> >>> f00f_bug : no
> >>> coma_bug : no
> >>> fpu : yes
> >>> fpu_exception : yes
> >>> cpuid level : 4
> >>> wp : yes
> >>> flags : fpu de pse tsc msr pae mce cx8 apic sep
> >>> mtrr pge mca cmov pat
> >>> pse36 clflush mmx fxsr sse sse2 syscall lm up pni
> >>> bogomips : 4987.35
> >>> clflush size : 64
> >>> power management:
> >>>
> >>>Problem is, guest sees syscall+AMD vendor and concludes that it is ok to
> >>>use
> >>>syscall opcode, which results in a crash (or at least, extra VMExits).
> >>>I understand from Avi that qemu-kvm solves this problem by reporting
> >>>the actual CPU vendor from host, to guest.
> >>The bit that's ugly about that is that we do not save/restore
> >>cpuid.vendor_id so that would break live migration.
> >>
> >>Regards,
> >>
> >>Anthony Liguori
> >
> >This is a feature. It would be very wrong to save/restore cpuid IMO.
> >It must be part of machine config.
>
> You can already do -cpu qemu64,vendor_id=AuthenticAMD or
> ,vendor_id=GenuineIntel.
>
> If you don't specify anything explicitly, we use AuthenticAMD as a
> default. Detecting the host by default is problematic because then
> the same invocation on a different host would change the visible
> vendor_id.
>
> I thought KVM emulates the syscall instruction? I swear I've seen
> patches for that.
>
It is. Starting from 2.6.32.
--
Gleb.
- [Qemu-devel] cpuid problem in upstream qemu with kvm, Michael S. Tsirkin, 2009/12/14
- Re: [Qemu-devel] cpuid problem in upstream qemu with kvm, Anthony Liguori, 2009/12/14
- Re: [Qemu-devel] cpuid problem in upstream qemu with kvm, Michael S. Tsirkin, 2009/12/14
- Re: [Qemu-devel] cpuid problem in upstream qemu with kvm, Michael S. Tsirkin, 2009/12/14
- Re: [Qemu-devel] cpuid problem in upstream qemu with kvm, Anthony Liguori, 2009/12/14
- Re: [Qemu-devel] cpuid problem in upstream qemu with kvm, Michael S. Tsirkin, 2009/12/14
- Re: [Qemu-devel] cpuid problem in upstream qemu with kvm, Anthony Liguori, 2009/12/14
- Re: [Qemu-devel] cpuid problem in upstream qemu with kvm, Michael S. Tsirkin, 2009/12/14
- Re: [Qemu-devel] cpuid problem in upstream qemu with kvm, Anthony Liguori, 2009/12/14
- Re: [Qemu-devel] cpuid problem in upstream qemu with kvm, Michael S. Tsirkin, 2009/12/15