projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
d2fe6bf
)
KVM: SVM: Update avic_kick_target_vcpus to support 32-bit APIC ID
author
Suravee Suthikulpanit
<suravee.suthikulpanit@amd.com>
Thu, 19 May 2022 10:26:57 +0000
(
05:26
-0500)
committer
Paolo Bonzini
<pbonzini@redhat.com>
Fri, 24 Jun 2022 16:45:21 +0000
(12:45 -0400)
In x2APIC mode, ICRH contains 32-bit destination APIC ID.
So, update the avic_kick_target_vcpus() accordingly.
Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Message-Id: <
20220519102709
.24125-6-suravee.suthikulpanit@amd.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/svm/avic.c
patch
|
blob
|
history
diff --git
a/arch/x86/kvm/svm/avic.c
b/arch/x86/kvm/svm/avic.c
index 15dc6ca2c4984296c73dfbc5d01c8f4e2ac99e47..8b8a221cd63578f643012bd6aacea1545c74a878 100644
(file)
--- a/
arch/x86/kvm/svm/avic.c
+++ b/
arch/x86/kvm/svm/avic.c
@@
-402,9
+402,15
@@
static void avic_kick_target_vcpus(struct kvm *kvm, struct kvm_lapic *source,
* since entered the guest will have processed pending IRQs at VMRUN.
*/
kvm_for_each_vcpu(i, vcpu, kvm) {
+ u32 dest;
+
+ if (apic_x2apic_mode(vcpu->arch.apic))
+ dest = icrh;
+ else
+ dest = GET_XAPIC_DEST_FIELD(icrh);
+
if (kvm_apic_match_dest(vcpu, source, icrl & APIC_SHORT_MASK,
- GET_XAPIC_DEST_FIELD(icrh),
- icrl & APIC_DEST_MASK)) {
+ dest, icrl & APIC_DEST_MASK)) {
vcpu->arch.apic->irr_pending = true;
svm_complete_interrupt_delivery(vcpu,
icrl & APIC_MODE_MASK,