diff options
author | sherrym <none@none> | 2007-07-02 14:05:35 -0700 |
---|---|---|
committer | sherrym <none@none> | 2007-07-02 14:05:35 -0700 |
commit | 2449e17f82f6097fd2c665b64723e31ceecbeca6 (patch) | |
tree | 4adce4537b78e91f1ac4f87433c9dddb715fffd2 /usr/src/uts/i86pc/os/mp_startup.c | |
parent | 76bc40308a78598795fbedd14f726061bcd17cad (diff) | |
download | illumos-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.c | 15 |
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); /* |