From: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org> To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Cc: linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, stefano.stabellini-mvvWK6WmYclDPfheJLI6IQ@public.gmane.org, catalin.marinas-5wv7dgnIgG8@public.gmane.org, will.deacon-5wv7dgnIgG8@public.gmane.org, thunder.leizhen-hv44wF8Li93QT0dZR+AlfA@public.gmane.org, dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org Subject: [RFC PATCH 0/5] arm64: IOMMU-backed DMA mapping Date: Mon, 12 Jan 2015 20:48:52 +0000 [thread overview] Message-ID: <cover.1421086706.git.robin.murphy@arm.com> (raw) Hi all, Whilst it's a long way off perfect, this has reached the point of being functional and stable enough to be useful, so here it is. The core consists of the meat of the arch/arm implementation modified to remove the assumption of PAGE_SIZE pages and ported over to the Intel IOVA allocator instead of the bitmap-based one. For that, this series depends on my "Genericise the IOVA allocator" series posted earlier[1]. There are plenty of obvious things still to do, including: * Domain and group handling is all wrong, but that's a bigger problem. For the moment it does more or less the same thing as the arch/arm code, which at least works for the one-IOMMU-per-device situation. * IOMMU domains and IOVA domains probably want to be better integrated with devices and each other, rather than having a proliferation of arch-specific structs. * The temporary map_sg implementation - I have a 'proper' iommu_map_sg based one in progress, but since the simple one works it's not been as high a priority. * Port arch/arm over to it. I'd guess it might be preferable to merge this through arm64 first, though, rather than overcomplicate matters. * There may well be scope for streamlining and tidying up the copied parts - In general I've simply avoided touching anything I don't fully understand. * In the same vein, I'm sure lots of it is fairly ARM-specific, so will need longer-term work to become truly generic. [1]:http://thread.gmane.org/gmane.linux.kernel.iommu/8208 Catalin Marinas (1): arm64: Combine coherent and non-coherent swiotlb dma_ops Robin Murphy (4): arm64: implement generic IOMMU configuration iommu: implement common IOMMU ops for DMA mapping arm64: add IOMMU dma_ops arm64: hook up IOMMU dma_ops arch/arm64/Kconfig | 1 + arch/arm64/include/asm/device.h | 3 + arch/arm64/include/asm/dma-mapping.h | 33 +-- arch/arm64/kernel/setup.c | 2 + arch/arm64/mm/dma-mapping.c | 435 ++++++++++++++++++++++++++++----- include/linux/dma-iommu.h | 78 ++++++ lib/Kconfig | 8 + lib/Makefile | 1 + lib/dma-iommu.c | 455 +++++++++++++++++++++++++++++++++++ 9 files changed, 938 insertions(+), 78 deletions(-) create mode 100644 include/linux/dma-iommu.h create mode 100644 lib/dma-iommu.c -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: robin.murphy@arm.com (Robin Murphy) To: linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH 0/5] arm64: IOMMU-backed DMA mapping Date: Mon, 12 Jan 2015 20:48:52 +0000 [thread overview] Message-ID: <cover.1421086706.git.robin.murphy@arm.com> (raw) Hi all, Whilst it's a long way off perfect, this has reached the point of being functional and stable enough to be useful, so here it is. The core consists of the meat of the arch/arm implementation modified to remove the assumption of PAGE_SIZE pages and ported over to the Intel IOVA allocator instead of the bitmap-based one. For that, this series depends on my "Genericise the IOVA allocator" series posted earlier[1]. There are plenty of obvious things still to do, including: * Domain and group handling is all wrong, but that's a bigger problem. For the moment it does more or less the same thing as the arch/arm code, which at least works for the one-IOMMU-per-device situation. * IOMMU domains and IOVA domains probably want to be better integrated with devices and each other, rather than having a proliferation of arch-specific structs. * The temporary map_sg implementation - I have a 'proper' iommu_map_sg based one in progress, but since the simple one works it's not been as high a priority. * Port arch/arm over to it. I'd guess it might be preferable to merge this through arm64 first, though, rather than overcomplicate matters. * There may well be scope for streamlining and tidying up the copied parts - In general I've simply avoided touching anything I don't fully understand. * In the same vein, I'm sure lots of it is fairly ARM-specific, so will need longer-term work to become truly generic. [1]:http://thread.gmane.org/gmane.linux.kernel.iommu/8208 Catalin Marinas (1): arm64: Combine coherent and non-coherent swiotlb dma_ops Robin Murphy (4): arm64: implement generic IOMMU configuration iommu: implement common IOMMU ops for DMA mapping arm64: add IOMMU dma_ops arm64: hook up IOMMU dma_ops arch/arm64/Kconfig | 1 + arch/arm64/include/asm/device.h | 3 + arch/arm64/include/asm/dma-mapping.h | 33 +-- arch/arm64/kernel/setup.c | 2 + arch/arm64/mm/dma-mapping.c | 435 ++++++++++++++++++++++++++++----- include/linux/dma-iommu.h | 78 ++++++ lib/Kconfig | 8 + lib/Makefile | 1 + lib/dma-iommu.c | 455 +++++++++++++++++++++++++++++++++++ 9 files changed, 938 insertions(+), 78 deletions(-) create mode 100644 include/linux/dma-iommu.h create mode 100644 lib/dma-iommu.c -- 1.9.1
next reply other threads:[~2015-01-12 20:48 UTC|newest] Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-01-12 20:48 Robin Murphy [this message] 2015-01-12 20:48 ` [RFC PATCH 0/5] arm64: IOMMU-backed DMA mapping Robin Murphy 2015-01-13 8:02 ` Yingjoe Chen 2015-01-13 8:02 ` Yingjoe Chen 2015-01-13 12:07 ` Robin Murphy 2015-01-13 12:07 ` Robin Murphy 2015-01-15 18:35 ` Robin Murphy 2015-01-15 18:35 ` Robin Murphy 2015-01-16 7:21 ` Yong Wu 2015-01-16 7:21 ` Yong Wu 2015-01-16 20:12 ` Robin Murphy 2015-01-16 20:12 ` Robin Murphy [not found] ` <cover.1421086706.git.robin.murphy-5wv7dgnIgG8@public.gmane.org> 2015-01-12 20:48 ` [RFC PATCH 1/5] arm64: Combine coherent and non-coherent swiotlb dma_ops Robin Murphy 2015-01-12 20:48 ` Robin Murphy 2015-01-12 20:48 ` [RFC PATCH 2/5] arm64: implement generic IOMMU configuration Robin Murphy 2015-01-12 20:48 ` Robin Murphy 2015-01-12 20:48 ` [RFC PATCH 3/5] iommu: implement common IOMMU ops for DMA mapping Robin Murphy 2015-01-12 20:48 ` Robin Murphy [not found] ` <09e5515a9afcb3235f4c425520cd18a6032d31b4.1421086706.git.robin.murphy-5wv7dgnIgG8@public.gmane.org> 2015-01-23 17:42 ` Laura Abbott 2015-01-23 17:42 ` Laura Abbott [not found] ` <54C287F7.3060603-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2015-01-23 18:14 ` Robin Murphy 2015-01-23 18:14 ` Robin Murphy 2015-01-27 0:21 ` Joerg Roedel 2015-01-27 0:21 ` Joerg Roedel [not found] ` <20150127002116.GI30345-zLv9SwRftAIdnm+yROfE0A@public.gmane.org> 2015-01-27 12:27 ` Robin Murphy 2015-01-27 12:27 ` Robin Murphy [not found] ` <54C7843B.3000605-5wv7dgnIgG8@public.gmane.org> 2015-01-27 12:38 ` Joerg Roedel 2015-01-27 12:38 ` Joerg Roedel [not found] ` <20150127123809.GJ30345-zLv9SwRftAIdnm+yROfE0A@public.gmane.org> 2015-01-28 13:53 ` Will Deacon 2015-01-28 13:53 ` Will Deacon 2015-01-12 20:48 ` [RFC PATCH 4/5] arm64: add IOMMU dma_ops Robin Murphy 2015-01-12 20:48 ` Robin Murphy [not found] ` <aa7de3b1dd189c31eb8b14d0c0eea699183f8a2c.1421086706.git.robin.murphy-5wv7dgnIgG8@public.gmane.org> 2015-01-23 15:26 ` Will Deacon 2015-01-23 15:26 ` Will Deacon [not found] ` <20150123152605.GA31460-5wv7dgnIgG8@public.gmane.org> 2015-01-23 17:33 ` Robin Murphy 2015-01-23 17:33 ` Robin Murphy 2015-01-26 3:25 ` Joseph Lo 2015-01-26 3:25 ` Joseph Lo [not found] ` <54C5B3B9.1040300-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2015-01-27 17:30 ` Robin Murphy 2015-01-27 17:30 ` Robin Murphy 2015-01-26 9:10 ` Joseph Lo 2015-01-26 9:10 ` Joseph Lo 2015-01-28 2:22 ` Joseph Lo 2015-01-28 2:22 ` Joseph Lo 2015-03-05 14:31 ` Marek Szyprowski 2015-03-05 14:31 ` Marek Szyprowski 2015-01-12 20:48 ` [RFC PATCH 5/5] arm64: hook up " Robin Murphy 2015-01-12 20:48 ` Robin Murphy 2015-01-13 11:08 ` [RFC PATCH 0/5] arm64: IOMMU-backed DMA mapping Stefano Stabellini 2015-01-13 11:08 ` Stefano Stabellini [not found] ` <alpine.DEB.2.02.1501131102540.3058-7Z66fg9igcxYtxbxJUhB2Dgeux46jI+i@public.gmane.org> 2015-01-13 11:45 ` Robin Murphy 2015-01-13 11:45 ` Robin Murphy 2015-01-23 16:47 ` Catalin Marinas 2015-01-23 16:47 ` Catalin Marinas [not found] ` <20150123164759.GF9557-M2fw3Uu6cmfZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> 2015-01-23 17:41 ` Robin Murphy 2015-01-23 17:41 ` Robin Murphy 2015-03-05 14:31 ` Marek Szyprowski 2015-03-05 14:31 ` Marek Szyprowski [not found] ` <54F868A8.7070103-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2015-03-05 16:42 ` Robin Murphy 2015-03-05 16:42 ` Robin Murphy
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=cover.1421086706.git.robin.murphy@arm.com \ --to=robin.murphy-5wv7dgnigg8@public.gmane.org \ --cc=arnd-r2nGTMty4D4@public.gmane.org \ --cc=catalin.marinas-5wv7dgnIgG8@public.gmane.org \ --cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \ --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \ --cc=stefano.stabellini-mvvWK6WmYclDPfheJLI6IQ@public.gmane.org \ --cc=thunder.leizhen-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \ --cc=will.deacon-5wv7dgnIgG8@public.gmane.org \ /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.