soc/intel: sgx: get rid of UEFI-style usage of global variable

Rework SGX enable status in a clean way without using a global variable.

Change-Id: Ida6458eb46708df8fd238122aed41b57ca48c15b
Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/35882
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
Michael Niewöhner
2019-10-08 12:00:24 +02:00
committed by Nico Huber
parent edfe125bf9
commit 6e66d7b8eb
5 changed files with 19 additions and 59 deletions

View File

@@ -72,10 +72,12 @@ static const struct reg_script core_msr_script[] = {
void soc_core_init(struct device *cpu)
{
config_t *conf = config_of_soc();
/* Clear out pending MCEs */
/* TODO(adurbin): Some of these banks are core vs package
scope. For now every CPU clears every bank. */
if (CONFIG(SOC_INTEL_COMMON_BLOCK_SGX) ||
if ((CONFIG(SOC_INTEL_COMMON_BLOCK_SGX) && conf->sgx_enable) ||
acpi_get_sleep_type() == ACPI_S5)
mca_configure();
@@ -89,7 +91,7 @@ void soc_core_init(struct device *cpu)
enable_pm_timer_emulation();
/* Configure Core PRMRR for SGX. */
if (CONFIG(SOC_INTEL_COMMON_BLOCK_SGX))
if (CONFIG(SOC_INTEL_COMMON_BLOCK_SGX) && conf->sgx_enable)
prmrr_core_configure();
/* Set Max Non-Turbo ratio if RAPL is disabled. */
@@ -253,9 +255,11 @@ static void relocation_handler(int cpu, uintptr_t curr_smbase,
static void post_mp_init(void)
{
config_t *conf = config_of_soc();
smm_southbridge_enable(PWRBTN_EN | GBL_EN);
if (CONFIG(SOC_INTEL_COMMON_BLOCK_SGX))
if (CONFIG(SOC_INTEL_COMMON_BLOCK_SGX) && conf->sgx_enable)
mp_run_on_all_cpus(sgx_configure, NULL);
}
@@ -293,11 +297,3 @@ void cpu_lock_sgx_memory(void)
/* Do nothing because MCHECK while loading microcode and enabling
* IA untrusted mode takes care of necessary locking */
}
int soc_fill_sgx_param(struct sgx_param *sgx_param)
{
config_t *conf = config_of_soc();
sgx_param->enable = conf->sgx_enable;
return 0;
}