Thread (45 messages) 45 messages, 11 authors, 2014-11-05

[RFC 09/10] drm/tegra: Add IOMMU support

From: arnd@arndb.de (Arnd Bergmann)
Date: 2014-06-27 10:54:44
Also in: linux-devicetree, linux-iommu, linux-tegra, lkml

On Friday 27 June 2014 12:46:14 Hiroshi DOyu wrote:
Thierry Reding [off-list ref] writes:
quoted
From: Thierry Reding <redacted>

When an IOMMU device is available on the platform bus, allocate an IOMMU
domain and attach the display controllers to it. The display controllers
can then scan out non-contiguous buffers by mapping them through the
IOMMU.

Signed-off-by: Thierry Reding <redacted>
---
@@ -1283,8 +1284,18 @@ static int tegra_dc_init(struct host1x_client *client)
 {
        struct drm_device *drm = dev_get_drvdata(client->parent);
        struct tegra_dc *dc = host1x_client_to_dc(client);
+       struct tegra_drm *tegra = drm->dev_private;
        int err;

+       if (tegra->domain) {
+               err = iommu_attach_device(tegra->domain, dc->dev);
I wanted to keep device drivers iommu-free with the following:

http://patchwork.ozlabs.org/patch/354074/
We definitely need something like your series to make iommus work transparently
on ARM for normal devices, using the of_dma_configure() to look up the correct
iommu per device and initialize it.

However, any devices that work with multiple iommu domains cannot do that
and still need to use the iommu API directy. I believe the tegra drm code
falls into this category.

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help