From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Michal Nazarewicz <m.nazarewicz@samsung.com>
Cc: linux-mm@kvack.org, Daniel Walker <dwalker@codeaurora.org>,
Jonathan Corbet <corbet@lwn.net>,
Pawel Osciak <p.osciak@samsung.com>,
Mark Brown <broonie@opensource.wolfsonmicro.com>,
linux-kernel@vger.kernel.org, Hiremath Vaibhav <hvaibhav@ti.com>,
FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>,
Kyungmin Park <kyungmin.park@samsung.com>,
Zach Pfeffer <zpfeffer@codeaurora.org>,
linux-media@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Marek Szyprowski <m.szyprowski@samsung.com>
Subject: Re: [PATCHv2 2/4] mm: cma: Contiguous Memory Allocator added
Date: Tue, 27 Jul 2010 13:08:41 +0100 [thread overview]
Message-ID: <20100727120841.GC11468@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <dc4bdf3e0b02c0ac4770927f72b6cbc3f0b486a2.1280151963.git.m.nazarewicz@samsung.com>
On Mon, Jul 26, 2010 at 04:40:30PM +0200, Michal Nazarewicz wrote:
> +** Why is it needed?
> +
> + Various devices on embedded systems have no scatter-getter and/or
> + IO map support and as such require contiguous blocks of memory to
> + operate. They include devices such as cameras, hardware video
> + decoders and encoders, etc.
Yes, this is becoming quite a big problem - and many ARM SoCs suffer
from the existing memory allocators being extremely inadequate for
their use.
One of the areas I've been working on is sorting out the DMA coherent
allocator so we don't violate the architecture requirements for ARMv6
and ARMv7 CPUs (which basically prohibits multiple mappings of memory
with different attributes.)
One of the ideas that I've thought about for this is to reserve an
amount of contiguous memory at boot time to fill the entire DMA coherent
mapping, marking the memory in the main kernel memory map as 'no access',
and allocate directly from the DMA coherent region.
However, discussing this with people who have the problem you're trying
to solve indicates that they do not want to set aside an amount of
memory as they perceive this to be a waste of resources.
This concern also applies to 'cma'.
> +/*
> + * Don't call it directly, use cma_alloc(), cma_alloc_from() or
> + * cma_alloc_from_region().
> + */
> +dma_addr_t __must_check
> +__cma_alloc(const struct device *dev, const char *kind,
> + size_t size, dma_addr_t alignment);
Does this really always return DMA-able memory (memory which can be
DMA'd to/from without DMA-mapping etc?)
As it returns a dma_addr_t, it's returning a cookie for the memory which
will be suitable for writing directly to the device 'dev' doing the DMA.
(NB: DMA addresses may not be the same as physical addresses, especially
if the device is on a downstream bus. We have ARM platforms which have
different bus offsets.)
How does one obtain the CPU address of this memory in order for the CPU
to access it?
> +static inline dma_addr_t __must_check
> +cma_alloc(const struct device *dev, const char *kind,
> + size_t size, dma_addr_t alignment)
> +{
> + return dev ? -EINVAL : __cma_alloc(dev, kind, size, alignment);
So I can't use this to allocate memory for anything but a NULL device?
> +static inline int
> +cma_info(struct cma_info *info, const struct device *dev, const char *kind)
> +{
> + return dev ? -EINVAL : __cma_info(info, dev, kind);
This won't return information for anything but a NULL device?
--
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-27 12:09 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-26 14:11 [PATCHv2 0/4] The Contiguous Memory Allocator Michal Nazarewicz
2010-07-26 14:11 ` [PATCHv2 1/4] lib: rbtree: rb_root_init() function added Michal Nazarewicz
2010-07-26 14:11 ` [PATCHv2 2/4] mm: cma: Contiguous Memory Allocator added Michal Nazarewicz
2010-07-26 14:11 ` [PATCHv2 3/4] mm: cma: Test device and application added Michal Nazarewicz
2010-07-26 14:11 ` [PATCHv2 4/4] arm: Added CMA to Aquila and Goni Michal Nazarewicz
2010-07-26 20:28 ` [PATCHv2 2/4] mm: cma: Contiguous Memory Allocator added Hans Verkuil
2010-07-27 7:41 ` Marek Szyprowski
2010-07-27 16:27 ` Hans Verkuil
2010-07-28 9:04 ` Marek Szyprowski
2010-08-01 13:26 ` Hans Verkuil
2010-08-02 15:51 ` Michał Nazarewicz
2010-08-03 7:19 ` Hans Verkuil
2010-08-06 13:31 ` Michał Nazarewicz
2010-07-27 12:08 ` Russell King - ARM Linux [this message]
2010-07-27 12:45 ` Marek Szyprowski
2010-07-27 12:58 ` Jonathan Corbet
2010-07-27 13:46 ` Marek Szyprowski
2010-07-27 14:21 ` FUJITA Tomonori
2010-07-28 8:53 ` Michał Nazarewicz
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=20100727120841.GC11468@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=corbet@lwn.net \
--cc=dwalker@codeaurora.org \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=hvaibhav@ti.com \
--cc=kyungmin.park@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=m.nazarewicz@samsung.com \
--cc=m.szyprowski@samsung.com \
--cc=p.osciak@samsung.com \
--cc=zpfeffer@codeaurora.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).