summaryrefslogtreecommitdiff
path: root/common/image.c
Commit message (Collapse)AuthorAgeLines
* Prevent crash if random/invalid ramdisks are passed to bootmKumar Gala2008-09-07-1/+2
| | | | | | | | | Adds returning an error from the ramdisk detection code if its not a real ramdisk (invalid). There is no reason we can't just return back to the console if we detect an invalid ramdisk or CRC error. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
* Prevent crash if random DTB address is passed to bootmAnatolij Gustschin2008-09-07-1/+1
| | | | | | | | | This patch adds bootm_start() return value check. If error status is returned, we do not proceed further to prevent board reset or crash as we still can recover at this point. Signed-off-by: Anatolij Gustschin <agust@denx.de>
* bootm: Set working fdt address as part of the bootm flowKumar Gala2008-08-26-0/+1
| | | | | | | | Set the fdt working address so "fdt FOO" commands can be used as part of the bootm flow. Also set an the environment variable "fdtaddr" with the value. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
* bootm: refactor fdt locating and relocation codeKumar Gala2008-08-26-0/+502
| | | | | | | Move the code that handles finding a device tree blob and relocating it (if needed) into common code so all arch's have access to it. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
* Fix fallout from autostart revertKumar Gala2008-08-12-17/+0
| | | | | | | | The autostart revert caused a bit of duplicated code as well as code that was using images->autostart that needs to get removed so we can build again. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
* Revert "[new uImage] Add autostart flag to bootm_headers structure"Wolfgang Denk2008-08-10-0/+16
| | | | | | | | | | | | | | | | | This reverts commit f5614e7926863bf0225ec860d9b319741a9c4004. The commit was based on a misunderstanding of the (documented) meaning of the 'autostart' environment variable. It might cause boards to hang if 'autostart' was used, with the potential to brick them. Go back to the documented behaviour. Conflicts: common/cmd_bootm.c common/image.c include/image.h Signed-off-by: Wolfgang Denk <wd@denx.de>
* FIT: Fix handling of images without ramdisksPeter Tyser2008-08-09-1/+1
| | | | | | | | boot_get_ramdisk() should not treat the case when a FIT image does not contain a ramdisk as an error. Signed-off-by: Peter Tyser <ptyser@xes-inc.com> Acked-by: Michal Simek <monstr@monstr.eu>
* FIS: repare incorrect return value with ramdisk handlingMichal Simek2008-07-13-8/+8
| | | | | | | | | | | | | | | Microblaze and PowerPC use boot_get_ramdisk for loading ramdisk to memory with checking return value. Return 0 means success. Return 1 means failed. Here is correspond part of code from bootm.c which check return code. ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_PPC, &rd_data_start, &rd_data_end); if (ret) goto error; Signed-off-by: Michal Simek <monstr@monstr.eu>
* Change lmb to use phys_size_t/phys_addr_tBecky Bruce2008-06-12-6/+11
| | | | | | | | | | | This updates the lmb code to use phys_size_t and phys_addr_t instead of unsigned long. Other code which interacts with this code, like getenv_bootm_size() is also updated. Booted on MPC8641HPCN, build-tested ppc, arm, mips. Signed-off-by: Becky Bruce <becky.bruce@freescale.com>
* Avoid initrd and logbuffer area overlapsMarian Balakowicz2008-06-03-0/+10
| | | | | | | | | Add logbuffer to reserved LMB areas to prevent initrd allocation from overlaping with it. Make sure to use correct logbuffer base address. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* Revert "Avoid initrd and logbuffer area overlaps"Wolfgang Denk2008-05-12-7/+0
| | | | | This reverts commit 1b5605ca57fbb364f4d78eeee28b974ed875e888 which breaks building on all PPC boards that don't use a log buffer.
* Fix offset calculation for multi-type legacy images.Nick Spence2008-05-12-9/+4
| | | | | | | | Calculation of tail was incorrect when size % 4 == 0. New code removes the conditional and does the same thing but with arithmetic Signed-off-by: Nick Spence <nick.spence@freescale.com>
* Avoid initrd and logbuffer area overlapsMarian Balakowicz2008-05-10-0/+7
| | | | | | | | | Add logbuffer to reserved LMB areas to prevent initrd allocation from overlaping with it. Make sure to use correct logbuffer base address. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* Fix build errors when CONFIG_LOGBUFFER and CONFIG_FIT are enabledMarian Balakowicz2008-05-10-4/+0
| | | | | | | | | | | Recent modifcations to LOGBUFFER handling code were incorrecly introduced to fit_check_kernel() routine during "Merge branch 'new-image' of git://www.denx.de/git/u-boot-testing", commit 27f33e9f45ef7f9685cbdc65066a1828e85dde4f. This patch cleans up this merge issue. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* Recognize 'powerpc' As an Alias for IH_ARCH_PPCGrant Erickson2008-05-09-0/+1
| | | | | | | | Add support for the recognition of 'powerpc' as an alias for the PowerPC architecture type since Linux is already trending in that direction, preferring 'powerpc' to 'ppc'. Signed-off-by: Grant Erickson <gerickson@nuovations.com>
* Use watchdog-aware functions when calculating hashes of images - take twoBartlomiej Sieka2008-04-25-34/+8
| | | | | | | | | Some files didn't get updated properly with the "Use watchdog-aware functions when calculating hashes of images" commit, this commit fixes this. Signed-off-by: Bartlomiej Sieka <tur@semihalf.com> Signed-off-by: Wolfgang Denk <wd@denx.de>
* Memory footprint optimizationsBartlomiej Sieka2008-04-24-33/+23
| | | | | | | | | | As suggested by Wolfgang Denk: - image printing functions: - remove wrappers - remove indentation prefix from functions' signatures - merge getenv_verify and getenv_autostart into one parametrized function Signed-off-by: Bartlomiej Sieka <tur@semihalf.com>
* crc32: use uint32_t rather than unsigned longMike Frysinger2008-04-24-1/+1
| | | | | | | | | | | | | The envcrc.c does sizeof(unsigned long) when calculating the crc, but this is done with the build toolchain instead of the target tool chain, so if the build is a 64bit system but the target is 32bits, the size will obviously be wrong. This converts all unsigned long stuff related to crc32 to uint32_t types. Compile tested only: output of ./tools/envcrc when run on a 32bit build system matches that of a 64bit build system. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
* Restore the ability to continue booting after legacy image overwriteMarian Balakowicz2008-04-17-1/+1
| | | | | | | | | | | Before new uImage code was merged, bootm code allowed for the kernel image to get overwritten during decompresion. new uImage introduced a check for image overwrites and refused to boot the image that got overwritten. This patch restores the old behavior. It also adds a warning when the image overwriten is a multi-image file, because in such case accessing componentes other than the first one will fail. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* Rename include/md5.h to include/u-boot/md5.hAndy Fleming2008-04-13-2/+2
| | | | | | | | | | | | | | Some systems have md5.h installed in /usr/include/. This isn't the desired file (we want the one in include/md5.h). This will avoid the conflict. This fixes the host tools building problem by creating a new directory for U-Boot specific header files. [Patch by Andy Fleming, modified to use separate directory by Wolfgang Denk] Signed-off-by: Wolfgang Denk <wd@denx.de> Signed-off-by: Andy Fleming <afleming@freescale.com> Acked-by: Timur Tabi <timur@freescale.com>
* SPARC: added SPARC support for new uimage in common code.Daniel Hellstrom2008-04-08-1/+1
| | | | Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
* [new uImage] Disable debuging output in preparation for merge with masterBartlomiej Sieka2008-03-20-1/+0
| | | | Signed-off-by: Bartlomiej Sieka <tur@semihalf.com>
* Add MD5 support to the new uImage formatBartlomiej Sieka2008-03-14-2/+4
| | | | Signed-off-by: Bartlomiej Sieka <tur@semihalf.com>
* [new uImage] Fix build issue on ARMMarian Balakowicz2008-03-12-1/+7
| | | | | | ARM platforms don't have a bd->bi_memsize so use bd->bi_dram[0].size instead. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
* [new uImage] Add proper ramdisk/FDT handling when FIT configuration is usedMarian Balakowicz2008-03-12-29/+83
| | | | | | | | Save FIT configuration provied in the first bootm argument and use it when to get ramdisk/FDT subimages when second and third (ramdisk/FDT) arguments are not specified. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Use show_boot_progress() for new uImage formatMarian Balakowicz2008-03-12-6/+22
| | | | | | | This patch allocates a set of show_boot_progress() IDs for new uImage format and adds show_boot_progress() calls in new uImage format handling code. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Add node offsets for FIT images listed in struct bootm_headersMarian Balakowicz2008-03-12-0/+1
| | | | | | | | This patch adds new node offset fields to struct bootm_headers and updates bootm_headers processing code to make use of them. Saved node offsets allow to avoid repeating fit_image_get_node() calls. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Remove unnecessary arguments passed to ramdisk routinesMarian Balakowicz2008-03-12-20/+12
| | | | | | | boot_get_ramdisk() and image_get_ramdisk() do not need all cmdtp, flag, argc and argv arguments. Simplify routines definition. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Add new uImage format support for ramdisk handlingMarian Balakowicz2008-03-12-16/+108
| | | | | | | This patch updates boot_get_ramdisk() routine adding format verification and handling for new (FIT) uImages. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] New uImage low-level APIMarian Balakowicz2008-03-10-4/+1261
| | | | | | | | | | | | | Add FDT-based functions for handling new format component images, configurations, node operations, property get/set, etc. fit_ - routines handling global new format uImage operations like get/set top level property, process all nodes, etc. fit_image_ - routines handling component images subnodes fit_conf_ - routines handling configurations node Signed-off-by: Bartlomiej Sieka <tur@semihalf.com> Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Fix component handling for legacy multi component imagesMarian Balakowicz2008-02-29-8/+8
| | | | | | | | | Use uint32_t when accessing size table in image_multi_count() and image_multi_getimg() for multi component images. Add missing uimage_to_cpu() endianness conversion. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Share common uImage code between mkimage and U-bootMarian Balakowicz2008-02-29-97/+244
| | | | | | | | | | | | | | | | | | | | This patch adds the following common routines: 1) Dedicated mkimage print_header() is replaced with common image_print_contents() image_print_contents_noindent() 2) Common os/arch/type/comp fields name <--> id translation routines genimg_get_os_name() genimg_get_arch_name() genimg_get_type_name() genimg_get_comp_name() genimg_get_os_id() genimg_get_arch_id() genimg_get_type_id() genimg_get_comp_id() Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Update naming convention for bootm/uImage related codeMarian Balakowicz2008-02-29-211/+218
| | | | | | | | | | | | | | | This patch introduces the following prefix convention for the image format handling and bootm related code: genimg_ - dual format shared code image_ - legacy uImage format specific code fit_ - new uImage format specific code boot_ - booting process related code Related routines are renamed and a few pieces of code are moved around and re-grouped. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Provide ability to restrict region used for boot imagesKumar Gala2008-02-29-0/+26
| | | | | | | | Allow the user to set 'bootm_low' and 'bootm_size' env vars as a way to restrict what memory range is used for bootm. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Acked-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Use lmb for bootm allocationsKumar Gala2008-02-29-87/+47
| | | | | | | | | | | | | | | | | | | Convert generic ramdisk_high(), get_boot_cmdline(), get_boot_kbd() functions over to using lmb for allocation of the ramdisk, command line and kernel bd info. Convert PPC specific fdt_relocate() to use lmb for allocation of the device tree. Provided a weak function that board code can call to do additional lmb reserves if needed. Also introduce the concept of bootmap_base to specify the offset in physical memory that the bootmap is located at. This is used for allocations of the cmdline, kernel bd, and device tree as they should be contained within bootmap_base and bootmap_base + CFG_BOOTMAPSZ. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
* [new uImage] Add autostart flag to bootm_headers structureKumar Gala2008-02-29-0/+6
| | | | | | | | | The autostart env variable was dropped as part of the initial new uImage cleanup. Add it back here so the arch specific code can decide if it wants to really boot or not. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Acked-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] rework error handling so common functions don't resetKumar Gala2008-02-29-10/+16
| | | | | | | | | | | | | Changed image_get_ramdisk() to just return NULL on error and have get_ramdisk() propogate that error to the caller. It's left to the caller to call do_reset() if it wants to. Also moved calling do_reset() in get_fdt() and fdt_relocate() on ppc to a common location. In the future we will change get_fdt() and fdt_relocate() to return success/failure and not call do_reset() at all. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Acked-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Don't pass kdb to ramdisk_high since we may not have oneKumar Gala2008-02-29-5/+4
| | | | | | | | | We don't actually need the kdb param as we are just using it to get bd->bi_memsize which we can get from gd->bd->bi_memsize. Also, if we boot via OF we might not actually fill out a kdb. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Acked-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Correct raw FDT blob handlig when CONFIG_FIT is disabledMarian Balakowicz2008-02-27-2/+6
| | | | | | | | | | | | | | Dual format image code must properly handle all three FDT passing methods: - raw FDT blob passed - FDT blob embedded in the legacy uImage - FDT blob embedded in the new uImage This patch enables proper raw FDT handling when no FIT imaeg support is compiled in. This is a bit tricky as we must dected FIT format even when FIT uImage handling is not enabled as both FIT uImages and raw FDT blobs use tha same low level format (libfdt). Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Move image verify flag to bootm_headers structureMarian Balakowicz2008-02-27-5/+8
| | | | | | | | | | Do not pass image verification flag directly to related routines. Simplify argument passing and move it to the bootm_header structure which contains curently processed image specific data and is already being passed on the argument list. Signed-off-by: Marian Balakowicz <m8@semihalf.com> Acked-by: Kumar Gala <galak@kernel.crashing.org>
* [new uImage] Optimize gen_get_image() flow controlMarian Balakowicz2008-02-27-31/+33
| | | | | | | | When CONFIG_HAS_DATAFLASH is not defined gen_get_image() routine has nothing to do, update its control flow to better reflect that simple case. Signed-off-by: Marian Balakowicz <m8@semihalf.com> Acked-by: Kumar Gala <galak@kernel.crashing.org>
* [new uImage] Add dual format uImage support frameworkMarian Balakowicz2008-02-25-32/+85
| | | | | | | | | | | | | | This patch adds framework for dual format images. Format detection is added and the bootm controll flow is updated to include cases for new FIT format uImages. When the legacy (image_header based) format is detected appropriate legacy specific handling is invoked. For the new (FIT based) format uImages dual boot framework has a minial support, that will only print out a corresponding debug messages. Implementation of the FIT specific handling will be added in following patches. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Rename and move print_image_hdr() routineMarian Balakowicz2008-02-21-1/+55
| | | | Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Add fit_parse_conf() and fit_parse_subimage() routinesMarian Balakowicz2008-02-21-0/+78
| | | | | | | | | | | | | | | | | | | Introducing routines for parsing new uImage format bootm arguments: [<addr>]#<conf> - configuration specification [<addr>]:<subimg> - subimage specification New format images can contain multiple subimages of the same type. For example a single new format image file can contain three kernels, two ramdisks and a couple of FDT blobs. Subimage and configuration specifications are extensions to bootm (and other image-related commands) arguments' syntax that allow to specify which particular subimage should be operated on. Subimage specification is used to denote a particular subimage. Configurations are a bit more complex -- they are used to define a particualr booting setup, for example a (kernel, fdt blob) pair, or a (kernel, ramdisk, fdt blob) tuple, etc. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Add gen_get_image() routineMarian Balakowicz2008-02-21-21/+105
| | | | | | | | | This routine assures that image (whether legacy or FIT) is not in a special dataflash storage. If image address is a dataflash address image is moved to system RAM. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Cleanup do_botm_linux() boot allocationsMarian Balakowicz2008-02-07-9/+109
| | | | | | | | | | | | | | | This patch moves common pre-boot allocation steps shared between PPC and M68K to a helper routines: common: - get_boot_sp_limit() - get_boot_cmline() - get_boot_kbd() platform: - set_clocks_in_mhz() Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Move ramdisk loading to a common routineMarian Balakowicz2008-02-07-0/+113
| | | | | | | | | Ramdisk loading code, including initrd_high variable handling, was duplicated for PPC and M68K platforms. This patch creates common helper routine that is being called from both platform do_bootm_linux() routines. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Factor out common image_get_ramdisk() routineMarian Balakowicz2008-02-07-3/+200
| | | | | | | | Architecture specific do_bootm_linux() routines share common ramdisk image processing code. Move this code to a common helper routine. Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Factor out common routines for getting os/arch/type/comp namesMarian Balakowicz2008-02-07-0/+88
| | | | | | | | Move numeric-id to name translation for image os/arch/type/comp header fields to a helper routines: image_get_os_name(), image_get_arch_name(), image_get_type_name(), image_get_comp_name(). Signed-off-by: Marian Balakowicz <m8@semihalf.com>
* [new uImage] Cleanup image header pointer use in bootm codeMarian Balakowicz2008-02-07-0/+86
| | | | | | | - use single image header pointer instead of a set of auxilliary variables. - add multi component image helper routines: get component size/data address Signed-off-by: Marian Balakowicz <m8@semihalf.com>