summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cpu/intel/model_1067x/mp_init.c9
-rw-r--r--src/cpu/intel/model_2065x/model_2065x_init.c6
-rw-r--r--src/cpu/intel/model_206ax/model_206ax_init.c6
-rw-r--r--src/soc/intel/common/block/cpu/mp_init.c19
-rw-r--r--src/soc/intel/common/block/include/intelblocks/mp_init.h8
-rw-r--r--src/soc/intel/common/block/sgx/sgx.c2
-rw-r--r--src/soc/intel/xeon_sp/cpx/cpu.c7
7 files changed, 13 insertions, 44 deletions
diff --git a/src/cpu/intel/model_1067x/mp_init.c b/src/cpu/intel/model_1067x/mp_init.c
index ff6cbec8dcf6..fd6a82ac1777 100644
--- a/src/cpu/intel/model_1067x/mp_init.c
+++ b/src/cpu/intel/model_1067x/mp_init.c
@@ -9,11 +9,10 @@
#include <device/device.h>
/* Parallel MP initialization support. */
-static const void *microcode_patch;
-
static void pre_mp_init(void)
{
- intel_microcode_load_unlocked(microcode_patch);
+ const void *patch = intel_microcode_find();
+ intel_microcode_load_unlocked(patch);
/* Setup MTRRs based on physical address size. */
x86_setup_mtrrs_with_detect();
@@ -32,7 +31,7 @@ static int get_cpu_count(void)
static void get_microcode_info(const void **microcode, int *parallel)
{
- *microcode = microcode_patch;
+ *microcode = intel_microcode_find();
*parallel = !intel_ht_supported();
}
@@ -98,8 +97,6 @@ static const struct mp_ops mp_ops = {
void mp_init_cpus(struct bus *cpu_bus)
{
- microcode_patch = intel_microcode_find();
-
if (mp_init_with_smm(cpu_bus, &mp_ops))
printk(BIOS_ERR, "MP initialization failure.\n");
}
diff --git a/src/cpu/intel/model_2065x/model_2065x_init.c b/src/cpu/intel/model_2065x/model_2065x_init.c
index 44552f597122..dd2aeef135ff 100644
--- a/src/cpu/intel/model_2065x/model_2065x_init.c
+++ b/src/cpu/intel/model_2065x/model_2065x_init.c
@@ -123,8 +123,6 @@ static void model_2065x_init(struct device *cpu)
}
/* MP initialization support. */
-static const void *microcode_patch;
-
static void pre_mp_init(void)
{
/* Setup MTRRs based on physical address size. */
@@ -149,8 +147,7 @@ static int get_cpu_count(void)
static void get_microcode_info(const void **microcode, int *parallel)
{
- microcode_patch = intel_microcode_find();
- *microcode = microcode_patch;
+ *microcode = intel_microcode_find();
*parallel = !intel_ht_supported();
}
@@ -160,6 +157,7 @@ static void per_cpu_smm_trigger(void)
smm_relocate();
/* After SMM relocation a 2nd microcode load is required. */
+ const void *microcode_patch = intel_microcode_find();
intel_microcode_load_unlocked(microcode_patch);
}
diff --git a/src/cpu/intel/model_206ax/model_206ax_init.c b/src/cpu/intel/model_206ax/model_206ax_init.c
index 31099fd486ef..ef04d3981f73 100644
--- a/src/cpu/intel/model_206ax/model_206ax_init.c
+++ b/src/cpu/intel/model_206ax/model_206ax_init.c
@@ -466,8 +466,6 @@ static void model_206ax_init(struct device *cpu)
}
/* MP initialization support. */
-static const void *microcode_patch;
-
static void pre_mp_init(void)
{
/* Setup MTRRs based on physical address size. */
@@ -492,8 +490,7 @@ static int get_cpu_count(void)
static void get_microcode_info(const void **microcode, int *parallel)
{
- microcode_patch = intel_microcode_find();
- *microcode = microcode_patch;
+ *microcode = intel_microcode_find();
*parallel = !intel_ht_supported();
}
@@ -503,6 +500,7 @@ static void per_cpu_smm_trigger(void)
smm_relocate();
/* After SMM relocation a 2nd microcode load is required. */
+ const void *microcode_patch = intel_microcode_find();
intel_microcode_load_unlocked(microcode_patch);
}
diff --git a/src/soc/intel/common/block/cpu/mp_init.c b/src/soc/intel/common/block/cpu/mp_init.c
index 4fd207434389..8f8cd069b3a9 100644
--- a/src/soc/intel/common/block/cpu/mp_init.c
+++ b/src/soc/intel/common/block/cpu/mp_init.c
@@ -15,8 +15,6 @@
#include <intelblocks/msr.h>
#include <soc/cpu.h>
-static const void *microcode_patch;
-
/* SoC override function */
__weak void soc_core_init(struct device *dev)
{
@@ -31,6 +29,8 @@ __weak void soc_init_cpus(struct bus *cpu_bus)
static void init_one_cpu(struct device *dev)
{
soc_core_init(dev);
+
+ const void *microcode_patch = intel_microcode_find();
intel_microcode_load_unlocked(microcode_patch);
}
@@ -105,17 +105,6 @@ int get_cpu_count(void)
}
/*
- * Function to get the microcode patch pointer. Use this function to avoid
- * reading the microcode patch from the boot media. init_cpus() would
- * initialize microcode_patch global variable to point to microcode patch
- * in boot media and this function can be used to access the pointer.
- */
-const void *intel_mp_current_microcode(void)
-{
- return microcode_patch;
-}
-
-/*
* MP Init callback function(get_microcode_info) to find the Microcode at
* Pre MP Init phase. This function is common among all SOCs and thus its in
* Common CPU block.
@@ -125,7 +114,7 @@ const void *intel_mp_current_microcode(void)
*/
void get_microcode_info(const void **microcode, int *parallel)
{
- *microcode = intel_mp_current_microcode();
+ *microcode = intel_microcode_find();
*parallel = 1;
}
@@ -151,7 +140,7 @@ static void coreboot_init_cpus(void *unused)
if (CONFIG(USE_INTEL_FSP_MP_INIT))
return;
- microcode_patch = intel_microcode_find();
+ const void *microcode_patch = intel_microcode_find();
intel_microcode_load_unlocked(microcode_patch);
init_cpus();
diff --git a/src/soc/intel/common/block/include/intelblocks/mp_init.h b/src/soc/intel/common/block/include/intelblocks/mp_init.h
index 7dc85df24efa..9038dd58232d 100644
--- a/src/soc/intel/common/block/include/intelblocks/mp_init.h
+++ b/src/soc/intel/common/block/include/intelblocks/mp_init.h
@@ -54,14 +54,6 @@
int get_cpu_count(void);
/*
- * Function to get the microcode patch pointer. Use this function to avoid
- * reading the microcode patch from the boot media. init_cpus() would
- * initialize microcode_patch global variable to point to microcode patch
- * in boot media and this function can be used to access the pointer.
- */
-const void *intel_mp_current_microcode(void);
-
-/*
* MP Init callback function(get_microcode_info) to find the Microcode at
* Pre MP Init phase. This function is common among all SOCs and thus its in
* Common CPU block.
diff --git a/src/soc/intel/common/block/sgx/sgx.c b/src/soc/intel/common/block/sgx/sgx.c
index 336ed54f062e..b5c8944a9b02 100644
--- a/src/soc/intel/common/block/sgx/sgx.c
+++ b/src/soc/intel/common/block/sgx/sgx.c
@@ -224,7 +224,7 @@ void sgx_configure(void *unused)
* loads and to prevent simultaneous load attempts to the same core.
*/
if (!intel_ht_sibling()) {
- const void *microcode_patch = intel_mp_current_microcode();
+ const void *microcode_patch = intel_microcode_find();
intel_microcode_load_unlocked(microcode_patch);
}
diff --git a/src/soc/intel/xeon_sp/cpx/cpu.c b/src/soc/intel/xeon_sp/cpx/cpu.c
index 4dea1a40a6e2..be01fc0b9fc2 100644
--- a/src/soc/intel/xeon_sp/cpx/cpu.c
+++ b/src/soc/intel/xeon_sp/cpx/cpu.c
@@ -58,15 +58,10 @@ static void xeon_configure_mca(void)
*/
void get_microcode_info(const void **microcode, int *parallel)
{
- *microcode = intel_mp_current_microcode();
+ *microcode = intel_microcode_find();
*parallel = 0;
}
-const void *intel_mp_current_microcode(void)
-{
- return microcode_patch;
-}
-
static void each_cpu_init(struct device *cpu)
{
msr_t msr;