payloads/edk2: Add Kconfig to use LAPIC timer

Core 2 platforms have issues with HPET. Enable support to use the LAPIC
driver so those machines actually boot and don't hang.

The LAPIC is actually closer to the CPU than the HPET (on the PCH),
which reduces access latency, leading to higher resolution of the timer.

Tested on a Lenovo X200 with a Core 2 Duo.

Change-Id: I33144d6c1c120e7faa47b99e8262b0997c45c9b9
Signed-off-by: Jean Lucas <jean@4ray.co>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/82000
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
Jean Lucas
2024-04-19 10:31:43 -04:00
committed by Angel Pons
parent 8d6625a595
commit 63ca402088
5 changed files with 16 additions and 0 deletions

View File

@@ -197,6 +197,7 @@ $(obj)/UEFIPAYLOAD.fd: $(DOTCONFIG)
CONFIG_EDK2_DISABLE_TPM=$(CONFIG_EDK2_DISABLE_TPM) \
CONFIG_EDK2_UFS_ENABLE=$(CONFIG_EDK2_UFS_ENABLE) \
CONFIG_EDK2_PCO_MMIO_EMMC=$(CONFIG_EDK2_PCO_MMIO_EMMC) \
CONFIG_EDK2_USE_LAPIC_TIMER=$(CONFIG_EDK2_USE_LAPIC_TIMER) \
GCC_CC_x86_32=$(GCC_CC_x86_32) \
GCC_CC_x86_64=$(GCC_CC_x86_64) \
GCC_CC_arm=$(GCC_CC_arm) \

View File

@@ -308,6 +308,15 @@ config EDK2_PCO_MMIO_EMMC
It is needed for AMD Picasso boards with eMMC storage, but will conflict with the
PCI-based eMMC driver, so should only be enabled for AMD Picasso boards.
config EDK2_USE_LAPIC_TIMER
bool "Use LAPIC timer instead of HPET"
default n
help
Select this option to use the LAPIC timer instead of HPET in edk2. The LAPIC is closer
to the CPU than the HPET (on the PCH), resulting in lower latency / higher resolution.
This setting is at least needed for platforms with Core 2 processors, which are reported
to have issues with HPET.
config EDK2_CUSTOM_BUILD_PARAMS
string "edk2 additional custom build parameters"
default "-D VARIABLE_SUPPORT=SMMSTORE" if EDK2_REPO_MRCHROMEBOX && SMMSTORE_V2

View File

@@ -141,6 +141,10 @@ endif
ifeq ($(CONFIG_EDK2_PCO_MMIO_EMMC),y)
BUILD_STR += -D USE_PCO_MMIO_EMMC=TRUE
endif
# TIMER_SUPPORT = HPET
ifeq ($(CONFIG_EDK2_USE_LAPIC_TIMER),y)
BUILD_STR += -D TIMER_SUPPORT=LAPIC
endif
endif

View File

@@ -11,3 +11,4 @@ config CPU_INTEL_MODEL_1067X
select CPU_INTEL_COMMON
select CPU_INTEL_COMMON_TIMEBASE
select SETUP_XIP_CACHE
select EDK2_USE_LAPIC_TIMER if PAYLOAD_EDK2

View File

@@ -12,3 +12,4 @@ config CPU_INTEL_MODEL_6FX
select CPU_INTEL_COMMON
select CPU_INTEL_COMMON_TIMEBASE
select SETUP_XIP_CACHE
select EDK2_USE_LAPIC_TIMER if PAYLOAD_EDK2