1
0
mirror of https://git.yoctoproject.org/meta-arm synced 2026-05-08 05:09:56 +00:00

arm-bsp/u-boot: identify which bank to load kernel from

Secure enclave, based on the firmware update state of the
system, decides the boot bank. In this commit, u-boot
identifies the selected boot bank and loads the kernel
from it.

Change-Id: Ifcef126dc79c7808b30ef0319d83482d2d29fd13
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
Satish Kumar
2021-12-03 12:29:00 +00:00
committed by Jon Mason
parent a4a669cb61
commit 4121a1dc44
2 changed files with 67 additions and 0 deletions
@@ -0,0 +1,66 @@
Upstream-Status: Pending [Not submitted to upstream yet]
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
From abc455d29aa9c983c6af2fa75870a7ee95da2496 Mon Sep 17 00:00:00 2001
From: Satish Kumar <satish.kumar01@arm.com>
Date: Wed, 1 Dec 2021 19:17:57 +0000
Subject: [PATCH] arm: corstone1000: identify which bank to load kernel from
Secure enclave, based on the firmware update state of the
system, decides the boot bank. In this commit, u-boot
identifies the selected boot bank and loads the kernel
from it.
Signed-off-by: Satish Kumar <satish.kumar01@arm.com>
---
configs/corstone1000_defconfig | 2 +-
include/configs/corstone1000.h | 18 ++++++++++++++----
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/configs/corstone1000_defconfig b/configs/corstone1000_defconfig
index 0b9ead461b..3c00e13ceb 100644
--- a/configs/corstone1000_defconfig
+++ b/configs/corstone1000_defconfig
@@ -29,7 +29,7 @@ CONFIG_CMD_BOOTEFI_HELLO=y
CONFIG_CMD_NVEDIT_EFI=y
# CONFIG_CMD_LOADS is not set
CONFIG_CMD_USB=y
-# CONFIG_CMD_ITEST is not set
+CONFIG_CMD_ITEST=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_DHCP=y
# CONFIG_CMD_NFS is not set
diff --git a/include/configs/corstone1000.h b/include/configs/corstone1000.h
index baa0720fb5..7c6f66c891 100644
--- a/include/configs/corstone1000.h
+++ b/include/configs/corstone1000.h
@@ -97,12 +97,22 @@
BOOTENV \
"usb_pgood_delay=250\0" \
"fdt_addr_r=0x82000000\0" \
- "kernel_addr=0x083EE000\0" \
- "kernel_addr_r=0x88200000\0" \
+ "boot_bank_flag=0x08002000\0" \
+ "kernel_addr_bank_0=0x083EE000\0" \
+ "kernel_addr_bank_1=0x0936E000\0" \
+ "retrieve_kernel_load_addr=" \
+ "if itest.l *${boot_bank_flag} == 0; then " \
+ "setenv kernel_addr $kernel_addr_bank_0;" \
+ "else " \
+ "setenv kernel_addr $kernel_addr_bank_1;" \
+ "fi;" \
+ "\0" \
+ "kernel_addr_r=0x88200000\0" \
"fdt_high=0xffffffff\0"
#define CONFIG_BOOTCOMMAND \
- "echo Loading Kernel to memory ... ;" \
- "loadm $kernel_addr $kernel_addr_r 0xc00000;" \
+ "run retrieve_kernel_load_addr;" \
+ "echo Loading kernel from $kernel_addr to memory ... ;" \
+ "loadm $kernel_addr $kernel_addr_r 0xc00000;" \
"usb start; usb reset;" \
"run distro_bootcmd;" \
"bootefi $kernel_addr_r $fdtcontroladdr;"
--
2.17.1
@@ -41,6 +41,7 @@ SRC_URI:append:corstone1000 = " \
file://0029-corstone1000-set-CONFIG_PSCI_RESET.patch \
file://0030-arm-bsp-u-boot-corstone1000-Implement-autoboot-script.patch \
file://0031-corstone1000-change-base-address-of-kernel-in-the-fl.patch \
file://0032-arm-corstone1000-identify-which-bank-to-load-kernel.patch \
"
#