]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Uefi/UefiGpt.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Include / Uefi / UefiGpt.h
index defa9d18b329ddacf1789ec4a6b20ca780022eaa..c295d5519884147d9fccd84d311c1d39a0689334 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
   EFI Guid Partition Table Format Definition.\r
 \r
-Copyright (c) 2006 - 2010, Intel Corporation.  All rights reserved<BR>\r
-This program and the accompanying materials are licensed and made available under \r
-the terms and conditions of the BSD License that accompanies this distribution.  \r
-The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php.                                          \r
-    \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -19,11 +13,15 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 /// The primary GUID Partition Table Header must be\r
 /// located in LBA 1 (i.e., the second logical block).\r
 ///\r
-#define PRIMARY_PART_HEADER_LBA 1\r
+#define PRIMARY_PART_HEADER_LBA  1\r
 ///\r
 /// EFI Partition Table Signature: "EFI PART".\r
-/// \r
-#define EFI_PTAB_HEADER_ID      SIGNATURE_64 ('E','F','I',' ','P','A','R','T')\r
+///\r
+#define EFI_PTAB_HEADER_ID  SIGNATURE_64 ('E','F','I',' ','P','A','R','T')\r
+///\r
+/// Minimum bytes reserve for EFI entry array buffer.\r
+///\r
+#define EFI_GPT_PART_ENTRY_MIN_SIZE  16384\r
 \r
 #pragma pack(1)\r
 \r
@@ -35,50 +33,51 @@ typedef struct {
   /// The table header for the GPT partition Table.\r
   /// This header contains EFI_PTAB_HEADER_ID.\r
   ///\r
-  EFI_TABLE_HEADER  Header;\r
+  EFI_TABLE_HEADER    Header;\r
   ///\r
   /// The LBA that contains this data structure.\r
   ///\r
-  EFI_LBA           MyLBA;\r
+  EFI_LBA             MyLBA;\r
   ///\r
   /// LBA address of the alternate GUID Partition Table Header.\r
   ///\r
-  EFI_LBA           AlternateLBA;\r
+  EFI_LBA             AlternateLBA;\r
   ///\r
   /// The first usable logical block that may be used\r
   /// by a partition described by a GUID Partition Entry.\r
   ///\r
-  EFI_LBA           FirstUsableLBA;\r
+  EFI_LBA             FirstUsableLBA;\r
   ///\r
   /// The last usable logical block that may be used\r
   /// by a partition described by a GUID Partition Entry.\r
   ///\r
-  EFI_LBA           LastUsableLBA;\r
+  EFI_LBA             LastUsableLBA;\r
   ///\r
   /// GUID that can be used to uniquely identify the disk.\r
   ///\r
-  EFI_GUID          DiskGUID;\r
+  EFI_GUID            DiskGUID;\r
   ///\r
   /// The starting LBA of the GUID Partition Entry array.\r
   ///\r
-  EFI_LBA           PartitionEntryLBA;\r
+  EFI_LBA             PartitionEntryLBA;\r
   ///\r
   /// The number of Partition Entries in the GUID Partition Entry array.\r
   ///\r
-  UINT32            NumberOfPartitionEntries;\r
+  UINT32              NumberOfPartitionEntries;\r
   ///\r
   /// The size, in bytes, of each the GUID Partition\r
   /// Entry structures in the GUID Partition Entry\r
-  /// array. Must be a multiple of 8.\r
+  /// array. This field shall be set to a value of 128 x 2^n where n is\r
+  /// an integer greater than or equal to zero (e.g., 128, 256, 512, etc.).\r
   ///\r
-  UINT32            SizeOfPartitionEntry;\r
+  UINT32              SizeOfPartitionEntry;\r
   ///\r
   /// The CRC32 of the GUID Partition Entry array.\r
   /// Starts at PartitionEntryLBA and is\r
   /// computed over a byte length of\r
   /// NumberOfPartitionEntries * SizeOfPartitionEntry.\r
   ///\r
-  UINT32            PartitionEntryArrayCRC32;\r
+  UINT32              PartitionEntryArrayCRC32;\r
 } EFI_PARTITION_TABLE_HEADER;\r
 \r
 ///\r
@@ -89,21 +88,21 @@ typedef struct {
   /// Unique ID that defines the purpose and type of this Partition. A value of\r
   /// zero defines that this partition entry is not being used.\r
   ///\r
-  EFI_GUID  PartitionTypeGUID;\r
+  EFI_GUID    PartitionTypeGUID;\r
   ///\r
   /// GUID that is unique for every partition entry. Every partition ever\r
   /// created will have a unique GUID.\r
   /// This GUID must be assigned when the GUID Partition Entry is created.\r
   ///\r
-  EFI_GUID  UniquePartitionGUID;\r
+  EFI_GUID    UniquePartitionGUID;\r
   ///\r
   /// Starting LBA of the partition defined by this entry\r
   ///\r
-  EFI_LBA   StartingLBA;\r
+  EFI_LBA     StartingLBA;\r
   ///\r
   /// Ending LBA of the partition defined by this entry.\r
   ///\r
-  EFI_LBA   EndingLBA;\r
+  EFI_LBA     EndingLBA;\r
   ///\r
   /// Attribute bits, all bits reserved by UEFI\r
   /// Bit 0:      If this bit is set, the partition is required for the platform to function. The owner/creator of the\r
@@ -114,10 +113,14 @@ typedef struct {
   ///             potentially stop working if this partition is removed. Unless OS software or firmware\r
   ///             recognizes this partition, it should never be removed or modified as the UEFI firmware or\r
   ///             platform hardware may become non-functional.\r
-  /// Bit 1:      If this bit is set firmware must not produce an EFI_BLOCK_IO_PROTOCOL device for\r
-  ///             this partition. By not producing EFI_BLOCK_IO_PROTOCOL partition, file system\r
+  /// Bit 1:      If this bit is set, then firmware must not produce an EFI_BLOCK_IO_PROTOCOL device for\r
+  ///             this partition. By not producing an EFI_BLOCK_IO_PROTOCOL partition, file system\r
   ///             mappings will not be created for this partition in UEFI.\r
-  /// Bits 2-47:  Undefined and must be zero. Reserved for expansion by future versions of the UEFI\r
+  /// Bit 2:      This bit is set aside to let systems with traditional PC-AT BIOS firmware implementations\r
+  ///             inform certain limited, special-purpose software running on these systems that a GPT\r
+  ///             partition may be bootable. The UEFI boot manager must ignore this bit when selecting\r
+  ///             a UEFI-compliant application, e.g., an OS loader.\r
+  /// Bits 3-47:  Undefined and must be zero. Reserved for expansion by future versions of the UEFI\r
   ///             specification.\r
   /// Bits 48-63: Reserved for GUID specific use. The use of these bits will vary depending on the\r
   ///             PartitionTypeGUID. Only the owner of the PartitionTypeGUID is allowed\r
@@ -132,5 +135,3 @@ typedef struct {
 \r
 #pragma pack()\r
 #endif\r
-\r
-\r