No good reason to split this functionality over two functions.

Signed-off-by: Christoph Hellwig <h...@lst.de>
Acked-by: Li Yang <leoyang...@nxp.com>
---
 drivers/iommu/fsl_pamu_domain.c | 59 +++++++++++----------------------
 1 file changed, 20 insertions(+), 39 deletions(-)

diff --git a/drivers/iommu/fsl_pamu_domain.c b/drivers/iommu/fsl_pamu_domain.c
index 4a4944332674f7..962cdc1a4a1924 100644
--- a/drivers/iommu/fsl_pamu_domain.c
+++ b/drivers/iommu/fsl_pamu_domain.c
@@ -240,45 +240,13 @@ static int update_domain_stash(struct fsl_dma_domain 
*dma_domain, u32 val)
        return ret;
 }
 
-/*
- * Attach the LIODN to the DMA domain and configure the geometry
- * and window mappings.
- */
-static int handle_attach_device(struct fsl_dma_domain *dma_domain,
-                               struct device *dev, const u32 *liodn,
-                               int num)
-{
-       unsigned long flags;
-       int ret = 0;
-       int i;
-
-       spin_lock_irqsave(&dma_domain->domain_lock, flags);
-       for (i = 0; i < num; i++) {
-               /* Ensure that LIODN value is valid */
-               if (liodn[i] >= PAACE_NUMBER_ENTRIES) {
-                       pr_debug("Invalid liodn %d, attach device failed for 
%pOF\n",
-                                liodn[i], dev->of_node);
-                       ret = -EINVAL;
-                       break;
-               }
-
-               attach_device(dma_domain, liodn[i], dev);
-               ret = pamu_set_liodn(dma_domain, dev, liodn[i]);
-               if (ret)
-                       break;
-       }
-       spin_unlock_irqrestore(&dma_domain->domain_lock, flags);
-
-       return ret;
-}
-
 static int fsl_pamu_attach_device(struct iommu_domain *domain,
                                  struct device *dev)
 {
        struct fsl_dma_domain *dma_domain = to_fsl_dma_domain(domain);
+       unsigned long flags;
+       int len, ret = 0, i;
        const u32 *liodn;
-       u32 liodn_cnt;
-       int len, ret = 0;
        struct pci_dev *pdev = NULL;
        struct pci_controller *pci_ctl;
 
@@ -298,14 +266,27 @@ static int fsl_pamu_attach_device(struct iommu_domain 
*domain,
        }
 
        liodn = of_get_property(dev->of_node, "fsl,liodn", &len);
-       if (liodn) {
-               liodn_cnt = len / sizeof(u32);
-               ret = handle_attach_device(dma_domain, dev, liodn, liodn_cnt);
-       } else {
+       if (!liodn) {
                pr_debug("missing fsl,liodn property at %pOF\n", dev->of_node);
-               ret = -EINVAL;
+               return -EINVAL;
        }
 
+       spin_lock_irqsave(&dma_domain->domain_lock, flags);
+       for (i = 0; i < len / sizeof(u32); i++) {
+               /* Ensure that LIODN value is valid */
+               if (liodn[i] >= PAACE_NUMBER_ENTRIES) {
+                       pr_debug("Invalid liodn %d, attach device failed for 
%pOF\n",
+                                liodn[i], dev->of_node);
+                       ret = -EINVAL;
+                       break;
+               }
+
+               attach_device(dma_domain, liodn[i], dev);
+               ret = pamu_set_liodn(dma_domain, dev, liodn[i]);
+               if (ret)
+                       break;
+       }
+       spin_unlock_irqrestore(&dma_domain->domain_lock, flags);
        return ret;
 }
 
-- 
2.30.1

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

Reply via email to