- Dec 10, 2019
-
-
Lukas Auer authored
At the start, OpenSBI relocates itself to its link address. If the link address ranges of U-Boot SPL and OpenSBI overlap, the relocation can lead to code corruption if a hart is still running U-Boot SPL during relocation. To avoid this problem, the main hart is specified as the preferred boot hart to perform the relocation. This fixes the code corruption problems based on the assumption that since the main hart schedules the secondary harts to enter OpenSBI, it will be the last to enter OpenSBI. However it was reported that this assumption is not always correct. To make sure the assumption always holds true, wait for all secondary harts to acknowledge the call-function request before entering OpenSBI on the main hart. Reported-by:
Rick Chen <rick@andestech.com> Signed-off-by:
Lukas Auer <lukas.auer@aisec.fraunhofer.de> Reviewed-by:
Rick Chen <rick@andestech.com> Tested-by:
Rick Chen <rick@andestech.com> Reviewed-by:
Anup Patel <anup.patel@wdc.com>
-
Lukas Auer authored
Add a wait option to smp_call_function() to wait for the secondary harts to acknowledge the call-function request. The request is considered to be acknowledged once each secondary hart has cleared the corresponding IPI. As part of the call-function request, the secondary harts invalidate the instruction cache after clearing the IPI. This adds a delay between acknowledgment (clear IPI) and fulfillment (call function) of the request. We want to use the acknowledgment to be able to judge when the request has been completed. Remove the delay by clearing the IPI after cache invalidation and just before calling the function from the request. Signed-off-by:
Lukas Auer <lukas.auer@aisec.fraunhofer.de> Reviewed-by:
Rick Chen <rick@andestech.com> Tested-by:
Rick Chen <rick@andestech.com> Reviewed-by:
Anup Patel <anup.patel@wdc.com>
-
Lukas Auer authored
Add the function riscv_get_ipi() for reading the pending status of IPIs. The supported controllers are Andes' Platform Level Interrupt Controller (PLIC), the Supervisor Binary Interface (SBI), and SiFive's Core Local Interruptor (CLINT). Signed-off-by:
Lukas Auer <lukas.auer@aisec.fraunhofer.de> Reviewed-by:
Rick Chen <rick@andestech.com>
-
Lukas Auer authored
OpenSBI uses a relocation lottery to determine the hart to relocate OpenSBI to its link address. In the U-Boot SPL boot flow, the main hart schedules the secondary harts to enter OpenSBI before doing so itself. One of the secondary harts will therefore always be the winner of the relocation lottery. This is problematic if the link address ranges of OpenSBI and U-Boot SPL overlap. OpenSBI will be relocated and therefore overwrite U-Boot SPL while some harts may still run it, leading to code corruption. Avoid this problem by specifying the main hart as the preferred boot hart to perform the OpenSBI relocation. The main hart will be the last hart to enter OpenSBI, relocation can therefore occur safely. The boot hart field was added to version 2 of the OpenSBI FW_DYNAMIC info structure. The header file include/opensbi.h is synchronized with include/sbi/fw_dynamic.h from the OpenSBI project to update the info structure. The header file is recent as of commit 7a13beb21326 ("firmware: Add preferred boot HART field in struct fw_dynamic_info"). Reported-by:
Rick Chen <rick@andestech.com> Suggested-by:
Anup Patel <Anup.Patel@wdc.com> Signed-off-by:
Lukas Auer <lukas.auer@aisec.fraunhofer.de> Reviewed-by:
Rick Chen <rick@andestech.com> Tested-by:
Rick Chen <rick@andestech.com> Reviewed-by:
Anup Patel <anup.patel@wdc.com>
-
Rick Chen authored
Add descriptions about U-Boot SPL feature and how to build and run. Signed-off-by:
Rick Chen <rick@andestech.com> Cc: KC Lin <kclin@andestech.com> Cc: Alan Kao <alankao@andestech.com>
-
Rick Chen authored
Those are required for cfi-flash driver to get correct address information. Also modify size description correctly. Signed-off-by:
Rick Chen <rick@andestech.com> Cc: KC Lin <kclin@andestech.com> Cc: Alan Kao <alankao@andestech.com>
-
Rick Chen authored
Add CPU2 and CPU3 information in cpus node to support four cores SMP booting. Signed-off-by:
Rick Chen <rick@andestech.com> Cc: KC Lin <kclin@andestech.com> Cc: Alan Kao <alankao@andestech.com>
-
Rick Chen authored
For RV64, it will use sd instruction to clear t0 register, and the increament will be 8 bytes. So if the difference between__bss_strat and __bss_end was not 8 bytes aligned, the clear bss loop will overflow and acks like system hang. Signed-off-by:
Rick Chen <rick@andestech.com> Cc: KC Lin <kclin@andestech.com> Cc: Alan Kao <alankao@andestech.com>
-
Rick Chen authored
When ax25-ae350 try to enable v5l2 cache driver in SPL configuration, it need this option for cache support in SPL. Signed-off-by:
Rick Chen <rick@andestech.com> Cc: KC Lin <kclin@andestech.com> Cc: Alan Kao <alankao@andestech.com>
-
Rick Chen authored
The mcache_ctl csr only can be manipulated in M mode. Add SPL_RISCV_MMODE for U-Boot SPL to control cache operation. Signed-off-by:
Rick Chen <rick@andestech.com> Cc: KC Lin <kclin@andestech.com> Cc: Alan Kao <alankao@andestech.com>
-
Rick Chen authored
Fix two wrong settings of andes plic driver as below: 1. Fix wrong pending register base definition. 2. Declaring the en variable in enable_ipi() as unsigned int instead of int can help to fix wrong plic enabling setting in RV64. Signed-off-by:
Rick Chen <rick@andestech.com> Cc: KC Lin <kclin@andestech.com> Cc: Alan Kao <alankao@andestech.com>
-
Rick Chen authored
To get memory size from device tree instead of get_ram_size(). This can avoid memory access fault in U-Boot proper after PMP configurations in OpenSBI. Signed-off-by:
Rick Chen <rick@andestech.com> Cc: KC Lin <kclin@andestech.com> Cc: Alan Kao <alankao@andestech.com>
-
Rick Chen authored
This patch provides four configurations which can support U-Boot SPL to boot from RAM or FLASH and then boot FIT image including OpenSBI FW_DYNAMIC firmware and U-Boot proper images from RAM or MMC boot devices. With ae350_rv[32|64]_spl_defconfigs: U-Boot SPL will be loaded by gdb or FSBL and runs in RAM in machine mode and then load FIT image from RAM device on AE350. With ae350_rv[32|64]_spl_xip_defconfigs: U-Boot SPL can be burned into SPI flash and run in flash in machine mode and then load FIT image from SPI flash or MMC device on AE350. Signed-off-by:
Rick Chen <rick@andestech.com> Cc: KC Lin <kclin@andestech.com> Cc: Alan Kao <alankao@andestech.com>
-
Rick Chen authored
The U-Boot SPL will boot in M mode and load the FIT image which include OpenSBI and U-Boot proper images. After loading progress, it will jump to OpenSBI first and then U-Boot proper which will run in S mode. Also remove V5L2_CACHE due to U-Boot SPL code size consideration. Without this concern, it can be enable manually for performance. Signed-off-by:
Rick Chen <rick@andestech.com> Cc: KC Lin <kclin@andestech.com> Cc: Alan Kao <alankao@andestech.com>
-
Rick Chen authored
This would help to make the necessary changes in drivers and device trees in U-Boot tree itself. This feature would also be helpful to not pass dtb during opensbi builds. Signed-off-by:
Jagan Teki <jagan@amarulasolutions.com> Reviewed-by:
Bin Meng <bmeng.cn@gmail.com> Reviewed-by:
Anup Patel <anup.patel@wdc.com> Signed-off-by:
Rick Chen <rick@andestech.com>
-
Jagan Teki authored
Sync the hifive-unleashed-a00 dts from Linux with below commit details: commit <2993c9b04e616df0848b655d7202a707a70fc876> ("riscv: dts: HiFive Unleashed: add default chosen/stdout-path") Idea is to periodically sync the dts from Linux instead of tweaking internal changes one after another, so better not add any intermediate changes in between. This would help to maintain the dts files easy and meaningful since we are reusing device tree files from Linux. Signed-off-by:
Jagan Teki <jagan@amarulasolutions.com> Reviewed-by:
Bin Meng <bmeng.cn@gmail.com> Reviewed-by:
Anup Patel <anup.patel@wdc.com>
-
Lukas Auer authored
This fixes a problem, where booting Linux using distro boot will sometimes lead to an invalid instruction exception on the main hart. The secondary harts are not affected and boot Linux successfully. The root cause of this problem is a stack overflow on the main hart. With distro boot, the current default stack size of 8KiB on RISC-V is not sufficient and will cause a stack overflow. The stacks are allocated sequentially. In the case of a stack overflow the stack of the main hart can reach into that of another hart and be corrupted. The stack overflow previously did not cause any problems, because only stack frames, which are not used anymore since the hart enters Linux, were corrupted. Starting with GCC 9, the stack usage has decreased. Now, only the most recent stack frame overflows into the stack of a secondary hart and is corrupted. The illegal instruction exception is caused by the secondary hart overwriting the return address in the stack frame of the main hart with an address that does not include valid code. Increase the default stack size of each hart to 16KiB to avoid this problem. Reported-by:
Aurelien Jarno <aurelien@aurel32.net> Signed-off-by:
Lukas Auer <lukas.auer@aisec.fraunhofer.de> Tested-by:
David Abdurachmanov <david.abdurachmanov@sifive.com> Tested-by:
Aurelien Jarno <aurelien@aurel32.net> Reviewed-by:
Rick Chen <rick@andestech.com>
-
- Dec 09, 2019
-
-
Heinrich Schuchardt authored
In GCC 9 support for the Armv5 and Armv5E architectures (which have no known implementations) has been removed, cf. https://gcc.gnu.org/gcc-9/changes.html Commit 16540d07 ("arm: fix -march for ARM11") changed the value of the compiler flag from -march=armv5 and -march=armv5t into -march=armv6 for ARM11. The values prior to this patch were: arch-$(CONFIG_CPU_ARM1136) =-march=armv5 arch-$(CONFIG_CPU_ARM1176) =-march=armv5t The change lead to a regression with the Raspberry Pi Zero W not booting anymore. Use -march=armv5t both for ARM1136 and ARM1176. Fixes: 16540d07 ("arm: fix -march for ARM11") Signed-off-by:
Heinrich Schuchardt <xypron.glpk@gmx.de> Tested-by:
Joris Offouga <offougajoris@gmail.com>
-
Heinrich Schuchardt authored
unsigned char should be called uchar and not unchar. This fixes a build error in lib/crypto/x509_cert_parser.c. Signed-off-by:
Heinrich Schuchardt <xypron.glpk@gmx.de>
-
https://gitlab.denx.de/u-boot/custodians/u-boot-imxTom Rini authored
Fixes for 2020.01 ----------------- - imx8qxp_mek: increase buffer sizes and args number - Fixes for imx7ulp - imx8mm: Fix the first root clock in imx8mm_ahb_sels[] - colibri_imx7: reserve DDR memory for Cortex-M4 - vining2000: fixes and convert to ethernet DM - imx8m: fix rom version check to unbreak some B0 chips - tbs2910: Disable VxWorks image booting support
-
Patrick Wildt authored
Recently the version check was improved to be able to determine that we're running on SoC revision 2.1. A check for B0 was tightened so that it now must equal 0x20 instead of being bigger than 0x20. On some B0 chips the value returned is 0x1020 instead of 0x20. This means even though it's B0, the check will fail and code relying on the correct chip revision will make wrong decisions. There is no documentation of those bits, but it seems that NXP always uses a byte to encode the revision. Thus remove the upper bits to fix the regression. Signed-off-by:
Patrick Wildt <patrick@blueri.se>
-
- Dec 08, 2019
-
-
https://gitlab.denx.de/u-boot/custodians/u-boot-x86Tom Rini authored
- 16-bit start up codes clean up
-
Masahiro Yamada authored
You can directly specify the label as the operand for ljmp. This commit saves 4-byte code. Signed-off-by:
Masahiro Yamada <masahiroy@kernel.org> Reviewed-by:
Bin Meng <bmeng.cn@gmail.com> Tested-by:
Bin Meng <bmeng.cn@gmail.com> [bmeng: fixed the gas warning] Signed-off-by:
Bin Meng <bmeng.cn@gmail.com>
-
Masahiro Yamada authored
This file defines 'a32' and 'o32' macros to avoid magic numbers of operand/address-size prefixing. GAS supports 'data32' and 'addr32' for that purpose. Signed-off-by:
Masahiro Yamada <masahiroy@kernel.org> Reviewed-by:
Bin Meng <bmeng.cn@gmail.com> Tested-by:
Bin Meng <bmeng.cn@gmail.com>
-
- Dec 06, 2019
-
-
Tom Rini authored
- Allow for the sysboot command, which is used to parse extlinux.conf files to be used without PXE support. There is no functional change here aside from fixing distro boot in a few cases where we actually lacked the ability to parse the extlinux.conf file - Add the x509/pkcs7 parsers from Linux, a pre-requisite to EFI Secure Boot support.
-
Tom Rini authored
With the change to make tools/version.h a file we need to make sure that the output directory exists first otherwise we will get a build failure. Reported-by:
Peter Robinson <pbrobinson@gmail.com> Tested-by:
Peter Robinson <pbrobinson@gmail.com> Fixes: 4d90f6cd ("tools: Avoid creating symbolic links for tools/version.h") Signed-off-by:
Tom Rini <trini@konsulko.com> Reviewed-by:
Bin Meng <bmeng.cn@gmail.com> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
AKASHI Takahiro authored
This test will exercise asn1 compiler as well as asn1 decoder functions via various parsers. Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
Imported from linux kernel v5.3: pkcs7.asn1 without changes pkcs7.h with changes marked as __UBOOT__ pkcs7_parser.h without changes pkcs7_parser.c with changes marked as __UBOOT__ Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
Imported from linux kernel v5.3: x509.asn1 without changes x509_akid.asn1 without changes x509_parser.h without changes x509_cert_parser.c with changes marked as __UBOOT__ x509_public_key.c with changes marked as __UBOOT__ Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
Imported from linux kernel v5.3: rsapubkey.asn1 without changes rsa.h without changes rsa_helper.c with changes marked as __UBOOT__ Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
Imported from linux kernel v5.3: asymmetric-type.h with changes marked as __UBOOT__ asymmetric_type.c with changes marked as __UBOOT__ public_key.h with changes marked as __UBOOT__ public_key.c with changes marked as __UBOOT__ Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
Imported from linux kernel v5.3: build_OID_registry without changes oid_registry.h without changes oid_registry.c with changes marked as __UBOOT__ Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
This document gives a brief description about ASN1 compiler as well as ASN1 decoder. Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
Imported from linux kernel v5.3: lib/asn1_decoder.c with changes marked as __UBOOT__ Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
This rule will be used to build x509 and pkcs7 parsers. Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
Imported from linux kernel v5.3: asn1.h without changes asn1_ber_bytecode.h without changes asn1_decoder.h without changes asn1_compiler.c without changes This host command will be used to create a ASN1 parser, for example, for pkcs7 messages or x509 certificates. More specifically, it will generate *byte code* which will be interpreted by asn1 decoder library. Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org> Reviewed-by:
Heinrich Schuchardt <xypron.glpk@gmx.de>
-
AKASHI Takahiro authored
Without this commit, time.h possibly causes a build error as asctime_r() uses sprintf(). Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
Adding "printk.h" will help improve portability from linux kernel code (in my case, lib/asn1_decoder.c and others) where printf and pr_* variant functions are used. Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
This function will be used in lib/crypto/x509_cert_parser.c, which will also be imported from linux code in a later commit. Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-
AKASHI Takahiro authored
In the next commit, rtc_mktime(), for compatibility with linux, will be implemented using rtc_mktime(), which is no longer drivers/rtc specific. So move this file under lib/. Signed-off-by:
AKASHI Takahiro <takahiro.akashi@linaro.org>
-