Skip to content

Commit

Permalink
x86/virt: KVM: Move "disable SVM" helper into KVM SVM
Browse files Browse the repository at this point in the history
Move cpu_svm_disable() into KVM proper now that all hardware
virtualization management is routed through KVM.  Remove the now-empty
virtext.h.

No functional change intended.

Reviewed-by: Kai Huang <kai.huang@intel.com>
Link: https://lore.kernel.org/r/20230721201859.2307736-17-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
  • Loading branch information
sean-jc committed Aug 3, 2023
1 parent f9a8866 commit 76ab816
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 54 deletions.
50 changes: 0 additions & 50 deletions arch/x86/include/asm/virtext.h

This file was deleted.

29 changes: 25 additions & 4 deletions arch/x86/kvm/svm/svm.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,6 @@
#include <asm/reboot.h>
#include <asm/fpu/api.h>

#include <asm/virtext.h>

#include <trace/events/ipi.h>

#include "trace.h"
Expand Down Expand Up @@ -582,9 +580,32 @@ void __svm_write_tsc_multiplier(u64 multiplier)
preempt_enable();
}

static inline void kvm_cpu_svm_disable(void)
{
uint64_t efer;

wrmsrl(MSR_VM_HSAVE_PA, 0);
rdmsrl(MSR_EFER, efer);
if (efer & EFER_SVME) {
/*
* Force GIF=1 prior to disabling SVM to ensure INIT and NMI
* aren't blocked, e.g. if a fatal error occurred between CLGI
* and STGI. Note, STGI may #UD if SVM is disabled from NMI
* context between reading EFER and executing STGI. In that
* case, GIF must already be set, otherwise the NMI would have
* been blocked, so just eat the fault.
*/
asm_volatile_goto("1: stgi\n\t"
_ASM_EXTABLE(1b, %l[fault])
::: "memory" : fault);
fault:
wrmsrl(MSR_EFER, efer & ~EFER_SVME);
}
}

static void svm_emergency_disable(void)
{
cpu_svm_disable();
kvm_cpu_svm_disable();
}

static void svm_hardware_disable(void)
Expand All @@ -593,7 +614,7 @@ static void svm_hardware_disable(void)
if (tsc_scaling)
__svm_write_tsc_multiplier(SVM_TSC_RATIO_DEFAULT);

cpu_svm_disable();
kvm_cpu_svm_disable();

amd_pmu_disable_virt();
}
Expand Down

0 comments on commit 76ab816

Please sign in to comment.