From 2cba9e44b622be58caa577049bd544ddf17a26e1 Mon Sep 17 00:00:00 2001 From: Arthur Heymans Date: Mon, 15 Feb 2021 14:16:34 +0100 Subject: soc/intel/xeon_sp/smmrelocate: Don't run twice on the BSP This only makes sense if relocation via MSR is possible, to relocate APs in parallel. xeon_sp hardware does not support these MSR. TESTED: ocp/deltalake boots fine. SMM is relocated on CPU 0 just like all other cores. Change-Id: Ic45e6985093b8c9a1cee13c87bc0f09c77aaa0d2 Signed-off-by: Arthur Heymans Reviewed-on: https://review.coreboot.org/c/coreboot/+/50722 Tested-by: build bot (Jenkins) Reviewed-by: Angel Pons --- src/soc/intel/xeon_sp/cpx/cpu.c | 2 +- src/soc/intel/xeon_sp/skx/cpu.c | 2 +- src/soc/intel/xeon_sp/smmrelocate.c | 15 --------------- 3 files changed, 2 insertions(+), 17 deletions(-) diff --git a/src/soc/intel/xeon_sp/cpx/cpu.c b/src/soc/intel/xeon_sp/cpx/cpu.c index be01fc0b9f..b3ab236faf 100644 --- a/src/soc/intel/xeon_sp/cpx/cpu.c +++ b/src/soc/intel/xeon_sp/cpx/cpu.c @@ -183,7 +183,7 @@ static const struct mp_ops mp_ops = { .pre_mp_init = pre_mp_init, .get_cpu_count = get_thread_count, .get_smm_info = get_smm_info, - .pre_mp_smm_init = smm_initialize, + .pre_mp_smm_init = smm_southbridge_clear_state, .relocation_handler = smm_relocation_handler, .get_microcode_info = get_microcode_info, .post_mp_init = post_mp_init, diff --git a/src/soc/intel/xeon_sp/skx/cpu.c b/src/soc/intel/xeon_sp/skx/cpu.c index f9cd356efc..848c907e58 100644 --- a/src/soc/intel/xeon_sp/skx/cpu.c +++ b/src/soc/intel/xeon_sp/skx/cpu.c @@ -217,7 +217,7 @@ static const struct mp_ops mp_ops = { .pre_mp_init = pre_mp_init, .get_cpu_count = get_platform_thread_count, .get_smm_info = get_smm_info, - .pre_mp_smm_init = smm_initialize, + .pre_mp_smm_init = smm_southbridge_clear_state, .relocation_handler = smm_relocation_handler, .post_mp_init = post_mp_init, }; diff --git a/src/soc/intel/xeon_sp/smmrelocate.c b/src/soc/intel/xeon_sp/smmrelocate.c index a71a740955..dc4b511ad2 100644 --- a/src/soc/intel/xeon_sp/smmrelocate.c +++ b/src/soc/intel/xeon_sp/smmrelocate.c @@ -127,18 +127,3 @@ void smm_relocation_handler(int cpu, uintptr_t curr_smbase, if (mtrr_cap.lo & SMRR_SUPPORTED) write_smrr(relo_params); } - -void smm_initialize(void) -{ - /* Clear the SMM state in the southbridge. */ - smm_southbridge_clear_state(); - /* Run the relocation handler for on the BSP . */ - smm_initiate_relocation(); -} - -void smm_relocate(void) -{ - /* Save states via MSR does not seem to be supported on CPX */ - if (!boot_cpu()) - smm_initiate_relocation(); -} -- cgit v1.2.3