summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-07-25efi_loader: check parameters of CreateEventHeinrich Schuchardt
Rigorously check the TPL level and the event type. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25x86: Add efi_loader bits to x86_64 linker scriptAlexander Graf
The x86_64 linker script was missing efi runtime information. Add it. Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: Rename sections to allow for implicit dataAlexander Graf
Some times gcc may generate data that is then used within code that may be part of an efi runtime section. That data could be jump tables, constants or strings. In order to make sure we catch these, we need to ensure that gcc emits them into a section that we can relocate together with all the other efi runtime bits. This only works if the -ffunction-sections and -fdata-sections flags are passed and the efi runtime functions are in a section that starts with ".text". Up to now we had all efi runtime bits in sections that did not interfere with the normal section naming scheme, but this forces us to do so. Hence we need to move the efi_loader text/data/rodata sections before the global *(.text*) catch-all section. With this patch in place, we should hopefully have an easier time to extend the efi runtime functionality in the future. Signed-off-by: Alexander Graf <agraf@suse.de> [agraf: Fix x86_64 breakage]
2018-07-25efi: Drop error return in efi_carve_out_dt_rsv()Simon Glass
This function currently returns an error code, but never uses it. There is no function comment so it is not obvious why. Presuambly the error is not important. Update the function to explain its purpose and why it ignores the error. Drop the useful error return value. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Alexander Graf <agraf@suse.de> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi: Tidy up device-tree-size calculation in copy_fdt()Simon Glass
This is a bit confusing at present since it adds 4KB to the pointer, then rounds it up. It looks like a bug, but is not. Move the 4KB addition into a separate statement and expand the comment. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_selftest: Clean up a few comments and messagesSimon Glass
Fix the 'amp' typo, expand on what 'steps' is and fix a few other minor things. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25vsprintf: Handle NULL with %pUSimon Glass
At present a NULL pointer passed to printf for a %pU argument will cause U-Boot to access memory at 0. Fix this by adding a check, and print "(null)" instead. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Alexander Graf <agraf@suse.de> [agraf: s/(null)/<NULL>/] Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: Expose U-Boot addresses in memory map for sandboxAlexander Graf
We currently expose host addresses in the EFI memory map. That can be bad if we ever want to use sandbox to boot strap a real kernel, because then the kernel would fetch its memory table from our host virtual address map. But to make that use case work, we would need to have full control over the address space the EFI application sees. So let's expose only U-Boot addresses to the guest until we get to the point of allocation. EFI's allocation functions are fun - they can take U-Boot addresses as input values for hints and return host addresses as allocation results through the same uint64_t * parameter. So we need to be extra careful on what to pass in when. With this patch I am successfully able to run the efi selftest suite as well as grub.efi on aarch64. Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi: sandbox: Adjust memory usage for sandboxSimon Glass
With sandbox the U-Boot code is not mapped into the sandbox memory range so does not need to be excluded when allocating EFI memory. Update the EFI memory init code to take account of that. Signed-off-by: Simon Glass <sjg@chromium.org> [agraf: Remove map_sysmem() call and header reference] Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: Use common elf.h reloc definesAlexander Graf
Now that elf.h contains relocation defines for all architectures we care about, let's just include it unconditionally and refer to the defines. Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25elf: Move x86 reloc defines to common elf.hAlexander Graf
We need to know about x86 relocation definitions even in cases where we don't officially build against the x86 target, such as with sandbox. So let's move the x86 definitions into the common elf header, where all other architectures already have them. Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: Move to compiler based target architecture determinationAlexander Graf
Thanks to CONFIG_SANDBOX, we can not rely on config options to tell us what CPU architecture we're running on. The compiler however does know that, so let's just move the ifdefs over to compiler based defines rather than kconfig based options. Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: Introduce ms abi vararg helpersAlexander Graf
Varargs differ between sysv and ms abi. On x86_64 we have to follow the ms abi though, so we also need to make sure we use x86_64 varargs helpers. This patch introduces generic efi vararg helpers that adhere to the respective EFI ABI. That way we can deal with them properly from efi loader code and properly interpret variable arguments. This fixes the InstallMultipleProtocolInterfaces tests in the efi selftests on x86_64 for me. Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: Disable miniapps on sandboxAlexander Graf
In the sandbox environment we can not easily build efi stub binaries right now, so let's disable the respective test cases for the efi selftest suite. Signed-off-by: Alexander Graf <agraf@suse.de> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: efi_allocate_pages is too restrictiveHeinrich Schuchardt
When running on the sandbox the stack is not necessarily at a higher memory address than the highest free memory. There is no reason why the checking of the highest memory address should be more restrictive for EFI_ALLOCATE_ANY_PAGES than for EFI_ALLOCATE_MAX_ADDRESS. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> [agraf: use -1ULL instead] Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: Allow SMBIOS tables in highmemAlexander Graf
We try hard to make sure that SMBIOS tables live in the lower 32bit. However, when we can not find any space at all there, we should not error out but instead just fall back to map them in the full address space instead. This can for example happen on systems that do not have any RAM mapped in the lower 32bits of address space. In that case having any SMBIOS tables at all is better than having none. Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: Use map_sysmem() in bootefi commandAlexander Graf
The bootefi command gets a few addresses as values passed in. In sandbox, these values are in U-Boot address space, so we need to make sure we explicitly call map_sysmem() on them to be able to access them. Signed-off-by: Alexander Graf <agraf@suse.de> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: Use compiler constants for image loaderAlexander Graf
The EFI image loader tries to determine which target architecture we're working with to only load PE binaries that match. So far this has worked based on CONFIG defines, because the target CPU was always indicated by a config define. With sandbox however, this is not longer true as all sandbox targets only encompass a single CONFIG option and so we need to use compiler defines to determine the CPU architecture. Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25Revert "efi_loader: no support for ARMV7_NONSEC=y"Mark Kettenis
This reverts commit c524997acb3d322e1bbd36c06ad02ef589705e7c. Booting ARMv7 in non-secure mode using bootefi works now. Signed-off-by: Mark Kettenis <kettenis@openbsd.org> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25ARM: HYP/non-sec: enable ARMV7_LPAE if HYP mode is supportedMark Kettenis
ARMV7_LPAE is required in order to enable the MMU in HYP mode. And we really want to enable the MMU in HYP mode such that we can enable the the caches. Otherwise U-Boot code (such as the EFI implementation) that runs in HYP mode will run at a snils pace. Signed-off-by: Mark Kettenis <kettenis@openbsd.org> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: ARM: don't attempt to enter non-secure mode twiceMark Kettenis
Multiple EFI binaries may be executed in sequence. So if we already are in non-secure mode after running the first one we should skip the switching code since it no longer works once we're non-secure. Signed-off-by: Mark Kettenis <kettenis@openbsd.org> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_loader: ARM: run EFI payloads non-secureMark Kettenis
If desired (and possible) switch into HYP mode or non-secure SVC mode before calling the entry point of an EFI application. This allows U-Boot to provide a usable PSCI implementation and makes it possible to boot kernels into hypervisor mode using an EFI bootloader. Based on diffs from Heinrich Schuchardt and Alexander Graf. Signed-off-by: Mark Kettenis <kettenis@openbsd.org> [agraf: Fix indentation] Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25ARM: HYP/non-sec: migrate stackMark Kettenis
The current code that switches into HYP mode doesn't bother to set up a stack for HYP mode. This doesn't work for EFI applications as they expect a usable stack. Fix this by migrating the stack pointer from SP_svc to SP_hyp while in Monitor mode. This restores the stack pointer when we drop into HYP mode. Signed-off-by: Mark Kettenis <kettenis@openbsd.org> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-25efi_selftest: update .gitignoreHeinrich Schuchardt
The following generated files should be ignored by git: efi_miniapp_file_image_exit.h efi_miniapp_file_image_return.h *.so files are normally deleted during the build but should be ignored too. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
2018-07-24Merge branch 'master' of git://git.denx.de/u-boot-uniphierTom Rini
2018-07-25ARM: uniphier: enable distro bootMasahiro Yamada
Switch to the distro boot for UniPhier platform. - Remove the environment vairalbes used to load images from raw block devices. - Keep the command to download images via tftp. This will be useful to boot the kernel when no valid kernel image is ready yet in the file system. - Use root.cpio.gz instead of root.cpio.uboot because we always know the file size of the init ramdisk; it is loaded via either a file system or network. - Rename fit_addr_r to kernel_addr_r, which the distro command checks to get the load address of FIT image. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-07-25ARM: uniphier: enable MTD partition and UBIMasahiro Yamada
Enable "mtdparts" and "ubi" commands for uniphier_v8_defconfig to use UBI on NAND devices. Enable only "mtdparts" for uniphier_{v7,ld4_sld8}_defconfig because enabling UBI would increase 170KB, which would be memory footprint problem. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-07-25ARM: uniphier: support fdt_fixup_mtdpartsMasahiro Yamada
Propagate the "mtdparts" environment variable to the DT passed in to OS. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-07-25ARM: uniphier: split ft_board_setup() out to a separate fileMasahiro Yamada
Prepare to add more fdt fixup code. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-07-25ARM: uniphier: clean-up ft_board_setup()Masahiro Yamada
The 'bd' is passed in ft_board_setup() as the second argument. Replace 'gd->bd' with 'bd'. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-07-25board: constify struct node_info arrayMasahiro Yamada
Add 'const' (also 'static' in some places) to struct node_info arrays to save memory footprint. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-07-25fdt_support: make fdt_fixup_mtdparts() prototype more specificMasahiro Yamada
The second argument of fdt_fixup_mtdparts() is an opaque pointer, 'void *node_info', hence callers can pass any pointer. Obviously, fdt_fixup_mtdparts() expects 'struct node_info *' otherwise, it crashes run-time. Change the prototype so that it is compile-time checked. Also, add 'const' qualifier to it so that callers can constify the struct node_info arrays. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2018-07-25mtd: nand: denali: correct buffer alignment for DMA transferMasahiro Yamada
The NAND framework makes sure to pass in the buffer with at least chip->buf_align alignment. Currently, the Denali NAND driver only requests 16 byte alignment. This causes unaligned cache operations for the DMA transfer. [Error Example] => nand read 81000010 0 1000 NAND read: device 0 offset 0x0, size 0x1000 CACHE: Misaligned operation at range [81000010, 81001010] CACHE: Misaligned operation at range [81000010, 81001010] CACHE: Misaligned operation at range [81000010, 81001010] CACHE: Misaligned operation at range [81000010, 81001010] 4096 bytes read: OK Reported-by: Marek Vasut <marex@denx.de> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-07-25kconfig: Avoid format overflow warning from GCC 8.1Luis Araneda
cherry-pick kernel commit 2ae89c7 (2018-06-05) to avoid warnings when compiling with GCC 8.1 In file included from scripts/kconfig/zconf.tab.c:2486: scripts/kconfig/confdata.c: In function ‘conf_write’: scripts/kconfig/confdata.c:771:22: warning: ‘%s’ directive writing likely 7 or more bytes into a region of size between 1 and 4097 [-Wformat-overflow=] sprintf(newname, "%s%s", dirname, basename); ^~ scripts/kconfig/confdata.c:771:19: note: assuming directive output of 7 bytes sprintf(newname, "%s%s", dirname, basename); ^~~~~~ scripts/kconfig/confdata.c:771:2: note: ‘sprintf’ output 1 or more bytes (assuming 4104) into a destination of size 4097 sprintf(newname, "%s%s", dirname, basename); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scripts/kconfig/confdata.c:774:23: warning: ‘.tmpconfig.’ directive writing 11 bytes into a region of size between 1 and 4097 [-Wformat-overflow=] sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); ^~~~~~~~~~~ scripts/kconfig/confdata.c:774:3: note: ‘sprintf’ output between 13 and 4119 bytes into a destination of size 4097 sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Luis Araneda <luaraneda@gmail.com> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2018-07-25ARM: rmobile: gen2: Enable ACTLR[0] (Enable invalidates of BTB) to ↵Marek Vasut
facilitate CVE_2017-5715 WA in OS Enable CVE_2017_5715 mitigation on CPU0 on R-Car H2, M2W, M2N, V2H, which all contain Cortex-A15 cores. R-Car E2 contains only Cortex-A7 cores and is not affected. Without this enabled, Linux kernel reports: CPU0: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable With this enabled, Linux kernel reports: CPU0: Spectre v2: using ICIALLU workaround NOTE: This by itself does not enable the workaround for other CPUs than CPU0 and may require additional kernel patches for the other CPUs in SMP configurations. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Nishanth Menon <nm@ti.com> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
2018-07-25ARM: dts: socfpga: Adjust NAND register layout on Arria10Marek Vasut
Adjust the NAND register size on Arria10 to reflect reality. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Chin Liang See <chin.liang.see@intel.com> Cc: Dinh Nguyen <dinguyen@kernel.org>
2018-07-25ARM: socfpga: Init missing security policies on A10Marek Vasut
The Arria10 requires proper configuration of the NOC firewall, otherwise the access to certain areas of the LWHPS bridge fails in Linux. Add the missing setup. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Chin Liang See <chin.liang.see@intel.com> Cc: Dinh Nguyen <dinguyen@kernel.org>
2018-07-25ARM: socfpga: Assure correct CPACR configurationMarek Vasut
Make sure the ARM CPACR register is zeroed out, this is mandatory on Arria10. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Chin Liang See <chin.liang.see@intel.com> Cc: Dinh Nguyen <dinguyen@kernel.org>
2018-07-25arm: socfpga: Fixes: Rename CONFIG_SPL_RESET_SUPPORT to CONFIG_SPL_DM_RESETLey Foon Tan
Commit bfc6bae8fa1f2d8a9c51548767b02f1a1e0ffe52 This commit rename CONFIG_SPL_RESET_SUPPORT to CONFIG_SPL_DM_RESET. Update with new CONFIG name and enable CONFIG_SPL_DM_RESET when CONFIG_DM_RESET is enabled. Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com> Acked-by: Marek Vasut <marex@denx.de>
2018-07-24mailmap: Fix broken email from fit_image.cMichal Simek
The patch "tools/mkimage: Fix DTC run command to handle file names with space" (sha1: a6e9810495bc929b6beafb88f557cdaadf87fc83) contains comma in name which is confusing patman. Fix it by defining Mirza's email in mailmap. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
2018-07-24configs: am3517-evm: Setup NAND bootingAdam Ford
The NAND offsets for the kernel and U-Boot were missing. This patch sets up the offsets so the AM3517-EVM can boot from NAND when DIP switches S7:1 and S7:4 are to the OFF position Signed-off-by: Adam Ford <aford173@gmail.com>
2018-07-24ARM: AM3517-EVM: Update MaintainerAdam Ford
The previous e-mail pointing to Vaibhav Hiremath <hvaibhav@ti.com> is bouncing and has for some time. This updates it to myself and I work for Logic PD the manufacturer of the AM3517-SOM and EVM Signed-off-by: Adam Ford <aford173@gmail.com>
2018-07-24config: remove unused CONFIG_SPL_RELOC_STACK_SIZEHeinrich Schuchardt
Symbol CONFIG_SPL_RELOC_STACK_SIZE is not used anywhere. So remove it. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
2018-07-24doc: Move device tree bindings documentation to doc/device-tree-bindingsBreno Lima
Currently the U-Boot project contains 2 documentation directories: - doc/ - Documentation/ The Documentation directory only contains device tree bindings related content, so move the 3 files to doc/device-tree-bindings/. Signed-off-by: Breno Lima <breno.lima@nxp.com>
2018-07-24mkimage: fit_image: Use macros from image.hMichal Simek
There is no reason not to use macros which are already defined. It is also much easier for grepping. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2018-07-24omap3: beagle: re-enable EFI support after the following commit removed it ↵Guillaume GARDET
by mistake: commit d233ccb1d84b901f7e23e6d9b4f2c6a57198b23b ARM: omap3: beagle: Enable DM_SERIAL, update distro usage and NAND layout Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr> Cc: Derald D. Woods <woods.technical@gmail.com> Cc: Tom Rini <trini@konsulko.com>
2018-07-24spl: remove dependency to "asm/utils.h"Paulo Zaneti
Header file "asm/utils.h" is not required to compile "spl_ymodem.c". So, removing this dependency allows other architectures to use this booting device as "asm/utils.h" is only present in "arm" architecture. Signed-off-by: Paulo Zaneti <paulo.zaneti@datacom.ind.br>
2018-07-24hashtable: Fix length calculation in hexport_rZubair Lutfullah Kakakhel
The length returned by hexport_r has a few redundant characters. This appears as NULL characters at the end so seems harmless. Remove the surplus counts in two places totlen += strlen(ep->key) + 2; I'm guessing the +2 here is for = and sep char. But there is another totlen += 2; line that does that. size = totletn + 1; Doesn't make sense and isn't justified with any comment. Signed-off-by: Zubair Lutfullah Kakakhel <zubair@resin.io>
2018-07-24avb2.0: use block API in AVB opsIgor Opaniuk
Use blk_dread()/blk_dwrite() in mmc_read()/mmc_write() AVB operation implementations. This fixes compilation issues when CONFIG_BLK is enabled. Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org> Tested-by: Eugeniu Rosca <rosca.eugeniu@gmail.com>
2018-07-24avb2.0: add proper dependenciesIgor Opaniuk
1. Since libavb library alone is highly portable, introduce dedicated Kconfig symbol for AVB bootloader-dependent operations, so it's possible to build libavb separately. AVB bootloader-dependent operations include: * Helpers to process strings in order to build OS bootargs. * Helpers to access MMC, similar to drivers/fastboot/fb_mmc.c. * Helpers to alloc/init/free avb ops. 2. Add CONFIG_FASTBOOT dependency, as fastboot buffer is re-used in partition verification operations. Reported-by: Eugeniu Rosca <rosca.eugeniu@gmail.com> Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org> Reviewed-by: Eugeniu Rosca <rosca.eugeniu@gmail.com> Tested-by: Eugeniu Rosca <rosca.eugeniu@gmail.com>