All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Will Deacon <will.deacon@arm.com>
Cc: iommu@lists.linux-foundation.org,
	devicetree-discuss@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 3/9] ARM: dma-mapping: convert DMA direction into IOMMU protection attributes
Date: Wed, 19 Jun 2013 10:37:03 +0200	[thread overview]
Message-ID: <51C16DAF.1090205@samsung.com> (raw)
In-Reply-To: <1370889285-22799-4-git-send-email-will.deacon@arm.com>

Hello,

On 6/10/2013 8:34 PM, Will Deacon wrote:
> IOMMU mappings take a prot parameter, identifying the protection bits
> to enforce on the newly created mapping (READ or WRITE). The ARM
> dma-mapping framework currently just passes 0 as the prot argument,
> resulting in faulting mappings.
>
> This patch infers the protection attributes based on the direction of
> the DMA transfer.
>
> Cc: Marek Szyprowski <m.szyprowski@samsung.com>
> Signed-off-by: Will Deacon <will.deacon@arm.com>

Thanks for fixing this issue. Could I take this patch to my dma-mapping tree
with other dma-mapping changes I've collected recently or do you want my ack
and push it via other tree?

> ---
>   arch/arm/mm/dma-mapping.c | 18 ++++++++++++++++--
>   1 file changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
> index 6fb80cf..d119de7 100644
> --- a/arch/arm/mm/dma-mapping.c
> +++ b/arch/arm/mm/dma-mapping.c
> @@ -1636,13 +1636,27 @@ static dma_addr_t arm_coherent_iommu_map_page(struct device *dev, struct page *p
>   {
>   	struct dma_iommu_mapping *mapping = dev->archdata.mapping;
>   	dma_addr_t dma_addr;
> -	int ret, len = PAGE_ALIGN(size + offset);
> +	int ret, prot, len = PAGE_ALIGN(size + offset);
>   
>   	dma_addr = __alloc_iova(mapping, len);
>   	if (dma_addr == DMA_ERROR_CODE)
>   		return dma_addr;
>   
> -	ret = iommu_map(mapping->domain, dma_addr, page_to_phys(page), len, 0);
> +	switch (dir) {
> +	case DMA_BIDIRECTIONAL:
> +		prot = IOMMU_READ | IOMMU_WRITE;
> +		break;
> +	case DMA_TO_DEVICE:
> +		prot = IOMMU_READ;
> +		break;
> +	case DMA_FROM_DEVICE:
> +		prot = IOMMU_WRITE;
> +		break;
> +	default:
> +		prot = 0;
> +	}
> +
> +	ret = iommu_map(mapping->domain, dma_addr, page_to_phys(page), len, prot);
>   	if (ret < 0)
>   		goto fail;
>   

Best regards
-- 
Marek Szyprowski
Samsung R&D Institute Poland

WARNING: multiple messages have this Message-ID (diff)
From: m.szyprowski@samsung.com (Marek Szyprowski)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/9] ARM: dma-mapping: convert DMA direction into IOMMU protection attributes
Date: Wed, 19 Jun 2013 10:37:03 +0200	[thread overview]
Message-ID: <51C16DAF.1090205@samsung.com> (raw)
In-Reply-To: <1370889285-22799-4-git-send-email-will.deacon@arm.com>

Hello,

On 6/10/2013 8:34 PM, Will Deacon wrote:
> IOMMU mappings take a prot parameter, identifying the protection bits
> to enforce on the newly created mapping (READ or WRITE). The ARM
> dma-mapping framework currently just passes 0 as the prot argument,
> resulting in faulting mappings.
>
> This patch infers the protection attributes based on the direction of
> the DMA transfer.
>
> Cc: Marek Szyprowski <m.szyprowski@samsung.com>
> Signed-off-by: Will Deacon <will.deacon@arm.com>

Thanks for fixing this issue. Could I take this patch to my dma-mapping tree
with other dma-mapping changes I've collected recently or do you want my ack
and push it via other tree?

> ---
>   arch/arm/mm/dma-mapping.c | 18 ++++++++++++++++--
>   1 file changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
> index 6fb80cf..d119de7 100644
> --- a/arch/arm/mm/dma-mapping.c
> +++ b/arch/arm/mm/dma-mapping.c
> @@ -1636,13 +1636,27 @@ static dma_addr_t arm_coherent_iommu_map_page(struct device *dev, struct page *p
>   {
>   	struct dma_iommu_mapping *mapping = dev->archdata.mapping;
>   	dma_addr_t dma_addr;
> -	int ret, len = PAGE_ALIGN(size + offset);
> +	int ret, prot, len = PAGE_ALIGN(size + offset);
>   
>   	dma_addr = __alloc_iova(mapping, len);
>   	if (dma_addr == DMA_ERROR_CODE)
>   		return dma_addr;
>   
> -	ret = iommu_map(mapping->domain, dma_addr, page_to_phys(page), len, 0);
> +	switch (dir) {
> +	case DMA_BIDIRECTIONAL:
> +		prot = IOMMU_READ | IOMMU_WRITE;
> +		break;
> +	case DMA_TO_DEVICE:
> +		prot = IOMMU_READ;
> +		break;
> +	case DMA_FROM_DEVICE:
> +		prot = IOMMU_WRITE;
> +		break;
> +	default:
> +		prot = 0;
> +	}
> +
> +	ret = iommu_map(mapping->domain, dma_addr, page_to_phys(page), len, prot);
>   	if (ret < 0)
>   		goto fail;
>   

Best regards
-- 
Marek Szyprowski
Samsung R&D Institute Poland

  reply	other threads:[~2013-06-19  8:37 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-10 18:34 [PATCH 0/9] Add support for ARM SMMU architectures 1 and 2 Will Deacon
2013-06-10 18:34 ` Will Deacon
     [not found] ` <1370889285-22799-1-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-10 18:34   ` [PATCH 1/9] dma: pl330: rip out broken, redundant ID probing Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-2-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-11  4:37       ` Jassi Brar
2013-06-11 22:31       ` Grant Likely
2013-06-11 22:31         ` Grant Likely
2013-06-12  5:31       ` Vinod Koul
2013-06-12  5:31         ` Vinod Koul
2013-06-11  4:40     ` Jassi Brar
2013-06-11  4:40       ` Jassi Brar
     [not found]       ` <CAJe_Zhc1UoTC4q4oaW=dzyi_10Q7EoezoT=G8_v+yCmBxV75+A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-11  8:45         ` Will Deacon
2013-06-11  8:45           ` Will Deacon
2013-06-10 18:34   ` [PATCH 2/9] dma: pl330: use dma_addr_t for describing bus addresses Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-3-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-11  4:37       ` Jassi Brar
     [not found]         ` <CAJe_ZheKMVQgq42Vx5N1TXXdgFJ2sp50ixU30A7beXhmSVHnZQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-12  5:31           ` Vinod Koul
2013-06-12  5:31             ` Vinod Koul
2013-06-11 22:32       ` Grant Likely
2013-06-11 22:32         ` Grant Likely
2013-06-11  4:39     ` Jassi Brar
2013-06-11  4:39       ` Jassi Brar
2013-06-10 18:34   ` [PATCH 3/9] ARM: dma-mapping: convert DMA direction into IOMMU protection attributes Will Deacon
2013-06-10 18:34     ` Will Deacon
2013-06-19  8:37     ` Marek Szyprowski [this message]
2013-06-19  8:37       ` Marek Szyprowski
     [not found]       ` <51C16DAF.1090205-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2013-06-19  8:52         ` Will Deacon
2013-06-19  8:52           ` Will Deacon
     [not found]           ` <20130619085202.GC20351-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-19  8:57             ` Marek Szyprowski
2013-06-19  8:57               ` Marek Szyprowski
     [not found]     ` <1370889285-22799-4-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-25 10:12       ` Hiroshi Doyu
2013-06-25 10:12         ` Hiroshi Doyu
     [not found]         ` <20130625131215.d3cea2a5668a3d41dbbeb064-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-25 11:37           ` Will Deacon
2013-06-25 11:37             ` Will Deacon
     [not found]             ` <20130625113714.GF31838-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-25 11:52               ` Hiroshi Doyu
2013-06-25 11:52                 ` Hiroshi Doyu
2013-06-25 11:52                 ` Hiroshi Doyu
     [not found]                 ` <20130625.145226.1632119404634300971.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-25 12:34                   ` Will Deacon
2013-06-25 12:34                     ` Will Deacon
2013-06-10 18:34   ` [PATCH 4/9] ARM: dma-mapping: NULLify dev->archdata.mapping pointer on detach Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-5-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-11  5:34       ` Hiroshi Doyu
2013-06-11  5:34         ` Hiroshi Doyu
     [not found]         ` <20130611.083455.1500863288897785600.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-11  8:50           ` Will Deacon
2013-06-11  8:50             ` Will Deacon
     [not found]             ` <20130611085015.GC24729-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-11  9:39               ` Hiroshi Doyu
2013-06-11  9:39                 ` Hiroshi Doyu
     [not found]                 ` <20130611123933.4d278ff4e056f395788ad060-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-19  8:59                   ` Marek Szyprowski
2013-06-19  8:59                     ` Marek Szyprowski
2013-06-10 18:34   ` [PATCH 5/9] arm64: pgtable: use pte_index instead of __pte_index Will Deacon
2013-06-10 18:34     ` Will Deacon
2013-06-10 18:34   ` [PATCH 6/9] arm64: device: add iommu pointer to device archdata Will Deacon
2013-06-10 18:34     ` Will Deacon
2013-06-10 18:34   ` [PATCH 7/9] documentation: iommu: add description of ARM System MMU binding Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-8-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-12  8:44       ` Grant Likely
2013-06-12  8:44         ` Grant Likely
2013-06-20 20:08       ` Joerg Roedel
2013-06-20 20:08         ` Joerg Roedel
     [not found]         ` <20130620200845.GF11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2013-06-21  9:57           ` Will Deacon
2013-06-21  9:57             ` Will Deacon
     [not found]             ` <20130621095729.GA7766-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-21 13:55               ` Joerg Roedel
2013-06-21 13:55                 ` Joerg Roedel
     [not found]                 ` <20130621135507.GI11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2013-06-21 16:41                   ` Will Deacon
2013-06-21 16:41                     ` Will Deacon
2013-06-25 19:18       ` Stuart Yoder
2013-06-25 19:18         ` Stuart Yoder
     [not found]         ` <CALRxmdBxFWoRKv+bUu8VEwNNcAJUej9jM2V8N0rrqrr_Vpe8fQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-26 13:39           ` Will Deacon
2013-06-26 13:39             ` Will Deacon
     [not found]             ` <20130626133941.GD7417-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-26 16:19               ` Stuart Yoder
2013-06-26 16:19                 ` Stuart Yoder
     [not found]                 ` <CALRxmdCycFK2wW=C4aU79mudSaT+2vU8nzXxepdstubg+YSdQg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-26 17:42                   ` Will Deacon
2013-06-26 17:42                     ` Will Deacon
     [not found]                     ` <20130626174231.GH10333-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-27 18:22                       ` Stuart Yoder
2013-06-27 18:22                         ` Stuart Yoder
     [not found]                         ` <CALRxmdD5fyp06xW+z=rWagJc_bcJmpr1H9Zbdf=xbg9cCzvVfw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-28  9:06                           ` Will Deacon
2013-06-28  9:06                             ` Will Deacon
     [not found]                             ` <20130628090635.GB29002-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-28 16:03                               ` Stuart Yoder
2013-06-28 16:03                                 ` Stuart Yoder
2013-06-10 18:34   ` [PATCH 8/9] iommu: add support for ARM Ltd. System MMU architecture Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-9-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-20 21:26       ` Joerg Roedel
2013-06-20 21:26         ` Joerg Roedel
     [not found]         ` <20130620212646.GG11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2013-06-21 10:23           ` Will Deacon
2013-06-21 10:23             ` Will Deacon
     [not found]             ` <20130621102318.GB7766-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-21 14:13               ` Joerg Roedel
2013-06-21 14:13                 ` Joerg Roedel
2013-06-21 15:00                 ` Will Deacon
2013-06-21 15:00                   ` Will Deacon
     [not found]                   ` <20130621150006.GG7766-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-21 15:30                     ` Joerg Roedel
2013-06-21 15:30                       ` Joerg Roedel
     [not found]                       ` <20130621153044.GL11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2013-06-21 16:40                         ` Will Deacon
2013-06-21 16:40                           ` Will Deacon
2013-06-10 18:34   ` [PATCH 9/9] MAINTAINERS: add entry for ARM system MMU driver Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-10-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-12  8:45       ` Grant Likely
2013-06-12  8:45         ` Grant Likely

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=51C16DAF.1090205@samsung.com \
    --to=m.szyprowski@samsung.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --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: link
Be 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.