Skip to content

Commit f482359

Browse files
committed
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 <[email protected]> Tested-by: Michael Kelley <[email protected]> Tested-by: Nishanth Menon <[email protected]> Reviewed-by: Greg Kroah-Hartman <[email protected]> Reviewed-by: Jason Gunthorpe <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 82ff8e6 commit f482359

File tree

1 file changed

+10
-16
lines changed

1 file changed

+10
-16
lines changed

drivers/pci/msi/msi.c

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,26 +1104,20 @@ EXPORT_SYMBOL(pci_irq_vector);
11041104
*/
11051105
const struct cpumask *pci_irq_get_affinity(struct pci_dev *dev, int nr)
11061106
{
1107-
if (dev->msix_enabled) {
1108-
struct msi_desc *entry;
1107+
int irq = pci_irq_vector(dev, nr);
1108+
struct msi_desc *desc;
11091109

1110-
for_each_pci_msi_entry(entry, dev) {
1111-
if (entry->msi_index == nr)
1112-
return &entry->affinity->mask;
1113-
}
1114-
WARN_ON_ONCE(1);
1110+
if (WARN_ON_ONCE(irq <= 0))
11151111
return NULL;
1116-
} else if (dev->msi_enabled) {
1117-
struct msi_desc *entry = first_pci_msi_entry(dev);
1118-
1119-
if (WARN_ON_ONCE(!entry || !entry->affinity ||
1120-
nr >= entry->nvec_used))
1121-
return NULL;
11221112

1123-
return &entry->affinity[nr].mask;
1124-
} else {
1113+
desc = irq_get_msi_desc(irq);
1114+
/* Non-MSI does not have the information handy */
1115+
if (!desc)
11251116
return cpu_possible_mask;
1126-
}
1117+
1118+
if (WARN_ON_ONCE(!desc->affinity))
1119+
return NULL;
1120+
return &desc->affinity[nr].mask;
11271121
}
11281122
EXPORT_SYMBOL(pci_irq_get_affinity);
11291123

0 commit comments

Comments
 (0)