All of lore.kernel.org
 help / color / mirror / Atom feed
From: mina86@mina86.com (Michal Nazarewicz)
To: linux-arm-kernel@lists.infradead.org
Subject: [RESEND PATCH 2/3] drivers: dma-coherent: use MEMREMAP_WC for DMA_MEMORY_MAP
Date: Tue, 05 Jan 2016 20:02:41 +0100	[thread overview]
Message-ID: <xa1tfuybu9wu.fsf@mina86.com> (raw)
In-Reply-To: <a85c534af867534e6693ce50a746fda096426586.1452010803.git.brian.starkey@arm.com>

On Tue, Jan 05 2016, Brian Starkey wrote:
> When the DMA_MEMORY_MAP flag is used, memory which can be accessed
> directly should be returned, so use memremap(..., MEMREMAP_WC) to
> provide a writecombine mapping.
>
> Signed-off-by: Brian Starkey <brian.starkey@arm.com>
> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>

Acked-by: Michal Nazarewicz <mina86@mina86.com>

> ---
>  drivers/base/dma-coherent.c |   20 ++++++++++++++++----
>  1 file changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/base/dma-coherent.c b/drivers/base/dma-coherent.c
> index 55b8398..f98359a 100644
> --- a/drivers/base/dma-coherent.c
> +++ b/drivers/base/dma-coherent.c
> @@ -2,6 +2,7 @@
>   * Coherent per-device memory handling.
>   * Borrowed from i386
>   */
> +#include <linux/io.h>
>  #include <linux/slab.h>
>  #include <linux/kernel.h>
>  #include <linux/module.h>
> @@ -31,7 +32,10 @@ static int dma_init_coherent_memory(phys_addr_t phys_addr, dma_addr_t device_add
>  	if (!size)
>  		goto out;
>  
> -	mem_base = ioremap(phys_addr, size);
> +	if (flags & DMA_MEMORY_MAP)
> +		mem_base = memremap(phys_addr, size, MEMREMAP_WC);
> +	else
> +		mem_base = ioremap(phys_addr, size);
>  	if (!mem_base)
>  		goto out;
>  
> @@ -58,8 +62,12 @@ static int dma_init_coherent_memory(phys_addr_t phys_addr, dma_addr_t device_add
>  
>  out:
>  	kfree(dma_mem);
> -	if (mem_base)
> -		iounmap(mem_base);
> +	if (mem_base) {
> +		if (flags & DMA_MEMORY_MAP)
> +			memunmap(mem_base);
> +		else
> +			iounmap(mem_base);
> +	}
>  	return 0;
>  }
>  
> @@ -67,7 +75,11 @@ static void dma_release_coherent_memory(struct dma_coherent_mem *mem)
>  {
>  	if (!mem)
>  		return;
> -	iounmap(mem->virt_base);
> +
> +	if (mem->flags & DMA_MEMORY_MAP)
> +		memunmap(mem->virt_base);
> +	else
> +		iounmap(mem->virt_base);
>  	kfree(mem->bitmap);
>  	kfree(mem);
>  }
> -- 
> 1.7.9.5
>

-- 
Best regards,                                         _     _
.o. | Liege of Serenely Enlightened Majesty of      o' \,=./ `o
..o | Computer Science,  ??? ?mina86? ??????  (o o)
ooo +--<mpn@google.com>--<xmpp:mina86@jabber.org>--ooO--(_)--Ooo--

WARNING: multiple messages have this Message-ID (diff)
From: Michal Nazarewicz <mina86@mina86.com>
To: Brian Starkey <brian.starkey@arm.com>, gregkh@linuxfoundation.org
Cc: catalin.marinas@arm.com, dan.j.williams@intel.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [RESEND PATCH 2/3] drivers: dma-coherent: use MEMREMAP_WC for DMA_MEMORY_MAP
Date: Tue, 05 Jan 2016 20:02:41 +0100	[thread overview]
Message-ID: <xa1tfuybu9wu.fsf@mina86.com> (raw)
In-Reply-To: <a85c534af867534e6693ce50a746fda096426586.1452010803.git.brian.starkey@arm.com>

On Tue, Jan 05 2016, Brian Starkey wrote:
> When the DMA_MEMORY_MAP flag is used, memory which can be accessed
> directly should be returned, so use memremap(..., MEMREMAP_WC) to
> provide a writecombine mapping.
>
> Signed-off-by: Brian Starkey <brian.starkey@arm.com>
> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>

Acked-by: Michal Nazarewicz <mina86@mina86.com>

> ---
>  drivers/base/dma-coherent.c |   20 ++++++++++++++++----
>  1 file changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/base/dma-coherent.c b/drivers/base/dma-coherent.c
> index 55b8398..f98359a 100644
> --- a/drivers/base/dma-coherent.c
> +++ b/drivers/base/dma-coherent.c
> @@ -2,6 +2,7 @@
>   * Coherent per-device memory handling.
>   * Borrowed from i386
>   */
> +#include <linux/io.h>
>  #include <linux/slab.h>
>  #include <linux/kernel.h>
>  #include <linux/module.h>
> @@ -31,7 +32,10 @@ static int dma_init_coherent_memory(phys_addr_t phys_addr, dma_addr_t device_add
>  	if (!size)
>  		goto out;
>  
> -	mem_base = ioremap(phys_addr, size);
> +	if (flags & DMA_MEMORY_MAP)
> +		mem_base = memremap(phys_addr, size, MEMREMAP_WC);
> +	else
> +		mem_base = ioremap(phys_addr, size);
>  	if (!mem_base)
>  		goto out;
>  
> @@ -58,8 +62,12 @@ static int dma_init_coherent_memory(phys_addr_t phys_addr, dma_addr_t device_add
>  
>  out:
>  	kfree(dma_mem);
> -	if (mem_base)
> -		iounmap(mem_base);
> +	if (mem_base) {
> +		if (flags & DMA_MEMORY_MAP)
> +			memunmap(mem_base);
> +		else
> +			iounmap(mem_base);
> +	}
>  	return 0;
>  }
>  
> @@ -67,7 +75,11 @@ static void dma_release_coherent_memory(struct dma_coherent_mem *mem)
>  {
>  	if (!mem)
>  		return;
> -	iounmap(mem->virt_base);
> +
> +	if (mem->flags & DMA_MEMORY_MAP)
> +		memunmap(mem->virt_base);
> +	else
> +		iounmap(mem->virt_base);
>  	kfree(mem->bitmap);
>  	kfree(mem);
>  }
> -- 
> 1.7.9.5
>

-- 
Best regards,                                         _     _
.o. | Liege of Serenely Enlightened Majesty of      o' \,=./ `o
..o | Computer Science,  ミハウ “mina86” ナザレヴイツ  (o o)
ooo +--<mpn@google.com>--<xmpp:mina86@jabber.org>--ooO--(_)--Ooo--

  reply	other threads:[~2016-01-05 19:02 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-05 16:41 [RESEND PATCH 0/3] Add MEMREMAP_WC to fix dma_init_coherent_memory Brian Starkey
2016-01-05 16:41 ` Brian Starkey
2016-01-05 16:41 ` [RESEND PATCH 1/3] memremap: add MEMREMAP_WC flag Brian Starkey
2016-01-05 16:41   ` Brian Starkey
2016-01-05 16:41 ` [RESEND PATCH 2/3] drivers: dma-coherent: use MEMREMAP_WC for DMA_MEMORY_MAP Brian Starkey
2016-01-05 16:41   ` Brian Starkey
2016-01-05 19:02   ` Michal Nazarewicz [this message]
2016-01-05 19:02     ` Michal Nazarewicz
2016-01-05 16:41 ` [RESEND PATCH 3/3] drivers: dma-coherent: use memset_io for DMA_MEMORY_IO mappings Brian Starkey
2016-01-05 16:41   ` Brian Starkey
2016-01-29  9:32 ` [RESEND PATCH 0/3] Add MEMREMAP_WC to fix dma_init_coherent_memory Brian Starkey
2016-01-29  9:32   ` Brian Starkey

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=xa1tfuybu9wu.fsf@mina86.com \
    --to=mina86@mina86.com \
    --cc=linux-arm-kernel@lists.infradead.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: 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.