summaryrefslogtreecommitdiff
path: root/usr/src/uts/i86pc/os/mp_startup.c
diff options
context:
space:
mode:
authorsherrym <none@none>2007-07-02 14:05:35 -0700
committersherrym <none@none>2007-07-02 14:05:35 -0700
commit2449e17f82f6097fd2c665b64723e31ceecbeca6 (patch)
tree4adce4537b78e91f1ac4f87433c9dddb715fffd2 /usr/src/uts/i86pc/os/mp_startup.c
parent76bc40308a78598795fbedd14f726061bcd17cad (diff)
downloadillumos-joyent-2449e17f82f6097fd2c665b64723e31ceecbeca6.tar.gz
PSARC/2007/349 Intel Microcode Update Support
6558456 Need to support microcode update on Intel platforms
Diffstat (limited to 'usr/src/uts/i86pc/os/mp_startup.c')
-rw-r--r--usr/src/uts/i86pc/os/mp_startup.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/usr/src/uts/i86pc/os/mp_startup.c b/usr/src/uts/i86pc/os/mp_startup.c
index 425afa7801..99c904404e 100644
--- a/usr/src/uts/i86pc/os/mp_startup.c
+++ b/usr/src/uts/i86pc/os/mp_startup.c
@@ -373,6 +373,11 @@ mp_startup_init(int cpun)
*/
cpuid_alloc_space(cp);
+ /*
+ * alloc space for ucode_info
+ */
+ ucode_alloc_space(cp);
+
hat_cpu_online(cp);
#ifdef TRAPTRACE
@@ -462,6 +467,8 @@ mp_startup_fini(struct cpu *cp, int error)
cpuid_free_space(cp);
+ ucode_free_space(cp);
+
if (cp->cpu_m.mcpu_idt != CPU->cpu_m.mcpu_idt)
kmem_free(cp->cpu_m.mcpu_idt, sizeof (idt0));
cp->cpu_m.mcpu_idt = NULL;
@@ -1187,6 +1194,9 @@ start_other_cpus(int cprboot)
CPUSET_DEL(mp_cpus, who);
}
+ /* Free the space allocated to hold the microcode file */
+ ucode_free();
+
affinity_clear();
if (skipped) {
@@ -1345,6 +1355,11 @@ mp_startup(void)
(*dtrace_cpu_init)(cp->cpu_id);
}
+ /*
+ * Fill out cpu_ucode_info. Update microcode if necessary.
+ */
+ ucode_check(cp);
+
mutex_exit(&cpu_lock);
/*