提交 77dd7c68 编写于 作者: S Simon Glass 提交者: Bin Meng

x86: timer: use a timer base of 0

On x86 platforms the timer is reset to 0 when the SoC is reset. Having
this as the timer base is useful since it provides an indication of how
long it takes before U-Boot is running.

When U-Boot sets the timer base to something else, time is lost and we
no-longer have an accurate account of the time since reset. This
particularly affects bootstage.

Change the default to not read the timer base, leaving it at 0. Add an
option for when U-Boot is the secondary bootloader.
Signed-off-by: NSimon Glass <sjg@chromium.org>
Reviewed-by: NBin Meng <bmeng.cn@gmail.com>
上级 dd0edcb2
......@@ -24,5 +24,6 @@ config SYS_COREBOOT
imply CMD_CBFS
imply FS_CBFS
imply CBMEM_CONSOLE
imply X86_TSC_READ_BASE
endif
......@@ -17,3 +17,4 @@ config SYS_SLIMBOOTLOADER
imply USB_EHCI_HCD
imply USB_XHCI_HCD
imply E1000
imply X86_TSC_READ_BASE
......@@ -174,6 +174,20 @@ config X86_TSC_TIMER
help
Select this to enable Time-Stamp Counter (TSC) timer for x86.
config X86_TSC_READ_BASE
bool "Read the TSC timer base on start-up"
depends on X86_TSC_TIMER
help
On x86 platforms the TSC timer tick starts at the value 0 on reset.
This it makes no sense to read the timer on boot and use that as the
base, since we will miss some time taken to load U-Boot, etc. This
delay is controlled by the SoC and we cannot reduce it, but for
bootstage we want to record the time since reset as accurately as
possible.
The only exception is when U-Boot is used as a secondary bootloader,
where this option should be enabled.
config MTK_TIMER
bool "MediaTek timer support"
depends on TIMER
......
......@@ -397,7 +397,8 @@ static void tsc_timer_ensure_setup(bool early)
{
if (gd->arch.tsc_inited)
return;
gd->arch.tsc_base = rdtsc();
if (IS_ENABLED(CONFIG_X86_TSC_READ_BASE))
gd->arch.tsc_base = rdtsc();
if (!gd->arch.clock_rate) {
unsigned long fast_calibrate;
......
config EFI
bool "Support running U-Boot from EFI"
depends on X86
imply X86_TSC_READ_BASE
help
U-Boot can be started from EFI on certain platforms. This allows
EFI to perform most of the system init and then jump to U-Boot for
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册