Changeset 108794 in vbox for trunk/src/VBox/Devices/EFI/FirmwareNew/FatPkg/FatPei/Gpt.c
- Timestamp:
- Mar 31, 2025 11:31:09 AM (3 weeks ago)
- svn:sync-xref-src-repo-rev:
- 168237
- Location:
- trunk/src/VBox/Devices/EFI/FirmwareNew
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/FirmwareNew
-
Property svn:mergeinfo
changed from (toggle deleted branches)
to (toggle deleted branches)/vendor/edk2/current 103735-103757,103769-103776,129194-164365 /vendor/edk2/current 103735-103757,103769-103776,129194-168232
-
Property svn:mergeinfo
changed from (toggle deleted branches)
-
trunk/src/VBox/Devices/EFI/FirmwareNew/FatPkg/FatPei/Gpt.c
r99404 r108794 111 111 PEI_FAT_BLOCK_DEVICE *ParentBlockDev; 112 112 EFI_PEI_LBA Lba; 113 EFI_PEI_LBA AlternateLba;114 113 EFI_PEI_LBA EntryArrayLastLba; 115 114 … … 121 120 122 121 if (IsPrimaryHeader) { 123 Lba = PRIMARY_PART_HEADER_LBA; 124 AlternateLba = ParentBlockDev->LastBlock; 122 Lba = PRIMARY_PART_HEADER_LBA; 125 123 } else { 126 Lba = ParentBlockDev->LastBlock; 127 AlternateLba = PRIMARY_PART_HEADER_LBA; 124 Lba = ParentBlockDev->LastBlock; 128 125 } 129 126 130 127 if ((PartHdr->Header.Signature != EFI_PTAB_HEADER_ID) || 131 (PartHdr->Header.Revision != 0x00010000) ||132 (PartHdr->Header.HeaderSize < 92) ||133 (PartHdr->Header.HeaderSize > ParentBlockDev->BlockSize) ||134 128 (!PartitionCheckGptHeaderCRC (PartHdr)) || 135 (PartHdr->Header.Reserved != 0) 136 ) 137 { 138 DEBUG ((DEBUG_ERROR, "Invalid efi partition table header\n")); 139 return FALSE; 140 } 141 142 // 143 // | Block0 | Block1 |Block2 ~ FirstUsableLBA - 1|FirstUsableLBA, ... ,LastUsableLBA|LastUsableLBA+1 ~ LastBlock-1| LastBlock | 144 // |Protective MBR|Primary Header|Entry Array(At Least 16384)| Partition | Entry Array(At Least 16384) |BackUp Header| 145 // 146 // 1. Protective MBR is fixed at Block 0. 147 // 2. Primary Header is fixed at Block 1. 148 // 3. Backup Header is fixed at LastBlock. 149 // 4. Must be remain 128*128 bytes for primary entry array. 150 // 5. Must be remain 128*128 bytes for backup entry array. 151 // 6. SizeOfPartitionEntry must be equals to 128 * 2^n. 152 // 153 if ((PartHdr->MyLBA != Lba) || 154 (PartHdr->AlternateLBA != AlternateLba) || 155 (PartHdr->FirstUsableLBA < 2 + EFI_SIZE_TO_BLOCKS (EFI_GPT_PART_ENTRY_MIN_SIZE, ParentBlockDev->BlockSize)) || 156 (PartHdr->LastUsableLBA > ParentBlockDev->LastBlock - 1 - EFI_SIZE_TO_BLOCKS (EFI_GPT_PART_ENTRY_MIN_SIZE, ParentBlockDev->BlockSize)) || 157 (PartHdr->FirstUsableLBA > PartHdr->LastUsableLBA) || 158 (PartHdr->PartitionEntryLBA < 2) || 159 (PartHdr->PartitionEntryLBA > ParentBlockDev->LastBlock - 1) || 160 ((PartHdr->PartitionEntryLBA >= PartHdr->FirstUsableLBA) && (PartHdr->PartitionEntryLBA <= PartHdr->LastUsableLBA)) || 161 (PartHdr->SizeOfPartitionEntry%128 != 0) || 162 (PartHdr->SizeOfPartitionEntry != sizeof (EFI_PARTITION_ENTRY)) 129 (PartHdr->MyLBA != Lba) || 130 (PartHdr->SizeOfPartitionEntry < sizeof (EFI_PARTITION_ENTRY)) 163 131 ) 164 132 {
Note:
See TracChangeset
for help on using the changeset viewer.