diff options
Diffstat (limited to 'src/soc/intel/apollolake')
-rw-r--r-- | src/soc/intel/apollolake/chip.c | 12 | ||||
-rw-r--r-- | src/soc/intel/apollolake/include/soc/cpu.h | 1 | ||||
-rw-r--r-- | src/soc/intel/apollolake/include/soc/msr.h | 4 |
3 files changed, 16 insertions, 1 deletions
diff --git a/src/soc/intel/apollolake/chip.c b/src/soc/intel/apollolake/chip.c index 651bd8418c..98844a52fd 100644 --- a/src/soc/intel/apollolake/chip.c +++ b/src/soc/intel/apollolake/chip.c @@ -28,6 +28,7 @@ #include <soc/intel/common/vbt.h> #include <soc/iomap.h> #include <soc/itss.h> +#include <soc/msr.h> #include <soc/pci_devs.h> #include <soc/pm.h> #include <soc/systemagent.h> @@ -702,10 +703,19 @@ struct chip_operations soc_intel_apollolake_ops = { .final = &soc_final }; +static void soc_enable_untrusted_mode(void *unused) +{ + /* + * Set Bit 6 (ENABLE_IA_UNTRUSTED_MODE) of MSR 0x120 + * UCODE_PCR_POWER_MISC MSR to enter IA Untrusted Mode. + */ + msr_set(MSR_POWER_MISC, ENABLE_IA_UNTRUSTED); +} + static void drop_privilege_all(void) { /* Drop privilege level on all the CPUs */ - if (mp_run_on_all_cpus(&cpu_enable_untrusted_mode, NULL) != CB_SUCCESS) + if (mp_run_on_all_cpus(&soc_enable_untrusted_mode, NULL) != CB_SUCCESS) printk(BIOS_ERR, "failed to enable untrusted mode\n"); } diff --git a/src/soc/intel/apollolake/include/soc/cpu.h b/src/soc/intel/apollolake/include/soc/cpu.h index 38b830a16f..3157952455 100644 --- a/src/soc/intel/apollolake/include/soc/cpu.h +++ b/src/soc/intel/apollolake/include/soc/cpu.h @@ -5,6 +5,7 @@ #include <cpu/x86/msr.h> #include <intelblocks/msr.h> +#include <soc/msr.h> struct device; void apollolake_init_cpus(struct device *dev); diff --git a/src/soc/intel/apollolake/include/soc/msr.h b/src/soc/intel/apollolake/include/soc/msr.h index e35c8814eb..97c67ddc21 100644 --- a/src/soc/intel/apollolake/include/soc/msr.h +++ b/src/soc/intel/apollolake/include/soc/msr.h @@ -5,4 +5,8 @@ #include <intelblocks/msr.h> +#define MSR_POWER_MISC 0x120 +#define ENABLE_IA_UNTRUSTED (1 << 6) +#define FLUSH_DL1_L2 (1 << 8) + #endif |