T13/2132-D Revision 3

June 23, 2010

Figure A.2 shows an example of a GPT disk layout with hybrid MBR boot code on a disk with an ending LBA greater than FFFF_FFFFh. The MBR partition record is not able to describe the LBAs above FFFF_FFFFh.

 

Primary

UEFI

Partition

Partition

Partition

Backup

Protective

system

GPT

GPT

MBR with

 

partition

 

 

 

 

 

hybrid

 

 

 

 

 

 

 

MBR boot

 

 

 

 

 

LBAs not covered by

code

 

GPT Protective partition

 

 

 

 

 

 

 

MBR data structures

LBA 0

LBA 1

 

 

LBA FFFFFFFFh

 

End of disk

Figure A.2 — GPT disk layout with hybrid MBR boot code truncation example

A.3 Hybrid MBR boot code

Hybrid MBR boot code performs the following steps:

1)use the Extended Read function (i.e., INT 13h FN 42h) (see 8.15) to load the Primary GPT Header. The Device Address Packet (see table 9) includes:

A)the LBA field set to 00000000 00000001h; and

B)the Number of Blocks field set to 01h;

2)calculate the CRC32 of the GPT Header and verify that it equals the Header CRC32 field;

3)if the Header CRC32 field is incorrect, use the Extended Read function to load the backup GPT Header. The Device Address Packet includes:

A)the LBA field set to the last LBA of the disk; and

B)the Number of Blocks field set to 01h;

NOTE 3 — Due to the limited size (i.e., 440 bytes) of the MBR boot code, the hybrid MBR boot code may not perform all the checks that EFI system firmware would perform.

4)use the Extended Read function to load the GPT Partition Entry Array pointed to by the selected GPT Header. The Device Address Packet includes:

A)the LBA field set to the value specified in the Partition Entry LBA field; and

B)the Number of Blocks field set to (Number Of Partition Entries * Size Of Partition Entry) / Logical Block Size;

5)calculate the CRC32 of the GPT Partition Entry Array and verify that it equals the Partition Entry Array CRC32 field in the GPT Header;

6)if the Partition Entry Array CRC32 field is incorrect and the Primary GPT Partition Entry Array was selected, use the Extended Read function to load the backup GPT Header from the last LBA of the disk (see step 3), load the backup GPT Partition Entry Array (see step 4), and calculate the CRC32

(see step 5). If the CRC32 is incorrect again, report an error and stop;

7)search the GPT Partition Entry Array for a partition with the Legacy BIOS Bootable bit set to one in the Attributes field. The code may also check for a special value in the Partition Type GUID field when selecting the partition;

8)use the Extended Read function to load the first logical block of the selected partition into memory address 7C00h; and

72

Working Draft Enhanced Disk Drive - 4 (EDD-4)

Page 84
Image 84
Western Digital T13/2132-D manual Hybrid MBR boot code