Thread (27 messages) 27 messages, 9 authors, 2012-11-30

Re: How to specify IOMMU'able devices in DT (was: [RFC 0/5] ARM: dma-mapping: New dma_map_ops to control IOVA more precisely)

From: James Bottomley <James.Bottomley@HansenPartnership.com>
Date: 2012-09-24 09:28:11
Also in: linux-arm-kernel, linux-iommu, linux-mm, lkml

On Mon, 2012-09-24 at 12:04 +0300, Hiroshi Doyu wrote:
quoted hunk ↗ jump to hunk
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index a1a7225..9eae3be 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -21,6 +21,8 @@
 #include <linux/slab.h>
 #include <linux/pm_runtime.h>

+#include <asm/dma-iommu.h>
+
 #include "base.h"

 #define to_platform_driver(drv)        (container_of((drv), struct
platform_driver, \
@@ -305,8 +307,19 @@ int platform_device_add(struct platform_device
*pdev)
                 dev_name(&pdev->dev), dev_name(pdev->dev.parent));

        ret = device_add(&pdev->dev);
-       if (ret == 0)
-               return ret;
+       if (ret)
+               goto failed;
+
+#ifdef CONFIG_PLATFORM_ENABLE_IOMMU
+       if (platform_bus_type.map && !pdev->dev.archdata.mapping) {
+               ret = arm_iommu_attach_device(&pdev->dev,
+                                             platform_bus_type.map);
+               if (ret)
+                       goto failed;
This is horrible ... you're adding an architecture specific callback
into our generic code; that's really a no-no.  If the concept of
CONFIG_PLATFORM_ENABE_IOMMU is useful to more than just arm, then this
could become a generic callback.

James


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help