background image

9-32 Vol. 3A

PROCESSOR MANAGEMENT AND INITIALIZATION

9.11.3 Processor 

Identification

Each microcode update is designed to for a specific processor or set of processors. To determine the correct micro-
code update to load, software must ensure that one of the processor signatures embedded in the microcode update 
matches the 32-bit processor signature returned by the CPUID instruction when executed by the target processor 
with EAX = 1.  Attempting to load a microcode update that does not match a processor signature embedded in the 
microcode update with the processor signature returned by CPUID will cause the BIOS to reject the update.
Example 9-5 shows how to check for a valid processor signature match between the processor and microcode 
update.

Example 9-5.  Pseudo Code to Validate the Processor Signature

ProcessorSignature 

← CPUID(1):EAX

If (Update.HeaderVersion = 00000001h)

{

// first check the ProcessorSignature field

If (ProcessorSignature = Update.ProcessorSignature)

Success

// if extended signature is present

Else If (Update.TotalSize > (Update.DataSize + 48))

{

//

// Assume the Data Size has been used to calculate the 

// location of Update.ProcessorSignature[0].

//

For (N 

← 0; ((N < Update.ExtendedSignatureCount) AND 

 (ProcessorSignature 

≠ Update.ProcessorSignature[N])); N++);

// if the loops ended when the iteration count is

// less than the number of processor signatures in

// the table, we have a match

If (N < Update.ExtendedSignatureCount)

Success

Else

Fail

}

Else

Fail

Else

Fail 

9.11.4 Platform 

Identification

In addition to verifying the processor signature, the intended processor platform type must be determined to prop-
erly target the microcode update. The intended processor platform type is determined by reading the 
IA32_PLATFORM_ID register, (MSR 17H).  This 64-bit register must be read using the RDMSR instruction. 
The three platform ID bits, when read as a binary coded decimal (BCD) number, indicate the bit position in the 
microcode update header’s processor flags field associated with the installed processor.  The processor flags in the 
48-byte header and the processor flags field associated with the extended processor signature structures may have 
multiple bits set. Each set bit represents a different platform ID that the update supports.

Register Name:

IA32_PLATFORM_ID

MSR Address:

017H