diff options
Diffstat (limited to 'boot/bootm.c')
-rw-r--r-- | boot/bootm.c | 80 |
1 files changed, 9 insertions, 71 deletions
diff --git a/boot/bootm.c b/boot/bootm.c index 8a1aac7515f..f5cbb10f0d1 100644 --- a/boot/bootm.c +++ b/boot/bootm.c @@ -146,7 +146,7 @@ static int boot_get_kernel(const char *addr_fit, struct bootm_headers *images, /* check image type, for FIT images get FIT kernel node */ *os_data = *os_len = 0; buf = map_sysmem(img_addr, 0); - switch (genimg_get_format_comp(buf)) { + switch (genimg_get_format(buf)) { #if CONFIG_IS_ENABLED(LEGACY_IMAGE_FORMAT) case IMAGE_FORMAT_LEGACY: printf("## Booting kernel from Legacy Image at %08lx ...\n", @@ -227,9 +227,6 @@ static int boot_get_kernel(const char *addr_fit, struct bootm_headers *images, break; } #endif - case IMAGE_FORMAT_BOOTI: - *os_data = img_addr; - break; default: bootstage_error(BOOTSTAGE_ID_CHECK_IMAGETYPE); return -EPROTOTYPE; @@ -289,35 +286,6 @@ static int bootm_pre_load(const char *addr_str) return ret; } -static int found_booti_os(enum image_comp_t comp) -{ - images.os.load = images.os.image_start; - images.os.type = IH_TYPE_KERNEL; - images.os.os = IH_OS_LINUX; - images.os.comp = comp; - if (IS_ENABLED(CONFIG_RISCV_SMODE)) - images.os.arch = IH_ARCH_RISCV; - else if (IS_ENABLED(CONFIG_ARM64)) - images.os.arch = IH_ARCH_ARM64; - - log_debug("load %lx start %lx len %lx ep %lx os %x comp %x\n", - images.os.load, images.os.image_start, images.os.image_len, - images.ep, images.os.os, images.os.comp); - if (comp != IH_COMP_NONE) { - images.os.load = env_get_hex("kernel_comp_addr_r", 0); - images.os.image_len = env_get_ulong("kernel_comp_size", 16, 0); - if (!images.os.load || !images.os.image_len) { - puts("kernel_comp_addr_r or kernel_comp_size is not provided!\n"); - return -ENOTSUPP; - } - if (lmb_reserve(images.os.load, images.os.image_len, LMB_NONE) - < 0) - return -EXDEV; - } - - return 0; -} - /** * bootm_find_os(): Find the OS to boot * @@ -422,28 +390,7 @@ static int bootm_find_os(const char *cmd_name, const char *addr_fit) } break; #endif - case IMAGE_FORMAT_BOOTI: - if (IS_ENABLED(CONFIG_CMD_BOOTI)) { - if (found_booti_os(IH_COMP_NONE)) - return 1; - ep_found = true; - break; - } - fallthrough; default: - /* any compressed image is probably a booti image */ - if (IS_ENABLED(CONFIG_CMD_BOOTI)) { - int comp; - - comp = image_decomp_type(os_hdr, 2); - if (comp != IH_COMP_NONE) { - if (found_booti_os(comp)) - return 1; - ep_found = true; - } - break; - } - puts("ERROR: unknown image format type!\n"); return 1; } @@ -594,12 +541,12 @@ int bootm_find_images(ulong img_addr, const char *conf_ramdisk, static int bootm_find_other(ulong img_addr, const char *conf_ramdisk, const char *conf_fdt) { - log_debug("find_other type %x os %x\n", images.os.type, images.os.os); if ((images.os.type == IH_TYPE_KERNEL || images.os.type == IH_TYPE_KERNEL_NOLOAD || images.os.type == IH_TYPE_MULTI) && (images.os.os == IH_OS_LINUX || images.os.os == IH_OS_VXWORKS || - images.os.os == IH_OS_EFI || images.os.os == IH_OS_TEE)) { + images.os.os == IH_OS_EFI || images.os.os == IH_OS_TEE || + images.os.os == IH_OS_ELF)) { return bootm_find_images(img_addr, conf_ramdisk, conf_fdt, 0, 0); } @@ -683,17 +630,15 @@ static int bootm_load_os(struct bootm_headers *images, int boot_progress) debug("Allocated %lx bytes at %lx for kernel (size %lx) decompression\n", req_size, load, image_len); } - log_debug("load_os load %lx image_start %lx image_len %lx\n", load, - image_start, image_len); load_buf = map_sysmem(load, 0); image_buf = map_sysmem(os.image_start, image_len); err = image_decomp(os.comp, load, os.image_start, os.type, - load_buf, image_buf, image_len, bootm_len(), - &load_end); + load_buf, image_buf, image_len, + CONFIG_SYS_BOOTM_LEN, &load_end); if (err) { - err = handle_decomp_error(os.comp, load_end - load, bootm_len(), - err); + err = handle_decomp_error(os.comp, load_end - load, + CONFIG_SYS_BOOTM_LEN, err); bootstage_error(BOOTSTAGE_ID_DECOMP_IMAGE); return err; } @@ -1166,10 +1111,6 @@ int boot_run(struct bootm_info *bmi, const char *cmd, int extra_states) states |= BOOTM_STATE_RAMDISK; states |= extra_states; - log_debug("cmd '%s' states %x addr_img '%s' conf_ramdisk '%s' conf_fdt '%s' images %p\n", - cmd, states, bmi->addr_img, bmi->conf_ramdisk, bmi->conf_fdt, - bmi->images); - return bootm_run_states(bmi, states); } @@ -1187,9 +1128,7 @@ int bootz_run(struct bootm_info *bmi) int booti_run(struct bootm_info *bmi) { - return boot_run(bmi, "booti", BOOTM_STATE_START | BOOTM_STATE_FINDOS | - BOOTM_STATE_PRE_LOAD | BOOTM_STATE_FINDOTHER | - BOOTM_STATE_LOADOS); + return boot_run(bmi, "booti", 0); } int bootm_boot_start(ulong addr, const char *cmdline) @@ -1228,8 +1167,7 @@ void bootm_init(struct bootm_info *bmi) { memset(bmi, '\0', sizeof(struct bootm_info)); bmi->boot_progress = true; - if (IS_ENABLED(CONFIG_CMD_BOOTM) || IS_ENABLED(CONFIG_CMD_BOOTZ) || - IS_ENABLED(CONFIG_CMD_BOOTI) || IS_ENABLED(CONFIG_PXE_UTILS)) + if (IS_ENABLED(CONFIG_CMD_BOOTM)) bmi->images = &images; } |