diff options
author | Lijian Zhao <lijian.zhao@intel.com> | 2017-09-14 14:51:12 -0700 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2017-10-03 20:23:41 +0000 |
commit | f0eb99996d0baa7b0c09027f542a17d01c570a47 (patch) | |
tree | 747c6997e32e55677bc6c8e9a4007419f6724120 /src/soc/intel/cannonlake/cpu.c | |
parent | a515849259f71eb92d5465b6bcd9957b73db1889 (diff) |
soc/intel/cannonlake: Fill the SMI usage
Add SMM support for Cannonlake on top of common SMM, also include the
SMM relocate support.
Change-Id: I9aab141c528709b30804d327804c4031c59fcfff
Signed-off-by: Lijian Zhao <lijian.zhao@intel.com>
Reviewed-on: https://review.coreboot.org/21543
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/soc/intel/cannonlake/cpu.c')
-rw-r--r-- | src/soc/intel/cannonlake/cpu.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/soc/intel/cannonlake/cpu.c b/src/soc/intel/cannonlake/cpu.c index 4e065778fa..2dffccb923 100644 --- a/src/soc/intel/cannonlake/cpu.c +++ b/src/soc/intel/cannonlake/cpu.c @@ -21,10 +21,12 @@ #include <cpu/intel/turbo.h> #include <intelblocks/cpulib.h> #include <intelblocks/mp_init.h> +#include <intelblocks/smm.h> #include <romstage_handoff.h> #include <soc/cpu.h> #include <soc/msr.h> #include <soc/pci_devs.h> +#include <soc/smm.h> static void soc_fsp_load(void) { @@ -197,13 +199,27 @@ void soc_core_init(device_t cpu) /* Enable Turbo */ enable_turbo(); +} +static void per_cpu_smm_trigger(void) +{ + /* Relocate the SMM handler. */ + smm_relocate(); } static void post_mp_init(void) { /* Set Max Ratio */ cpu_set_max_ratio(); + + /* + * Now that all APs have been relocated as well as the BSP let SMIs + * start flowing. + */ + smm_southbridge_enable(); + + /* Lock down the SMRAM space. */ + smm_lock(); } static const struct mp_ops mp_ops = { @@ -214,7 +230,11 @@ static const struct mp_ops mp_ops = { */ .pre_mp_init = soc_fsp_load, .get_cpu_count = get_cpu_count, + .get_smm_info = smm_info, .get_microcode_info = get_microcode_info, + .pre_mp_smm_init = smm_initialize, + .per_cpu_smm_trigger = per_cpu_smm_trigger, + .relocation_handler = smm_relocation_handler, .post_mp_init = post_mp_init, }; |