All of lore.kernel.org
 help / color / mirror / Atom feed
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 6/8] drivers: add Contiguous Memory Allocator
Date: Wed, 6 Jul 2011 18:31:59 +0200	[thread overview]
Message-ID: <201107061831.59739.arnd@arndb.de> (raw)
In-Reply-To: <20110706154857.GG8286@n2100.arm.linux.org.uk>

On Wednesday 06 July 2011, Russell King - ARM Linux wrote:
> On Wed, Jul 06, 2011 at 04:51:49PM +0200, Arnd Bergmann wrote:
> > On Wednesday 06 July 2011, Russell King - ARM Linux wrote:
> > 
> > I don't see how. The pages get allocated from an unmapped area
> > or memory, mapped into the kernel address space as uncached or wc
> > and then cleared. This should be the same for lowmem or highmem
> > pages.
> 
> You don't want to clear them via their uncached or WC mapping, but via
> their cached mapping _before_ they get their alternative mapping, and
> flush any cached out of that mapping - both L1 and L2 caches.

But there can't be any other mapping, which is the whole point of
the exercise to use highmem.
Quoting from the new dma_alloc_area() function:

        c = arm_vmregion_alloc(&area->vm, align, size,
                            gfp & ~(__GFP_DMA | __GFP_HIGHMEM));
        if (!c)
                return NULL;
        memset((void *)c->vm_start, 0, size);

area->vm here points to an uncached location, which means that
we already zero the data through the uncached mapping. I don't
see how it's getting worse than it is already.

> > > Another issue is that when a platform has restricted DMA regions,
> > > they typically don't fall into the highmem zone.  As the dmabounce
> > > code allocates from the DMA coherent allocator to provide it with
> > > guaranteed DMA-able memory, that would be rather inconvenient.
> > 
> > True. The dmabounce code would consequently have to allocate
> > the memory through an internal function that avoids the
> > contiguous allocation area and goes straight to ZONE_DMA memory
> > as it does today.
> 
> CMA's whole purpose for existing is to provide _dma-able_ contiguous
> memory for things like cameras and such like found on crippled non-
> scatter-gather hardware.  If that memory is not DMA-able what's the
> point?

I mean not any ZONE_DMA memory, but the memory backing coherent_areas[],
which is by definition DMA-able from any device and is what is currently
being used for the purpose.

	Arnd

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: "Russell King - ARM Linux" <linux@arm.linux.org.uk>
Cc: linux-arm-kernel@lists.infradead.org,
	"'Daniel Walker'" <dwalker@codeaurora.org>,
	"'Jonathan Corbet'" <corbet@lwn.net>,
	"'Mel Gorman'" <mel@csn.ul.ie>,
	"'Chunsang Jeong'" <chunsang.jeong@linaro.org>,
	"'Jesse Barker'" <jesse.barker@linaro.org>,
	"'KAMEZAWA Hiroyuki'" <kamezawa.hiroyu@jp.fujitsu.com>,
	linux-kernel@vger.kernel.org,
	"'Michal Nazarewicz'" <mina86@mina86.com>,
	linaro-mm-sig@lists.linaro.org, linux-mm@kvack.org,
	"'Kyungmin Park'" <kyungmin.park@samsung.com>,
	"'Ankita Garg'" <ankita@in.ibm.com>,
	"'Andrew Morton'" <akpm@linux-foundation.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	linux-media@vger.kernel.org
Subject: Re: [PATCH 6/8] drivers: add Contiguous Memory Allocator
Date: Wed, 6 Jul 2011 18:31:59 +0200	[thread overview]
Message-ID: <201107061831.59739.arnd@arndb.de> (raw)
In-Reply-To: <20110706154857.GG8286@n2100.arm.linux.org.uk>

