On 07/30/2014 04:54 PM, Bryan Wu wrote:
Trying bootm for zImage will print out several error message which
is not necessary for this case. So detect image format firstly, only
try bootm for legacy and FIT format image then try bootz for others.

diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c

@@ -771,11 +772,14 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label 
*label)
        if (bootm_argv[3])
                bootm_argc = 4;

-       do_bootm(cmdtp, 0, bootm_argc, bootm_argv);

+       /* Try bootm for legacy and FIT format image */
+       if (genimg_get_format(bootm_argv[1]) != IMAGE_FORMAT_INVALID)
+               do_bootm(cmdtp, 0, bootm_argc, bootm_argv);

This breaks the ability to boot a uImage, since the call to genimg_get_format() is incorrect.

genimg_get_format() takes the address of an image itself, not the address of a string containing a textual representation of the address.

Also, bootm_argv[1] might not be supplied at all, in which case, boot_get_kernel() falls back to using load_addr as the address.

This is further complicated by the fact that for FIT images, the string in bootm_argv[1] won't just be the address of the image, but perhaps have concatenated information indicating which sub-image to select (since FIT images pack multiple files into a single image).

You probably need to pull the start of boot_get_kernel() (in common/bootm.c) into a utility function and call that to distinguish between zImage/not, so as not to duplicate any of the logic.

(Yes, I failed to notice this when I reviewed this downstream, but I just actually tested this patch, using a uImage for pxe booting...)

For the zImage case, this patch certainly does remove the annoying error message generated when do_bootm() can't identify the image type. So, I think it's worth continuing to work on a solution.

P.S. you didn't CC anyone who might apply this patch.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to