• Takashi Iwai's avatar
    KVM: x86: Fix invalid secondary exec controls in vmx_cpuid_update() · 29282fde
    Takashi Iwai authored
    The commit [ad756a16: KVM: VMX: Implement PCID/INVPCID for guests with
    EPT] introduced the unconditional access to SECONDARY_VM_EXEC_CONTROL,
    and this triggers kernel warnings like below on old CPUs:
    
        vmwrite error: reg 401e value a0568000 (err 12)
        Pid: 13649, comm: qemu-kvm Not tainted 3.7.0-rc4-test2+ #154
        Call Trace:
         [<ffffffffa0558d86>] vmwrite_error+0x27/0x29 [kvm_intel]
         [<ffffffffa054e8cb>] vmcs_writel+0x1b/0x20 [kvm_intel]
         [<ffffffffa054f114>] vmx_cpuid_update+0x74/0x170 [kvm_intel]
         [<ffffffffa03629b6>] kvm_vcpu_ioctl_set_cpuid2+0x76/0x90 [kvm]
         [<ffffffffa0341c67>] kvm_arch_vcpu_ioctl+0xc37/0xed0 [kvm]
         [<ffffffff81143f7c>] ? __vunmap+0x9c/0x110
         [<ffffffffa0551489>] ? vmx_vcpu_load+0x39/0x1a0 [kvm_intel]
         [<ffffffffa0340ee2>] ? kvm_arch_vcpu_load+0x52/0x1a0 [kvm]
         [<ffffffffa032dcd4>] ? vcpu_load+0x74/0xd0 [kvm]
         [<ffffffffa032deb0>] kvm_vcpu_ioctl+0x110/0x5e0 [kvm]
         [<ffffffffa032e93d>] ? kvm_dev_ioctl+0x4d/0x4a0 [kvm]
         [<ffffffff8117dc6f>] do_vfs_ioctl+0x8f/0x530
         [<ffffffff81139d76>] ? remove_vma+0x56/0x60
         [<ffffffff8113b708>] ? do_munmap+0x328/0x400
         [<ffffffff81187c8c>] ? fget_light+0x4c/0x100
         [<ffffffff8117e1a1>] sys_ioctl+0x91/0xb0
         [<ffffffff815a942d>] system_call_fastpath+0x1a/0x1f
    
    This patch adds a check for the availability of secondary exec
    control to avoid these warnings.
    
    Cc: <stable@vger.kernel.org> [v3.6+]
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    29282fde
vmx.c 210 KB