Environment: ------------ Host OS (ia32/ia32e/IA64):ia32e Guest OS (ia32/ia32e/IA64):ia32e Guest OS Type (Linux/Windows):Linux kvm.git next Commit:e47a5f5fb715b90b40747e9e235de557c6abd56c qemu-kvm Commit:b5803aa3583e82e5133f7621121bc15ee694f4a1 Host Kernel Version:3.10.0-rc1 Hardware: SandyBridge-EP, Haswell Bug detailed description: -------------------------- When starting L1 guest with parameter "-cpu host" (or '-cpu SandyBridge,+vmx', '-cpu Haswell,+vmx'), the L2 guest will print error like "NMI received for unknown reason 00 on CPU 1." note: When starting L1 guest with parameter "-cpu qemu64,+vmx", L2 guest won't print NMI error. Reproduce steps: ---------------- 1. create L1 guest: qemu-system-x86_64 --enable-kvm -m 10240 -smp 8 -net nic,macaddr=00:12:45:67:2B:1C -net tap,script=/etc/kvm/qemu-ifup nested-kvm-rhel6u4.qcow -cpu host 2. create L2 guest qemu-system-x86_64 --enable-kvm -m 1024 -smp 2 -net none rhel6u4.img Current result: ---------------- L2 guest continuously print NMI message Expected result: ---------------- L2 guest has no NMI message print; L2 works fine Basic root-causing log: ---------------------- [ in L2's 'dmesg'] Uhhuh. NMI received for unknown reason 30 on CPU 0. Do you have a strange power saving mode enabled? Dazed and confused, but trying to continue
kvm next + qemu-kvm = result 188424ba + b5803aa3 = good db6ae615 + b5803aa3 = bad This bug may have some relationship with bug #58921.
this commit fix the bug: commit cd2633c59b6f511effb53e10fa2c1e20b1cec1e7 Author: Jan Kiszka <jan.kiszka@siemens.com> Date: Wed Oct 23 17:42:15 2013 +0100 nVMX: Fix pick-up of uninjected NMIs __vmx_complete_interrupts stored uninjected NMIs in arch.nmi_injected, not arch.nmi_pending. So we actually need to check the former field in vmcs12_save_pending_event. This fixes the eventinj unit test when run in nested KVM. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>