Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932833AbcK3CP3 (ORCPT ); Tue, 29 Nov 2016 21:15:29 -0500 Received: from mail-pg0-f54.google.com ([74.125.83.54]:35258 "EHLO mail-pg0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755945AbcK3COR (ORCPT ); Tue, 29 Nov 2016 21:14:17 -0500 From: David Matlack To: kvm@vger.kernel.org Cc: linux-kernel@vger.kernel.org, jmattson@google.com, rkrcmar@redhat.com, pbonzini@redhat.com, David Matlack Subject: [PATCH v3 0/5] VMX Capability MSRs Date: Tue, 29 Nov 2016 18:14:05 -0800 Message-Id: <1480472050-58023-1-git-send-email-dmatlack@google.com> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1498 Lines: 40 This patchset adds support setting the VMX capability MSRs from userspace. This is required for migration of nested-capable VMs to different CPUs and KVM versions. Patch 1 generates the non-true VMX MSRs using the true MSRs, which allows userspace to skip restoring them. Patch 2 adds support for restoring the VMX capability MSRs. Patches 3 and 4 make KVM's emulation of MSR_IA32_VMX_CR{0,4}_FIXED1 more accurate. Patch 5 fixes a bug in emulated VM-entry that came up when testing patches 3 and 4. Changes since v2: * Generate CR0_FIXED1 in addition to CR4_FIXED1 * Generate "non-true" capability MSRs from the "true" versions and remove "non-true" MSRs from struct nested_vmx. * Disallow restore of CR{0,4}_FIXED1 and "non-true" MSRs since they are generated. Changes since v1: * Support restoring less-capable versions of MSR_IA32_VMX_BASIC, MSR_IA32_VMX_CR{0,4}_FIXED{0,1}. * Include VMX_INS_OUTS in MSR_IA32_VMX_BASIC initial value. David Matlack (5): KVM: nVMX: generate non-true VMX MSRs based on true versions KVM: nVMX: support restore of VMX capability MSRs KVM: nVMX: fix checks on CR{0,4} during virtual VMX operation KVM: nVMX: generate MSR_IA32_CR{0,4}_FIXED1 from guest CPUID KVM: nVMX: load GUEST_EFER after GUEST_CR0 during emulated VM-entry arch/x86/include/asm/vmx.h | 31 +++ arch/x86/kvm/vmx.c | 479 +++++++++++++++++++++++++++++++++++++-------- 2 files changed, 427 insertions(+), 83 deletions(-) -- 2.8.0.rc3.226.g39d4020