From 3337497d2a1995614afd4a554747d86e4bcd8d31 Mon Sep 17 00:00:00 2001 From: Subrata Banik Date: Tue, 24 Apr 2018 13:45:30 +0530 Subject: cpu/x86: Add support to run function with argument over APs This patch ensures that user can pass a function with given argument list to execute over APs. BUG=b:74436746 BRANCH=none TEST=Able to run functions over APs with argument. Change-Id: I668b36752f6b21cb99cd1416c385d53e96117213 Signed-off-by: Subrata Banik Reviewed-on: https://review.coreboot.org/25725 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber --- src/soc/intel/common/block/cpu/cpulib.c | 2 +- src/soc/intel/common/block/cpu/mp_init.c | 7 ++++++- src/soc/intel/common/block/include/intelblocks/cpulib.h | 2 +- src/soc/intel/common/block/include/intelblocks/sgx.h | 2 +- src/soc/intel/common/block/include/intelblocks/vmx.h | 2 +- src/soc/intel/common/block/sgx/sgx.c | 2 +- src/soc/intel/common/block/vmx/vmx.c | 2 +- 7 files changed, 12 insertions(+), 7 deletions(-) (limited to 'src/soc/intel/common') diff --git a/src/soc/intel/common/block/cpu/cpulib.c b/src/soc/intel/common/block/cpu/cpulib.c index e768f8c5a4..c67904f198 100644 --- a/src/soc/intel/common/block/cpu/cpulib.c +++ b/src/soc/intel/common/block/cpu/cpulib.c @@ -219,7 +219,7 @@ void cpu_disable_eist(void) * Set Bit 6 (ENABLE_IA_UNTRUSTED_MODE) of MSR 0x120 * UCODE_PCR_POWER_MISC MSR to enter IA Untrusted Mode. */ -void cpu_enable_untrusted_mode(void) +void cpu_enable_untrusted_mode(void *unused) { msr_t msr; diff --git a/src/soc/intel/common/block/cpu/mp_init.c b/src/soc/intel/common/block/cpu/mp_init.c index 23f2fb0d47..97ad176a20 100644 --- a/src/soc/intel/common/block/cpu/mp_init.c +++ b/src/soc/intel/common/block/cpu/mp_init.c @@ -130,10 +130,15 @@ static void init_cpus(void *unused) soc_init_cpus(dev->link_list); } +static void wrapper_x86_setup_mtrrs(void *unused) +{ + x86_setup_mtrrs_with_detect(); +} + /* Ensure to re-program all MTRRs based on DRAM resource settings */ static void post_cpus_init(void *unused) { - if (mp_run_on_all_cpus(&x86_setup_mtrrs_with_detect, 1000) < 0) + if (mp_run_on_all_cpus(&wrapper_x86_setup_mtrrs, NULL, 1000) < 0) printk(BIOS_ERR, "MTRR programming failure\n"); x86_mtrr_check(); diff --git a/src/soc/intel/common/block/include/intelblocks/cpulib.h b/src/soc/intel/common/block/include/intelblocks/cpulib.h index 34caf4c252..191459be5f 100644 --- a/src/soc/intel/common/block/include/intelblocks/cpulib.h +++ b/src/soc/intel/common/block/include/intelblocks/cpulib.h @@ -112,7 +112,7 @@ void cpu_disable_eist(void); * Set Bit 6 (ENABLE_IA_UNTRUSTED_MODE) of MSR 0x120 * UCODE_PCR_POWER_MISC MSR to enter IA Untrusted Mode. */ -void cpu_enable_untrusted_mode(void); +void cpu_enable_untrusted_mode(void *unused); /* * This function fills in the number of Cores(physical) and Threads(virtual) diff --git a/src/soc/intel/common/block/include/intelblocks/sgx.h b/src/soc/intel/common/block/include/intelblocks/sgx.h index 3c87b434c2..502483f7e9 100644 --- a/src/soc/intel/common/block/include/intelblocks/sgx.h +++ b/src/soc/intel/common/block/include/intelblocks/sgx.h @@ -38,7 +38,7 @@ void prmrr_core_configure(void); /* * Configure SGX. */ -void sgx_configure(void); +void sgx_configure(void *unused); /* SOC specific API to get SGX params. * returns 0, if able to get SGX params; otherwise returns -1 */ diff --git a/src/soc/intel/common/block/include/intelblocks/vmx.h b/src/soc/intel/common/block/include/intelblocks/vmx.h index 1f6d33656e..7f65b599b4 100644 --- a/src/soc/intel/common/block/include/intelblocks/vmx.h +++ b/src/soc/intel/common/block/include/intelblocks/vmx.h @@ -21,7 +21,7 @@ struct vmx_param { /* * Configure VMX. */ -void vmx_configure(void); +void vmx_configure(void *unused); /* SOC specific API to get VMX params. * returns 0, if able to get VMX params; otherwise returns -1 */ diff --git a/src/soc/intel/common/block/sgx/sgx.c b/src/soc/intel/common/block/sgx/sgx.c index d3be15c81e..daedcfcf5d 100644 --- a/src/soc/intel/common/block/sgx/sgx.c +++ b/src/soc/intel/common/block/sgx/sgx.c @@ -201,7 +201,7 @@ static int is_prmrr_approved(void) return 0; } -void sgx_configure(void) +void sgx_configure(void *unused) { const void *microcode_patch = intel_mp_current_microcode(); diff --git a/src/soc/intel/common/block/vmx/vmx.c b/src/soc/intel/common/block/vmx/vmx.c index 307ffd9ddb..591ffbc6df 100644 --- a/src/soc/intel/common/block/vmx/vmx.c +++ b/src/soc/intel/common/block/vmx/vmx.c @@ -43,7 +43,7 @@ static int soc_vmx_enabled(void) return vmx_param ? vmx_param->enable : 0; } -void vmx_configure(void) +void vmx_configure(void *unused) { msr_t msr; struct cpuid_result regs; -- cgit v1.2.3