background image

9-44 Vol. 3A

PROCESSOR MANAGEMENT AND INITIALIZATION

Description

The BIOS is responsible for selecting an appropriate update block in the non-volatile storage for storing the new 
update. This BIOS is also responsible for ensuring the integrity of the information provided by the caller, including 
authenticating the proposed update before incorporating it into storage.
Before writing the update block into NVRAM, the BIOS should ensure that the update structure meets the following 
criteria in the following order:
1. The update header version should be equal to an update header version recognized by the BIOS.
2. The update loader version in the update header should be equal to the update loader version contained within 

the BIOS image.

3. The update block must checksum. This checksum is computed as a 32-bit summation of all double words in the 

structure, including the header, data, and processor signature table.

The BIOS selects update block(s) in non-volatile storage for storing the candidate update. The BIOS can select any 
available update block as long as it guarantees that only a single update exists for any given processor stepping in 
non-volatile storage. If the update block selected already contains an update, the following additional criteria apply 
to overwrite it:

The processor signature in the proposed update must be equal to the processor signature in the header of the 
current update in NVRAM (Processor Signature + platform ID bits).

The update revision in the proposed update should be greater than the update revision in the header of the 
current update in NVRAM.

If no unused update blocks are available and the above criteria are not met, the BIOS can overwrite update 
block(s) for a processor stepping that is no longer present in the system. This can be done by scanning the update 
blocks and comparing the processor steppings, identified in the MP Specification table, to the processor steppings 
that currently exist in the system.
Finally, before storing the proposed update in NVRAM, the BIOS must verify the authenticity of the update via the 
mechanism described in Section 9.11.6, “Microcode Update Loader.” This includes loading the update into the 
current processor, executing the CPUID instruction, reading MSR 08Bh, and comparing a calculated value with the 
update revision in the proposed update header for equality.
When performing the write update function, the BIOS must record the entire update, including the header, the 
update data, and the extended processor signature table (if applicable). When writing an update, the original 
contents may be overwritten, assuming the above criteria have been met. It is the responsibility of the BIOS to 
ensure that more recent updates are not overwritten through the use of this BIOS call, and that only a single 
update exists within the NVRAM for any processor stepping and platform ID.
Figure 9-8 and Figure 9-9 show the process the BIOS follows to choose an update block and ensure the integrity of 
the data when it stores the new microcode update. 

STORAGE_FULL

The BIOS non-volatile storage area is unable to accommodate the update 

because all available update blocks are filled with updates that are needed for 

processors in the system.

CPU_NOT_PRESENT

The processor stepping does not currently exist in the system.

INVALID_HEADER

The update header contains a header or loader version that is not recognized by 

the BIOS.

INVALID_HEADER_CS

The update does not checksum correctly.

SECURITY_FAILURE

The processor rejected the update.

INVALID_REVISION

The same or more recent revision of the update exists in the storage device. 

Table 9-15.  Parameters for the Write Update Data Function (Contd.)

Input