summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeLines
* Fix bootm to work on powerpc again (compressed uImage)Stefan Roese2013-06-28-5/+0
| | | | | | | | | | | | | | Patch 35fc84fa1 [Refactor the bootm command to reduce code duplication] breaks booting Linux (compressed uImage with fdt) on powerpc. boot_jump_linux() mustn't be called before boot_prep_linux() and boot_body_linux() have been called. So remove the superfluous call to boot_jump_linux() in arch/powerpc/lib/bootm.c as its called later on in this function. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Simon Glass <sjg@chromium.org> Cc: Tom Rini <trini@ti.com>
* mkimage: Build signing only if board has CONFIG_FIT_SIGNATURESimon Glass2013-06-28-5/+6
| | | | | | | | | | | | | | | | At present mkimage is set up to always build with image signing support. This means that the SSL libraries (e.g. libssl-dev) are always required. Adjust things so that mkimage can be built with and without image signing, controlled by the presence of CONFIG_FIT_SIGNATURE in the board config file. If CONFIG_FIT_SIGNATURE is not enabled, then mkimage will report a warning that signing is not supported. If the option is enabled, but libraries are not available, then a build error similar to this will be shown: lib/rsa/rsa-sign.c:26:25: fatal error: openssl/rsa.h: No such file or directory Signed-off-by: Simon Glass <sjg@chromium.org>
* bootm: Disable interrupts before loading OSSimon Glass2013-06-28-26/+27
| | | | | | | | | | This restores the ordering of interrupt disable to what it what before commit 35fc84fa. It seems that on some archiectures (e.g. PowerPC) the OS is loaded into an interrupt region, which can cause problems if interrupts are still running. Tested-by: Stefan Roese <sr@denx.de> Signed-off-by: Simon Glass <sjg@chromium.org>
* cmd_bootm.c: Correct BOOTM_ERR_OVERLAP handlingTom Rini2013-06-28-27/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | With 35fc84fa1 [Refactor the bootm command to reduce code duplication] we stopped checking the return value of bootm_load_os (unintentionally!) and simply returned if we had a non-zero return value from the function. This broke the valid case of a legacy image file of a single kernel loaded into an overlapping memory area (the default way of booting nearly all TI platforms). The best way to fix this problem in the new code is to make bootm_load_os be the one to see if we have a problem with this, and if it's fatal return BOOTM_ERR_RESET and if it's not BOOTM_ERR_OVERLAP, so that we can avoid calling lmb_reserve() but continue with booting. We however still need to handle the other BOOTM_ERR values so re-work do_bootm_states so that we have an error handler at the bottom we can goto for problems from bootm_load_os, or problems from the other callers (as the code was before). Add a comment to do_bootm_states noting the existing restriction on negative return values. Signed-off-by: Tom Rini <trini@ti.com> --- Changes in v2: - Rework so that only bootm_load_os and boot_selected_os head down into the err case code, and other errors simply return back to the caller. Fixes 'spl export'.
* am335x_evm: Add missing ';' in findfdtTom Rini2013-06-27-1/+1
| | | | | | | | In a714321 we add a check at the end of findfdt to make sure we have updated it from undefined and if not, warn the user. This however forgot a ';' on the end of the previous last test. Signed-off-by: Tom Rini <trini@ti.com>
* Merge branch 'master' of git://git.denx.de/u-boot-74xx-7xxTom Rini2013-06-27-3/+8
|\
| * PPC 74xx_7xx: Fix build warnings for ELPPC boardWolfgang Denk2013-06-27-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix: misc.c: In function 'misc_init_r': misc.c:210:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] misc.c:211:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] misc.c:212:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] Signed-off-by: Wolfgang Denk <wd@denx.de>
* | ColdFire: Update the arch_global_date changes for mcf5441xJason Jin2013-06-27-5/+5
| | | | | | | | | | | | | | Update inp_clk, vco_clk and flb_clk for mcf5441x as those items were moved to arch_global_data. Signed-off-by: Jason Jin <Jason.jin@freescale.com>
* | Fix MCF5235 SDRAM base address macroSteve deRosier2013-06-27-1/+1
| | | | | | | | | | | | | | | | | | SDRAMC_DARCn_BA() macro worked fine when the BA is 0x00000000 even though the macro is incorrect. It causes the BA to be set incorrctly for other base addresses. This patch fixes the macro so that base addresses other than zero can be used with the MCF5235. Signed-off-by: Steve deRosier <derosier@gmail.com>
* | m68k: fix debug call befor serial initJens Scharsig (BuS Elektronik)2013-06-27-2/+2
| | | | | | | | | | | | | | There is a debug call in board.c befor serial interface was initialized. This moves the debug code behind serial_initialize call. Signed-off-by: Jens Scharsig (BuS Elektronik) <esw@bus-elektronik.de>
* | usb: musb: Use ARRAY_SIZE at appropriate placesAxel Lin2013-06-26-4/+2
| | | | | | | | Signed-off-by: Axel Lin <axel.lin@ingics.com>
* | mtd: cfi_flash: Use ARRAY_SIZE at appropriate placesAxel Lin2013-06-26-4/+3
| | | | | | | | Signed-off-by: Axel Lin <axel.lin@ingics.com>
* | hwmon: lm63: Use ARRAY_SIZE at appropriate placeAxel Lin2013-06-26-2/+1
| | | | | | | | Signed-off-by: Axel Lin <axel.lin@ingics.com>
* | serial: Use ARRAY_SIZE instead of reinventing itAxel Lin2013-06-26-3/+2
| | | | | | | | Signed-off-by: Axel Lin <axel.lin@ingics.com>
* | README: align default commands with codeVincent Stehlé2013-06-26-6/+8
| | | | | | | | | | | | | | | | Align the list of default commands mentioned in the configuration options paragraph of the README with the actual definitions found in include/config_cmd_default.h Signed-off-by: Vincent Stehlé <vincent.stehle@freescale.com>
* | Fix block device accesses beyond 2TiBSascha Silbe2013-06-26-24/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With CONFIG_SYS_64BIT_LBA, lbaint_t gets defined as a 64-bit type, which is required to represent block numbers for storage devices that exceed 2TiB (the block size usually is 512B), e.g. recent hard drives. For some obscure reason, the current U-Boot code uses lbaint_t for the number of blocks to read (a rather optimistic estimation of how RAM sizes will evolve), but not for the starting address. Trying to access blocks beyond the 2TiB boundary will simply wrap around and read a block within the 0..2TiB range. We now use lbaint_t for block start addresses, too. This required changes to all block drivers as the signature of block_read(), block_write() and block_erase() in block_dev_desc_t changed. Signed-off-by: Sascha Silbe <t-uboot@infra-silbe.de>
* | cmd_bootm: Add command line arguments to Plan 9Steven Stallion2013-06-26-7/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduces support for command line arguments to Plan 9. Plan 9 generally dedicates a small region of kernel memory (known as CONFADDR) for runtime configuration. A new environment variable named confaddr was introduced to indicate this location when copying arguments. Signed-off-by: Steven Stallion <sstallion@gmail.com> [trini: Adapt for Simon's changes about correcting argc, no need to bump by 2 now] Signed-off-by: Tom Rini <trini@ti.com>
* | Add verified boot information and testSimon Glass2013-06-26-0/+334
| | | | | | | | | | | | | | | | | | | | | | Add a description of how to implement verified boot using signed FIT images, and a simple test which verifies operation on sandbox. The test signs a FIT image and verifies it, then signs a FIT configuration and verifies it. Then it corrupts the signature to check that this is detected. Signed-off-by: Simon Glass <sjg@chromium.org>
* | sandbox: config: Enable FIT signatures with RSASimon Glass2013-06-26-0/+2
| | | | | | | | | | | | We want to sign and verify images using sandbox, so enable these options. Signed-off-by: Simon Glass <sjg@chromium.org>
* | image: Add support for signing of FIT configurationsSimon Glass2013-06-26-3/+798
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While signing images is useful, it does not provide complete protection against several types of attack. For example, it it possible to create a FIT with the same signed images, but with the configuration changed such that a different one is selected (mix and match attack). It is also possible to substitute a signed image from an older FIT version into a newer FIT (roll-back attack). Add support for signing of FIT configurations using the libfdt's region support. Please see doc/uImage.FIT/signature.txt for more information. Signed-off-by: Simon Glass <sjg@chromium.org>
* | libfdt: Add fdt_find_regions()Simon Glass2013-06-26-0/+193
| | | | | | | | | | | | | | | | | | Add a function to find regions in device tree given a list of nodes to include and properties to exclude. See the header file for full documentation. Signed-off-by: Simon Glass <sjg@chromium.org>
* | mkimage: Add -r option to specify keys that must be verifiedSimon Glass2013-06-26-6/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Normally, multiple public keys can be provided and U-Boot is not required to use all of them for verification. This is because some images may not be signed, or may be optionally signed. But we still need a mechanism to determine when a key must be used. This feature cannot be implemented in the FIT itself, since anyone could change it to mark a key as optional. The requirement for key verification must go in with the public keys, in a place that is protected from modification. Add a -r option which tells mkimage to mark all keys that it uses for signing as 'required'. If some keys are optional and some are required, run mkimage several times (perhaps with different key directories if some keys are very secret) using the -F flag to update an existing FIT. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Marek Vasut <marex@denx.de>
* | mkimage: Add -c option to specify a comment for key signingSimon Glass2013-06-26-3/+16
| | | | | | | | | | | | | | | | | | When signing an image, it is useful to add some details about which tool or person is authorising the signing. Add a comment field which can take care of miscellaneous requirements. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Marek Vasut <marex@denx.de>
* | mkimage: Add -F option to modify an existing .fit fileSimon Glass2013-06-26-9/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | When signing images it is sometimes necessary to sign with different keys at different times, or make the signer entirely separate from the FIT creation to avoid needing the private keys to be publicly available in the system. Add a -F option so that key signing can be a separate step, and possibly done multiple times as different keys are avaiable. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Marek Vasut <marex@denx.de>
* | mkimage: Add -K to write public keys to an FDT blobSimon Glass2013-06-26-4/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | FIT image verification requires public keys. Add a convenient option to mkimage to write the public keys to an FDT blob when it uses then for signing an image. This allows us to use: mkimage -f test.its -K dest.dtb -k keys test.fit and have the signatures written to test.fit and the corresponding public keys written to dest.dtb. Then dest.dtb can be used as the control FDT for U-Boot (CONFIG_OF_CONTROL), thus providing U-Boot with access to the public keys it needs. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Marek Vasut <marex@denx.de>
* | mkimage: Add -k option to specify key directorySimon Glass2013-06-26-5/+38
| | | | | | | | | | | | | | | | | | | | | | Keys required for signing images will be in a specific directory. Add a -k option to specify that directory. Also update the mkimage man page with this information and a clearer list of available commands. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Marek Vasut <marex@denx.de> (v1)
* | image: Add RSA support for image signingSimon Glass2013-06-26-2/+1031
| | | | | | | | | | | | | | | | | | | | | | | | | | | | RSA provides a public key encryption facility which is ideal for image signing and verification. Images are signed using a private key by mkimage. Then at run-time, the images are verified using a private key. This implementation uses openssl for the host part (mkimage). To avoid bringing large libraries into the U-Boot binary, the RSA public key is encoded using a simple numeric representation in the device tree. Signed-off-by: Simon Glass <sjg@chromium.org>
* | image: Support signing of imagesSimon Glass2013-06-26-38/+478
| | | | | | | | | | | | | | | | Add support for signing images using a new signature node. The process is handled by fdt_add_verification_data() which now takes parameters to provide the keys and related information. Signed-off-by: Simon Glass <sjg@chromium.org>
* | image: Add signing infrastructureSimon Glass2013-06-26-2/+358
| | | | | | | | | | | | | | Add a structure to describe an algorithm which can sign and (later) verify images. Signed-off-by: Simon Glass <sjg@chromium.org>
* | x86: config: Add tracing optionsSimon Glass2013-06-26-0/+7
| | | | | | | | | | | | Add configs to enable tracing when it is needed. Signed-off-by: Simon Glass <sjg@chromium.org>
* | x86: Support tracing functionSimon Glass2013-06-26-7/+10
| | | | | | | | | | | | | | Some changes are needed to x86 timer functions to support tracing. Add these so that the feature works correctly. Signed-off-by: Simon Glass <sjg@chromium.org>
* | exynos: config: Add tracing optionsSimon Glass2013-06-26-0/+8
| | | | | | | | | | | | | | Add tracing to Exynos5 boards, so that tracing can be enabled when building with 'make FTRACE=1'. We use a 16MB trace buffer. Signed-off-by: Simon Glass <sjg@chromium.org>
* | exynos: Avoid function instrumentation for microsecond timerSimon Glass2013-06-26-5/+7
| | | | | | | | | | | | | | | | | | | | For tracing to work it has to be able to access the microsecond timer without causing a recursive call to the function entry/exit handlers. Add attributes to the relevant functions to support this. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Simon Glass <sjg@chromium.org>
* | arm: Implement the 'fake' go commandSimon Glass2013-06-26-9/+18
| | | | | | | | | | | | | | | | | | | | Implement this feature on ARM for tracing. It would be nice to have generic bootm support so that it is easily implemented on any arch. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
* | Add a 'fake' go command to the bootm commandSimon Glass2013-06-26-3/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | For tracing it is useful to run as much of U-Boot as possible so as to get a complete picture. Quite a bit of work happens in bootm, and we don't want to have to stop tracing before bootm starts. Add a way of doing a 'fake' boot of the OS - which does everything up to the point where U-Boot is about to jump to the OS image. This allows tracing to record right until the end. This requires arch support to work. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Refactor the bootm command to reduce code duplicationSimon Glass2013-06-26-248/+225
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At present the bootm code is mostly duplicated for the plain 'bootm' command and its sub-command variant. This makes the code harder to maintain and means that changes must be made to several places. Introduce do_bootm_states() which performs selected portions of the bootm work, so that both plain 'bootm' and 'bootm <sub_command>' can use the same code. Additional duplication exists in bootz, so tidy that up as well. This is not intended to change behaviour, apart from minor fixes where the previously-duplicated code missed some chunks of code. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Clarify bootm OS argumentsSimon Glass2013-06-26-37/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | At present the arguments to bootm are processed in a somewhat confusing way. Sub-functions must know how many arguments their calling functions have processed, and the OS boot function must also have this information. Also it isn't obvious that 'bootm' and 'bootm start' provide arguments in the same way. Adjust the code so that arguments are removed from the list before calling a sub-function. This means that all functions can know that argv[0] is the first argument of which they need to take notice. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Add a simple test for sandbox traceSimon Glass2013-06-26-0/+89
| | | | | | | | | | | | | | It is difficult to automatically test tracing on most architectures, but with sandbox it is easy enough to do a simple sanity check. Signed-off-by: Simon Glass <sjg@chromium.org>
* | sandbox: Support trace featureSimon Glass2013-06-26-2/+15
| | | | | | | | | | | | | | | | | | | | Support tracing on sandbox by adding suitable CONFIG options. To enable it, compile U-Boot with FTRACE=1. The timer functions are marked to skip tracing, since these are called from the tracing code itself, and we want to avoid an infinite loop. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Add proftool to decode profile dataSimon Glass2013-06-26-1/+620
| | | | | | | | | | | | | | This tool provides the facility to decode U-Boot trace data and write out a text file in Linux ftrace format for use with pytimechart. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Add trace support to generic boardSimon Glass2013-06-26-1/+30
| | | | | | | | | | | | | | | | | | | | | | Add hooks for tracing to generic board, including: - allow early tracing to start early as possible in U-Boot - reserve memory for trace buffer - copy early trace buffer to main trace buffer after relocation - setup full tracing support after relocation Signed-off-by: Simon Glass <sjg@chromium.org>
* | Support tracing in config.mk when enabledSimon Glass2013-06-26-1/+10
| | | | | | | | | | | | | | | | | | | | | | Use -finstrument-functions when tracing is enabled (make FTRACE=1). Tracing is not currently supported by SPL even if sufficient memory is available. When tracing is enabled, we #define FTRACE. This can be used by board config files to conditionally enable the tracing options. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Add a trace commandSimon Glass2013-06-26-0/+134
| | | | | | | | | | | | | | Add a trace command with sub-commands to start/stop tracing, print out statistics and dump trace information to memory for later upload to a host. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Add trace librarySimon Glass2013-06-26-0/+870
| | | | | | | | | | | | | | | | | | Add a library which supports tracing of execution using built-in gcc features and a microsecond timer. This can be used to record a list of function which are executed, along with a timestamp for each. Later this information can be sent to the host for processing. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Add function to print a number with grouped digitsSimon Glass2013-06-26-18/+31
| | | | | | | | | | | | | | Move bootstage's numbering printing code into a generic place so that it can be used by tracing also. Signed-off-by: Simon Glass <sjg@chromium.org>
* | bootstage: Correct printf typesSimon Glass2013-06-26-2/+2
| | | | | | | | | | | | | | The unstash code is a bit loose with its printf() types, which gives warnings on sandbox. Correct this. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Show stdout on error in fit-testSimon Glass2013-06-26-9/+10
| | | | | | | | | | | | | | When this test fails it is useful to see the output from U-Boot. Add printing of this information on failure. Signed-off-by: Simon Glass <sjg@chromium.org>
* | Fix missing return in do_mem_loop()Simon Glass2013-06-26-0/+2
| | | | | | | | | | | | | | For some reason this does not normally cause a compiler warning, but the code seems to be incorrect. Add the missing return. Signed-off-by: Simon Glass <sjg@chromium.org>
* | x86: Correct missing local variable in bootmSimon Glass2013-06-26-0/+2
| | | | | | | | | | | | Enabling FIT produces a compile error. Fix this. Signed-off-by: Simon Glass <sjg@chromium.org>
* | pci: Convert extern inline functions to static inlineSimon Glass2013-06-26-2/+2
| | | | | | | | | | | | | | | | I am not sure of the meaning of extern inline, but this gives errors when building with function instrumenting enabled. Change these functions to static inline. Signed-off-by: Simon Glass <sjg@chromium.org>