bootstage: Plumb in bootstage calls for basic operations

This inserts bootstage calls into tftp, usb start and bootm. We
could go further, but this is a reasonable start to illustrate
the concept.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2011-12-10 11:08:06 +00:00 committed by Wolfgang Denk
parent 3a608ca01d
commit 573f14fe4e
5 changed files with 14 additions and 1 deletions

View File

@ -199,6 +199,8 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
bootm_start_lmb(); bootm_start_lmb();
bootstage_mark_name(BOOTSTAGE_ID_BOOTM_START, "bootm_start");
/* get kernel image header, start address and length */ /* get kernel image header, start address and length */
os_hdr = boot_get_kernel(cmdtp, flag, argc, argv, os_hdr = boot_get_kernel(cmdtp, flag, argc, argv,
&images, &images.os.image_start, &images.os.image_len); &images, &images.os.image_start, &images.os.image_len);

View File

@ -43,7 +43,12 @@ U_BOOT_CMD(
int do_tftpb (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) int do_tftpb (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{ {
return netboot_common(TFTPGET, cmdtp, argc, argv); int ret;
bootstage_mark_name(BOOTSTAGE_KERNELREAD_START, "tftp_start");
ret = netboot_common(TFTPGET, cmdtp, argc, argv);
bootstage_mark_name(BOOTSTAGE_KERNELREAD_STOP, "tftp_done");
return ret;
} }
U_BOOT_CMD( U_BOOT_CMD(

View File

@ -513,6 +513,7 @@ int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
if ((strncmp(argv[1], "reset", 5) == 0) || if ((strncmp(argv[1], "reset", 5) == 0) ||
(strncmp(argv[1], "start", 5) == 0)) { (strncmp(argv[1], "start", 5) == 0)) {
bootstage_mark_name(BOOTSTAGE_ID_USB_START, "usb_start");
usb_stop(); usb_stop();
printf("(Re)start USB...\n"); printf("(Re)start USB...\n");
i = usb_init(); i = usb_init();

View File

@ -322,6 +322,7 @@ BootpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src,
BootpVendorProcess((uchar *)&bp->bp_vend[4], len); BootpVendorProcess((uchar *)&bp->bp_vend[4], len);
NetSetTimeout(0, (thand_f *)0); NetSetTimeout(0, (thand_f *)0);
bootstage_mark_name(BOOTSTAGE_ID_BOOTP_STOP, "bootp_stop");
debug("Got good BOOTP\n"); debug("Got good BOOTP\n");
@ -589,6 +590,7 @@ BootpRequest (void)
Bootp_t *bp; Bootp_t *bp;
int ext_len, pktlen, iplen; int ext_len, pktlen, iplen;
bootstage_mark_name(BOOTSTAGE_ID_BOOTP_START, "bootp_start");
#if defined(CONFIG_CMD_DHCP) #if defined(CONFIG_CMD_DHCP)
dhcp_state = INIT; dhcp_state = INIT;
#endif #endif
@ -949,6 +951,8 @@ DhcpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src,
BootpCopyNetParams(bp); /* Store net params from reply */ BootpCopyNetParams(bp); /* Store net params from reply */
dhcp_state = BOUND; dhcp_state = BOUND;
printf ("DHCP client bound to address %pI4\n", &NetOurIP); printf ("DHCP client bound to address %pI4\n", &NetOurIP);
bootstage_mark_name(BOOTSTAGE_ID_BOOTP_STOP,
"bootp_stop");
net_auto_load(); net_auto_load();
return; return;

View File

@ -402,6 +402,7 @@ int NetLoop(enum proto_t protocol)
NetArpWaitTxPacketSize = 0; NetArpWaitTxPacketSize = 0;
} }
bootstage_mark_name(BOOTSTAGE_ID_ETH_START, "eth_start");
eth_halt(); eth_halt();
eth_set_current(); eth_set_current();
if (eth_init(bd) < 0) { if (eth_init(bd) < 0) {