1 determining the signature – Intel IA-32 User Manual
Page 421
Vol. 3A 9-47
PROCESSOR MANAGEMENT AND INITIALIZATION
CPUID returns a value in a model specific register in addition to its usual register return values.
The semantics of CPUID cause it to deposit an update ID value in the 64-bit model-specific
register at address 08BH (IA32_BIOS_SIGN_ID). If no update is present in the processor, the
value in the MSR remains unmodified. The BIOS must pre-load a zero into the MSR before
executing CPUID. If a read of the MSR at 8BH still returns zero after executing CPUID, this
indicates that no update is present.
The update ID value returned in the EDX register after RDMSR executes indicates the revision
of the update loaded in the processor. This value, in combination with the CPUID value returned
in the EAX register, uniquely identifies a particular update. The signature ID can be directly
compared with the update revision field in a microcode update header for verification of a
correct load. No consecutive updates released for a given stepping of a processor may share the
same signature. The processor signature returned by CPUID differentiates updates for different
steppings.
9.11.7.1
Determining the Signature
An update that is successfully loaded into the processor provides a signature that matches the
update revision of the currently functioning revision. This signature is available any time after
the actual update has been loaded. Requesting the signature does not have a negative impact
upon a loaded update.
The procedure for determining this signature shown in Example 9-9.
Example 9-9. Assembly Code to Retrieve the Update Revision
MOV
ECX, 08BH
;IA32_BIOS_SIGN_ID
XOR
EAX, EAX
;clear EAX
XOR
EDX, EDX
;clear EDX
WRMSR
;Load 0 to MSR at 8BH
MOV
EAX, 1
cpuid
MOV
ECX, 08BH
;IA32_BIOS_SIGN_ID
rdmsr
;Read Model Specific Register
If there is an update active in the processor, its revision is returned in the EDX register after the
RDMSR instruction executes.
IA32_BIOS_SIGN_ID
Microcode Update Signature Register
MSR Address:
08BH Accessed as a Qword
Default Value:
XXXX XXXX XXXX XXXXh
Access:
Read/Write