From: Christoph Hellwig <hch@lst.de> To: Robin Murphy <robin.murphy@arm.com> Cc: Joerg Roedel <joro@8bytes.org>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Tom Lendacky <thomas.lendacky@amd.com>, iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 08/19] dma-iommu: move __iommu_dma_map Date: Mon, 14 Jan 2019 10:41:48 +0100 [thread overview] Message-ID: <20190114094159.27326-9-hch@lst.de> (raw) In-Reply-To: <20190114094159.27326-1-hch@lst.de> Moving this function up to its unmap counterpart helps to keep related code together for the following changes. Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/iommu/dma-iommu.c | 46 +++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index 8f3dc6ab3da1..0727c109bcab 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -437,6 +437,29 @@ static void __iommu_dma_unmap(struct iommu_domain *domain, dma_addr_t dma_addr, iommu_dma_free_iova(cookie, dma_addr, size); } +static dma_addr_t __iommu_dma_map(struct device *dev, phys_addr_t phys, + size_t size, int prot, struct iommu_domain *domain) +{ + struct iommu_dma_cookie *cookie = domain->iova_cookie; + size_t iova_off = 0; + dma_addr_t iova; + + if (cookie->type == IOMMU_DMA_IOVA_COOKIE) { + iova_off = iova_offset(&cookie->iovad, phys); + size = iova_align(&cookie->iovad, size + iova_off); + } + + iova = iommu_dma_alloc_iova(domain, size, dma_get_mask(dev), dev); + if (!iova) + return DMA_MAPPING_ERROR; + + if (iommu_map(domain, iova, phys - iova_off, size, prot)) { + iommu_dma_free_iova(cookie, iova, size); + return DMA_MAPPING_ERROR; + } + return iova + iova_off; +} + static void __iommu_dma_free_pages(struct page **pages, int count) { while (count--) @@ -684,29 +707,6 @@ static void iommu_dma_sync_sg_for_device(struct device *dev, arch_sync_dma_for_device(dev, sg_phys(sg), sg->length, dir); } -static dma_addr_t __iommu_dma_map(struct device *dev, phys_addr_t phys, - size_t size, int prot, struct iommu_domain *domain) -{ - struct iommu_dma_cookie *cookie = domain->iova_cookie; - size_t iova_off = 0; - dma_addr_t iova; - - if (cookie->type == IOMMU_DMA_IOVA_COOKIE) { - iova_off = iova_offset(&cookie->iovad, phys); - size = iova_align(&cookie->iovad, size + iova_off); - } - - iova = iommu_dma_alloc_iova(domain, size, dma_get_mask(dev), dev); - if (!iova) - return DMA_MAPPING_ERROR; - - if (iommu_map(domain, iova, phys - iova_off, size, prot)) { - iommu_dma_free_iova(cookie, iova, size); - return DMA_MAPPING_ERROR; - } - return iova + iova_off; -} - static dma_addr_t __iommu_dma_map_page(struct device *dev, struct page *page, unsigned long offset, size_t size, int prot) { -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de> To: Robin Murphy <robin.murphy@arm.com> Cc: Tom Lendacky <thomas.lendacky@amd.com>, Catalin Marinas <catalin.marinas@arm.com>, Joerg Roedel <joro@8bytes.org>, Will Deacon <will.deacon@arm.com>, linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 08/19] dma-iommu: move __iommu_dma_map Date: Mon, 14 Jan 2019 10:41:48 +0100 [thread overview] Message-ID: <20190114094159.27326-9-hch@lst.de> (raw) In-Reply-To: <20190114094159.27326-1-hch@lst.de> Moving this function up to its unmap counterpart helps to keep related code together for the following changes. Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/iommu/dma-iommu.c | 46 +++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index 8f3dc6ab3da1..0727c109bcab 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -437,6 +437,29 @@ static void __iommu_dma_unmap(struct iommu_domain *domain, dma_addr_t dma_addr, iommu_dma_free_iova(cookie, dma_addr, size); } +static dma_addr_t __iommu_dma_map(struct device *dev, phys_addr_t phys, + size_t size, int prot, struct iommu_domain *domain) +{ + struct iommu_dma_cookie *cookie = domain->iova_cookie; + size_t iova_off = 0; + dma_addr_t iova; + + if (cookie->type == IOMMU_DMA_IOVA_COOKIE) { + iova_off = iova_offset(&cookie->iovad, phys); + size = iova_align(&cookie->iovad, size + iova_off); + } + + iova = iommu_dma_alloc_iova(domain, size, dma_get_mask(dev), dev); + if (!iova) + return DMA_MAPPING_ERROR; + + if (iommu_map(domain, iova, phys - iova_off, size, prot)) { + iommu_dma_free_iova(cookie, iova, size); + return DMA_MAPPING_ERROR; + } + return iova + iova_off; +} + static void __iommu_dma_free_pages(struct page **pages, int count) { while (count--) @@ -684,29 +707,6 @@ static void iommu_dma_sync_sg_for_device(struct device *dev, arch_sync_dma_for_device(dev, sg_phys(sg), sg->length, dir); } -static dma_addr_t __iommu_dma_map(struct device *dev, phys_addr_t phys, - size_t size, int prot, struct iommu_domain *domain) -{ - struct iommu_dma_cookie *cookie = domain->iova_cookie; - size_t iova_off = 0; - dma_addr_t iova; - - if (cookie->type == IOMMU_DMA_IOVA_COOKIE) { - iova_off = iova_offset(&cookie->iovad, phys); - size = iova_align(&cookie->iovad, size + iova_off); - } - - iova = iommu_dma_alloc_iova(domain, size, dma_get_mask(dev), dev); - if (!iova) - return DMA_MAPPING_ERROR; - - if (iommu_map(domain, iova, phys - iova_off, size, prot)) { - iommu_dma_free_iova(cookie, iova, size); - return DMA_MAPPING_ERROR; - } - return iova + iova_off; -} - static dma_addr_t __iommu_dma_map_page(struct device *dev, struct page *page, unsigned long offset, size_t size, int prot) { -- 2.20.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-01-14 9:43 UTC|newest] Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-01-14 9:41 implement generic dma_map_ops for IOMMUs Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 01/19] dma-mapping: add a Kconfig symbol to indicated arch_dma_prep_coherent presence Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-02-01 14:22 ` Robin Murphy 2019-02-01 14:22 ` Robin Murphy 2019-02-01 16:12 ` Christoph Hellwig 2019-02-01 16:12 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 02/19] dma-iommu: cleanup dma-iommu.h Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-02-01 14:47 ` Robin Murphy 2019-02-01 14:47 ` Robin Murphy 2019-02-01 16:13 ` Christoph Hellwig 2019-02-01 16:13 ` Christoph Hellwig 2019-02-06 15:08 ` Robin Murphy 2019-02-06 15:08 ` Robin Murphy 2019-02-06 15:08 ` Robin Murphy 2019-02-11 15:59 ` Christoph Hellwig 2019-02-11 15:59 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 03/19] dma-iommu: don't use a scatterlist in iommu_dma_alloc Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-02-01 15:24 ` Robin Murphy 2019-02-01 15:24 ` Robin Murphy 2019-02-01 16:16 ` Christoph Hellwig 2019-02-01 16:16 ` Christoph Hellwig 2019-02-06 15:28 ` Robin Murphy 2019-02-06 15:28 ` Robin Murphy 2019-02-11 16:00 ` Christoph Hellwig 2019-02-11 16:00 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 04/19] dma-iommu: remove the flush_page callback Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-02-01 15:28 ` Robin Murphy 2019-02-01 15:28 ` Robin Murphy 2019-01-14 9:41 ` [PATCH 05/19] dma-iommu: move the arm64 wrappers to common code Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 06/19] dma-iommu: fix and refactor iommu_dma_mmap Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-02-05 15:02 ` Robin Murphy 2019-02-05 15:02 ` Robin Murphy 2019-02-11 16:03 ` Christoph Hellwig 2019-02-11 16:03 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 07/19] dma-iommu: fix and refactor iommu_dma_get_sgtable Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig [this message] 2019-01-14 9:41 ` [PATCH 08/19] dma-iommu: move __iommu_dma_map Christoph Hellwig 2019-01-14 9:41 ` [PATCH 09/19] dma-iommu: refactor page array remap helpers Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 10/19] dma-iommu: factor atomic pool allocations into helpers Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 11/19] dma-iommu: factor contiguous " Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 12/19] dma-iommu: refactor iommu_dma_free Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 13/19] dma-iommu: don't remap contiguous allocations for coherent devices Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 14/19] dma-iommu: factor contiguous remapped allocations into helpers Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 15/19] dma-iommu: refactor iommu_dma_alloc Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 16/19] dma-iommu: don't depend on CONFIG_DMA_DIRECT_REMAP Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-02-06 11:55 ` Robin Murphy 2019-02-06 11:55 ` Robin Murphy 2019-02-11 16:39 ` Christoph Hellwig 2019-02-11 16:39 ` Christoph Hellwig 2019-01-14 9:41 ` [PATCH 17/19] dma-iommu: switch copyright boilerplace to SPDX Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-02-06 11:57 ` Robin Murphy 2019-02-06 11:57 ` Robin Murphy 2019-01-14 9:41 ` [PATCH 18/19] arm64: switch copyright boilerplace to SPDX in dma-mapping.c Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-02-06 12:19 ` Robin Murphy 2019-02-06 12:19 ` Robin Murphy 2019-01-14 9:41 ` [PATCH 19/19] arm64: trim includes " Christoph Hellwig 2019-01-14 9:41 ` Christoph Hellwig 2019-01-28 7:53 ` implement generic dma_map_ops for IOMMUs Christoph Hellwig 2019-01-28 7:53 ` Christoph Hellwig
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=20190114094159.27326-9-hch@lst.de \ --to=hch@lst.de \ --cc=catalin.marinas@arm.com \ --cc=iommu@lists.linux-foundation.org \ --cc=joro@8bytes.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=robin.murphy@arm.com \ --cc=thomas.lendacky@amd.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.