]> git.baikalelectronics.ru Git - kernel.git/commitdiff
NTB/msi: Convert to msi_on_each_desc()
authorThomas Gleixner <tglx@linutronix.de>
Mon, 6 Dec 2021 22:51:34 +0000 (23:51 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 16 Dec 2021 21:22:19 +0000 (22:22 +0100)
Replace the about to vanish iterators, make use of the filtering and take
the descriptor lock around the iteration.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/20211206210748.683004012@linutronix.de
drivers/ntb/msi.c

index 3f05cfbc73afb34413c5ec64845cba15eadae5bf..2818bfcf40318be21b78bdee4355d78659442297 100644 (file)
@@ -108,8 +108,10 @@ int ntb_msi_setup_mws(struct ntb_dev *ntb)
        if (!ntb->msi)
                return -EINVAL;
 
-       desc = first_msi_entry(&ntb->pdev->dev);
+       msi_lock_descs(&ntb->pdev->dev);
+       desc = msi_first_desc(&ntb->pdev->dev, MSI_DESC_ASSOCIATED);
        addr = desc->msg.address_lo + ((uint64_t)desc->msg.address_hi << 32);
+       msi_unlock_descs(&ntb->pdev->dev);
 
        for (peer = 0; peer < ntb_peer_port_count(ntb); peer++) {
                peer_widx = ntb_peer_highest_mw_idx(ntb, peer);
@@ -281,13 +283,15 @@ int ntbm_msi_request_threaded_irq(struct ntb_dev *ntb, irq_handler_t handler,
                                  const char *name, void *dev_id,
                                  struct ntb_msi_desc *msi_desc)
 {
+       struct device *dev = &ntb->pdev->dev;
        struct msi_desc *entry;
        int ret;
 
        if (!ntb->msi)
                return -EINVAL;
 
-       for_each_pci_msi_entry(entry, ntb->pdev) {
+       msi_lock_descs(dev);
+       msi_for_each_desc(entry, dev, MSI_DESC_ASSOCIATED) {
                if (irq_has_action(entry->irq))
                        continue;
 
@@ -304,14 +308,17 @@ int ntbm_msi_request_threaded_irq(struct ntb_dev *ntb, irq_handler_t handler,
                ret = ntbm_msi_setup_callback(ntb, entry, msi_desc);
                if (ret) {
                        devm_free_irq(&ntb->dev, entry->irq, dev_id);
-                       return ret;
+                       goto unlock;
                }
 
-
-               return entry->irq;
+               ret = entry->irq;
+               goto unlock;
        }
+       ret = -ENODEV;
 
-       return -ENODEV;
+unlock:
+       msi_unlock_descs(dev);
+       return ret;
 }
 EXPORT_SYMBOL(ntbm_msi_request_threaded_irq);