[U-Boot] [PATCH 3/3] bootm: Add the missing PREP stage to bootz
Robert Nelson
robertcnelson at gmail.com
Wed Jul 3 16:57:33 CEST 2013
On Wed, Jul 3, 2013 at 9:46 AM, Robert Nelson <robertcnelson at gmail.com> wrote:
> On Wed, Jul 3, 2013 at 9:12 AM, Simon Glass <sjg at chromium.org> wrote:
>> In the recent bootm refactor, the PREP stage was missing in the bootz
>> command. This causes unpredictable behaviour on platforms which need
>> this stage to operate correctly (e.g. ARM).
>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
>> common/cmd_bootm.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
>> index 401055d..26ed7d8 100644
>> --- a/common/cmd_bootm.c
>> +++ b/common/cmd_bootm.c
>> @@ -1794,7 +1794,8 @@ int do_bootz(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>> bootm_disable_interrupts();
>>
>> ret = do_bootm_states(cmdtp, flag, argc, argv,
>> - BOOTM_STATE_OS_FAKE_GO | BOOTM_STATE_OS_GO,
>> + BOOTM_STATE_OS_PREP | BOOTM_STATE_OS_FAKE_GO |
>> + BOOTM_STATE_OS_GO,
>> &images, 1);
>>
>> return ret;
>> --
>> 1.8.3
>
>
> Still no dice.. v2013.07-rc2 + these 3 + Tom's "cmd_bootm.c: Correct
> check/return for unsupported sub-command"
>
> Tested with the Panda/Wand..
>
> Panda: bootz test:
> load mmc ${mmcdev}:${mmcpart} ${loadaddr} zImage
> run mmcargs
> bootz ${loadaddr}
>
>
> Panda: bootm test: (this still works fine..)
> load mmc ${mmcdev}:${mmcpart} ${loadaddr} uImage
> run mmcargs
> bootm ${loadaddr}
>
> U-Boot SPL 2013.07-rc2-00004-gb3e6fff-dirty (Jul 03 2013 - 09:33:36)
> OMAP4430 ES2.1
> OMAP SD/MMC: 0
> reading u-boot.img
> reading u-boot.img
>
>
> U-Boot 2013.07-rc2-00004-gb3e6fff-dirty (Jul 03 2013 - 09:33:36)
>
> CPU : OMAP4430 ES2.1
> Board: OMAP4 Panda
> I2C: ready
> DRAM: 1 GiB
> MMC: OMAP SD/MMC: 0
> Using default environment
>
> In: serial
> Out: serial
> Err: serial
> Net: No ethernet found.
> Hit any key to stop autoboot: 0
> Panda # load mmc ${mmcdev}:${mmcpart} ${loadaddr} zImage
> reading zImage
> 3413152 bytes read in 160 ms (20.3 MiB/s)
> Panda # run mmcargs
> Panda # bootz ${loadaddr}
> prefetch abort
> pc : [<10da7a5c>] lr : [<bff813f1>]
> sp : bfefdba0 ip : 7fe00fa8 fp : 00000000
> r10: bfefe6a0 r9 : 00000002 r8 : bfefdf38
> r7 : 80000000 r6 : 00000700 r5 : 10da7a5a r4 : bfefdc18
> r3 : bfefdc18 r2 : bfefe6a0 r1 : 00000002 r0 : 00000100
> Flags: NzCv IRQs off FIQs off Mode SVC_32
> Resetting CPU ...
>
> resetting ...
Okay, so my quick hack from yesterday now works on top of these 3
patches for the Panda case:
U-Boot SPL 2013.07-rc2-00005-g8d900ea-dirty (Jul 03 2013 - 09:52:08)
OMAP4430 ES2.1
OMAP SD/MMC: 0
reading u-boot.img
reading u-boot.img
U-Boot 2013.07-rc2-00005-g8d900ea-dirty (Jul 03 2013 - 09:52:08)
CPU : OMAP4430 ES2.1
Board: OMAP4 Panda
I2C: ready
DRAM: 1 GiB
MMC: OMAP SD/MMC: 0
Using default environment
In: serial
Out: serial
Err: serial
Net: No ethernet found.
Hit any key to stop autoboot: 0
Panda # load mmc ${mmcdev}:${mmcpart} ${loadaddr} zImage
reading zImage
3413152 bytes read in 159 ms (20.5 MiB/s)
Panda # run mmcargs
Panda # bootz ${loadaddr}
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.7.10-x12 (root at imx6q-sabrelite-1gb-0)
(gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Sun Jun 9 03:19:23 UTC
2013
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 7b3e459..5749057 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -1758,6 +1758,10 @@ static int bootz_start(cmd_tbl_t *cmdtp, int
flag, int argc,
int ret;
void *zi_start, *zi_end;
+ memset(images, 0, sizeof(bootm_headers_t));
+ boot_start_lmb(images);
+ images->os.os = IH_OS_LINUX;
+
ret = do_bootm_states(cmdtp, flag, argc, argv, BOOTM_STATE_START,
images, 1);
So I'm going to quickly re-test the wand, which is a device tree:
'bootz zImage - ftd" boot...
Regards,
--
Robert Nelson
http://www.rcn-ee.com/
More information about the U-Boot
mailing list