Import 80d60e7 from yoctoproject.org meta-arm
To support ARMv8 SoCs.
meta-arm has several patch files. Since they are maintained by the
upstream meta-arm community, add meta-arm to the ignore list in
run-repotest.
Change-Id: Ia87a2e947bbabd347d256eccc47a343e1c885479
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0001-cmd-load-add-load-command-for-memory-mapped.patch b/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0001-cmd-load-add-load-command-for-memory-mapped.patch
new file mode 100644
index 0000000..d0ae964
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0001-cmd-load-add-load-command-for-memory-mapped.patch
@@ -0,0 +1,185 @@
+From c047b15fba9da36616bc9a346d9fe4d76e7ca4b2 Mon Sep 17 00:00:00 2001
+From: Rui Miguel Silva <rui.silva@linaro.org>
+Date: Thu, 24 Jun 2021 09:25:00 +0100
+Subject: [PATCH 01/27] cmd: load: add load command for memory mapped
+
+cp.b is used a lot as a way to load binaries to memory and execute
+them, however we may need to integrate this with the efi subsystem to
+set it up as a bootdev.
+
+So, introduce a loadm command that will be consistent with the other
+loadX commands and will call the efi API's.
+
+ex: loadm $kernel_addr $kernel_addr_r $kernel_size
+
+with this a kernel with CONFIG_EFI_STUB enabled will be loaded and
+then subsequently booted with bootefi command.
+
+Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
+---
+ README | 1 +
+ cmd/Kconfig | 6 ++++
+ cmd/bootefi.c | 12 ++++++++
+ cmd/load.c | 48 ++++++++++++++++++++++++++++++++
+ include/efi_loader.h | 2 ++
+ lib/efi_loader/efi_device_path.c | 9 ++++++
+ 6 files changed, 78 insertions(+)
+
+diff --git a/README b/README
+index f51f392111f9..049bcd108980 100644
+--- a/README
++++ b/README
+@@ -2760,6 +2760,7 @@ rarpboot- boot image via network using RARP/TFTP protocol
+ diskboot- boot from IDE devicebootd - boot default, i.e., run 'bootcmd'
+ loads - load S-Record file over serial line
+ loadb - load binary file over serial line (kermit mode)
++loadm - load binary blob from source address to destination address
+ md - memory display
+ mm - memory modify (auto-incrementing)
+ nm - memory modify (constant address)
+diff --git a/cmd/Kconfig b/cmd/Kconfig
+index 5e25e45fd288..ff50102a89c7 100644
+--- a/cmd/Kconfig
++++ b/cmd/Kconfig
+@@ -1076,6 +1076,12 @@ config CMD_LOADB
+ help
+ Load a binary file over serial line.
+
++config CMD_LOADM
++ bool "loadm"
++ default y
++ help
++ Load a binary over memory mapped.
++
+ config CMD_LOADS
+ bool "loads"
+ default y
+diff --git a/cmd/bootefi.c b/cmd/bootefi.c
+index 53d9f0e0dcca..8d492ea9e70c 100644
+--- a/cmd/bootefi.c
++++ b/cmd/bootefi.c
+@@ -34,6 +34,18 @@ static struct efi_device_path *bootefi_device_path;
+ static void *image_addr;
+ static size_t image_size;
+
++/**
++ * efi_get_image_parameters() - return image parameters
++ *
++ * @img_addr: address of loaded image in memory
++ * @img_size: size of loaded image
++ */
++void efi_get_image_parameters(void **img_addr, size_t *img_size)
++{
++ *img_addr = image_addr;
++ *img_size = image_size;
++}
++
+ /**
+ * efi_clear_bootdev() - clear boot device
+ */
+diff --git a/cmd/load.c b/cmd/load.c
+index 7e4a552d90ef..1224a7f85bb3 100644
+--- a/cmd/load.c
++++ b/cmd/load.c
+@@ -1063,6 +1063,44 @@ static ulong load_serial_ymodem(ulong offset, int mode)
+
+ #endif
+
++#if defined(CONFIG_CMD_LOADM)
++static int do_load_memory_bin(struct cmd_tbl *cmdtp, int flag, int argc,
++ char *const argv[])
++{
++ ulong addr, dest, size;
++ void *src, *dst;
++
++ if (argc != 4)
++ return CMD_RET_USAGE;
++
++ addr = simple_strtoul(argv[1], NULL, 16);
++
++ dest = simple_strtoul(argv[2], NULL, 16);
++
++ size = simple_strtoul(argv[3], NULL, 16);
++
++ if (!size) {
++ printf("loadm: can not load zero bytes\n");
++ return 1;
++ }
++
++ src = map_sysmem(addr, size);
++ dst = map_sysmem(dest, size);
++
++ memcpy(dst, src, size);
++
++ unmap_sysmem(src);
++ unmap_sysmem(dst);
++
++ if (IS_ENABLED(CONFIG_CMD_BOOTEFI))
++ efi_set_bootdev("Mem", "", "", map_sysmem(dest, 0), size);
++
++ printf("loaded bin to memory: size: %lu\n", size);
++
++ return 0;
++}
++#endif
++
+ /* -------------------------------------------------------------------- */
+
+ #if defined(CONFIG_CMD_LOADS)
+@@ -1137,3 +1175,13 @@ U_BOOT_CMD(
+ );
+
+ #endif /* CONFIG_CMD_LOADB */
++
++#if defined(CONFIG_CMD_LOADM)
++U_BOOT_CMD(
++ loadm, 4, 0, do_load_memory_bin,
++ "load binary blob from source address to destination address",
++ "[src_addr] [dst_addr] [size]\n"
++ " - load a binary blob from one memory location to other"
++ " from src_addr to dst_addr by size bytes"
++);
++#endif /* CONFIG_CMD_LOADM */
+diff --git a/include/efi_loader.h b/include/efi_loader.h
+index af36639ec6a7..126db279dd3e 100644
+--- a/include/efi_loader.h
++++ b/include/efi_loader.h
+@@ -585,6 +585,8 @@ efi_status_t efi_load_pe(struct efi_loaded_image_obj *handle,
+ void efi_save_gd(void);
+ /* Call this to relocate the runtime section to an address space */
+ void efi_runtime_relocate(ulong offset, struct efi_mem_desc *map);
++/* Call this to get image parameters */
++void efi_get_image_parameters(void **img_addr, size_t *img_size);
+ /* Add a new object to the object list. */
+ void efi_add_handle(efi_handle_t obj);
+ /* Create handle */
+diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c
+index 0542aaae16c7..d8dc59b2c95c 100644
+--- a/lib/efi_loader/efi_device_path.c
++++ b/lib/efi_loader/efi_device_path.c
+@@ -1138,6 +1138,8 @@ efi_status_t efi_dp_from_name(const char *dev, const char *devnr,
+ {
+ struct blk_desc *desc = NULL;
+ struct disk_partition fs_partition;
++ size_t image_size;
++ void *image_addr;
+ int part = 0;
+ char *filename;
+ char *s;
+@@ -1153,6 +1155,13 @@ efi_status_t efi_dp_from_name(const char *dev, const char *devnr,
+ } else if (!strcmp(dev, "Uart")) {
+ if (device)
+ *device = efi_dp_from_uart();
++ } else if (!strcmp(dev, "Mem")) {
++ efi_get_image_parameters(&image_addr, &image_size);
++
++ if (device)
++ *device = efi_dp_from_mem(EFI_RESERVED_MEMORY_TYPE,
++ (uintptr_t)image_addr,
++ image_size);
+ } else {
+ part = blk_get_device_part_str(dev, devnr, &desc, &fs_partition,
+ 1);
+--
+2.30.2
+