ACM. Thus the index attributes must allow anyone to read/write. The SGX index satisfies this requirement, but
you may use any NV Index that meets the access requirements.
6 Boot from Block
Some devices, such as cell phones and tablets don’t have a BIOS flash device mapped into processor memory
space, but rather use a block media device that contains the BIOS image that gets loaded into the processor
memory. These platforms have additional requirements and require that the BPM be built to meet those
requirements.
The BpmGen2 tool allows you to build an initial BIOS image that could be used for both block and non-block
boot.
Some of the requirements are:
• For non-block boot mode:
o Do not specify –BLOCK on the BpnGen2 command line
o IBB Entry point must be in an IBB segment above 4GB-64KB and is entered in real mode. That
code transitions the processor into protected mode.
o Thus at least one IBB segment must be above 4GB-64KB.
o Entry point is specified by a line in the BPM Params file.
• For block boot mode:
o Specify –BLOCK on the BpnGen2 command line (and optionally a Top Swap size).
o IBB segments must be contiguous (or have very little space between them)
o IBB segments must be located below 4GB-256KB
o Thus IBB Entry point for block boot mode must be in a segment located below 4GB-256KB and
that entry point is invoked from protected mode (i.e., ACM transitions processor into protected
mode).
o Entry point is located by a GUID:
0x50626249, 0x456D, 0x746E, 0x72, 0x79, 0x50, 0x6F, 0x69, 0x6E, 0x74, 0x00
o BpmGen2 tool prepends Boot Partition Descriptor Tables to beginning of the modified BIOS file
that the tool generates.
o Top Swap works differently for Block than it does when booting from SPI Flash devices.
• Flash Remap
o For certain client platforms it may be necessary to adjust the flash base address (typically
0xFFFF0000). In order to do this, the user must pass the -REMAP parameter, specifying an
adjusted flash base. Example offset of 256K: -REMAP 0xFFFC0000.
For non-block boot, Top Swap region is typically between 128KB and 1MB. For Block Boot mod, the Top Swap
size must cover the all of the critical code, which includes the FIT, ACM, FIT patches, KM, BPM, and IBB. Since a
typical IBB is currently about 3MB, Top Swap size is much larger and the BIOS update process is different.
By specifying the –BLOCK parameter on the command line, the BpmGen2 tool builds a BPM for booting from a
block device.