All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] image: check "bootm_low" and "bootm_size" if "initrd_high" is missing
@ 2015-12-17  8:19 Masahiro Yamada
  2016-01-04 19:59 ` Tom Rini
  2016-01-13 21:55 ` Tom Rini
  0 siblings, 2 replies; 5+ messages in thread
From: Masahiro Yamada @ 2015-12-17  8:19 UTC (permalink / raw)
  To: u-boot

To boot Linux, we should prevent Initramdisk and FDT from going too
high.

Currently, boot_relocate_fdt() checks "fdt_high" environment first,
and then falls back to getenv_bootm_mapsize() + getenv_bootm_low()
if "fdt_high" is missing.

On the other hand, boot_ramdisk_high() only checks "initrd_high" to
get the address limit for the Initramdisk.  We also want to let this
case fall back to getenv_bootm_mapsize() + getenv_bootm_low().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 common/image.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/common/image.c b/common/image.c
index c36927f..d63d9e0 100644
--- a/common/image.c
+++ b/common/image.c
@@ -1113,8 +1113,7 @@ int boot_ramdisk_high(struct lmb *lmb, ulong rd_data, ulong rd_len,
 		if (initrd_high == ~0)
 			initrd_copy_to_ram = 0;
 	} else {
-		/* not set, no restrictions to load high */
-		initrd_high = ~0;
+		initrd_high = getenv_bootm_mapsize() + getenv_bootm_low();
 	}
 
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH] image: check "bootm_low" and "bootm_size" if "initrd_high" is missing
  2015-12-17  8:19 [U-Boot] [PATCH] image: check "bootm_low" and "bootm_size" if "initrd_high" is missing Masahiro Yamada
@ 2016-01-04 19:59 ` Tom Rini
  2016-01-08 16:12   ` Masahiro Yamada
  2016-01-13 21:55 ` Tom Rini
  1 sibling, 1 reply; 5+ messages in thread
From: Tom Rini @ 2016-01-04 19:59 UTC (permalink / raw)
  To: u-boot

On Thu, Dec 17, 2015 at 05:19:35PM +0900, Masahiro Yamada wrote:

> To boot Linux, we should prevent Initramdisk and FDT from going too
> high.

OK, why?  I could be entirely wrong here but I had thought for some
reason that if the ramdisk was in "highmem" the kernel would relocate
contents (or if compressed, uncompress to a non-highmem location).  The
FDT must be in lowmem as that tells the kernel where memory even is.  Is
this not the case?  Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160104/ef991061/attachment.sig>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH] image: check "bootm_low" and "bootm_size" if "initrd_high" is missing
  2016-01-04 19:59 ` Tom Rini
@ 2016-01-08 16:12   ` Masahiro Yamada
  2016-01-13 13:11     ` Tom Rini
  0 siblings, 1 reply; 5+ messages in thread
From: Masahiro Yamada @ 2016-01-08 16:12 UTC (permalink / raw)
  To: u-boot

Hi Tom,


2016-01-05 4:59 GMT+09:00 Tom Rini <trini@konsulko.com>:
> On Thu, Dec 17, 2015 at 05:19:35PM +0900, Masahiro Yamada wrote:
>
>> To boot Linux, we should prevent Initramdisk and FDT from going too
>> high.
>
> OK, why?  I could be entirely wrong here but I had thought for some
> reason that if the ramdisk was in "highmem" the kernel would relocate
> contents (or if compressed, uncompress to a non-highmem location).  The
> FDT must be in lowmem as that tells the kernel where memory even is.  Is
> this not the case?  Thanks!


Just in case, I asked this in the kernel ML.


See this thread:
https://lkml.org/lkml/2016/1/8/169


Jon gave me the answer.



5. Load initramfs.
------------------

Existing boot loaders:          OPTIONAL
New boot loaders:               OPTIONAL

If an initramfs is in use then, as with the dtb, it must be placed in
a region of memory where the kernel decompressor will not overwrite it
while also with the region which will be covered by the kernel's
low-memory mapping.

A safe location is just above the device tree blob which itself will
be loaded just above the 128MiB boundary from the start of RAM as
recommended above.





-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH] image: check "bootm_low" and "bootm_size" if "initrd_high" is missing
  2016-01-08 16:12   ` Masahiro Yamada
@ 2016-01-13 13:11     ` Tom Rini
  0 siblings, 0 replies; 5+ messages in thread
From: Tom Rini @ 2016-01-13 13:11 UTC (permalink / raw)
  To: u-boot

On Sat, Jan 09, 2016 at 01:12:33AM +0900, Masahiro Yamada wrote:
> Hi Tom,
> 
> 
> 2016-01-05 4:59 GMT+09:00 Tom Rini <trini@konsulko.com>:
> > On Thu, Dec 17, 2015 at 05:19:35PM +0900, Masahiro Yamada wrote:
> >
> >> To boot Linux, we should prevent Initramdisk and FDT from going too
> >> high.
> >
> > OK, why?  I could be entirely wrong here but I had thought for some
> > reason that if the ramdisk was in "highmem" the kernel would relocate
> > contents (or if compressed, uncompress to a non-highmem location).  The
> > FDT must be in lowmem as that tells the kernel where memory even is.  Is
> > this not the case?  Thanks!
> 
> 
> Just in case, I asked this in the kernel ML.
> 
> 
> See this thread:
> https://lkml.org/lkml/2016/1/8/169
> 
> 
> Jon gave me the answer.
> 
> 
> 
> 5. Load initramfs.
> ------------------
> 
> Existing boot loaders:          OPTIONAL
> New boot loaders:               OPTIONAL
> 
> If an initramfs is in use then, as with the dtb, it must be placed in
> a region of memory where the kernel decompressor will not overwrite it
> while also with the region which will be covered by the kernel's
> low-memory mapping.
> 
> A safe location is just above the device tree blob which itself will
> be loaded just above the 128MiB boundary from the start of RAM as
> recommended above.

Which explains why I picked the regions I picked for ti_armv7_common.h
that I did.  So, OK, thanks!  I'll apply this patch shortly.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160113/71fa1483/attachment.sig>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH] image: check "bootm_low" and "bootm_size" if "initrd_high" is missing
  2015-12-17  8:19 [U-Boot] [PATCH] image: check "bootm_low" and "bootm_size" if "initrd_high" is missing Masahiro Yamada
  2016-01-04 19:59 ` Tom Rini
@ 2016-01-13 21:55 ` Tom Rini
  1 sibling, 0 replies; 5+ messages in thread
From: Tom Rini @ 2016-01-13 21:55 UTC (permalink / raw)
  To: u-boot

On Thu, Dec 17, 2015 at 05:19:35PM +0900, Masahiro Yamada wrote:

> To boot Linux, we should prevent Initramdisk and FDT from going too
> high.
> 
> Currently, boot_relocate_fdt() checks "fdt_high" environment first,
> and then falls back to getenv_bootm_mapsize() + getenv_bootm_low()
> if "fdt_high" is missing.
> 
> On the other hand, boot_ramdisk_high() only checks "initrd_high" to
> get the address limit for the Initramdisk.  We also want to let this
> case fall back to getenv_bootm_mapsize() + getenv_bootm_low().
> 
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160113/26cff3a3/attachment.sig>

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-01-13 21:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-17  8:19 [U-Boot] [PATCH] image: check "bootm_low" and "bootm_size" if "initrd_high" is missing Masahiro Yamada
2016-01-04 19:59 ` Tom Rini
2016-01-08 16:12   ` Masahiro Yamada
2016-01-13 13:11     ` Tom Rini
2016-01-13 21:55 ` Tom Rini

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.