summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2011-04-07 10:14:41 -0700
committerSimon Glass <sjg@chromium.org>2011-08-24 09:56:21 -0700
commit9530dc99ee3539909935e8a60a2bb756499c8318 (patch)
tree9e67946a7e123dfa8a65c97629a726dcbd80e591 /net
parent29897caccd59d51e110475edbaa483175f1f363f (diff)
Add microsecond boot time measurement
This defines the basics of a new boot time measurement feature. This allows logging of very accurate time measurements as the boot proceeds, by using an available microsecond counter. To enable the feature, define CONFIG_BOOTSTAGE in your board config file. Also available is CONFIG_BOOTSTAGE_REPORT which will cause a report to be printed just before handing off to the OS. BUG=chromium-os:13875 TEST=build and boot, check that progress is reported before running Linux: Timer summary in microseconds: Mark Elapsed Stage 0 0 awake 2,181,078 2,181,078 usb_start 11,861,817 9,680,739 bootp_start 11,884,610 22,793 bootp_stop 11,884,689 79 tftp start 15,271,536 3,386,847 tftp done 15,271,568 32 bootm_start 15,406,551 134,983 start_kernel Change-Id: I71b89c8402dc5dec75e68333bd24a6bab7500a1b Reviewed-on: http://gerrit.chromium.org/gerrit/197 Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'net')
-rw-r--r--net/bootp.c3
-rw-r--r--net/net.c1
2 files changed, 4 insertions, 0 deletions
diff --git a/net/bootp.c b/net/bootp.c
index 4db63cbbe6..043f9e0ed4 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -311,6 +311,7 @@ BootpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src,
BootpVendorProcess((uchar *)&bp->bp_vend[4], len);
NetSetTimeout(0, (thand_f *)0);
+ bootstage_mark(BOOTSTAGE_BOOTP_STOP, "bootp_stop");
debug("Got good BOOTP\n");
@@ -552,6 +553,7 @@ BootpRequest (void)
Bootp_t *bp;
int ext_len, pktlen, iplen;
+ bootstage_mark(BOOTSTAGE_BOOTP_START, "bootp_start");
#if defined(CONFIG_CMD_DHCP)
dhcp_state = INIT;
#endif
@@ -914,6 +916,7 @@ DhcpHandler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src,
BootpCopyNetParams(bp); /* Store net params from reply */
dhcp_state = BOUND;
printf ("DHCP client bound to address %pI4\n", &NetOurIP);
+ bootstage_mark(BOOTSTAGE_BOOTP_STOP, "bootp_stop");
/* Obey the 'autoload' setting */
if ((s = getenv("autoload")) != NULL) {
diff --git a/net/net.c b/net/net.c
index 7a6058339c..272fb5bad7 100644
--- a/net/net.c
+++ b/net/net.c
@@ -378,6 +378,7 @@ NetLoop(proto_t protocol)
NetArpWaitTxPacketSize = 0;
}
+ bootstage_mark(BOOTSTAGE_ETH_START, "eth_start");
eth_halt();
#ifdef CONFIG_NET_MULTI
eth_set_current();