Unformatted text preview: sion in the proposed update header for equality. When performing the write update function, the BIOS should record the entire update, including the header and the update data. 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. Figure 8-9 shows the process the BIOS follows to choose an update block and ensure the integrity of the data when it stores the new microcode update. 8-46 PROCESSOR MANAGEMENT AND INITIALIZATION Write Microcode Update Does Update Match a CPU in the System? No Return CPU_NOT_PRESENT Yes Valid Update Header Version? No Return INVALID_HEADER Yes Does Loader Revision Match BIOS’s Loader? No Return INVALID_HEADER Yes Does Update Checksum Correctly? No Return INVALID_HEADER_CS Yes Update Matching CPU Already In NVRAM? No Space Available in NVRAM? Yes No Yes Return STORAGE_FULL Update Revision Newer Than NVRAM Update? No Return INVALID_REVISION Yes Update Pass Authenticity Test? No Return SECURITY_FAILURE Yes Update NMRAM Record Return SUCCESS Figure 8-9. Write Operation Flow Chart 8-47 PROCESSOR MANAGEMENT AND INITIALIZATION Function 02h - Microcode Update Control This function enables loading of binary updates into the processor. Table 8-5 lists the parameters and return codes for the function.
Table 8-11. Parameters for the Control Update Sub-function
Input: AX BL BH CX DX SI SS:SP Output: CF AH AL BL Carry Flag Return Code OEM Error Update Status Carry Set - Failure - AH contains Status. Carry Clear - All return values are valid. Status of the Call. Additional OEM Information. Either Enable or Disable indicator. Function Code Sub-function Task Scratch Pad1 Scratch Pad2 Scratch Pad3 Stack pointer 0D042h 02h - Control Update See Description. Real Mode Segment of 64 kilobytes of RAM Block. Real Mode Segment of 64 kilobytes of RAM Block. Real Mode Segment of 64 kilobytes of RAM Block. 32 kilobytes of Stack Minimum. Return Codes: (See Table 8-8 for code definitions) SUCCESS READ_FAILURE Function completed successfully. A failure because of the inability to read the storage device. This control is provided on a global basis for all updates and processors. The caller can determine the current status of update loading (enabled or disabled) without changing the state. The function does not allow the caller to disable loading of binary updates, as this poses a security risk. The caller specifies the requested operation by placing one of the values from Table 8-6 in the BH register. After successfully completing this function the BL register contains either the enable or the disable designator. Note that if the function fails, the update status return value is undefined.
Table 8-12. Mnemonic Values
Mnemonic Enable Query Value 1 2 Meaning Enable the Update loading at initialization time Determine the current state of the update control without changing its status. The READ_FAILURE error code returned by this function has meaning only if the control function is implemented in the BIOS NVRAM. The state of this feature (enabled/disabled) can also be implemented using CMOS RAM bits where READ failure errors cannot occur. 8-48 PROCESSOR MANAGEMENT AND INITIALIZATION Function 03h - Read Microcode Update Data This function reads a currently installed microcode update from the BIOS storage into a callerprovided RAM buffer. Section 8-13, “Parameters for the Read Microcode Update Data Function” lists the parameters and return codes for the function.
Table 8-13. Parameters for the Read Microcode Update Data Function
Input: AX BL ES:DI ECX ECX DX SS:SP SI Function Code Sub-function Buffer Address Scratch Pad1 Scratch Pad2 Scratch Pad3 Stack pointer Update Number 0D042h 03h - Read Update Real Mode pointer to the Intel Update structure that will be written with the binary data. Real Mode Segment address of 64 kilobytes of RAM Block (lower 16 bits). Real Mode Segment address of 64 kilobytes of RAM Block (upper 16 bits). Real Mode Segment address of 64 kilobytes of RAM Block. 32 kilobytes of Stack Minimum. The index number of the update block to be read. This value is zero based and must be less than the update count returned from the presence test function. Output: CF Carry Clear - All return values are valid. AH AL Return Code OEM Error Status of the Call. Additional OEM Information. Carry Flag Carry Set - Failure - AH contains Status. Return Codes: (See Table 8-8 for code definitions) SUCCESS READ_FAILURE UPDATE_NUM_INVALID Function completed successfully. A failure because of the inability to read the storage device. Update number exceeds the maximum number of update blocks implemented by the BIOS. The read function enables the caller to read any update data that already exists in a BIOS and make decisions about the addition of new updates. As a result of a successful call, the BIOS copies exactly 2048 bytes into the location pointed to by ES:DI, with the contents of the update block represented by updat...
View Full Document
This note was uploaded on 06/07/2013 for the course ECE 1234 taught by Professor Kwhon during the Spring '10 term at Berkeley.
- Spring '10