From: Magnus Damm <damm+rene...@opensource.se>

Right now the ->xlate() call gets invoked even though
the iommu device has status = "disabled" in DT, so
make sure we skip over disabled devices.

In my mind it would make sense to have this at some
shared level, but I guess some users may want to
configure the iommu regardless of DT state.

Signed-off-by: Magnus Damm <damm+rene...@opensource.se>
---

 drivers/iommu/ipmmu-vmsa.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

--- 0017/drivers/iommu/ipmmu-vmsa.c
+++ work/drivers/iommu/ipmmu-vmsa.c     2016-03-18 00:16:51.200513000 +0900
@@ -890,7 +890,13 @@ static struct iommu_group *ipmmu_device_
 static int ipmmu_of_xlate_dma(struct device *dev,
                              struct of_phandle_args *spec)
 {
-       /* dummy callback to satisfy of_iommu_configure() */
+       /* If the IPMMU device is disabled in DT then return error
+        * to make sure the of_iommu code does not install ops
+        * even though the iommu device is disabled
+        */
+       if (!of_device_is_available(spec->np))
+               return -ENODEV;
+
        return 0;
 }
 #endif

Reply via email to