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 <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/50722 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
committed by
Patrick Georgi
parent
1174dad2e2
commit
2cba9e44b6
@@ -183,7 +183,7 @@ static const struct mp_ops mp_ops = {
|
|||||||
.pre_mp_init = pre_mp_init,
|
.pre_mp_init = pre_mp_init,
|
||||||
.get_cpu_count = get_thread_count,
|
.get_cpu_count = get_thread_count,
|
||||||
.get_smm_info = get_smm_info,
|
.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,
|
.relocation_handler = smm_relocation_handler,
|
||||||
.get_microcode_info = get_microcode_info,
|
.get_microcode_info = get_microcode_info,
|
||||||
.post_mp_init = post_mp_init,
|
.post_mp_init = post_mp_init,
|
||||||
|
@@ -217,7 +217,7 @@ static const struct mp_ops mp_ops = {
|
|||||||
.pre_mp_init = pre_mp_init,
|
.pre_mp_init = pre_mp_init,
|
||||||
.get_cpu_count = get_platform_thread_count,
|
.get_cpu_count = get_platform_thread_count,
|
||||||
.get_smm_info = get_smm_info,
|
.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,
|
.relocation_handler = smm_relocation_handler,
|
||||||
.post_mp_init = post_mp_init,
|
.post_mp_init = post_mp_init,
|
||||||
};
|
};
|
||||||
|
@@ -127,18 +127,3 @@ void smm_relocation_handler(int cpu, uintptr_t curr_smbase,
|
|||||||
if (mtrr_cap.lo & SMRR_SUPPORTED)
|
if (mtrr_cap.lo & SMRR_SUPPORTED)
|
||||||
write_smrr(relo_params);
|
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();
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user