From: Marek Szyprowski <m.szyprowski@samsung.com> To: iommu@lists.linux-foundation.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Marek Szyprowski <m.szyprowski@samsung.com>, linaro-mm-sig@lists.linaro.org, Arnd Bergmann <arnd@arndb.de>, Shaik Ameer Basha <shaik.ameer@samsung.com>, Cho KyongHo <pullip.cho@samsung.com>, Joerg Roedel <joro@8bytes.org>, Thierry Reding <treding@nvidia.com>, Olof Johansson <olof@lixom.net>, Laurent Pinchart <laurent.pinchart@ideasonboard.com>, Rob Herring <robh@kernel.org>, Will Deacon <will.deacon@arm.com>, David Wodhouse <dwmw2@infradead.org>, Inki Dae <inki.dae@samsung.com>, Kukjin Kim <kgene@kernel.org>, Tomasz Figa <tomasz.figa@gmail.com>, Kyungmin Park <kyungmin.park@samsung.com>, Joonyoung Shim <jy0922.shim@samsung.com>, Seung-Woo Kim <sw0312.kim@samsung.com>, Javier Martinez Canillas <javier@dowhile0.org> Subject: [PATCH v6 11/25] iommu: exynos: add support for binding more than one sysmmu to master device Date: Mon, 04 May 2015 10:16:06 +0200 [thread overview] Message-ID: <1430727380-10912-12-git-send-email-m.szyprowski@samsung.com> (raw) In-Reply-To: <1430727380-10912-1-git-send-email-m.szyprowski@samsung.com> This patch adds support for assigning more than one SYSMMU controller to the master device. This has been achieved simply by chaning the struct device pointer in struct exynos_iommu_owner into the list of struct sysmmu_drvdata of all controllers assigned to the given master device. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> --- drivers/iommu/exynos-iommu.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index f2eceb6605c5..598660c87410 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -186,7 +186,7 @@ static char *sysmmu_fault_name[SYSMMU_FAULTS_NUM] = { /* attached to dev.archdata.iommu of the master device */ struct exynos_iommu_owner { - struct device *sysmmu; + struct list_head clients; }; struct exynos_iommu_domain { @@ -208,6 +208,7 @@ struct sysmmu_drvdata { spinlock_t lock; struct iommu_domain *domain; struct list_head domain_node; + struct list_head owner_node; phys_addr_t pgtable; int version; }; @@ -700,8 +701,7 @@ static int exynos_iommu_attach_device(struct iommu_domain *domain, if (!has_sysmmu(dev)) return -ENODEV; - data = dev_get_drvdata(owner->sysmmu); - if (data) { + list_for_each_entry(data, &owner->clients, owner_node) { ret = __sysmmu_enable(data, pagetable, domain); if (ret >= 0) { data->master = dev; @@ -729,7 +729,7 @@ static void exynos_iommu_detach_device(struct iommu_domain *domain, { struct exynos_iommu_domain *priv = to_exynos_domain(domain); phys_addr_t pagetable = virt_to_phys(priv->pgtable); - struct sysmmu_drvdata *data; + struct sysmmu_drvdata *data, *next; unsigned long flags; bool found = false; @@ -737,14 +737,13 @@ static void exynos_iommu_detach_device(struct iommu_domain *domain, return; spin_lock_irqsave(&priv->lock, flags); - list_for_each_entry(data, &priv->clients, domain_node) { + list_for_each_entry_safe(data, next, &priv->clients, domain_node) { if (data->master == dev) { if (__sysmmu_disable(data)) { data->master = NULL; list_del_init(&data->domain_node); } found = true; - break; } } spin_unlock_irqrestore(&priv->lock, flags); -- 1.9.2
WARNING: multiple messages have this Message-ID (diff)
From: m.szyprowski@samsung.com (Marek Szyprowski) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v6 11/25] iommu: exynos: add support for binding more than one sysmmu to master device Date: Mon, 04 May 2015 10:16:06 +0200 [thread overview] Message-ID: <1430727380-10912-12-git-send-email-m.szyprowski@samsung.com> (raw) In-Reply-To: <1430727380-10912-1-git-send-email-m.szyprowski@samsung.com> This patch adds support for assigning more than one SYSMMU controller to the master device. This has been achieved simply by chaning the struct device pointer in struct exynos_iommu_owner into the list of struct sysmmu_drvdata of all controllers assigned to the given master device. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> --- drivers/iommu/exynos-iommu.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index f2eceb6605c5..598660c87410 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -186,7 +186,7 @@ static char *sysmmu_fault_name[SYSMMU_FAULTS_NUM] = { /* attached to dev.archdata.iommu of the master device */ struct exynos_iommu_owner { - struct device *sysmmu; + struct list_head clients; }; struct exynos_iommu_domain { @@ -208,6 +208,7 @@ struct sysmmu_drvdata { spinlock_t lock; struct iommu_domain *domain; struct list_head domain_node; + struct list_head owner_node; phys_addr_t pgtable; int version; }; @@ -700,8 +701,7 @@ static int exynos_iommu_attach_device(struct iommu_domain *domain, if (!has_sysmmu(dev)) return -ENODEV; - data = dev_get_drvdata(owner->sysmmu); - if (data) { + list_for_each_entry(data, &owner->clients, owner_node) { ret = __sysmmu_enable(data, pagetable, domain); if (ret >= 0) { data->master = dev; @@ -729,7 +729,7 @@ static void exynos_iommu_detach_device(struct iommu_domain *domain, { struct exynos_iommu_domain *priv = to_exynos_domain(domain); phys_addr_t pagetable = virt_to_phys(priv->pgtable); - struct sysmmu_drvdata *data; + struct sysmmu_drvdata *data, *next; unsigned long flags; bool found = false; @@ -737,14 +737,13 @@ static void exynos_iommu_detach_device(struct iommu_domain *domain, return; spin_lock_irqsave(&priv->lock, flags); - list_for_each_entry(data, &priv->clients, domain_node) { + list_for_each_entry_safe(data, next, &priv->clients, domain_node) { if (data->master == dev) { if (__sysmmu_disable(data)) { data->master = NULL; list_del_init(&data->domain_node); } found = true; - break; } } spin_unlock_irqrestore(&priv->lock, flags); -- 1.9.2
next prev parent reply other threads:[~2015-05-04 8:17 UTC|newest] Thread overview: 116+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-05-04 8:15 [PATCH v6 00/25] Exynos SYSMMU (IOMMU) integration with DT and DMA-mapping subsystem Marek Szyprowski 2015-05-04 8:15 ` Marek Szyprowski 2015-05-04 8:15 ` [PATCH v6 02/25] arm: exynos: pm_domains: register power domain driver from core_initcall Marek Szyprowski 2015-05-04 8:15 ` Marek Szyprowski 2015-05-04 8:15 ` [PATCH v6 03/25] drm/exynos: iommu: detach from default dma-mapping domain on init Marek Szyprowski 2015-05-04 8:15 ` Marek Szyprowski 2015-05-04 8:15 ` [PATCH v6 04/25] drm/exynos: fimd: ensure proper hw state in fimd_clear_channel() Marek Szyprowski 2015-05-04 8:15 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 05/25] iommu: exynos: don't read version register on every tlb operation Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-10 12:59 ` Cho KyongHo 2015-05-10 12:59 ` Cho KyongHo [not found] ` <1430727380-10912-1-git-send-email-m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-05-04 8:15 ` [PATCH v6 01/25] arm: dma-mapping: add support for creating reserved mappings in iova space Marek Szyprowski 2015-05-04 8:15 ` Marek Szyprowski 2015-05-04 22:12 ` Rob Herring 2015-05-04 22:12 ` Rob Herring [not found] ` <CAL_JsqKB4F8tspydBFrL-PH3gXcyu-pwQwBETMizJzTpAF3yzg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2015-05-18 12:09 ` Marek Szyprowski 2015-05-18 12:09 ` Marek Szyprowski 2015-05-06 14:01 ` Robin Murphy 2015-05-06 14:01 ` Robin Murphy 2015-05-19 10:49 ` Marek Szyprowski 2015-05-19 10:49 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 06/25] iommu: exynos: remove unused functions Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-10 13:01 ` Cho KyongHo 2015-05-10 13:01 ` Cho KyongHo 2015-05-04 10:30 ` [PATCH v6 27/26] iommu: exynos: add system suspend/resume support Marek Szyprowski 2015-05-04 10:30 ` Marek Szyprowski 2015-05-05 15:05 ` [PATCH v6 00/25] Exynos SYSMMU (IOMMU) integration with DT and DMA-mapping subsystem Joerg Roedel 2015-05-05 15:05 ` Joerg Roedel 2015-05-18 12:16 ` Marek Szyprowski 2015-05-18 12:16 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 07/25] iommu: exynos: remove useless spinlock Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 08/25] iommu: exynos: refactor function parameters to simplify code Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski [not found] ` <1430727380-10912-9-git-send-email-m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-05-05 14:52 ` Joerg Roedel 2015-05-05 14:52 ` Joerg Roedel 2015-05-10 13:27 ` Cho KyongHo 2015-05-10 13:27 ` Cho KyongHo [not found] ` <20150510222712.a955a6d326698ba5a09c6fe7-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-05-18 12:58 ` Marek Szyprowski 2015-05-18 12:58 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 09/25] iommu: exynos: remove unused functions, part 2 Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski [not found] ` <1430727380-10912-10-git-send-email-m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-05-05 14:53 ` Joerg Roedel 2015-05-05 14:53 ` Joerg Roedel 2015-05-04 8:16 ` [PATCH v6 10/25] iommu: exynos: remove useless device_add/remove callbacks Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski [not found] ` <1430727380-10912-11-git-send-email-m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-05-05 14:55 ` Joerg Roedel 2015-05-05 14:55 ` Joerg Roedel [not found] ` <20150505145538.GL15736-zLv9SwRftAIdnm+yROfE0A@public.gmane.org> 2015-05-18 12:09 ` Marek Szyprowski 2015-05-18 12:09 ` Marek Szyprowski 2015-05-18 17:04 ` Joerg Roedel 2015-05-18 17:04 ` Joerg Roedel [not found] ` <20150518170430.GK20611-zLv9SwRftAIdnm+yROfE0A@public.gmane.org> 2015-05-18 19:37 ` Laurent Pinchart 2015-05-18 19:37 ` Laurent Pinchart 2015-05-04 8:16 ` Marek Szyprowski [this message] 2015-05-04 8:16 ` [PATCH v6 11/25] iommu: exynos: add support for binding more than one sysmmu to master device Marek Szyprowski 2015-05-10 13:34 ` Cho KyongHo 2015-05-10 13:34 ` Cho KyongHo [not found] ` <20150510223437.b651f6d2f3f0ead49eb72488-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-05-18 13:03 ` Marek Szyprowski 2015-05-18 13:03 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 12/25] iommu: exynos: add support for runtime_pm Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-10 13:38 ` Cho KyongHo 2015-05-10 13:38 ` Cho KyongHo 2015-05-18 12:25 ` Marek Szyprowski 2015-05-18 12:25 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 13/25] iommu: exynos: rename variables to reflect their purpose Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 14/25] iommu: exynos: use struct exynos_iommu_domain in internal structures Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 15/25] iommu: exynos: document " Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski [not found] ` <1430727380-10912-16-git-send-email-m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-05-05 15:00 ` Joerg Roedel 2015-05-05 15:00 ` Joerg Roedel 2015-05-04 8:16 ` [PATCH v6 16/25] iommu: exynos: remove excessive includes and sort others alphabetically Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 17/25] iommu: exynos: init from dt-specific callback instead of initcall Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 18/25] iommu: exynos: add callback for initializing devices from device tree Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 19/25] iommu: exynos: remove unneeded code Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-04 8:16 ` [PATCH v6 20/25] ARM: dts: exynos4: add sysmmu nodes Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-05 4:08 ` Krzysztof Kozłowski 2015-05-05 4:08 ` Krzysztof Kozłowski 2015-05-04 8:16 ` [PATCH v6 21/25] ARM: dts: exynos3250: " Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-05 4:10 ` Krzysztof Kozłowski 2015-05-05 4:10 ` Krzysztof Kozłowski 2015-05-04 8:16 ` [PATCH v6 22/25] ARM: dts: exynos4415: " Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-05 4:09 ` Krzysztof Kozłowski 2015-05-05 4:09 ` Krzysztof Kozłowski 2015-05-04 8:16 ` [PATCH v6 23/25] ARM: dts: exynos5250: " Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-05 4:04 ` Krzysztof Kozłowski 2015-05-05 4:04 ` Krzysztof Kozłowski 2015-05-04 8:16 ` [PATCH v6 24/25] ARM: dts: exynos5420: " Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski 2015-05-05 4:10 ` Krzysztof Kozłowski 2015-05-05 4:10 ` Krzysztof Kozłowski 2015-05-04 8:16 ` [PATCH v6 25/25] ARM: dts: exynos: add iommu reserved regions for bootloader's splash screen Marek Szyprowski 2015-05-04 8:16 ` Marek Szyprowski [not found] ` <1430727380-10912-26-git-send-email-m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-05-05 5:50 ` Krzysztof Kozłowski 2015-05-05 5:50 ` Krzysztof Kozłowski 2015-05-11 16:00 ` [PATCH v6 00/25] Exynos SYSMMU (IOMMU) integration with DT and DMA-mapping subsystem Javier Martinez Canillas 2015-05-11 16:00 ` Javier Martinez Canillas 2015-05-12 15:35 ` Javier Martinez Canillas 2015-05-12 15:35 ` Javier Martinez Canillas 2015-05-18 13:26 ` Marek Szyprowski 2015-05-18 13:26 ` Marek Szyprowski [not found] ` <5559E88E.9050108-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-05-18 13:32 ` Javier Martinez Canillas 2015-05-18 13:32 ` Javier Martinez Canillas
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1430727380-10912-12-git-send-email-m.szyprowski@samsung.com \ --to=m.szyprowski@samsung.com \ --cc=arnd@arndb.de \ --cc=dwmw2@infradead.org \ --cc=inki.dae@samsung.com \ --cc=iommu@lists.linux-foundation.org \ --cc=javier@dowhile0.org \ --cc=joro@8bytes.org \ --cc=jy0922.shim@samsung.com \ --cc=kgene@kernel.org \ --cc=kyungmin.park@samsung.com \ --cc=laurent.pinchart@ideasonboard.com \ --cc=linaro-mm-sig@lists.linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-samsung-soc@vger.kernel.org \ --cc=olof@lixom.net \ --cc=pullip.cho@samsung.com \ --cc=robh@kernel.org \ --cc=shaik.ameer@samsung.com \ --cc=sw0312.kim@samsung.com \ --cc=tomasz.figa@gmail.com \ --cc=treding@nvidia.com \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.