diff options
author | Tom Rini <trini@konsulko.com> | 2024-04-18 08:29:35 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-04-18 08:29:35 -0600 |
commit | cdd20e3f66fe910da0545d3615decf511519b4a6 (patch) | |
tree | 9162980e2293b2a2405060f44529fe7a25cd0e1e /drivers/fastboot | |
parent | 3434b88d2c2fdad3cc947f9e9b03dabfdd3feb5c (diff) | |
download | u-boot-cdd20e3f66fe910da0545d3615decf511519b4a6.tar.gz u-boot-cdd20e3f66fe910da0545d3615decf511519b4a6.tar.bz2 u-boot-cdd20e3f66fe910da0545d3615decf511519b4a6.zip |
Revert "Merge patch series "pxe: Allow extlinux booting without CMDLINE enabled""
As reported by Jonas Karlman this series breaks booting on some AArch64
platforms with common use cases. For now the best path forward is to
revert the series.
This reverts commit 777c28460947371ada40868dc994dfe8537d7115, reversing
changes made to ab3453e7b12daef47b9e91da2a2a3d48615dc6fc.
Link: https://lore.kernel.org/u-boot/50dfa3d6-a1ca-4492-a3fc-8d8c56b40b43@kwiboo.se/
Signed-off-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'drivers/fastboot')
-rw-r--r-- | drivers/fastboot/Kconfig | 1 | ||||
-rw-r--r-- | drivers/fastboot/fb_command.c | 17 | ||||
-rw-r--r-- | drivers/fastboot/fb_common.c | 37 |
3 files changed, 29 insertions, 26 deletions
diff --git a/drivers/fastboot/Kconfig b/drivers/fastboot/Kconfig index d6e2be09cf..b9e51bde6a 100644 --- a/drivers/fastboot/Kconfig +++ b/drivers/fastboot/Kconfig @@ -1,4 +1,5 @@ menu "Fastboot support" + depends on CMDLINE config FASTBOOT bool diff --git a/drivers/fastboot/fb_command.c b/drivers/fastboot/fb_command.c index b8782bfa7f..f95f4e4ae1 100644 --- a/drivers/fastboot/fb_command.c +++ b/drivers/fastboot/fb_command.c @@ -11,7 +11,6 @@ #include <fastboot-internal.h> #include <fb_mmc.h> #include <fb_nand.h> -#include <mapmem.h> #include <part.h> #include <stdlib.h> #include <linux/printk.h> @@ -279,7 +278,6 @@ void fastboot_data_download(const void *fastboot_data, { #define BYTES_PER_DOT 0x20000 u32 pre_dot_num, now_dot_num; - void *buf; if (fastboot_data_len == 0 || (fastboot_bytes_received + fastboot_data_len) > @@ -289,10 +287,8 @@ void fastboot_data_download(const void *fastboot_data, return; } /* Download data to fastboot_buf_addr */ - buf = map_sysmem(fastboot_buf_addr, 0); - memcpy(buf + fastboot_bytes_received, + memcpy(fastboot_buf_addr + fastboot_bytes_received, fastboot_data, fastboot_data_len); - unmap_sysmem(buf); pre_dot_num = fastboot_bytes_received / BYTES_PER_DOT; fastboot_bytes_received += fastboot_data_len; @@ -335,16 +331,13 @@ void fastboot_data_complete(char *response) */ static void __maybe_unused flash(char *cmd_parameter, char *response) { - void *buf = map_sysmem(fastboot_buf_addr, 0); - if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_MMC)) - fastboot_mmc_flash_write(cmd_parameter, buf, image_size, - response); + fastboot_mmc_flash_write(cmd_parameter, fastboot_buf_addr, + image_size, response); if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_NAND)) - fastboot_nand_flash_write(cmd_parameter, buf, image_size, - response); - unmap_sysmem(buf); + fastboot_nand_flash_write(cmd_parameter, fastboot_buf_addr, + image_size, response); } /** diff --git a/drivers/fastboot/fb_common.c b/drivers/fastboot/fb_common.c index 595954542a..3576b06772 100644 --- a/drivers/fastboot/fb_common.c +++ b/drivers/fastboot/fb_common.c @@ -11,7 +11,6 @@ */ #include <bcb.h> -#include <bootm.h> #include <common.h> #include <command.h> #include <env.h> @@ -21,7 +20,7 @@ /** * fastboot_buf_addr - base address of the fastboot download buffer */ -ulong fastboot_buf_addr; +void *fastboot_buf_addr; /** * fastboot_buf_size - size of the fastboot download buffer @@ -143,19 +142,22 @@ void (*fastboot_get_progress_callback(void))(const char *) */ void fastboot_boot(void) { - char *s = NULL; + char *s; - if (IS_ENABLED(CONFIG_CMDLINE)) { - s = env_get("fastboot_bootcmd"); - if (s) - run_command(s, CMD_FLAG_ENV); - } + s = env_get("fastboot_bootcmd"); + if (s) { + run_command(s, CMD_FLAG_ENV); + } else if (IS_ENABLED(CONFIG_CMD_BOOTM)) { + static char boot_addr_start[20]; + static char *const bootm_args[] = { + "bootm", boot_addr_start, NULL + }; - if (!s && IS_ENABLED(CONFIG_BOOTM)) { - int ret; + snprintf(boot_addr_start, sizeof(boot_addr_start) - 1, + "0x%p", fastboot_buf_addr); + printf("Booting kernel at %s...\n\n\n", boot_addr_start); - printf("Booting kernel at %lx...\n\n\n", fastboot_buf_addr); - ret = bootm_boot_start(fastboot_buf_addr, NULL); + do_bootm(NULL, 0, 2, bootm_args); /* * This only happens if image is somehow faulty so we start @@ -212,9 +214,16 @@ void fastboot_set_progress_callback(void (*progress)(const char *msg)) fastboot_progress_callback = progress; } -void fastboot_init(ulong buf_addr, u32 buf_size) +/* + * fastboot_init() - initialise new fastboot protocol session + * + * @buf_addr: Pointer to download buffer, or NULL for default + * @buf_size: Size of download buffer, or zero for default + */ +void fastboot_init(void *buf_addr, u32 buf_size) { - fastboot_buf_addr = buf_addr ? buf_addr : CONFIG_FASTBOOT_BUF_ADDR; + fastboot_buf_addr = buf_addr ? buf_addr : + (void *)CONFIG_FASTBOOT_BUF_ADDR; fastboot_buf_size = buf_size ? buf_size : CONFIG_FASTBOOT_BUF_SIZE; fastboot_set_progress_callback(NULL); } |