diff options
| author | Sean Christopherson <seanjc@google.com> | 2023-07-21 13:18:57 -0700 |
|---|---|---|
| committer | Sean Christopherson <seanjc@google.com> | 2023-08-03 15:37:15 -0700 |
| commit | 6ae44e012f4c35fb67bc61bd0bf1b3c5f504d931 (patch) | |
| tree | 8e78fe6c63531084fb6b71c8d8cb93822bc5292e | |
| parent | 76ab8161083bfd0ae4de9b93e68d639da6e1c726 (diff) | |
| download | linux-6ae44e012f4c35fb67bc61bd0bf1b3c5f504d931.tar.gz linux-6ae44e012f4c35fb67bc61bd0bf1b3c5f504d931.tar.bz2 linux-6ae44e012f4c35fb67bc61bd0bf1b3c5f504d931.zip | |
KVM: x86: Force kvm_rebooting=true during emergency reboot/crash
Set kvm_rebooting when virtualization is disabled in an emergency so that
KVM eats faults on virtualization instructions even if kvm_reboot() isn't
reached.
Reviewed-by: Kai Huang <kai.huang@intel.com>
Link: https://lore.kernel.org/r/20230721201859.2307736-18-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
| -rw-r--r-- | arch/x86/kvm/svm/svm.c | 2 | ||||
| -rw-r--r-- | arch/x86/kvm/vmx/vmx.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 47f9c7156609..8d1b3c801629 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -605,6 +605,8 @@ fault: static void svm_emergency_disable(void) { + kvm_rebooting = true; + kvm_cpu_svm_disable(); } diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index ff0eced7d2ab..415665c40a39 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -752,6 +752,8 @@ static void vmx_emergency_disable(void) int cpu = raw_smp_processor_id(); struct loaded_vmcs *v; + kvm_rebooting = true; + list_for_each_entry(v, &per_cpu(loaded_vmcss_on_cpu, cpu), loaded_vmcss_on_cpu_link) vmcs_clear(v->vmcs); |
