[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[patch V2 29/36] PCI/MSI: Simplify pci_irq_get_affinity()



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

Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Reviewed-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxx>
---
 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
@@ -1056,26 +1056,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);
 




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.