diff --git a/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0032-arm-corstone1000-identify-which-bank-to-load-kernel.patch b/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0032-arm-corstone1000-identify-which-bank-to-load-kernel.patch new file mode 100644 index 00000000..80fc6d35 --- /dev/null +++ b/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0032-arm-corstone1000-identify-which-bank-to-load-kernel.patch @@ -0,0 +1,66 @@ +Upstream-Status: Pending [Not submitted to upstream yet] +Signed-off-by: Satish Kumar + +From abc455d29aa9c983c6af2fa75870a7ee95da2496 Mon Sep 17 00:00:00 2001 +From: Satish Kumar +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 +--- + 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 + diff --git a/meta-arm-bsp/recipes-bsp/u-boot/u-boot_%.bbappend b/meta-arm-bsp/recipes-bsp/u-boot/u-boot_%.bbappend index 5caddc77..2445525d 100644 --- a/meta-arm-bsp/recipes-bsp/u-boot/u-boot_%.bbappend +++ b/meta-arm-bsp/recipes-bsp/u-boot/u-boot_%.bbappend @@ -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 \ " #