From: "Michał Nazarewicz" <m.nazarewicz@samsung.com>
To: Marek Szyprowski <m.szyprowski@samsung.com>,
Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: 'Daniel Walker' <dwalker@codeaurora.org>,
linux-mm@kvack.org, Pawel Osciak <p.osciak@samsung.com>,
'Xiaolin Zhang' <xiaolin.zhang@intel.com>,
'Hiremath Vaibhav' <hvaibhav@ti.com>,
'Robert Fekete' <robert.fekete@stericsson.com>,
'Marcus Lorentzon' <marcus.xm.lorentzon@stericsson.com>,
linux-kernel@vger.kernel.org,
'Kyungmin Park' <kyungmin.park@samsung.com>,
linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH 2/4] mm: cma: Contiguous Memory Allocator added
Date: Thu, 22 Jul 2010 13:30:52 +0200 [thread overview]
Message-ID: <op.vf8sxqro7p4s8u@pikus> (raw)
In-Reply-To: <20100722105203.GD4737@rakim.wolfsonmicro.main>
On Thu, 22 Jul 2010 12:52:03 +0200, Mark Brown <broonie@opensource.wolfsonmicro.com> wrote:
> I'd expect that the devices would be able to reserve blocks of memory to
> play with separately to the actual allocations (ie, allocate regions
> like those on the command line) and things like the GPU would make use
> of that. I think you're already doing part of this?
In the patchset I've sent it is not possible but I already have a version that
supports this. Regions can be registered at any time. What's more, such
regions can be completely private to drivers that register them.
> Sure, but none of this is saying to me that it's specifically important
> to supply a static configuration via this textual configuration language
> on the command line - half the problem is that you're trying to write
> the configuration down in a format which is fairly tightly constrained
> by needing to be there. If the configuration is more dynamic there's a
> lot more flexibility to either allow the system to figure things out
> dynamically (which will hopefully work a lot of the time, for example in
> your use case only the GPU really needs memory reserving).
>
> Remember also that if you can configure this at runtime (as you say
> you're working towards) then even if you have a fairly static
> configuration you can inject it into the kernel from the application
> layer rather than having to either hard code it in the image or bodge it
> in via the command line. This keeps the resource allocation joined up
> with the application layer (which is after all what determines the
> resource usage).
There are two command line arguments to consider: cma and cma_map.
The first one, I believe, should be there as to specify the regions
that are to be reserved. Drivers and platform will still be able to
add their own regions but I believe that in vest majority of cases,
it will be enough to just pass the list of region on a command line.
Alternatively, instead of the textual description of platform could
provide an array of regions it want reserved. It would remove like
50 lines of code from CMA core (in the version I have on my drive at
least, where part of the syntax was simplified) however it would
remove the possibility to easily change the configuration from
command line (ie. no need to recompile which is handy when you need
to optimise this and test various configurations) and would add more
code to the platform initialisation code, ie: instead of:
cma_defaults("reg1=20M;reg2=20M", NULL);
one would have to define an array with the regions descriptors.
Personally, I don't see much benefits from this.
As of the second parameter, "cma_map", which validating and parsing
is like 150 lines of code, I consider it handy because you can manage
all the memory regions in one place and it moves some of the complexity
from device drivers to CMA. I'm also working on providing a sysfs
entry so that the it would be possible to change the mapping at runtime.
For example, consider a driver I have mentioned before: video decoder
that needs to allocate memory from 3 different regions (for firmware,
the first bank of memory and the second bank of memory). With CMA you
define the regions:
cma=vf=1M/128K;a=20M;b=20M@512M;
and then map video driver to them like so:
cma_map=video/a=a;video/b=b;video/f=vf
I agree that parsing it is not nice but thanks to it, all you need to
do in the driver is:
cma_alloc(dev, "a", ...)
cma_alloc(dev, "b", ...)
cma_alloc(dev, "f", ...)
Without cma_map you'd have to pass names of the region to the driver
and make the driver use those.
It would also make it impossible or hard to change the mapping once
the driver is loaded.
What I'm trying to say is that I'm trying to move complexity out of
the drivers into the framework (as I believe that's what frameworks
are for).
As of dynamic, runtime, automatic configuration, I don't really see
that. I'm still wondering how to make as little configuration
necessary as possible but I don't think everything can be done
in such a way.
--
Best regards, _ _
| Humble Liege of Serenely Enlightened Majesty of o' \,=./ `o
| Computer Science, Michał "mina86" Nazarewicz (o o)
+----[mina86*mina86.com]---[mina86*jabber.org]----ooO--(_)--Ooo--
--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-07-22 11:29 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-20 15:51 [PATCH 0/4] The Contiguous Memory Allocator Michal Nazarewicz
2010-07-20 15:51 ` [PATCH 1/4] lib: rbtree: rb_root_init() function added Michal Nazarewicz
2010-07-20 15:51 ` [PATCH 2/4] mm: cma: Contiguous Memory Allocator added Michal Nazarewicz
2010-07-20 15:51 ` [PATCH 3/4] mm: cma: Test device and application added Michal Nazarewicz
2010-07-20 15:51 ` [PATCH 4/4] arm: Added CMA to Aquila and Goni Michal Nazarewicz
2010-07-20 18:15 ` [PATCH 2/4] mm: cma: Contiguous Memory Allocator added Daniel Walker
2010-07-20 19:14 ` Michał Nazarewicz
2010-07-20 19:38 ` Daniel Walker
2010-07-21 12:01 ` Michał Nazarewicz
2010-07-21 17:35 ` Daniel Walker
2010-07-21 18:11 ` Michał Nazarewicz
2010-07-21 18:19 ` Daniel Walker
2010-07-21 18:38 ` Michał Nazarewicz
2010-07-21 18:58 ` Daniel Walker
2010-07-21 19:21 ` Michał Nazarewicz
2010-07-21 19:37 ` Daniel Walker
2010-07-21 19:53 ` Michał Nazarewicz
2010-07-21 20:03 ` Daniel Walker
2010-07-21 20:22 ` Michał Nazarewicz
2010-07-21 20:34 ` Daniel Walker
2010-07-21 20:43 ` Michał Nazarewicz
2010-07-21 20:45 ` Daniel Walker
2010-07-21 20:56 ` Michał Nazarewicz
2010-07-21 21:01 ` Daniel Walker
2010-07-22 9:34 ` Michał Nazarewicz
2010-07-21 13:52 ` Mark Brown
2010-07-21 14:31 ` Michał Nazarewicz
2010-07-21 18:24 ` Mark Brown
2010-07-21 18:41 ` Michał Nazarewicz
2010-07-22 9:06 ` Mark Brown
2010-07-22 9:25 ` Marek Szyprowski
2010-07-22 10:52 ` Mark Brown
2010-07-22 11:30 ` Michał Nazarewicz [this message]
2010-07-22 12:46 ` Mark Brown
2010-07-22 13:24 ` Michał Nazarewicz
2010-07-22 13:40 ` Mark Brown
2010-07-22 14:58 ` Michał Nazarewicz
2010-07-22 15:05 ` Mark Brown
2010-07-20 20:52 ` Jonathan Corbet
2010-07-21 10:16 ` Michał Nazarewicz
2010-07-21 0:12 ` Jonathan Corbet
2010-07-22 5:37 ` FUJITA Tomonori
2010-07-22 7:28 ` Marek Szyprowski
2010-07-22 9:35 ` FUJITA Tomonori
2010-07-22 9:50 ` Michał Nazarewicz
2010-07-22 10:17 ` FUJITA Tomonori
2010-07-22 10:55 ` Mark Brown
2010-07-22 11:49 ` Michał Nazarewicz
2010-07-22 4:54 ` Zach Pfeffer
2010-07-22 7:49 ` Marek Szyprowski
2010-07-23 7:06 ` Pawel Osciak
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=op.vf8sxqro7p4s8u@pikus \
--to=m.nazarewicz@samsung.com \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=dwalker@codeaurora.org \
--cc=hvaibhav@ti.com \
--cc=kyungmin.park@samsung.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=m.szyprowski@samsung.com \
--cc=marcus.xm.lorentzon@stericsson.com \
--cc=p.osciak@samsung.com \
--cc=robert.fekete@stericsson.com \
--cc=xiaolin.zhang@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox