u-boot/common
Feng Wang 3840ebfaf8 fdt: Fix bug in size calculation in fdt_resize() with initrd use
Original bug description from Feng (fdt_resize() bug caused "WARNING:
could not set linux, initrd-start FDT_ERR_NOSPACE."):

What I got is an error: "WARNING: could not set linux,initrd-start
FDT_ERR_NOSPACE." after loading Device Tree blob. This in turn caused
linux to miss init part.

After some digging, I found out the reason for this error, it is caused
by fdt_resize().

FDT blob got resized after filling in all board specific information of
PowerPC. (in boot_body_linux()). It reduced blob size with only extra
space for two fdt_reserve_entry, one for fdt itself, and one for initrd.
Then it's aligned to a 0x1000 page boundary. However, later in
fdt_initrd(), it could add two more properties, initrd-start AND
initrd-end, each one needs at least two fdt_reserve_entry sizes done by
_fdt_add_property() (name and value). Thus, the two fdt_reserve_entry
extra space is not sufficient.

So for some specific fdt size which is just under the page boundary
after resizing, this will cause an error of FDT_ERR_NOSPACE in
fdt_initrd() when setting those two properties, and failed to pass
initrd information to linux.

My fix is in fdt_resize(), leave at least 4 fdt_reserve_entry for
initrd. So instead of 2*sizeof(struct fdt_reserve_entry) for
actual_totalsize, use 5*sizeof(struc fdt_reserve_entry).

Stefan: I got this same error on katmai, when trying to boot with
initrd (run flash_self). This patch fixes this issue.

Signed-off-by: Feng Wang <fwang02@harris.com>
Tested-by: Stefan Roese <sr@denx.de>
Cc: Jerry Van Baren <gvb.uboot@gmail.com>
Acked-by: Gerald Van Baren <vanbaren@cideas.com>
2010-08-09 01:10:30 +02:00
..
bedbug.c common: Move conditional compilation to Makefile 2008-08-13 01:40:38 +02:00
cmd_ambapp.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_bdinfo.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_bedbug.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_bmp.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_boot.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_bootldr.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_bootm.c LZMA and LZO causes compile error 2010-08-07 23:49:59 +02:00
cmd_cache.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_console.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_cplbinfo.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_cramfs.c various cmd_* files: remove the command name from the help message 2010-08-09 01:06:34 +02:00
cmd_dataflash_mmc_mux.c various cmd_* files: remove the command name from the help message 2010-08-09 01:06:34 +02:00
cmd_date.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_dcr.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_df.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_diag.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_display.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_dtt.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_echo.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_eeprom.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_elf.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_exit.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_ext2.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_fat.c fs/fat: Big code cleanup. 2010-07-24 20:54:46 +02:00
cmd_fdc.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_fdos.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_fdt.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_flash.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_fpga.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_help.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_i2c.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_ide.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_immap.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_irq.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_itest.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_jffs2.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_license.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_load.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_log.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_mac.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_mem.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_mfsl.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_mgdisk.c various cmd_* files: remove the command name from the help message 2010-08-09 01:06:34 +02:00
cmd_mii.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_misc.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_mmc.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_mp.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_mtdparts.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_nand.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_net.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_nvedit.c getenv_f(): fix handling of too short buffers 2010-08-09 00:53:57 +02:00
cmd_onenand.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_otp.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_pci.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_pcmcia.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_portio.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_reginfo.c mpc85xx: Add reginfo command 2010-07-16 10:55:09 -05:00
cmd_reiser.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_sata.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_scsi.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_setexpr.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_sf.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_source.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_spi.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_spibootldr.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_strings.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_terminal.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_test.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_tsi148.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_ubi.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_ubifs.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_universe.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_usb.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_version.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
cmd_vfd.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
cmd_ximg.c various cmd_* files: fixed layout a little bit 2010-08-09 01:07:37 +02:00
cmd_yaffs2.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
command.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
console.c Make *printf() return "int" instead of "void" 2010-07-04 23:51:49 +02:00
ddr_spd.c Enabled support for Rev 1.3 SPD for DDR2 DIMMs 2010-05-12 04:54:30 -05:00
dlmalloc.c malloc: sbrk() should return MORECORE_FAILURE instead of NULL on failure 2010-04-10 00:30:27 +02:00
dlmalloc.src * Code cleanup: 2003-06-27 21:31:46 +00:00
env_common.c Drop support for GTH board 2010-07-17 20:47:08 +02:00
env_dataflash.c env: kill off default_environment_size 2009-08-09 22:41:42 +02:00
env_eeprom.c Redundant environment: move flag definitions to header file 2010-07-04 23:52:42 +02:00
env_embedded.c Revert "env: only build env_embedded and envcrc when needed" 2009-10-27 20:46:31 +01:00
env_flash.c Redundant environment: move flag definitions to header file 2010-07-04 23:52:42 +02:00
env_mgdisk.c env: kill off default_environment_size 2009-08-09 22:41:42 +02:00
env_nand.c NAND: formatting cleanups from env.oob support 2010-07-12 18:17:40 -05:00
env_nowhere.c env: kill off default_environment_size 2009-08-09 22:41:42 +02:00
env_nvram.c Remove AmigaOneG3SE board 2010-06-23 23:24:20 +02:00
env_onenand.c onenand: Fix compile errors due to FlexOneNAND 2010-01-06 16:28:00 -06:00
env_sf.c add redundant environment for env_sf.c 2010-06-30 23:47:08 -04:00
exports.c exports.c: fix warning: 'dummy' defined but not used 2010-07-04 23:50:55 +02:00
fdt_support.c fdt: Fix bug in size calculation in fdt_resize() with initrd use 2010-08-09 01:10:30 +02:00
flash.c flash_protect: check for NULL flash info 2010-08-09 01:03:54 +02:00
hush.c cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
hwconfig.c hwconfig: Add some unit tests 2010-06-29 22:24:48 +02:00
image.c fdt relocate: have more attention to use a bootmap or not 2010-08-08 22:16:05 +02:00
iomux.c stdio/device: rework function naming convention 2009-07-18 00:27:46 +02:00
kallsyms.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
kgdb.c Make sure that argv[] argument pointers are not modified. 2010-07-04 23:55:42 +02:00
kgdb_stubs.c kgdb: add default generic stubs 2010-01-18 00:23:00 +01:00
lcd.c Enable PXAFB for PXA27X and PXA3XX 2010-07-14 22:41:39 +02:00
lynxkdi.c Fix implicit declaration of function 'eth_[gs]etenv_enetaddr' 2009-03-28 20:16:16 +01:00
main.c cmd editing: optimize/shrink output blanking 2010-08-09 00:26:04 +02:00
Makefile CRAMFS: support cramfs in RAM 2010-01-18 00:44:13 +01:00
memsize.c Sequential accesses to non-existent memory must be synchronized, 2006-11-06 17:06:36 +01:00
miiphyutil.c Cosmetic change - indentation correction. 2010-03-12 00:19:11 +01:00
modem.c make MODEM SUPPORT generic instead of duplicate it 2009-06-12 20:45:47 +02:00
s_record.c Initial revision 2002-08-17 09:36:01 +00:00
serial.c x86: Use CONFIG_SERIAL_MULTI 2010-05-06 00:16:46 +02:00
stdio.c arm/microblaze/nios/nios2/sh: Remove relocation fixups 2009-10-03 10:17:57 +02:00
system_map.c Add support for Linux-like kallsysms 2009-06-12 20:45:48 +02:00
update.c rename CFG_ macros to CONFIG_SYS 2008-10-18 21:54:03 +02:00
usb.c USB: usb_control_msg wait for driver ISR to set status. 2010-02-03 22:06:59 +01:00
usb_kbd.c USB Consolidate descriptor definitions 2009-12-20 12:47:37 +01:00
usb_storage.c usb_storage.c: change progress output in debug() message 2010-07-24 20:53:50 +02:00
xyzModem.c common: fix 'dummy' is used uninitialized in this function warning 2009-07-19 21:37:02 +02:00