summaryrefslogtreecommitdiff
path: root/src/soc/intel/apollolake/cpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/apollolake/cpu.c')
-rw-r--r--src/soc/intel/apollolake/cpu.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/soc/intel/apollolake/cpu.c b/src/soc/intel/apollolake/cpu.c
index bcec28e514..d1c5f6f406 100644
--- a/src/soc/intel/apollolake/cpu.c
+++ b/src/soc/intel/apollolake/cpu.c
@@ -17,6 +17,7 @@
* GNU General Public License for more details.
*/
+#include <arch/acpi.h>
#include <assert.h>
#include <console/console.h>
#include "chip.h"
@@ -70,10 +71,11 @@ static const struct reg_script core_msr_script[] = {
void soc_core_init(struct device *cpu)
{
/* Clear out pending MCEs */
- /* TODO(adurbin): This should only be done on a cold boot. Also, some
- * of these banks are core vs package scope. For now every CPU clears
- * every bank. */
- mca_configure(NULL);
+ /* TODO(adurbin): Some of these banks are core vs package
+ scope. For now every CPU clears every bank. */
+ if (IS_ENABLED(SOC_INTEL_COMMON_BLOCK_SGX) ||
+ acpi_get_sleep_type() == ACPI_S5)
+ mca_configure(NULL);
/* Set core MSRs */
reg_script_run(core_msr_script);