this patch fixed the bug: commit 338b522ca43cfd32d11a370f4203bcd089c6c877 Author: Kan Liang <kan.li...@intel.com> Date: Mon Jul 14 12:25:56 2014 -0700
perf/x86/intel: Protect LBR and extra_regs against KVM lying With -cpu host, KVM reports LBR and extra_regs support, if the host has support. When the guest perf driver tries to access LBR or extra_regs MSR, it #GPs all MSR accesses,since KVM doesn't handle LBR and extra_regs support. So check the related MSRs access right once at initialization time to avoid the error access at runtime. For reproducing the issue, please build the kernel with CONFIG_KVM_INTEL = y (for host kernel). And CONFIG_PARAVIRT = n and CONFIG_KVM_GUEST = n (for guest kernel). Start the guest with -cpu host. Run perf record with --branch-any or --branch-filter in guest to trigger LBR Run perf stat offcore events (E.g. LLC-loads/LLC-load-misses ...) in guest to trigger offcore_rsp #GP Signed-off-by: Kan Liang <kan.li...@intel.com> Signed-off-by: Peter Zijlstra <pet...@infradead.org> Cc: Andi Kleen <a...@linux.intel.com> Cc: Arnaldo Carvalho de Melo <a...@kernel.org> Cc: Linus Torvalds <torva...@linux-foundation.org> Cc: Maria Dimakopoulou <maria.n.dimakopou...@gmail.com> Cc: Mark Davies <j...@eslaf.co.uk> Cc: Paul Mackerras <pau...@samba.org> Cc: Stephane Eranian <eran...@google.com> Cc: Yan, Zheng <zheng.z....@intel.com> Link: http://lkml.kernel.org/r/1405365957-20202-1-git-send-email-kan.li...@intel.com Signed-off-by: Ingo Molnar <mi...@kernel.org> -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/994378 Title: Nested-virt)L1 (kvm on kvm)guest panic with parameter “-cpu host” in qemu command line. Status in QEMU: New Bug description: Environment: ------------ Host OS (ia32/ia32e/IA64):ia32e Guest OS (ia32/ia32e/IA64):ia32e Guest OS Type (Linux/Windows):Linux kvm.git Commit:19853301ef3289bda2d5264c1093e74efddaeab9 qemu-kvm Commit:69abebf20280152da8fa7c418a819ae51e862231 Host Kernel Version:3.4.0-rc3 Hardware:WSM-EP, Romley-EP Bug detailed description: -------------------------- (KVM on KVM) L1 guest panic when starting the L1 guest with “-cpu host” parameter in qemu command line. Note: 1. when creating guest with “-cpu qemu64,+vmx”, L1 guest and L2 guest can boot up. 2. This should be a qemu-kvm bug. using '-cpu host' parameter, the following is the result. Kvm + qemu-kvm =result 19853301 + 69abebf2 = bad 19853301 + 44755ea3 = good 3. when booting up the guest with the good commit of 19853301 + 44755ea3, you can see some error info, but nested virt works fine. (L1 and L2 guest can boot up.) “error: feature "i64" not available in set error: bad option value [extfeature_edx = i64 xd syscall]” some logs [root@vt-snb9 x86_64-softmmu]# ./qemu-system-x86_64 -m 2048 -net nic,model=rtl8139 -net tap,script=/etc/kvm/qemu-ifup -hda /root/nested-kvm.qcow -cpu host error: feature "i64" not available in set error: bad option value [extfeature_edx = i64 xd syscall] error: feature "i64" not available in set error: bad option value [extfeature_edx = i64 xd syscall] error: feature "i64" not available in set error: bad option value [extfeature_edx = i64 syscall xd] error: feature "i64" not available in set error: bad option value [extfeature_edx = i64 syscall xd] VNC server running on `::1:5900' Reproduce steps: ---------------- 1.start up a host with kvm (commit: 19853301) 2.rmmod kvm_intel 3.modprobe kvm_intel nested=1 4.qemu-system-x86_64 -m 2048 -hda L1-kvm.img -cpu host Current result: ---------------- L1 guest panic. Expected result: ---------------- L1 guest and L2 guest boot up correctly. Basic root-causing log: ---------------------- To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/994378/+subscriptions