summaryrefslogtreecommitdiff
path: root/arch/x86/kvm/svm/avic.c
diff options
context:
space:
mode:
authorSean Christopherson <seanjc@google.com>2025-06-11 15:45:49 -0700
committerSean Christopherson <seanjc@google.com>2025-06-23 09:50:42 -0700
commit16562766f171199acf0ee5d6e6bbe4b4586293ce (patch)
tree66d45409d4fbcd3d39317badd3ab23888de84707 /arch/x86/kvm/svm/avic.c
parentfe0213923dd991cbe6a1e84b9bf600aaf172b530 (diff)
KVM: SVM: WARN if (de)activating guest mode in IOMMU fails
WARN if (de)activating "guest mode" for an IRTE entry fails as modifying an IRTE should only fail if KVM is buggy, e.g. has stale metadata. Link: https://lore.kernel.org/r/20250611224604.313496-48-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
Diffstat (limited to 'arch/x86/kvm/svm/avic.c')
-rw-r--r--arch/x86/kvm/svm/avic.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c
index f3bfd7cb0bca..31bf202e0026 100644
--- a/arch/x86/kvm/svm/avic.c
+++ b/arch/x86/kvm/svm/avic.c
@@ -725,10 +725,9 @@ void avic_apicv_post_state_restore(struct kvm_vcpu *vcpu)
avic_handle_ldr_update(vcpu);
}
-static int avic_set_pi_irte_mode(struct kvm_vcpu *vcpu, bool activate)
+static void avic_set_pi_irte_mode(struct kvm_vcpu *vcpu, bool activate)
{
int apic_id = kvm_cpu_get_apicid(vcpu->cpu);
- int ret = 0;
unsigned long flags;
struct vcpu_svm *svm = to_svm(vcpu);
struct kvm_kernel_irqfd *irqfd;
@@ -743,16 +742,15 @@ static int avic_set_pi_irte_mode(struct kvm_vcpu *vcpu, bool activate)
goto out;
list_for_each_entry(irqfd, &svm->ir_list, vcpu_list) {
+ void *data = irqfd->irq_bypass_data;
+
if (activate)
- ret = amd_iommu_activate_guest_mode(irqfd->irq_bypass_data, apic_id);
+ WARN_ON_ONCE(amd_iommu_activate_guest_mode(data, apic_id));
else
- ret = amd_iommu_deactivate_guest_mode(irqfd->irq_bypass_data);
- if (ret)
- break;
+ WARN_ON_ONCE(amd_iommu_deactivate_guest_mode(data));
}
out:
spin_unlock_irqrestore(&svm->ir_list_lock, flags);
- return ret;
}
static void svm_ir_list_del(struct kvm_kernel_irqfd *irqfd)