cpu/x86/smm: Add SMM_LEGACY_ASEG

Followup will allow use of PARALLEL_MP with SMM_ASEG so
some guards need to be adjusted.

Change-Id: If032ce2be4749559db0d46ab5ae422afa7666785
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/61480
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
Kyösti Mälkki 2022-01-29 14:05:58 +02:00 committed by Felix Held
parent bab9d72f15
commit 894f6f8229
10 changed files with 19 additions and 23 deletions

View File

@ -9,4 +9,4 @@ ramstage-y += model_15_init.c
smm-y += udelay.c
subdirs-y += ../../mtrr
subdirs-y += ../../smm
subdirs-$(CONFIG_SMM_LEGACY_ASEG) += ../../smm

View File

@ -1,2 +1,2 @@
ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smm_init.c
ramstage-y += smm_init.c

View File

@ -114,6 +114,12 @@ config SMM_TSEG
default y
depends on !(NO_SMM || SMM_ASEG)
config SMM_LEGACY_ASEG
bool
default y if HAVE_SMI_HANDLER && SMM_ASEG && LEGACY_SMP_INIT
help
SMM support without PARALLEL_MP, to be deprecated.
if SMM_TSEG
config SMM_MODULE_HEAP_SIZE

View File

@ -391,7 +391,8 @@ void initialize_cpus(struct bus *cpu_bus)
if (is_smp_boot())
copy_secondary_start_to_lowest_1M();
smm_init();
if (CONFIG(SMM_LEGACY_ASEG))
smm_init();
/* Initialize the bootstrap processor */
cpu_initialize(0);
@ -403,7 +404,8 @@ void initialize_cpus(struct bus *cpu_bus)
if (is_smp_boot())
wait_other_cpus_stop(cpu_bus);
smm_init_completion();
if (CONFIG(SMM_LEGACY_ASEG))
smm_init_completion();
if (is_smp_boot())
recover_lowest_1M();

View File

@ -3,16 +3,8 @@
#ifndef __X86_SMI_DEPRECATED_H__
#define __X86_SMI_DEPRECATED_H__
#include <stdint.h>
#if CONFIG(PARALLEL_MP) || !CONFIG(HAVE_SMI_HANDLER)
/* Empty stubs for platforms without SMI handlers. */
static inline void smm_init(void) { }
static inline void smm_init_completion(void) { }
#else
void smm_init(void);
void smm_init_completion(void);
#endif
/* Entry from smmhandler.S. */
void smi_handler(void);

View File

@ -11,10 +11,8 @@ ramstage-y += lpc.c
ramstage-y += usb.c
ramstage-y += usb2.c
ifeq ($(CONFIG_SMM_ASEG),y)
ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smi.c
ramstage-$(CONFIG_HAVE_SMI_HANDLER) += ../../../cpu/x86/smm/smmrelocate.S
endif
ramstage-$(CONFIG_SMM_LEGACY_ASEG) += smi.c
ramstage-$(CONFIG_SMM_LEGACY_ASEG) += ../../../cpu/x86/smm/smmrelocate.S
smm-y += smihandler.c

View File

@ -279,7 +279,7 @@ static void lpc_init(struct device *dev)
/* Don't allow evil boot loaders, kernels, or
* userspace applications to deceive us:
*/
if (CONFIG(HAVE_SMI_HANDLER) && !CONFIG(PARALLEL_MP))
if (CONFIG(SMM_LEGACY_ASEG))
aseg_smm_lock();
}

View File

@ -28,10 +28,8 @@ ifneq ($(CONFIG_BOARD_EMULATION_QEMU_X86_Q35),y)
ramstage-y += madt.c
endif
ifeq ($(CONFIG_SMM_ASEG),y)
ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smi.c
ramstage-$(CONFIG_HAVE_SMI_HANDLER) += ../../../cpu/x86/smm/smmrelocate.S
endif
ramstage-$(CONFIG_SMM_LEGACY_ASEG) += smi.c
ramstage-$(CONFIG_SMM_LEGACY_ASEG) += ../../../cpu/x86/smm/smmrelocate.S
CPPFLAGS_common += -I$(src)/southbridge/intel/i82801ix/include

View File

@ -378,7 +378,7 @@ static void lpc_init(struct device *dev)
/* Don't allow evil boot loaders, kernels, or
* userspace applications to deceive us:
*/
if (CONFIG(HAVE_SMI_HANDLER) && !CONFIG(PARALLEL_MP))
if (CONFIG(SMM_LEGACY_ASEG))
aseg_smm_lock();
}

View File

@ -9,7 +9,7 @@
#include <soc/nvs.h>
#if !CONFIG(SMM_TSEG)
#if CONFIG(SMM_LEGACY_ASEG)
/* For qemu/x86-q35 to build properly. */
struct global_nvs *gnvs;
#endif