diff options
-rw-r--r-- | common/cmd_bootm.c | 44 | ||||
-rw-r--r-- | common/image.c | 36 | ||||
-rw-r--r-- | include/bootstage.h | 38 |
3 files changed, 80 insertions, 38 deletions
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index c727c787caf..86f1ffbddbd 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -222,21 +222,21 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] if (fit_image_get_type(images.fit_hdr_os, images.fit_noffset_os, &images.os.type)) { puts("Can't get image type!\n"); - show_boot_error(109); + show_boot_error(BOOTSTAGE_ID_FIT_TYPE); return 1; } if (fit_image_get_comp(images.fit_hdr_os, images.fit_noffset_os, &images.os.comp)) { puts("Can't get image compression!\n"); - show_boot_error(110); + show_boot_error(BOOTSTAGE_ID_FIT_COMPRESSION); return 1; } if (fit_image_get_os(images.fit_hdr_os, images.fit_noffset_os, &images.os.os)) { puts("Can't get image OS!\n"); - show_boot_error(111); + show_boot_error(BOOTSTAGE_ID_FIT_OS); return 1; } @@ -245,7 +245,7 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] if (fit_image_get_load(images.fit_hdr_os, images.fit_noffset_os, &images.os.load)) { puts("Can't get image load address!\n"); - show_boot_error(112); + show_boot_error(BOOTSTAGE_ID_FIT_LOADADDR); return 1; } break; @@ -648,7 +648,7 @@ int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } else { puts("ERROR: new format image overwritten - " "must RESET the board to recover\n"); - show_boot_error(113); + show_boot_error(BOOTSTAGE_ID_OVERWRITTEN); do_reset(cmdtp, flag, argc, argv); } } @@ -789,28 +789,28 @@ static int fit_check_kernel(const void *fit, int os_noffset, int verify) puts(" Verifying Hash Integrity ... "); if (!fit_image_check_hashes(fit, os_noffset)) { puts("Bad Data Hash\n"); - show_boot_error(104); + show_boot_error(BOOTSTAGE_ID_FIT_CHECK_HASH); return 0; } puts("OK\n"); } - show_boot_progress(105); + show_boot_progress(BOOTSTAGE_ID_FIT_CHECK_ARCH); if (!fit_image_check_target_arch(fit, os_noffset)) { puts("Unsupported Architecture\n"); - show_boot_error(105); + show_boot_error(BOOTSTAGE_ID_FIT_CHECK_ARCH); return 0; } - show_boot_progress(106); + show_boot_progress(BOOTSTAGE_ID_FIT_CHECK_KERNEL); if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL) && !fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL_NOLOAD)) { puts("Not a kernel image\n"); - show_boot_error(106); + show_boot_error(BOOTSTAGE_ID_FIT_CHECK_KERNEL); return 0; } - show_boot_progress(107); + show_boot_progress(BOOTSTAGE_ID_FIT_CHECKED); return 1; } #endif /* CONFIG_FIT */ @@ -921,10 +921,10 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc, if (!fit_check_format(fit_hdr)) { puts("Bad FIT kernel image format!\n"); - show_boot_error(100); + show_boot_error(BOOTSTAGE_ID_FIT_FORMAT); return NULL; } - show_boot_progress(100); + show_boot_progress(BOOTSTAGE_ID_FIT_FORMAT); if (!fit_uname_kernel) { /* @@ -933,11 +933,11 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc, * fit_conf_get_node() will try to find default config * node */ - show_boot_progress(101); + show_boot_progress(BOOTSTAGE_ID_FIT_NO_UNIT_NAME); cfg_noffset = fit_conf_get_node(fit_hdr, fit_uname_config); if (cfg_noffset < 0) { - show_boot_error(101); + show_boot_error(BOOTSTAGE_ID_FIT_NO_UNIT_NAME); return NULL; } /* save configuration uname provided in the first @@ -948,7 +948,7 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc, NULL); printf(" Using '%s' configuration\n", images->fit_uname_cfg); - show_boot_progress(103); + show_boot_progress(BOOTSTAGE_ID_FIT_CONFIG); os_noffset = fit_conf_get_kernel_node(fit_hdr, cfg_noffset); @@ -956,28 +956,28 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc, NULL); } else { /* get kernel component image node offset */ - show_boot_progress(102); + show_boot_progress(BOOTSTAGE_ID_FIT_UNIT_NAME); os_noffset = fit_image_get_node(fit_hdr, fit_uname_kernel); } if (os_noffset < 0) { - show_boot_error(103); + show_boot_error(BOOTSTAGE_ID_FIT_CONFIG); return NULL; } printf(" Trying '%s' kernel subimage\n", fit_uname_kernel); - show_boot_progress(104); + show_boot_progress(BOOTSTAGE_ID_FIT_CHECK_SUBIMAGE); if (!fit_check_kernel(fit_hdr, os_noffset, images->verify)) return NULL; /* get kernel image data address and length */ if (fit_image_get_data(fit_hdr, os_noffset, &data, &len)) { puts("Could not find kernel subimage data!\n"); - show_boot_error(107); + show_boot_error(BOOTSTAGE_ID_FIT_KERNEL_INFO_ERR); return NULL; } - show_boot_progress(108); + show_boot_progress(BOOTSTAGE_ID_FIT_KERNEL_INFO); *os_len = len; *os_data = (ulong)data; @@ -988,7 +988,7 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc, #endif default: printf("Wrong Image Format for %s command\n", cmdtp->name); - show_boot_error(108); + show_boot_error(BOOTSTAGE_ID_FIT_KERNEL_INFO); return NULL; } diff --git a/common/image.c b/common/image.c index 6186c45bd7d..133ebbcac71 100644 --- a/common/image.c +++ b/common/image.c @@ -912,13 +912,14 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, printf("## Loading init Ramdisk from FIT " "Image at %08lx ...\n", rd_addr); - show_boot_progress(120); + show_boot_progress(BOOTSTAGE_ID_FIT_RD_FORMAT); if (!fit_check_format(fit_hdr)) { puts("Bad FIT ramdisk image format!\n"); - show_boot_error(120); + show_boot_error( + BOOTSTAGE_ID_FIT_RD_FORMAT); return 1; } - show_boot_progress(121); + show_boot_progress(BOOTSTAGE_ID_FIT_RD_FORMAT_OK); if (!fit_uname_ramdisk) { /* @@ -926,13 +927,15 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, * node first. If config unit node name is NULL * fit_conf_get_node() will try to find default config node */ - show_boot_progress(122); + show_boot_progress( + BOOTSTAGE_ID_FIT_RD_NO_UNIT_NAME); cfg_noffset = fit_conf_get_node(fit_hdr, fit_uname_config); if (cfg_noffset < 0) { puts("Could not find configuration " "node\n"); - show_boot_error(122); + show_boot_error( + BOOTSTAGE_ID_FIT_RD_NO_UNIT_NAME); return 1; } fit_uname_config = fdt_get_name(fit_hdr, @@ -946,20 +949,21 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, rd_noffset, NULL); } else { /* get ramdisk component image node offset */ - show_boot_progress(123); + show_boot_progress( + BOOTSTAGE_ID_FIT_RD_UNIT_NAME); rd_noffset = fit_image_get_node(fit_hdr, fit_uname_ramdisk); } if (rd_noffset < 0) { puts("Could not find subimage node\n"); - show_boot_error(124); + show_boot_error(BOOTSTAGE_ID_FIT_RD_SUBNODE); return 1; } printf(" Trying '%s' ramdisk subimage\n", fit_uname_ramdisk); - show_boot_progress(125); + show_boot_progress(BOOTSTAGE_ID_FIT_RD_CHECK); if (!fit_check_ramdisk(fit_hdr, rd_noffset, arch, images->verify)) return 1; @@ -968,10 +972,10 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, if (fit_image_get_data(fit_hdr, rd_noffset, &data, &size)) { puts("Could not find ramdisk subimage data!\n"); - show_boot_error(127); + show_boot_error(BOOTSTAGE_ID_FIT_RD_GET_DATA); return 1; } - show_boot_progress(128); + show_boot_progress(BOOTSTAGE_ID_FIT_RD_GET_DATA_OK); rd_data = (ulong)data; rd_len = size; @@ -979,10 +983,10 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, if (fit_image_get_load(fit_hdr, rd_noffset, &rd_load)) { puts("Can't get ramdisk subimage load " "address!\n"); - show_boot_error(129); + show_boot_error(BOOTSTAGE_ID_FIT_RD_LOAD); return 1; } - show_boot_progress(129); + show_boot_progress(BOOTSTAGE_ID_FIT_RD_LOAD); images->fit_hdr_rd = fit_hdr; images->fit_uname_rd = fit_uname_ramdisk; @@ -3176,23 +3180,23 @@ static int fit_check_ramdisk(const void *fit, int rd_noffset, uint8_t arch, puts(" Verifying Hash Integrity ... "); if (!fit_image_check_hashes(fit, rd_noffset)) { puts("Bad Data Hash\n"); - show_boot_error(125); + show_boot_error(BOOTSTAGE_ID_FIT_RD_HASH); return 0; } puts("OK\n"); } - show_boot_progress(126); + show_boot_progress(BOOTSTAGE_ID_FIT_RD_CHECK_ALL); if (!fit_image_check_os(fit, rd_noffset, IH_OS_LINUX) || !fit_image_check_arch(fit, rd_noffset, arch) || !fit_image_check_type(fit, rd_noffset, IH_TYPE_RAMDISK)) { printf("No Linux %s Ramdisk Image\n", genimg_get_arch_name(arch)); - show_boot_error(126); + show_boot_error(BOOTSTAGE_ID_FIT_RD_CHECK_ALL); return 0; } - show_boot_progress(127); + show_boot_progress(BOOTSTAGE_ID_FIT_RD_CHECK_ALL_OK); return 1; } #endif /* USE_HOSTCC */ diff --git a/include/bootstage.h b/include/bootstage.h index 35e11b8dcc8..8f7fcd7d773 100644 --- a/include/bootstage.h +++ b/include/bootstage.h @@ -126,6 +126,44 @@ enum bootstage_id { BOOTSTAGE_ID_NET_DONE_ERR, BOOTSTAGE_ID_NET_DONE, + /* + * Boot stages related to loading a FIT image. Some of these are a + * bit wonky. + */ + BOOTSTAGE_ID_FIT_FORMAT = 100, + BOOTSTAGE_ID_FIT_NO_UNIT_NAME, + BOOTSTAGE_ID_FIT_UNIT_NAME, + BOOTSTAGE_ID_FIT_CONFIG, + BOOTSTAGE_ID_FIT_CHECK_SUBIMAGE, + BOOTSTAGE_ID_FIT_CHECK_HASH = 104, + + BOOTSTAGE_ID_FIT_CHECK_ARCH, + BOOTSTAGE_ID_FIT_CHECK_KERNEL, + BOOTSTAGE_ID_FIT_CHECKED, + + BOOTSTAGE_ID_FIT_KERNEL_INFO_ERR = 107, + BOOTSTAGE_ID_FIT_KERNEL_INFO, + BOOTSTAGE_ID_FIT_TYPE, + + BOOTSTAGE_ID_FIT_COMPRESSION, + BOOTSTAGE_ID_FIT_OS, + BOOTSTAGE_ID_FIT_LOADADDR, + BOOTSTAGE_ID_OVERWRITTEN, + + BOOTSTAGE_ID_FIT_RD_FORMAT = 120, + BOOTSTAGE_ID_FIT_RD_FORMAT_OK, + BOOTSTAGE_ID_FIT_RD_NO_UNIT_NAME, + BOOTSTAGE_ID_FIT_RD_UNIT_NAME, + BOOTSTAGE_ID_FIT_RD_SUBNODE, + + BOOTSTAGE_ID_FIT_RD_CHECK, + BOOTSTAGE_ID_FIT_RD_HASH = 125, + BOOTSTAGE_ID_FIT_RD_CHECK_ALL, + BOOTSTAGE_ID_FIT_RD_GET_DATA, + BOOTSTAGE_ID_FIT_RD_CHECK_ALL_OK = 127, + BOOTSTAGE_ID_FIT_RD_GET_DATA_OK, + BOOTSTAGE_ID_FIT_RD_LOAD, + BOOTSTAGE_ID_IDE_FIT_READ = 140, BOOTSTAGE_ID_IDE_FIT_READ_OK, |