On Oct 8, 2008, at 8:48 PM, Jerry Van Baren wrote: > Kumar Gala wrote: >> * Use new find_cmd_tbl() to process sub-commands >> >> If this looks good I'll go ahead and clean it up for the other >> arches and OSes. > > Hi Kumar, > > Thanks to your sequence hint, interrupt command hint, and one > additional > piece, I have this working now. > > The missing piece is reserving memory for the stack before copying the > ramdisk to high mem. It looks like this was lost when you > consolidated > the machine-specific lib_*/bootm.c do_bootm_linux() functions into > one. > Without the reservation code, the copy overwrites the stack. > Seriously bad karma. > > See below for a proof-of-concept hack. > >> --- >> common/cmd_bootm.c | 142 ++++++++++++++++++++++++++++- >> include/image.h | 20 ++++- >> lib_ppc/bootm.c | 262 +++++++++++++++++++++++++++++++++ >> +------------------ >> 3 files changed, 330 insertions(+), 94 deletions(-) >> >> diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c >> index 19257bb..e6dcb7a 100644 >> --- a/common/cmd_bootm.c >> +++ b/common/cmd_bootm.c >> @@ -34,6 +34,7 @@ >> #include <bzlib.h> >> #include <environment.h> >> #include <lmb.h> >> +#include <linux/ctype.h> >> #include <asm/byteorder.h> >> >> #if defined(CONFIG_CMD_USB) >> @@ -273,7 +274,7 @@ static int bootm_start(cmd_tbl_t *cmdtp, int >> flag, int argc, char *argv[]) >> } >> >> images.os.start = (ulong)os_hdr; >> - images.valid = 1; >> + images.state = BOOTM_STATE_START; >> >> return 0; >> } >> @@ -376,6 +377,113 @@ static int bootm_load_os(image_info_t os, >> ulong *load_end, int boot_progress) >> return 0; >> } >> >> +/* we over load the cmd field with our state machine info instead >> of a >> + * function pointer */ > > Nitpick: comment format and s/over load/overload/ > /* > * We overload the cmd field with our state machine info instead of a > * function pointer > */
ack. > [snip] > >> +int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, >> char *argv[]) >> +{ > > [snip] > >> >> @@ -782,6 +907,21 @@ U_BOOT_CMD( >> "\tUse iminfo command to get the list of existing component\n" >> "\timages and configurations.\n" >> #endif >> + "\nSub-commands to do part of the bootm sequence. The sub- >> commands " >> + "must be\n" >> + "issued in the order below (its ok to not issue all sub-commands): >> \n" > > s/its/it's/ (contraction "it is", not possessive like "his") ack > > >> + "\tstart [addr [arg ...]]\n" > > The following is more descriptive? > start <os_addr> [(-|<ramdisk_addr>) [<fdt_addr>]] nack. I left this as is to match the bootm help >> + "\tloados - load OS image\n" >> +#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || >> defined(CONFIG_SPARC) >> + "\tramdisk - relocate initrd, set env initrd_start/initrd_end\n" >> +#endif >> +#if defined(CONFIG_OF_LIBFDT) >> + "\tfdt - relocate flat device tree\n" >> +#endif >> + "\tbdt - OS specific bd_t processing\n" >> + "\tcmdline - OS specific command line processing/setup\n" >> + "\tprepos - OS specific prep before relocation or go\n" >> + "\tgo - start OS\n" - k _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot