Replace open coded MSI descriptor chasing and use the proper accessor
functions instead.

Signed-off-by: Thomas Gleixner <t...@linutronix.de>
---
 drivers/pci/msi/msi.c |   26 ++++++++++----------------
 1 file changed, 10 insertions(+), 16 deletions(-)

--- a/drivers/pci/msi/msi.c
+++ b/drivers/pci/msi/msi.c
@@ -1040,26 +1040,20 @@ EXPORT_SYMBOL(pci_irq_vector);
  */
 const struct cpumask *pci_irq_get_affinity(struct pci_dev *dev, int nr)
 {
-       if (dev->msix_enabled) {
-               struct msi_desc *entry;
+       int irq = pci_irq_vector(dev, nr);
+       struct msi_desc *desc;
 
-               for_each_pci_msi_entry(entry, dev) {
-                       if (entry->msi_index == nr)
-                               return &entry->affinity->mask;
-               }
-               WARN_ON_ONCE(1);
+       if (WARN_ON_ONCE(irq <= 0))
                return NULL;
-       } else if (dev->msi_enabled) {
-               struct msi_desc *entry = first_pci_msi_entry(dev);
 
-               if (WARN_ON_ONCE(!entry || !entry->affinity ||
-                                nr >= entry->nvec_used))
-                       return NULL;
-
-               return &entry->affinity[nr].mask;
-       } else {
+       desc = irq_get_msi_desc(irq);
+       /* Non-MSI does not have the information handy */
+       if (!desc)
                return cpu_possible_mask;
-       }
+
+       if (WARN_ON_ONCE(!desc->affinity))
+               return NULL;
+       return &desc->affinity[nr].mask;
 }
 EXPORT_SYMBOL(pci_irq_get_affinity);
 

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to