All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joerg Roedel <joerg.roedel@amd.com>
To: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: mingo@redhat.com, linux-kernel@vger.kernel.org,
	iommu@lists.linux-foundation.org
Subject: Re: [PATCH] x86: fix nommu_alloc_coherent allocation with NULL device argument
Date: Fri, 5 Sep 2008 12:40:49 +0200	[thread overview]
Message-ID: <20080905104049.GY3189@amd.com> (raw)
In-Reply-To: <1220605129-18359-2-git-send-email-fujita.tomonori@lab.ntt.co.jp>

I agree with this patch in principle. It fixes the problem. But I think
we should evaluate if we can change the dma_mask of the fallback_dev to
24 bit.

On Fri, Sep 05, 2008 at 05:58:47PM +0900, FUJITA Tomonori wrote:
> We need to use __GFP_DMA for NULL device argument (fallback_dev) with
> pci-nommu. It's a hack for ISA (and some old code) so we need to use
> GFP_DMA.
> 
> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> ---
>  arch/x86/kernel/pci-nommu.c   |    5 +----
>  include/asm-x86/dma-mapping.h |    2 ++
>  2 files changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/x86/kernel/pci-nommu.c b/arch/x86/kernel/pci-nommu.c
> index 73853d3..526b2db 100644
> --- a/arch/x86/kernel/pci-nommu.c
> +++ b/arch/x86/kernel/pci-nommu.c
> @@ -83,7 +83,6 @@ nommu_alloc_coherent(struct device *hwdev, size_t size,
>  	if (hwdev->dma_mask == NULL)
>  		return NULL;
>  
> -	gfp &= ~(__GFP_DMA | __GFP_HIGHMEM | __GFP_DMA32);
>  	gfp |= __GFP_ZERO;
>  
>  	dma_mask = hwdev->coherent_dma_mask;
> @@ -96,14 +95,12 @@ nommu_alloc_coherent(struct device *hwdev, size_t size,
>  	node = dev_to_node(hwdev);
>  
>  #ifdef CONFIG_X86_64
> -	if (dma_mask <= DMA_32BIT_MASK)
> +	if (dma_mask <= DMA_32BIT_MASK && !(gfp & GFP_DMA))
>  		gfp |= GFP_DMA32;
>  #endif
> -
>  	/* No alloc-free penalty for ISA devices */
>  	if (dma_mask == DMA_24BIT_MASK)
>  		gfp |= GFP_DMA;
> -

Please leave these spare lines where they are. They increase the
readability of the code imho.

>  again:
>  	page = alloc_pages_node(node, gfp, get_order(size));
>  	if (!page)
> diff --git a/include/asm-x86/dma-mapping.h b/include/asm-x86/dma-mapping.h
> index 3a9a6f5..de4495e 100644
> --- a/include/asm-x86/dma-mapping.h
> +++ b/include/asm-x86/dma-mapping.h
> @@ -246,6 +246,8 @@ dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
>  	struct dma_mapping_ops *ops = get_dma_ops(dev);
>  	void *memory;
>  
> +	gfp &= ~(__GFP_DMA | __GFP_HIGHMEM | __GFP_DMA32);
> +
>  	if (dma_alloc_from_coherent(dev, size, dma_handle, &memory))
>  		return memory;
>  
> -- 
> 1.5.4.2
> 
> 

-- 
           |           AMD Saxony Limited Liability Company & Co. KG
 Operating |         Wilschdorfer Landstr. 101, 01109 Dresden, Germany
 System    |                  Register Court Dresden: HRA 4896
 Research  |              General Partner authorized to represent:
 Center    |             AMD Saxony LLC (Wilmington, Delaware, US)
           | General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy


  parent reply	other threads:[~2008-09-05 10:41 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-05  8:58 [PATCH 0/3] fix alloc_coherent allocation issues (tip/x86/iommu) FUJITA Tomonori
2008-09-05  8:58 ` [PATCH] x86: fix nommu_alloc_coherent allocation with NULL device argument FUJITA Tomonori
2008-09-05  8:58   ` [PATCH] x86: use __GFP_NORETRY in the case of GFP_DMA with pci-nommu FUJITA Tomonori
2008-09-05  8:58     ` [PATCH] x86: gart alloc_coherent doesn't need to check NULL device argument FUJITA Tomonori
2008-09-05 10:41       ` Joerg Roedel
2008-09-05 10:43     ` [PATCH] x86: use __GFP_NORETRY in the case of GFP_DMA with pci-nommu Joerg Roedel
2008-09-06 12:18       ` FUJITA Tomonori
2008-09-08 11:41         ` Joerg Roedel
2008-09-05 10:40   ` Joerg Roedel [this message]
2008-09-05 10:49     ` [PATCH] x86: fix nommu_alloc_coherent allocation with NULL device argument Ingo Molnar
2008-09-05 11:56     ` Joerg Roedel
2008-09-06 12:18     ` FUJITA Tomonori
2008-09-05  9:11 ` [PATCH 0/3] fix alloc_coherent allocation issues (tip/x86/iommu) FUJITA Tomonori
2008-09-05 10:45   ` Ingo Molnar
2008-09-08 17:35     ` Ingo Molnar
2008-09-08 18:06       ` FUJITA Tomonori
2008-09-08 18:15         ` Ingo Molnar

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=20080905104049.GY3189@amd.com \
    --to=joerg.roedel@amd.com \
    --cc=fujita.tomonori@lab.ntt.co.jp \
    --cc=iommu@lists.linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.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.