diff options
author | Maxim Levitsky <mlevitsk@redhat.com> | 2022-11-03 16:13:49 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2022-11-17 11:39:59 -0500 |
commit | 92e7d5c83aff124f49082585e57939ed24b59c5c (patch) | |
tree | 30057856336848e6db6025574cfb595d6c1b188a /arch/x86/kvm/svm/nested.c | |
parent | 0bd2d3f48704d9d00c29fa97fb80de012af87a0a (diff) | |
download | linux-92e7d5c83aff124f49082585e57939ed24b59c5c.tar.gz linux-92e7d5c83aff124f49082585e57939ed24b59c5c.tar.bz2 linux-92e7d5c83aff124f49082585e57939ed24b59c5c.zip |
KVM: x86: allow L1 to not intercept triple fault
This is SVM correctness fix - although a sane L1 would intercept
SHUTDOWN event, it doesn't have to, so we have to honour this.
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Message-Id: <20221103141351.50662-8-mlevitsk@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/x86/kvm/svm/nested.c')
-rw-r--r-- | arch/x86/kvm/svm/nested.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index 7354f0035a69..995bc0f90759 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -1091,6 +1091,12 @@ int nested_svm_vmexit(struct vcpu_svm *svm) static void nested_svm_triple_fault(struct kvm_vcpu *vcpu) { + struct vcpu_svm *svm = to_svm(vcpu); + + if (!vmcb12_is_intercept(&svm->nested.ctl, INTERCEPT_SHUTDOWN)) + return; + + kvm_clear_request(KVM_REQ_TRIPLE_FAULT, vcpu); nested_svm_simple_vmexit(to_svm(vcpu), SVM_EXIT_SHUTDOWN); } |