From 015c63390e14574465f83df7913fffd44c7bd7ae Mon Sep 17 00:00:00 2001 From: Jaehoon Chung Date: Thu, 3 May 2018 16:22:20 +0900 Subject: [PATCH] Revert "bootstage: Require timer_get_boot_us() to be defined" This reverts commit c87dc38d8f860710f5f624d9dae6cefded285b8d. (This revert is workaround.) Change-Id: I8febf78aa41f1124775359278380fbb35d9dcc4b --- arch/sandbox/cpu/cpu.c | 11 ----------- common/bootstage.c | 19 +++++++++++++++++++ include/bootstage.h | 3 +-- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c index fb857e5..7a90c5b 100644 --- a/arch/sandbox/cpu/cpu.c +++ b/arch/sandbox/cpu/cpu.c @@ -333,14 +333,3 @@ done: return 0; } - -ulong timer_get_boot_us(void) -{ - static uint64_t base_count; - uint64_t count = os_get_nsec(); - - if (!base_count) - base_count = count; - - return (count - base_count) / 1000; -} diff --git a/common/bootstage.c b/common/bootstage.c index 5f87358..7ca3be0 100644 --- a/common/bootstage.c +++ b/common/bootstage.c @@ -7,6 +7,8 @@ /* * This module records the progress of boot and arbitrary commands, and * permits accurate timestamping of each. + * + * TBD: Pass timings to kernel in the FDT */ #include @@ -358,6 +360,23 @@ void bootstage_report(void) } } +ulong __timer_get_boot_us(void) +{ + static ulong base_time; + + /* + * We can't implement this properly. Return 0 on the first call and + * larger values after that. + */ + if (base_time) + return get_timer(base_time) * 1000; + base_time = get_timer(0); + return 0; +} + +ulong timer_get_boot_us(void) + __attribute__((weak, alias("__timer_get_boot_us"))); + /** * Append data to a memory buffer * diff --git a/include/bootstage.h b/include/bootstage.h index 00c85fb..8b0663e 100644 --- a/include/bootstage.h +++ b/include/bootstage.h @@ -3,7 +3,6 @@ * This file implements recording of each stage of the boot process. It is * intended to implement timing of each stage, reporting this information * to the user and passing it to the OS for logging / further analysis. - * Note that it requires timer_get_boot_us() to be defined by the board * * Copyright (c) 2011 The Chromium OS Authors. */ @@ -214,7 +213,7 @@ enum bootstage_id { /* * Return the time since boot in microseconds, This is needed for bootstage * and should be defined in CPU- or board-specific code. If undefined then - * you will get a link error. + * millisecond resolution will be used (the standard get_timer()). */ ulong timer_get_boot_us(void); -- 2.7.4