From: lauraa@codeaurora.org (Laura Abbott)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC] Using CMA with devicetree generated devices
Date: Fri, 26 Oct 2012 14:02:48 -0700 [thread overview]
Message-ID: <508AFA78.4080602@codeaurora.org> (raw)
Is it possible to use the devices generated from device tree for use
with CMA? The API for reserving a CMA region (dma_declare_contiguous)
requires a device pointer to properly associate a region with a device.
By the time the devices from devicetree are actually available
(generally during machine_init), dma_contiguous_remap has already been
called so it's too late to have a properly setup region.
I currently see several options:
1) All CMA devices must be statically declared in the board file
2) Scan the FDT to set up 'dummy' devices early which can later be used
to set up CMA with the 'proper' devices
3) My assumption is completely wrong and the check that I was using is
invalid:
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index 8404601..6d37516 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -368,9 +368,11 @@ struct dma_contig_early_reserve {
static struct dma_contig_early_reserve dma_mmu_remap[MAX_CMA_AREAS]
__initdata;
static int dma_mmu_remap_num __initdata;
+static int is_remapped;
void __init dma_contiguous_early_fixup(phys_addr_t base, unsigned long
size)
{
+ BUG_ON(is_remapped);
dma_mmu_remap[dma_mmu_remap_num].base = base;
dma_mmu_remap[dma_mmu_remap_num].size = size;
dma_mmu_remap_num++;
@@ -404,6 +406,7 @@ void __init dma_contiguous_remap(void)
iotable_init(&map, 1);
}
+ is_remapped = 1;
}
static void *
I'm currently leaning towards setting up #2 unless I'm missing something
obvious here. Thanks.
Laura
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
next reply other threads:[~2012-10-26 21:02 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-26 21:02 Laura Abbott [this message]
2012-10-29 14:09 ` [RFC] Using CMA with devicetree generated devices 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=508AFA78.4080602@codeaurora.org \
--to=lauraa@codeaurora.org \
--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 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).