On Mon, Jan 14, 2019 at 06:04:27PM +0100, Harald Arnesen wrote: > Qemu with KVM acceleration fails with kernel 5.0-rc1 and 5.0-rc2. > It works fine with 4.20.
... > Bisecting gives: > > c73da3fcab43357feb68cac227194b13e998a8db is the first bad commit > commit c73da3fcab43357feb68cac227194b13e998a8db > Author: Sean Christopherson <sean.j.christopher...@intel.com> > Date: Mon Dec 3 13:53:00 2018 -0800 > > KVM: VMX: Properly handle dynamic VM Entry/Exit controls > > EFER and PERF_GLOBAL_CTRL MSRs have dedicated VM Entry/Exit controls > that KVM dynamically toggles based on whether or not the guest's value > for each MSRs differs from the host. Handle the dynamic behavior by > adding a helper that clears the dynamic bits so the bits aren't set > when initializing the VMCS field outside of the dynamic toggling flow. > This makes the handling consistent with similar behavior for other > controls, e.g. pin, exec and sec_exec. More importantly, it eliminates > two global bools that are stealthily modified by setup_vmcs_config. > > Opportunistically clean up a comment and print related to errata for > IA32_PERF_GLOBAL_CTRL. > > Signed-off-by: Sean Christopherson <sean.j.christopher...@intel.com> > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Can you test the attached patch? Found a bug when re-inspecting the guilty commit, the wrong VMCS field is being modifying when applying an errata to disable VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL. Your CPU is listed as one of the models affected by the errata. Compile tested only.
>From 6dde876a992ca2e3627b1fe7aca3975487bc1da6 Mon Sep 17 00:00:00 2001 From: Sean Christopherson <sean.j.christopher...@intel.com> Date: Mon, 14 Jan 2019 10:23:46 -0800 Subject: [PATCH] KVM: VMX: Use the correct var field when clearing VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL Fix a recently introduced bug that results in the wrong VMCS control field being updated when applying a IA32_PERF_GLOBAL_CTRL errata. Fixes: c73da3fcab43 ("KVM: VMX: Properly handle dynamic VM Entry/Exit controls") Reported-by: Harald Arnesen <har...@skogtun.org> Signed-off-by: Sean Christopherson <sean.j.christopher...@intel.com> --- arch/x86/kvm/vmx/vmx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index f6915f10e584..0762fcab8fc9 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -2344,7 +2344,7 @@ static __init int setup_vmcs_config(struct vmcs_config *vmcs_conf, case 37: /* AAT100 */ case 44: /* BC86,AAY89,BD102 */ case 46: /* BA97 */ - _vmexit_control &= ~VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL; + _vmentry_control &= ~VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL; _vmexit_control &= ~VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL; pr_warn_once("kvm: VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL " "does not work properly. Using workaround\n"); -- 2.19.2