[GIT PULL] KVM: x86: SVM changes for 6.6

From: Sean Christopherson
Date: Tue Aug 29 2023 - 20:07:38 EST


Please pull SVM changes for 6.6. The highlight is the addition of support for
enabling DebugSwap for SEV-ES (and later) guests, i.e. to allow SEV-ES guests
to utilize hardware breakpoints.

The SEV and SEV-ES fixes from me are a bit late to the party, but they've gotten
as much testing from -next as their going to get.

As mentioned in the "misc" pull request, there's a rather annoying conflict
between the LBR virtualization cleanups and the guest_can_use() framework.

The following changes since commit fdf0eaf11452d72945af31804e2a1048ee1b574c:

Linux 6.5-rc2 (2023-07-16 15:10:37 -0700)

are available in the Git repository at:

https://github.com/kvm-x86/linux.git tags/kvm-x86-svm-6.6

for you to fetch changes up to 80d0f521d59e08eeaa0bc5d624da139448fb99b8:

KVM: SVM: Require nrips support for SEV guests (and beyond) (2023-08-25 09:00:40 -0700)

----------------------------------------------------------------
KVM: x86: SVM changes for 6.6:

- Add support for SEV-ES DebugSwap, i.e. allow SEV-ES guests to use debug
registers and generate/handle #DBs

- Clean up LBR virtualization code

- Fix a bug where KVM fails to set the target pCPU during an IRTE update

- Fix fatal bugs in SEV-ES intrahost migration

- Fix a bug where the recent (architecturally correct) change to reinject
#BP and skip INT3 broke SEV guests (can't decode INT3 to skip it)

----------------------------------------------------------------
Alexey Kardashevskiy (6):
KVM: SEV: move set_dr_intercepts/clr_dr_intercepts from the header
KVM: SEV: Move SEV's GP_VECTOR intercept setup to SEV
KVM: SEV-ES: explicitly disable debug
KVM: SVM/SEV/SEV-ES: Rework intercepts
KVM: SEV: Enable data breakpoints in SEV-ES
KVM: SEV-ES: Eliminate #DB intercept when DebugSwap enabled

Manali Shukla (1):
KVM: SVM: correct the size of spec_ctrl field in VMCB save area

Sean Christopherson (12):
KVM: SVM: Rewrite sev_es_prepare_switch_to_guest()'s comment about swap types
KVM: SVM: Don't defer NMI unblocking until next exit for SEV-ES guests
KVM: SVM: Don't try to pointlessly single-step SEV-ES guests for NMI window
KVM: SVM: Fix dead KVM_BUG() code in LBR MSR virtualization
KVM: SVM: Clean up handling of LBR virtualization enabled
KVM: SVM: Use svm_get_lbr_vmcb() helper to handle writes to DEBUGCTL
KVM: SVM: Take and hold ir_list_lock when updating vCPU's Physical ID entry
KVM: SVM: Set target pCPU during IRTE update if target vCPU is running
KVM: SVM: Get source vCPUs from source VM for SEV-ES intrahost migration
KVM: SVM: Skip VMSA init in sev_es_init_vmcb() if pointer is NULL
KVM: SVM: Don't inject #UD if KVM attempts to skip SEV guest insn
KVM: SVM: Require nrips support for SEV guests (and beyond)

arch/x86/include/asm/cpufeatures.h | 1 +
arch/x86/include/asm/svm.h | 5 +-
arch/x86/kvm/svm/avic.c | 59 ++++++++--
arch/x86/kvm/svm/sev.c | 100 ++++++++++++++---
arch/x86/kvm/svm/svm.c | 179 +++++++++++++++++++------------
arch/x86/kvm/svm/svm.h | 43 +-------
tools/arch/x86/include/asm/cpufeatures.h | 1 +
7 files changed, 252 insertions(+), 136 deletions(-)