From: Jimi Xenidis <jimix@watson.ibm.com>
To: linuxppc-dev@ozlabs.org
Subject: [patch][rfc]flattened device tree: Passing a dtb (blob) to Linux.
Date: Wed, 12 Apr 2006 22:05:09 -0400 [thread overview]
Message-ID: <5148225C-AE27-4365-A1C2-40C46491AF0D@watson.ibm.com> (raw)
A devtree compiler (dtc) generated devtree blob is "relocatable" and
so does not contain a reserved_map entry for the blob itself.
This means that if passed to Linux, Linux will not get lmb_reserve()
the blob and it could be over.
The following patch will explicitly reserve the "blob" as it was
given to us and stops prom_init.c from creating a reserved mapping
for the blob.
NOTE: that the dtc must also not generate the blob reservation
entry. Should we try to detect this redundant entry? Should we bump
the DT version number?
Signed-off-by: <jimix@watson.ibm.com>
--
diff -r eb0990a251a9 arch/powerpc/kernel/prom.c
--- a/arch/powerpc/kernel/prom.c Thu Mar 30 22:05:40 2006 -0500
+++ b/arch/powerpc/kernel/prom.c Wed Apr 12 22:00:27 2006 -0400
@@ -1132,6 +1132,11 @@ static void __init early_reserve_mem(voi
reserve_map = (u64 *)(((unsigned long)initial_boot_params) +
initial_boot_params->off_mem_rsvmap);
+
+ /* before we do anything, lets reserve the dt blob */
+ lmb_reserve(__pa((unsigned long)initial_boot_params),
+ initial_boot_params->totalsize);
+
#ifdef CONFIG_PPC32
/*
* Handle the case where we might be booting from an old kexec
diff -r eb0990a251a9 arch/powerpc/kernel/prom_init.c
--- a/arch/powerpc/kernel/prom_init.c Thu Mar 30 22:05:40 2006 -0500
+++ b/arch/powerpc/kernel/prom_init.c Wed Apr 12 22:00:27 2006 -0400
@@ -1909,11 +1909,7 @@ static void __init flatten_device_tree(v
/* Version 16 is not backward compatible */
hdr->last_comp_version = 0x10;
- /* Reserve the whole thing and copy the reserve map in, we
- * also bump mem_reserve_cnt to cause further reservations to
- * fail since it's too late.
- */
- reserve_mem(RELOC(dt_header_start), hdr->totalsize);
+ /* Copy the reserve map in */
memcpy(rsvmap, RELOC(mem_reserve_map), sizeof(mem_reserve_map));
#ifdef DEBUG_PROM
@@ -1926,6 +1922,9 @@ static void __init flatten_device_tree(v
RELOC(mem_reserve_map)[i].size);
}
#endif
+ /* Bump mem_reserve_cnt to cause further reservations to fail
+ * since it's too late.
+ */
RELOC(mem_reserve_cnt) = MEM_RESERVE_MAP_SIZE;
prom_printf("Device tree strings 0x%x -> 0x%x\n",
next reply other threads:[~2006-04-13 2:05 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-13 2:05 Jimi Xenidis [this message]
2006-04-13 2:15 ` [patch][rfc]flattened device tree: Passing a dtb (blob) to Linux Jimi Xenidis
2006-04-13 5:36 ` Michael Neuling
2006-04-13 10:37 ` Jimi Xenidis
2006-04-13 11:07 ` Michael Ellerman
2006-04-13 13:19 ` Jimi Xenidis
2006-04-13 14:34 ` Michael Ellerman
2006-04-18 16:48 ` Jon Loeliger
2006-04-18 18:04 ` Michael Ellerman
2006-04-18 18:42 ` Jimi Xenidis
2006-04-20 15:42 ` Jon Loeliger
2006-04-20 20:20 ` Mark A. Greer
2006-04-13 23:12 ` Benjamin Herrenschmidt
2006-04-14 12:45 ` Jimi Xenidis
2006-04-14 16:19 ` Michael Ellerman
2006-05-18 22:03 ` [PATCH] powerpc: Auto reserve of device tree blob Michael Neuling
2006-05-22 16:25 ` Jon Loeliger
2006-05-23 15:04 ` Jon Loeliger
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=5148225C-AE27-4365-A1C2-40C46491AF0D@watson.ibm.com \
--to=jimix@watson.ibm.com \
--cc=linuxppc-dev@ozlabs.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).