KVM: SVM: Don't update IRTEs if APICv/AVIC is disabled

Skip IRTE updates if AVIC is disabled/unsupported, as forcing the IRTE
into remapped mode (kvm_vcpu_apicv_active() will never be true) is
unnecessary and wasteful. The IOMMU driver is responsible for putting
IRTEs into remapped mode when an IRQ is allocated by a device, long before
that device is assigned to a VM. I.e. the kernel as a whole has major
issues if the IRTE isn't already in remapped mode.

Opportunsitically kvm_arch_has_irq_bypass() to query for APICv/AVIC, so
so that all checks in KVM x86 incorporate the same information.

Cc: Yosry Ahmed <yosry.ahmed@linux.dev>
Cc: Jim Mattson <jmattson@google.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-ID: <20250401161804.842968-3-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

authored by Sean Christopherson and committed by Paolo Bonzini 6560aff9 5f9e1698

+1 -2
+1 -2
arch/x86/kvm/svm/avic.c
··· 898 898 struct kvm_irq_routing_table *irq_rt; 899 899 int idx, ret = 0; 900 900 901 - if (!kvm_arch_has_assigned_device(kvm) || 902 - !irq_remapping_cap(IRQ_POSTING_CAP)) 901 + if (!kvm_arch_has_assigned_device(kvm) || !kvm_arch_has_irq_bypass()) 903 902 return 0; 904 903 905 904 pr_debug("SVM: %s: host_irq=%#x, guest_irq=%#x, set=%#x\n",