From 2449e17f82f6097fd2c665b64723e31ceecbeca6 Mon Sep 17 00:00:00 2001 From: sherrym Date: Mon, 2 Jul 2007 14:05:35 -0700 Subject: PSARC/2007/349 Intel Microcode Update Support 6558456 Need to support microcode update on Intel platforms --- usr/src/uts/intel/sys/controlregs.h | 10 ++++++++++ usr/src/uts/intel/sys/x86_archext.h | 8 ++++++++ 2 files changed, 18 insertions(+) (limited to 'usr/src/uts/intel/sys') diff --git a/usr/src/uts/intel/sys/controlregs.h b/usr/src/uts/intel/sys/controlregs.h index 385a89fe07..8acded36d8 100644 --- a/usr/src/uts/intel/sys/controlregs.h +++ b/usr/src/uts/intel/sys/controlregs.h @@ -135,6 +135,16 @@ extern "C" { #define MSR_INTC_SEP_ESP 0x175 /* kernel esp MSR */ #define MSR_INTC_SEP_EIP 0x176 /* kernel eip MSR */ +/* Intel's microcode registers */ +#define MSR_INTC_UCODE_WRITE 0x79 /* microcode write */ +#define MSR_INTC_UCODE_REV 0x8b /* microcode revision */ +#define INTC_UCODE_REV_SHIFT 32 /* Bits 63:32 */ + +/* Intel's platform identification */ +#define MSR_INTC_PLATFORM_ID 0x17 +#define INTC_PLATFORM_ID_SHIFT 50 /* Bit 52:50 */ +#define INTC_PLATFORM_ID_MASK 0x7 + /* AMD's EFER register */ #define MSR_AMD_EFER 0xc0000080 /* extended feature enable MSR */ diff --git a/usr/src/uts/intel/sys/x86_archext.h b/usr/src/uts/intel/sys/x86_archext.h index 9e0bde9041..347e7c5472 100644 --- a/usr/src/uts/intel/sys/x86_archext.h +++ b/usr/src/uts/intel/sys/x86_archext.h @@ -554,6 +554,7 @@ extern uint_t cpuid_getvendor(struct cpu *); extern uint_t cpuid_getfamily(struct cpu *); extern uint_t cpuid_getmodel(struct cpu *); extern uint_t cpuid_getstep(struct cpu *); +extern uint_t cpuid_getsig(struct cpu *); extern uint_t cpuid_get_ncpu_per_chip(struct cpu *); extern uint_t cpuid_get_ncore_per_chip(struct cpu *); extern int cpuid_get_chipid(struct cpu *); @@ -584,6 +585,13 @@ extern void cpuid_get_addrsize(struct cpu *, uint_t *, uint_t *); extern uint_t cpuid_get_dtlb_nent(struct cpu *, size_t); extern size_t cpuid_get_mwait_size(struct cpu *cpu); +struct cpu_ucode_info; + +extern void ucode_alloc_space(struct cpu *); +extern void ucode_free_space(struct cpu *); +extern void ucode_check(struct cpu *); +extern void ucode_free(); + extern uint_t workaround_errata(struct cpu *); #if defined(OPTERON_ERRATUM_93) -- cgit v1.2.3