On Wednesday 06 July 2011, Russell King - ARM Linux wrote:
> On Wed, Jul 06, 2011 at 04:51:49PM +0200, Arnd Bergmann wrote:
> > On Wednesday 06 July 2011, Russell King - ARM Linux wrote:
> > 
> > I don't see how. The pages get allocated from an unmapped area
> > or memory, mapped into the kernel address space as uncached or wc
> > and then cleared. This should be the same for lowmem or highmem
> > pages.
> 
> You don't want to clear them via their uncached or WC mapping, but via
> their cached mapping _before_ they get their alternative mapping, and
> flush any cached out of that mapping - both L1 and L2 caches.

But there can't be any other mapping, which is the whole point of
the exercise to use highmem.
Quoting from the new dma_alloc_area() function:

        c = arm_vmregion_alloc(&area->vm, align, size,
                            gfp & ~(__GFP_DMA | __GFP_HIGHMEM));
        if (!c)
                return NULL;
        memset((void *)c->vm_start, 0, size);

area->vm here points to an uncached location, which means that
we already zero the data through the uncached mapping. I don't
see how it's getting worse than it is already.

> > > Another issue is that when a platform has restricted DMA regions,
> > > they typically don't fall into the highmem zone.  As the dmabounce
> > > code allocates from the DMA coherent allocator to provide it with
> > > guaranteed DMA-able memory, that would be rather inconvenient.
> > 
> > True. The dmabounce code would consequently have to allocate
> > the memory through an internal function that avoids the
> > contiguous allocation area and goes straight to ZONE_DMA memory
> > as it does today.
> 
> CMA's whole purpose for existing is to provide _dma-able_ contiguous
> memory for things like cameras and such like found on crippled non-
> scatter-gather hardware.  If that memory is not DMA-able what's the
> point?

I mean not any ZONE_DMA memory, but the memory backing coherent_areas[],
which is by definition DMA-able from any device and is what is currently
being used for the purpose.

	Arnd

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: linux-arm-kernel@lists.infradead.org,
	'Daniel Walker' <dwalker@codeaurora.org>,
	'Jonathan Corbet' <corbet@lwn.net>, 'Mel Gorman' <mel@csn.ul.ie>,
	'Chunsang Jeong' <chunsang.jeong@linaro.org>,
	'Jesse Barker' <jesse.barker@linaro.org>,
	'KAMEZAWA Hiroyuki' <kamezawa.hiroyu@jp.fujitsu.com>,
	linux-kernel@vger.kernel.org,
	'Michal Nazarewicz' <mina86@mina86.com>,
	linaro-mm-sig@lists.linaro.org, linux-mm@kvack.org,
	'Kyungmin Park' <kyungmin.park@samsung.com>,
	'Ankita Garg' <ankita@in.ibm.com>,
	'Andrew Morton' <akpm@linux-foundation.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	linux-media@vger.kernel.org
Subject: Re: [PATCH 6/8] drivers: add Contiguous Memory Allocator
Date: Wed, 6 Jul 2011 18:31:59 +0200	[thread overview]
Message-ID: <201107061831.59739.arnd@arndb.de> (raw)
In-Reply-To: <20110706154857.GG8286@n2100.arm.linux.org.uk>

On Wednesday 06 July 2011, Russell King - ARM Linux wrote:
> On Wed, Jul 06, 2011 at 04:51:49PM +0200, Arnd Bergmann wrote:
> > On Wednesday 06 July 2011, Russell King - ARM Linux wrote:
> > 
> > I don't see how. The pages get allocated from an unmapped area
> > or memory, mapped into the kernel address space as uncached or wc
> > and then cleared. This should be the same for lowmem or highmem
> > pages.
> 
> You don't want to clear them via their uncached or WC mapping, but via
> their cached mapping _before_ they get their alternative mapping, and
> flush any cached out of that mapping - both L1 and L2 caches.

But there can't be any other mapping, which is the whole point of
the exercise to use highmem.
Quoting from the new dma_alloc_area() function:

        c = arm_vmregion_alloc(&area->vm, align, size,
                            gfp & ~(__GFP_DMA | __GFP_HIGHMEM));
        if (!c)
                return NULL;
        memset((void *)c->vm_start, 0, size);

