arch/x86: allow timestamp source to not be TSC

Some x86 platforms don't have a TSC that is invariant w.r.t.
rate to get accurate timestamps. As such a different timestamp
is required. Therefore, allow one to specify non-TSC timestamp
source and not compile in the default x86 TSC code.

BUG=b:72378235,b:72170796

Change-Id: I737fcbba60665b3bc2b5864269536fda78b44d90
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/23423
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Justin TerAvest <teravest@chromium.org>
This commit is contained in:
Aaron Durbin 2018-01-24 17:35:58 -07:00
parent f70c1bf69a
commit f49ddb67de
2 changed files with 20 additions and 5 deletions

View File

@ -271,3 +271,18 @@ config ACPI_CPU_STRING
Sets the ACPI name string in the processor scope as written by Sets the ACPI name string in the processor scope as written by
the acpigen function. Default is \_PR.CPxx. Note that you need the acpigen function. Default is \_PR.CPxx. Note that you need
the \ escape character in the string. the \ escape character in the string.
config COLLECT_TIMESTAMPS_NO_TSC
bool
default n
depends on COLLECT_TIMESTAMPS
help
Use a non-TSC platform-dependent source for timestamps.
config COLLECT_TIMESTAMPS_TSC
bool
default y if !COLLECT_TIMESTAMPS_NO_TSC
default n
depends on COLLECT_TIMESTAMPS
help
Use the TSC as the timestamp source.

View File

@ -94,7 +94,7 @@ bootblock-y += boot.c
bootblock-y += cpu_common.c bootblock-y += cpu_common.c
bootblock-y += memcpy.c bootblock-y += memcpy.c
bootblock-y += memset.c bootblock-y += memset.c
bootblock-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c bootblock-$(CONFIG_COLLECT_TIMESTAMPS_TSC) += timestamp.c
bootblock-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c bootblock-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
bootblock-y += id.S bootblock-y += id.S
@ -180,7 +180,7 @@ verstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
# which just calls verstage(). # which just calls verstage().
verstage-$(CONFIG_C_ENVIRONMENT_BOOTBLOCK) += verstage.c verstage-$(CONFIG_C_ENVIRONMENT_BOOTBLOCK) += verstage.c
verstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c verstage-$(CONFIG_COLLECT_TIMESTAMPS_TSC) += timestamp.c
verstage-libs ?= verstage-libs ?=
@ -211,7 +211,7 @@ romstage-y += memmove.c
romstage-y += memset.c romstage-y += memset.c
romstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c romstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
romstage-y += postcar_loader.c romstage-y += postcar_loader.c
romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c romstage-$(CONFIG_COLLECT_TIMESTAMPS_TSC) += timestamp.c
ifneq ($(CONFIG_ROMCC),y) ifneq ($(CONFIG_ROMCC),y)
@ -288,7 +288,7 @@ postcar-y += memset.c
postcar-y += memlayout.ld postcar-y += memlayout.ld
postcar-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c postcar-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
postcar-y += postcar.c postcar-y += postcar.c
postcar-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c postcar-$(CONFIG_COLLECT_TIMESTAMPS_TSC) += timestamp.c
LDFLAGS_postcar += -Map $(objcbfs)/postcar.map LDFLAGS_postcar += -Map $(objcbfs)/postcar.map
@ -339,7 +339,7 @@ ramstage-$(CONFIG_GENERATE_SMBIOS_TABLES) += smbios.c
ramstage-y += tables.c ramstage-y += tables.c
ramstage-$(CONFIG_COOP_MULTITASKING) += thread.c ramstage-$(CONFIG_COOP_MULTITASKING) += thread.c
ramstage-$(CONFIG_COOP_MULTITASKING) += thread_switch.S ramstage-$(CONFIG_COOP_MULTITASKING) += thread_switch.S
ramstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c ramstage-$(CONFIG_COLLECT_TIMESTAMPS_TSC) += timestamp.c
ramstage-$(CONFIG_HAVE_ACPI_RESUME) += wakeup.S ramstage-$(CONFIG_HAVE_ACPI_RESUME) += wakeup.S
smm-y += memcpy.c smm-y += memcpy.c