aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuthikulpanit, Suravee <Suravee.Suthikulpanit@amd.com>2019-03-25 23:57:37 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2019-04-16 09:37:32 -0400
commite44e3eacccfd2294a1ce279f68452b1635d7fa82 (patch)
treeb1d83b0908bb318449d120cfad034d220ef2d16e
parent4a58038b9e420276157785afa0a0bbb4b9bc2265 (diff)
svm/avic: Fix invalidate logical APIC id entry
Only clear the valid bit when invalidate logical APIC id entry. The current logic clear the valid bit, but also set the rest of the bits (including reserved bits) to 1. Fixes: 98d90582be2e ('svm: Fix AVIC DFR and LDR handling') Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> Cc: stable@vger.kernel.org Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--arch/x86/kvm/svm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index d7b14c902052..933f19d840fe 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -262,6 +262,7 @@ struct amd_svm_iommu_ir {
262}; 262};
263 263
264#define AVIC_LOGICAL_ID_ENTRY_GUEST_PHYSICAL_ID_MASK (0xFF) 264#define AVIC_LOGICAL_ID_ENTRY_GUEST_PHYSICAL_ID_MASK (0xFF)
265#define AVIC_LOGICAL_ID_ENTRY_VALID_BIT 31
265#define AVIC_LOGICAL_ID_ENTRY_VALID_MASK (1 << 31) 266#define AVIC_LOGICAL_ID_ENTRY_VALID_MASK (1 << 31)
266 267
267#define AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK (0xFFULL) 268#define AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK (0xFFULL)
@@ -4607,7 +4608,7 @@ static void avic_invalidate_logical_id_entry(struct kvm_vcpu *vcpu)
4607 u32 *entry = avic_get_logical_id_entry(vcpu, svm->ldr_reg, flat); 4608 u32 *entry = avic_get_logical_id_entry(vcpu, svm->ldr_reg, flat);
4608 4609
4609 if (entry) 4610 if (entry)
4610 WRITE_ONCE(*entry, (u32) ~AVIC_LOGICAL_ID_ENTRY_VALID_MASK); 4611 clear_bit(AVIC_LOGICAL_ID_ENTRY_VALID_BIT, (unsigned long *)entry);
4611} 4612}
4612 4613
4613static int avic_handle_ldr_update(struct kvm_vcpu *vcpu) 4614static int avic_handle_ldr_update(struct kvm_vcpu *vcpu)