From e09cd1b787c4dbb8e90dcdbc3e053fca927a8483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ky=C3=B6sti=20M=C3=A4lkki?= Date: Fri, 18 Aug 2017 20:58:33 +0300 Subject: [PATCH] arch/x86: Sanity checking on HAVE_SMI_HANDLER MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fail at build-time if one of the following happens: Platform includes SMI handler setup function smm_init() in the build when configuration has HAVE_SMI_HANDLER=n. Platform does not implement smm_init_completion() when HAVE_SMI_HANDLER=y. Change-Id: I7d61c155d2b7c2d71987980db4c25d520452dabf Signed-off-by: Kyösti Mälkki Reviewed-on: https://review.coreboot.org/21097 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin Reviewed-by: Arthur Heymans --- src/cpu/amd/smm/smm_init.c | 4 ++++ src/cpu/x86/lapic/lapic_cpu_init.c | 8 +++++--- src/soc/intel/sch/smi.c | 4 ++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/cpu/amd/smm/smm_init.c b/src/cpu/amd/smm/smm_init.c index 4d04cf7762..7af8808c62 100644 --- a/src/cpu/amd/smm/smm_init.c +++ b/src/cpu/amd/smm/smm_init.c @@ -77,3 +77,7 @@ void smm_lock(void) { /* We lock SMM in CPU init */ } + +void smm_init_completion(void) +{ +} diff --git a/src/cpu/x86/lapic/lapic_cpu_init.c b/src/cpu/x86/lapic/lapic_cpu_init.c index c2ac51374d..898a5c476a 100644 --- a/src/cpu/x86/lapic/lapic_cpu_init.c +++ b/src/cpu/x86/lapic/lapic_cpu_init.c @@ -593,11 +593,13 @@ void initialize_cpus(struct bus *cpu_bus) recover_lowest_1M(); } -/* Platform-specific code for SMI handler overrides this. */ -__attribute__((weak)) void smm_init(void) +#if !IS_ENABLED(CONFIG_HAVE_SMI_HANDLER) +/* Empty stubs for platforms without SMI handlers. */ +void smm_init(void) { } -__attribute__((weak)) void smm_init_completion(void) +void smm_init_completion(void) { } +#endif diff --git a/src/soc/intel/sch/smi.c b/src/soc/intel/sch/smi.c index f79e963ba1..7e5ce241f9 100644 --- a/src/soc/intel/sch/smi.c +++ b/src/soc/intel/sch/smi.c @@ -312,6 +312,10 @@ void smm_init(void) smi_set_eos(); } +void smm_init_completion(void) +{ +} + void smm_lock(void) { /* LOCK the SMM memory window and enable normal SMM.