area->vm here points to an uncached location, which means that
we already zero the data through the uncached mapping. I don't
see how it's getting worse than it is already.

> > > Another issue is that when a platform has restricted DMA regions,
> > > they typically don't fall into the highmem zone.  As the dmabounce
> > > code allocates from the DMA coherent allocator to provide it with
> > > guaranteed DMA-able memory, that would be rather inconvenient.
> > 
> > True. The dmabounce code would consequently have to allocate
> > the memory through an internal function that avoids the
> > contiguous allocation area and goes straight to ZONE_DMA memory
> > as it does today.
> 
> CMA's whole purpose for existing is to provide _dma-able_ contiguous
> memory for things like cameras and such like found on crippled non-
> scatter-gather hardware.  If that memory is not DMA-able what's the
> point?

I mean not any ZONE_DMA memory, but the memory backing coherent_areas[],
which is by definition DMA-able from any device and is what is currently
being used for the purpose.

	Arnd

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2011-07-06 16:31 UTC|newest]

Thread overview: 183+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-05  7:41 [PATCHv11 0/8] Contiguous Memory Allocator Marek Szyprowski
2011-07-05  7:41 ` Marek Szyprowski
2011-07-05  7:41 ` Marek Szyprowski
2011-07-05  7:41 ` [PATCH 1/8] mm: move some functions from memory_hotplug.c to page_isolation.c Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05 11:27   ` Arnd Bergmann
2011-07-05 11:27     ` Arnd Bergmann
2011-07-05 11:27     ` Arnd Bergmann
2011-07-05  7:41 ` [PATCH 2/8] mm: alloc_contig_freed_pages() added Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05 11:30   ` Arnd Bergmann
2011-07-05 11:30     ` Arnd Bergmann
2011-07-05 11:30     ` Arnd Bergmann
2011-07-05  7:41 ` [PATCH 3/8] mm: alloc_contig_range() added Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05 11:31   ` Arnd Bergmann
2011-07-05 11:31     ` Arnd Bergmann
2011-07-05 11:31     ` Arnd Bergmann
2011-07-05  7:41 ` [PATCH 4/8] mm: MIGRATE_CMA migration type added Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05 11:44   ` Arnd Bergmann
2011-07-05 11:44     ` Arnd Bergmann
2011-07-05 11:44     ` Arnd Bergmann
2011-07-05 12:27     ` Russell King - ARM Linux
2011-07-05 12:27       ` Russell King - ARM Linux
2011-07-05 12:27       ` Russell King - ARM Linux
2011-07-05  7:41 ` [PATCH 5/8] mm: MIGRATE_CMA isolation functions added Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05 11:45   ` Arnd Bergmann
2011-07-05 11:45     ` Arnd Bergmann
2011-07-05 11:45     ` Arnd Bergmann
2011-07-05  7:41 ` [PATCH 6/8] drivers: add Contiguous Memory Allocator Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05 10:24   ` Marek Szyprowski
2011-07-05 10:24     ` Marek Szyprowski
2011-07-05 10:24     ` Marek Szyprowski
2011-07-05 11:02   ` [PATCH 6/8 RESEND] " Marek Szyprowski
2011-07-05 11:02     ` Marek Szyprowski
2011-07-05 11:02     ` Marek Szyprowski
2011-07-05 11:50     ` Arnd Bergmann
2011-07-05 11:50       ` Arnd Bergmann
2011-07-05 11:50       ` Arnd Bergmann
2011-07-05 11:33   ` [PATCH 6/8] " Russell King - ARM Linux
2011-07-05 11:33     ` Russell King - ARM Linux
2011-07-05 11:33     ` Russell King - ARM Linux
2011-07-05 12:27     ` Arnd Bergmann
2011-07-05 12:27       ` Arnd Bergmann
2011-07-05 12:27       ` Arnd Bergmann
2011-07-05 12:30       ` Russell King - ARM Linux
2011-07-05 12:30         ` Russell King - ARM Linux
2011-07-05 12:30         ` Russell King - ARM Linux
2011-07-05 13:58         ` Arnd Bergmann
2011-07-05 13:58           ` Arnd Bergmann
2011-07-05 13:58           ` Arnd Bergmann
2011-07-08 17:25           ` Russell King - ARM Linux
2011-07-08 17:25             ` Russell King - ARM Linux
2011-07-08 17:25             ` Russell King - ARM Linux
2011-07-12 13:39             ` Arnd Bergmann
2011-07-12 13:39               ` Arnd Bergmann
2011-07-12 13:39               ` Arnd Bergmann
2011-08-03 17:43       ` James Bottomley
2011-08-03 17:43         ` James Bottomley
2011-08-03 17:43         ` James Bottomley
2011-09-26 12:06         ` Marek Szyprowski
2011-09-26 12:06           ` Marek Szyprowski
2011-09-26 12:06           ` Marek Szyprowski
2011-09-26 13:00         ` Russell King - ARM Linux
2011-09-26 13:00           ` Russell King - ARM Linux
2011-09-26 13:00           ` Russell King - ARM Linux
2011-07-06 13:58     ` Marek Szyprowski
2011-07-06 13:58       ` Marek Szyprowski
2011-07-06 13:58       ` Marek Szyprowski
2011-07-06 14:09       ` Arnd Bergmann
2011-07-06 14:09         ` Arnd Bergmann
2011-07-06 14:09         ` Arnd Bergmann
2011-07-06 14:23         ` Russell King - ARM Linux
2011-07-06 14:23           ` Russell King - ARM Linux
2011-07-06 14:23           ` Russell King - ARM Linux
2011-07-06 14:37           ` [Linaro-mm-sig] " Nicolas Pitre
2011-07-06 14:37             ` Nicolas Pitre
2011-07-06 14:37             ` Nicolas Pitre
2011-07-06 14:59             ` Arnd Bergmann
2011-07-06 14:59               ` Arnd Bergmann
2011-07-06 14:59               ` Arnd Bergmann
2011-07-09 14:57               ` Janusz Krzysztofik
2011-07-09 14:57                 ` Janusz Krzysztofik
2011-07-09 14:57                 ` Janusz Krzysztofik
2011-07-11 13:47                 ` Marek Szyprowski
2011-07-11 13:47                   ` Marek Szyprowski
2011-07-11 13:47                   ` Marek Szyprowski
2011-07-11 19:01                   ` Janusz Krzysztofik
2011-07-11 19:01                     ` Janusz Krzysztofik
2011-07-11 19:01                     ` Janusz Krzysztofik
2011-07-12  5:34                     ` Marek Szyprowski
2011-07-12  5:34                       ` Marek Szyprowski
2011-07-12  5:34                       ` Marek Szyprowski
2011-07-06 14:51           ` Arnd Bergmann
2011-07-06 14:51             ` Arnd Bergmann
2011-07-06 14:51             ` Arnd Bergmann
2011-07-06 15:48             ` Russell King - ARM Linux
2011-07-06 15:48               ` Russell King - ARM Linux
2011-07-06 15:48               ` Russell King - ARM Linux
2011-07-06 16:05               ` Christoph Lameter
2011-07-06 16:05                 ` Christoph Lameter
2011-07-06 16:05                 ` Christoph Lameter
2011-07-06 16:09                 ` Michal Nazarewicz
2011-07-06 16:09                   ` Michal Nazarewicz
2011-07-06 16:09                   ` Michal Nazarewicz
2011-07-06 16:19                   ` Christoph Lameter
2011-07-06 16:19                     ` Christoph Lameter
2011-07-06 16:19                     ` Christoph Lameter
2011-07-06 17:15                     ` Russell King - ARM Linux
2011-07-06 17:15                       ` Russell King - ARM Linux
2011-07-06 17:15                       ` Russell King - ARM Linux
2011-07-06 19:03                       ` Christoph Lameter
2011-07-06 19:03                         ` Christoph Lameter
2011-07-06 19:03                         ` Christoph Lameter
2011-07-06 17:02                 ` Russell King - ARM Linux
2011-07-06 17:02                   ` Russell King - ARM Linux
2011-07-06 17:02                   ` Russell King - ARM Linux
2011-07-06 16:31               ` Arnd Bergmann [this message]
2011-07-06 16:31                 ` Arnd Bergmann
2011-07-06 16:31                 ` Arnd Bergmann
2011-07-06 19:10                 ` Nicolas Pitre
2011-07-06 19:10                   ` Nicolas Pitre
2011-07-06 19:10                   ` Nicolas Pitre
2011-07-06 20:23                   ` [Linaro-mm-sig] " Arnd Bergmann
2011-07-06 20:23                     ` Arnd Bergmann
2011-07-06 20:23                     ` Arnd Bergmann
2011-07-07  5:29                     ` Nicolas Pitre
2011-07-07  5:29                       ` Nicolas Pitre
2011-07-07  5:29                       ` Nicolas Pitre
2011-07-06 14:56         ` Marek Szyprowski
2011-07-06 14:56           ` Marek Szyprowski
2011-07-06 14:56           ` Marek Szyprowski
2011-07-06 15:37           ` Russell King - ARM Linux
2011-07-06 15:37             ` Russell King - ARM Linux
2011-07-06 15:37             ` Russell King - ARM Linux
2011-07-06 15:47             ` Marek Szyprowski
2011-07-06 15:47               ` Marek Szyprowski
2011-07-06 15:47               ` Marek Szyprowski
2011-07-14 12:29   ` Marek Szyprowski
2011-07-14 12:29     ` Marek Szyprowski
2011-07-14 12:29     ` Marek Szyprowski
2011-07-05  7:41 ` [PATCH 7/8] ARM: integrate CMA with dma-mapping subsystem Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05 11:50   ` Arnd Bergmann
2011-07-05 11:50     ` Arnd Bergmann
2011-07-05 11:50     ` Arnd Bergmann
2011-07-05  7:41 ` [PATCH 8/8] ARM: S5PV210: example of CMA private area for FIMC device on Goni board Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05  7:41   ` Marek Szyprowski
2011-07-05 11:51   ` Arnd Bergmann
2011-07-05 11:51     ` Arnd Bergmann
2011-07-05 11:51     ` Arnd Bergmann
2011-07-05 12:07 ` [PATCHv11 0/8] Contiguous Memory Allocator Arnd Bergmann
2011-07-05 12:07   ` Arnd Bergmann
2011-07-05 12:07   ` Arnd Bergmann
2011-07-05 12:28   ` Russell King - ARM Linux
2011-07-05 12:28     ` Russell King - ARM Linux
2011-07-05 12:28     ` Russell King - ARM Linux
2011-07-06 22:11   ` Andrew Morton
2011-07-06 22:11     ` Andrew Morton
2011-07-06 22:11     ` Andrew Morton
2011-07-07  7:36     ` Arnd Bergmann
2011-07-07  7:36       ` Arnd Bergmann
2011-07-07  7:36       ` Arnd Bergmann
2011-07-11 13:24     ` Marek Szyprowski
2011-07-11 13:24       ` Marek Szyprowski
2011-07-11 13:24       ` Marek Szyprowski
  -- strict thread matches above, loose matches on Subject: below --
2011-07-20  8:57 [PATCHv12 " Marek Szyprowski
2011-07-20  8:57 ` [PATCH 6/8] drivers: add " Marek Szyprowski
2011-07-20  8:57   ` Marek Szyprowski
2011-07-20  8:57   ` Marek Szyprowski
2011-08-19 14:27 [PATCHv15 0/8] " Marek Szyprowski
2011-08-19 14:27 ` [PATCH 6/8] drivers: add " Marek Szyprowski
2011-08-19 14:27   ` Marek Szyprowski
2011-08-19 14:27   ` Marek Szyprowski

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=201107061831.59739.arnd@arndb.de \
    --to=arnd@arndb.de \
    --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.