]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: vmd: Convert to lock guards
authorNam Cao <namcao@linutronix.de>
Thu, 26 Jun 2025 14:48:05 +0000 (16:48 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 24 Jul 2025 21:24:16 +0000 (16:24 -0500)
Convert lock/unlock pairs to lock guard and tidy up the code.

Signed-off-by: Nam Cao <namcao@linutronix.de>
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
[bhelgaas: rebase on dev_fwnode() conversion]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://patch.msgid.link/836cca37449c70922a2bea1fb13f37940a7a7132.1750858083.git.namcao@linutronix.de
drivers/pci/controller/vmd.c

index 8df064b62a2ff3e22dd8507a66783ca6c6a8b777..f922fa445aef98a7da2b77973a56ad9a73917f49 100644 (file)
@@ -180,13 +180,12 @@ static void vmd_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
 static void vmd_irq_enable(struct irq_data *data)
 {
        struct vmd_irq *vmdirq = data->chip_data;
-       unsigned long flags;
 
-       raw_spin_lock_irqsave(&list_lock, flags);
-       WARN_ON(vmdirq->enabled);
-       list_add_tail_rcu(&vmdirq->node, &vmdirq->irq->irq_list);
-       vmdirq->enabled = true;
-       raw_spin_unlock_irqrestore(&list_lock, flags);
+       scoped_guard(raw_spinlock_irqsave, &list_lock) {
+               WARN_ON(vmdirq->enabled);
+               list_add_tail_rcu(&vmdirq->node, &vmdirq->irq->irq_list);
+               vmdirq->enabled = true;
+       }
 
        data->chip->irq_unmask(data);
 }
@@ -194,16 +193,15 @@ static void vmd_irq_enable(struct irq_data *data)
 static void vmd_irq_disable(struct irq_data *data)
 {
        struct vmd_irq *vmdirq = data->chip_data;
-       unsigned long flags;
 
        data->chip->irq_mask(data);
 
-       raw_spin_lock_irqsave(&list_lock, flags);
-       if (vmdirq->enabled) {
-               list_del_rcu(&vmdirq->node);
-               vmdirq->enabled = false;
+       scoped_guard(raw_spinlock_irqsave, &list_lock) {
+               if (vmdirq->enabled) {
+                       list_del_rcu(&vmdirq->node);
+                       vmdirq->enabled = false;
+               }
        }
-       raw_spin_unlock_irqrestore(&list_lock, flags);
 }
 
 static struct irq_chip vmd_msi_controller = {
@@ -225,7 +223,6 @@ static irq_hw_number_t vmd_get_hwirq(struct msi_domain_info *info,
  */
 static struct vmd_irq_list *vmd_next_irq(struct vmd_dev *vmd, struct msi_desc *desc)
 {
-       unsigned long flags;
        int i, best;
 
        if (vmd->msix_count == 1 + vmd->first_vec)
@@ -242,13 +239,13 @@ static struct vmd_irq_list *vmd_next_irq(struct vmd_dev *vmd, struct msi_desc *d
                return &vmd->irqs[vmd->first_vec];
        }
 
-       raw_spin_lock_irqsave(&list_lock, flags);
-       best = vmd->first_vec + 1;
-       for (i = best; i < vmd->msix_count; i++)
-               if (vmd->irqs[i].count < vmd->irqs[best].count)
-                       best = i;
-       vmd->irqs[best].count++;
-       raw_spin_unlock_irqrestore(&list_lock, flags);
+       scoped_guard(raw_spinlock_irq, &list_lock) {
+               best = vmd->first_vec + 1;
+               for (i = best; i < vmd->msix_count; i++)
+                       if (vmd->irqs[i].count < vmd->irqs[best].count)
+                               best = i;
+               vmd->irqs[best].count++;
+       }
 
        return &vmd->irqs[best];
 }
@@ -277,14 +274,12 @@ static void vmd_msi_free(struct irq_domain *domain,
                        struct msi_domain_info *info, unsigned int virq)
 {
        struct vmd_irq *vmdirq = irq_get_chip_data(virq);
-       unsigned long flags;
 
        synchronize_srcu(&vmdirq->irq->srcu);
 
        /* XXX: Potential optimization to rebalance */
-       raw_spin_lock_irqsave(&list_lock, flags);
-       vmdirq->irq->count--;
-       raw_spin_unlock_irqrestore(&list_lock, flags);
+       scoped_guard(raw_spinlock_irq, &list_lock)
+               vmdirq->irq->count--;
 
        kfree(vmdirq);
 }
@@ -387,29 +382,24 @@ static int vmd_pci_read(struct pci_bus *bus, unsigned int devfn, int reg,
 {
        struct vmd_dev *vmd = vmd_from_bus(bus);
        void __iomem *addr = vmd_cfg_addr(vmd, bus, devfn, reg, len);
-       unsigned long flags;
-       int ret = 0;
 
        if (!addr)
                return -EFAULT;
 
-       raw_spin_lock_irqsave(&vmd->cfg_lock, flags);
+       guard(raw_spinlock_irqsave)(&vmd->cfg_lock);
        switch (len) {
        case 1:
                *value = readb(addr);
-               break;
+               return 0;
        case 2:
                *value = readw(addr);
-               break;
+               return 0;
        case 4:
                *value = readl(addr);
-               break;
+               return 0;
        default:
-               ret = -EINVAL;
-               break;
+               return -EINVAL;
        }
-       raw_spin_unlock_irqrestore(&vmd->cfg_lock, flags);
-       return ret;
 }
 
 /*
@@ -422,32 +412,27 @@ static int vmd_pci_write(struct pci_bus *bus, unsigned int devfn, int reg,
 {
        struct vmd_dev *vmd = vmd_from_bus(bus);
        void __iomem *addr = vmd_cfg_addr(vmd, bus, devfn, reg, len);
-       unsigned long flags;
-       int ret = 0;
 
        if (!addr)
                return -EFAULT;
 
-       raw_spin_lock_irqsave(&vmd->cfg_lock, flags);
+       guard(raw_spinlock_irqsave)(&vmd->cfg_lock);
        switch (len) {
        case 1:
                writeb(value, addr);
                readb(addr);
-               break;
+               return 0;
        case 2:
                writew(value, addr);
                readw(addr);
-               break;
+               return 0;
        case 4:
                writel(value, addr);
                readl(addr);
-               break;
+               return 0;
        default:
-               ret = -EINVAL;
-               break;
+               return -EINVAL;
        }
-       raw_spin_unlock_irqrestore(&vmd->cfg_lock, flags);
-       return ret;
 }
 
 static struct pci_ops vmd_ops = {