diff --git a/src/cpu/intel/microcode/microcode.c b/src/cpu/intel/microcode/microcode.c index a4471ca042..15d6513b33 100644 --- a/src/cpu/intel/microcode/microcode.c +++ b/src/cpu/intel/microcode/microcode.c @@ -28,12 +28,16 @@ #include #include -#if CONFIG_CPU_MICROCODE_IN_CBFS #ifdef __PRE_RAM__ +#if CONFIG_CPU_MICROCODE_IN_CBFS #include +#endif #else +#if CONFIG_CPU_MICROCODE_IN_CBFS #include #endif +#include +DECLARE_SPIN_LOCK(microcode_lock) #endif struct microcode { @@ -112,6 +116,9 @@ void intel_update_microcode(const void *microcode_updates) printk(BIOS_DEBUG, "microcode: sig=0x%x pf=0x%x revision=0x%x\n", sig, pf, rev); #endif +#if !defined(__ROMCC__) && !defined(__PRE_RAM__) + spin_lock(µcode_lock); +#endif m = microcode_updates; for(c = microcode_updates; m->hdrver; m = (const struct microcode *)c) { @@ -142,6 +149,10 @@ void intel_update_microcode(const void *microcode_updates) c += 2048; } } + +#if !defined(__ROMCC__) && !defined(__PRE_RAM__) + spin_unlock(µcode_lock); +#endif } #if CONFIG_CPU_MICROCODE_IN_CBFS