Firmware Interface Table

BIOS Specification

ID Date Version Classification
599500 03/01/2025 Public
Document Table of Contents

Legacy Record

The following rules apply only to the record version 0x100:

  1. One Startup ACM (Type 2) Entry in the FIT is required for FIT boot support.
  2. The address field must point to a Startup ACM. Specifically, the address field in the Type 2 record must point to the first byte of the ACM header.
  3. Type 2 entry must point to an address that is accessible by the processor at reset vector.
  4. Internal to the processor, one MTRR base/limit pair is used to map Startup AC module. This places alignment restrictions on the Startup ACM. The MTRR size (called MTRR_​Size) must be a power of 2 and the base (MTRR_​Base) must be a multiple of MTRR size. The following equation defines MTRR_​Size.

MTRR_​Size = 2**(ceiling (log2 ( Startup_​ACM_​size )))

Where ceiling (X) is a mathematical function returning the smallest integer Y larger than X

Example: If the size of Startup ACM is 13 k, MTRR_​Size is 16k (the next power of 2).

image2.jpeg

Note:Legacy processor logic for the above MTRR programming was: attempt to program MTRR_​Base equal to the ACM_​Base. If attempt failed processor was failing ACM launch. This logic required IFWI to place ACM on the boundary meeting the above requirements for MTRR_​Base. Recently for client processors requirement that MTRR_​Base and ACM+Base must coincide has been relaxed. ACM must be on 4KB boundary, and it may “float” inside of MTRR covered window under condition that ACEA is completely covered by an MTRR. Server processor are still enforcing MTRR_​Base == ACM_​Base requirement.
  1. ACM may be smaller than size of allocated Authenticated Code Execution Area (ACEA) computed by the above formula. ACEA completely obscures flash part at addresses occupied by itself, therefore no objects that ACM needs to reach must be in this obscured area. This includes FIT and all objects pointed to by FIT records.
  2. The C_​V bit in this entry should be clear.
  3. The Size field is not used. BIOS should set this field to 0.
  4. The Version field should be set to 0x0100.