| From 92c7034fa6269dfae9a175cfde427ad902f49dc7 Mon Sep 17 00:00:00 2001 |
| From: Paolo Bonzini <pbonzini@redhat.com> |
| Date: Wed, 20 May 2020 08:02:17 -0400 |
| Subject: [PATCH] KVM: nSVM: leave ASID aside in copy_vmcb_control_area |
| |
| commit 6c0238c4a62b3a0b1201aeb7e33a4636d552a436 upstream. |
| |
| Restoring the ASID from the hsave area on VMEXIT is wrong, because its |
| value depends on the handling of TLB flushes. Just skipping the field in |
| copy_vmcb_control_area will do. |
| |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c |
| index 558cae1bb4c2..bf0d805e75c9 100644 |
| --- a/arch/x86/kvm/svm.c |
| +++ b/arch/x86/kvm/svm.c |
| @@ -3318,7 +3318,7 @@ static inline void copy_vmcb_control_area(struct vmcb *dst_vmcb, struct vmcb *fr |
| dst->iopm_base_pa = from->iopm_base_pa; |
| dst->msrpm_base_pa = from->msrpm_base_pa; |
| dst->tsc_offset = from->tsc_offset; |
| - dst->asid = from->asid; |
| + /* asid not copied, it is handled manually for svm->vmcb. */ |
| dst->tlb_ctl = from->tlb_ctl; |
| dst->int_ctl = from->int_ctl; |
| dst->int_vector = from->int_vector; |
| -- |
| 2.27.0 |
| |