From: Peter Hurley <peter@hurleysoftware.com>
To: Akinobu Mita <akinobu.mita@gmail.com>,
	linux-kernel@vger.kernel.org, akpm@linux-foundation.org
Cc: Marek Szyprowski <m.szyprowski@samsung.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Don Dutile <ddutile@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Andi Kleen <andi@firstfloor.org>,
	x86@kernel.org, iommu@lists.linux-foundation.org
Subject: Re: [PATCH v3 0/5] enhance DMA CMA on x86
Date: Sat, 27 Sep 2014 10:30:34 -0400	[thread overview]
Message-ID: <5426CA0A.7000806@hurleysoftware.com> (raw)
In-Reply-To: <1397567329-3771-1-git-send-email-akinobu.mita@gmail.com>
On 04/15/2014 09:08 AM, Akinobu Mita wrote:
> This patch set enhances the DMA Contiguous Memory Allocator on x86.
> 
> Currently the DMA CMA is only supported with pci-nommu dma_map_ops
> and furthermore it can't be enabled on x86_64.  But I would like to
> allocate big contiguous memory with dma_alloc_coherent() and tell it
> to the device that requires it, regardless of which dma mapping
> implementation is actually used in the system.
> 
> So this makes it work with swiotlb and intel-iommu dma_map_ops, too.
> And this also extends "cma=" kernel parameter to specify placement
> constraint by the physical address range of memory allocations.  For
> example, CMA allocates memory below 4GB by "cma=64M@0-4G", it is
> required for the devices only supporting 32-bit addressing on 64-bit
> systems without iommu.
> 
> * Changes from v2
> - Rebased on current Linus tree
> - Add Acked-by line
> - Fix gfp flags check for __GFP_ATOMIC, reported by Marek Szyprowski
> - Avoid CMA area on highmem with cma= option, reported by Marek Szyprowski
> 
> * Changes from v1
> - fix dma_alloc_coherent() with __GFP_ZERO
> - add placement specifier for "cma=" kernel parameter
> 
> Akinobu Mita (5):
>   x86: make dma_alloc_coherent() return zeroed memory if CMA is enabled
>   x86: enable DMA CMA with swiotlb
>   intel-iommu: integrate DMA CMA
>   memblock: introduce memblock_alloc_range()
>   cma: add placement specifier for "cma=" kernel parameter
This patchset breaks every x86 iommu configuration when CONFIG_DMA_CMA is
on, which is the base configuration for Ubuntu x86 and amd64 distro kernels.
Granted, the patchset leveraged existing code from the nommu configuration,
but that base (ie., calling dma_alloc_from_contiguous() in
dma_generic_alloc_config()) was an ill-conceived test configuration designed
to allow ARM developers to validate the CMA allocator on x86 boxen and
KVM guests, not as a general-purpose replacement for the existing page
allocator. The test code should have had a separate CONFIG_ knob.
What this patchset does is restrict all iommu configurations which can
map all of system memory to one _very_ small physical region, thus disabling
the whole point of an iommu.
Now I know why my GPU is causing paging to disk! And why my RAID controller
stalls for ages when I do a git log at the same time as a kernel build!
And the apparent goal of this patchset is to enable DMA allocation below
4GB, which is already supported in the existing page allocator with the
GFP_DMA32 flag?!
Regards,
Peter Hurley
next prev parent reply	other threads:[~2014-09-27 14:30 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-15 13:08 [PATCH v3 0/5] enhance DMA CMA on x86 Akinobu Mita
     [not found] ` <1397567329-3771-1-git-send-email-akinobu.mita-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-04-15 13:08   ` [PATCH v3 1/5] x86: make dma_alloc_coherent() return zeroed memory if CMA is enabled Akinobu Mita
     [not found]     ` <1397567329-3771-2-git-send-email-akinobu.mita-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-04-16 19:44       ` Andrew Morton
     [not found]         ` <20140416124406.b6a3f8c9f6e7eb7328ebb5cb-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2014-04-17 15:40           ` Akinobu Mita
2014-04-15 13:08   ` [PATCH v3 2/5] x86: enable DMA CMA with swiotlb Akinobu Mita
2014-04-15 13:08   ` [PATCH v3 3/5] intel-iommu: integrate DMA CMA Akinobu Mita
2014-04-15 13:08   ` [PATCH v3 4/5] memblock: introduce memblock_alloc_range() Akinobu Mita
2014-04-15 13:08   ` [PATCH v3 5/5] cma: add placement specifier for "cma=" kernel parameter Akinobu Mita
2014-09-27 14:30 ` Peter Hurley [this message]
     [not found]   ` <5426CA0A.7000806-WaGBZJeGNqdsbIuE7sb01tBPR1lH4CV8@public.gmane.org>
2014-09-28  0:31     ` [PATCH v3 0/5] enhance DMA CMA on x86 Akinobu Mita
     [not found]       ` <CAC5umyhgs8---HZLa7_DOSbqW0uPbLgqTfBweScZSR9oWbG9xg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-09-29 12:09         ` Peter Hurley
     [not found]           ` <54294C0B.1060705-WaGBZJeGNqdsbIuE7sb01tBPR1lH4CV8@public.gmane.org>
2014-09-29 14:32             ` Akinobu Mita
2014-09-30 14:34               ` Peter Hurley
     [not found]                 ` <542ABF77.1020402-WaGBZJeGNqdsbIuE7sb01tBPR1lH4CV8@public.gmane.org>
2014-09-30 23:23                   ` Akinobu Mita
2014-09-30 23:45                 ` Thomas Gleixner
2014-09-30 23:49                   ` Peter Hurley
2014-10-01  1:49                   ` Peter Hurley
2014-10-01  9:05                     ` Thomas Gleixner
     [not found]                     ` <542B5DC2.8020806-WaGBZJeGNqdsbIuE7sb01tBPR1lH4CV8@public.gmane.org>
2014-10-02 16:41                       ` Konrad Rzeszutek Wilk
     [not found]                         ` <20141002164121.GF1715-0iZWjJA6G8GSPmnEAIUT9EEOCMrvLtNR@public.gmane.org>
2014-10-02 22:03                           ` Peter Hurley
     [not found]                             ` <542DCB9C.4020703-WaGBZJeGNqdsbIuE7sb01tBPR1lH4CV8@public.gmane.org>
2014-10-02 23:08                               ` Akinobu Mita
     [not found]                                 ` <CAC5umyjHruhnwiKwrHLBAF+g0ZDVouuuNvrisrUH8o963GyytQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-03 13:40                                   ` Konrad Rzeszutek Wilk
2014-10-03 14:27                                   ` Peter Hurley
     [not found]                                     ` <542EB242.4090102-WaGBZJeGNqdsbIuE7sb01tBPR1lH4CV8@public.gmane.org>
2014-10-03 16:06                                       ` Akinobu Mita
     [not found]                                         ` <CAC5umygJ3EDOb4E29+YPo4t4Ew_K3x7jpxLrmvNco3U=UJBCrA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-03 16:33                                           ` konrad wilk
2014-10-03 16:39                                           ` Peter Hurley
     [not found]                                             ` <542ED130.2090501-WaGBZJeGNqdsbIuE7sb01tBPR1lH4CV8@public.gmane.org>
2014-10-05  6:01                                               ` Akinobu Mita
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=5426CA0A.7000806@hurleysoftware.com \
    --to=peter@hurleysoftware.com \
    --cc=akinobu.mita@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=ddutile@redhat.com \
    --cc=dwmw2@infradead.org \
    --cc=hpa@zytor.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).