git: f439973d6726 - main - edk2: Pull in more headers from edk2

From: Warner Losh <imp_at_FreeBSD.org>
Date: Sun, 16 Nov 2025 18:29:06 UTC
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=f439973d6726c3be929c8fb3b1545b8b1744abc3

commit f439973d6726c3be929c8fb3b1545b8b1744abc3
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2025-11-16 17:35:16 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2025-11-16 18:29:03 +0000

    edk2: Pull in more headers from edk2
    
    Pull in more headers from edk2-stable202502 that will be needed as we
    transition the building to using only EDK2 headers in the boot loader,
    finally ditching our home-grown ones from a super-obsolete SDK from the
    early days of EFI.
    
    Note to future importers: My apologies if this not being a mege commit
    causes problems. Except for ProcessorBind.h, all files should be exactly
    as we got them from EDK2, and if that breaks the build on future
    imports, we should adjust our code.
    
    Sponsored by:           Netflix
    Differential Revision:  https://reviews.freebsd.org/D53654
---
 sys/contrib/edk2/Include/Guid/Acpi.h               |   40 +
 .../edk2/Include/Guid/DebugImageInfoTable.h        |   74 ++
 sys/contrib/edk2/Include/Guid/DxeServices.h        |   26 +
 sys/contrib/edk2/Include/Guid/GlobalVariable.h     |  192 +++
 sys/contrib/edk2/Include/Guid/Gpt.h                |   37 +
 .../edk2/Include/Guid/HiiPlatformSetupFormset.h    |   33 +
 .../edk2/Include/Guid/MemoryAllocationHob.h        |   28 +
 .../edk2/Include/Guid/MemoryAttributesTable.h      |   32 +
 .../edk2/Include/Guid/MemoryOverwriteControl.h     |   70 ++
 sys/contrib/edk2/Include/Guid/Mps.h                |   29 +
 sys/contrib/edk2/Include/Guid/Rng.h                |  155 +++
 sys/contrib/edk2/Include/Guid/SmBios.h             |   32 +
 sys/contrib/edk2/Include/IndustryStandard/Atapi.h  |  849 ++++++++++++++
 .../edk2/Include/IndustryStandard/PeImage.h        |  816 +++++++++++++
 sys/contrib/edk2/Include/IndustryStandard/Usb.h    |  397 +++++++
 sys/contrib/edk2/Include/Pi/PiBootMode.h           |   36 +
 sys/contrib/edk2/Include/Pi/PiDependency.h         |   41 +
 sys/contrib/edk2/Include/Pi/PiFirmwareFile.h       |  506 ++++++++
 sys/contrib/edk2/Include/Pi/PiFirmwareVolume.h     |  247 ++++
 sys/contrib/edk2/Include/Pi/PiHob.h                |  512 ++++++++
 sys/contrib/edk2/Include/Pi/PiMultiPhase.h         |  218 ++++
 sys/contrib/edk2/Include/Pi/PiS3BootScript.h       |   53 +
 sys/contrib/edk2/Include/Pi/PiStatusCode.h         | 1220 ++++++++++++++++++++
 .../edk2/Include/Protocol/AbsolutePointer.h        |  192 +++
 sys/contrib/edk2/Include/Protocol/Arp.h            |  376 ++++++
 sys/contrib/edk2/Include/Protocol/Bds.h            |   66 ++
 sys/contrib/edk2/Include/Protocol/BlockIo.h        |  234 ++++
 sys/contrib/edk2/Include/Protocol/Capsule.h        |   29 +
 sys/contrib/edk2/Include/Protocol/ComponentName.h  |  121 ++
 sys/contrib/edk2/Include/Protocol/Cpu.h            |  286 +++++
 sys/contrib/edk2/Include/Protocol/CpuIo2.h         |  136 +++
 sys/contrib/edk2/Include/Protocol/DebugSupport.h   |  966 ++++++++++++++++
 sys/contrib/edk2/Include/Protocol/Decompress.h     |  116 ++
 sys/contrib/edk2/Include/Protocol/DeviceIo.h       |  262 +++++
 sys/contrib/edk2/Include/Protocol/Dhcp4.h          |  762 ++++++++++++
 sys/contrib/edk2/Include/Protocol/Dhcp6.h          |  780 +++++++++++++
 sys/contrib/edk2/Include/Protocol/DiskInfo.h       |  221 ++++
 sys/contrib/edk2/Include/Protocol/DiskIo.h         |  111 ++
 sys/contrib/edk2/Include/Protocol/DriverBinding.h  |  195 ++++
 .../edk2/Include/Protocol/DriverConfiguration2.h   |  184 +++
 .../edk2/Include/Protocol/DriverDiagnostics.h      |  125 ++
 .../edk2/Include/Protocol/DriverDiagnostics2.h     |  105 ++
 sys/contrib/edk2/Include/Protocol/Ebc.h            |  308 +++++
 sys/contrib/edk2/Include/Protocol/EdidActive.h     |   46 +
 sys/contrib/edk2/Include/Protocol/EdidDiscovered.h |   44 +
 .../edk2/Include/Protocol/FirmwareVolume2.h        |  747 ++++++++++++
 .../edk2/Include/Protocol/FirmwareVolumeBlock.h    |  352 ++++++
 sys/contrib/edk2/Include/Protocol/FormBrowser2.h   |  172 +++
 sys/contrib/edk2/Include/Protocol/GraphicsOutput.h |  270 +++++
 .../edk2/Include/Protocol/HiiConfigRouting.h       |  411 +++++++
 sys/contrib/edk2/Include/Protocol/HiiDatabase.h    |  518 +++++++++
 sys/contrib/edk2/Include/Protocol/HiiFont.h        |  464 ++++++++
 sys/contrib/edk2/Include/Protocol/HiiImage.h       |  346 ++++++
 sys/contrib/edk2/Include/Protocol/HiiString.h      |  232 ++++
 sys/contrib/edk2/Include/Protocol/Http.h           |  515 +++++++++
 .../edk2/Include/Protocol/IdeControllerInit.h      |  559 +++++++++
 sys/contrib/edk2/Include/Protocol/Ip4.h            |  602 ++++++++++
 sys/contrib/edk2/Include/Protocol/Ip4Config.h      |  176 +++
 sys/contrib/edk2/Include/Protocol/Ip4Config2.h     |  316 +++++
 sys/contrib/edk2/Include/Protocol/Ip6.h            |  946 +++++++++++++++
 sys/contrib/edk2/Include/Protocol/LoadFile.h       |   82 ++
 sys/contrib/edk2/Include/Protocol/LoadedImage.h    |   82 ++
 sys/contrib/edk2/Include/Protocol/ManagedNetwork.h |  364 ++++++
 sys/contrib/edk2/Include/Protocol/Metronome.h      |   74 ++
 .../edk2/Include/Protocol/MonotonicCounter.h       |   22 +
 sys/contrib/edk2/Include/Protocol/MpService.h      |  674 +++++++++++
 sys/contrib/edk2/Include/Protocol/Mtftp4.h         |  576 +++++++++
 sys/contrib/edk2/Include/Protocol/Mtftp6.h         |  818 +++++++++++++
 .../Include/Protocol/NetworkInterfaceIdentifier.h  |  110 ++
 sys/contrib/edk2/Include/Protocol/Pcd.h            |  798 +++++++++++++
 .../edk2/Include/Protocol/PciEnumerationComplete.h |   24 +
 .../Protocol/PciHostBridgeResourceAllocation.h     |  422 +++++++
 sys/contrib/edk2/Include/Protocol/PciHotPlugInit.h |  272 +++++
 .../edk2/Include/Protocol/PciHotPlugRequest.h      |  164 +++
 sys/contrib/edk2/Include/Protocol/PciIo.h          |  551 +++++++++
 sys/contrib/edk2/Include/Protocol/PciOverride.h    |   39 +
 sys/contrib/edk2/Include/Protocol/PciPlatform.h    |  338 ++++++
 .../edk2/Include/Protocol/PciRootBridgeIo.h        |  436 +++++++
 sys/contrib/edk2/Include/Protocol/PiPcd.h          |  418 +++++++
 sys/contrib/edk2/Include/Protocol/PxeBaseCode.h    |  933 +++++++++++++++
 .../edk2/Include/Protocol/PxeBaseCodeCallBack.h    |  123 ++
 sys/contrib/edk2/Include/Protocol/Reset.h          |   25 +
 sys/contrib/edk2/Include/Protocol/Rng.h            |   28 +
 sys/contrib/edk2/Include/Protocol/Runtime.h        |  122 ++
 sys/contrib/edk2/Include/Protocol/ScsiIo.h         |  309 +++++
 sys/contrib/edk2/Include/Protocol/ScsiPassThru.h   |  377 ++++++
 .../edk2/Include/Protocol/ScsiPassThruExt.h        |  388 +++++++
 sys/contrib/edk2/Include/Protocol/Security.h       |   97 ++
 sys/contrib/edk2/Include/Protocol/Security2.h      |  101 ++
 sys/contrib/edk2/Include/Protocol/SerialIo.h       |  309 +++++
 sys/contrib/edk2/Include/Protocol/ServiceBinding.h |   88 ++
 .../edk2/Include/Protocol/SimpleFileSystem.h       |  553 +++++++++
 sys/contrib/edk2/Include/Protocol/SimpleNetwork.h  |  675 +++++++++++
 sys/contrib/edk2/Include/Protocol/SimplePointer.h  |  137 +++
 sys/contrib/edk2/Include/Protocol/StatusCode.h     |   53 +
 sys/contrib/edk2/Include/Protocol/Tcp4.h           |  567 +++++++++
 sys/contrib/edk2/Include/Protocol/Tcp6.h           |  856 ++++++++++++++
 sys/contrib/edk2/Include/Protocol/Timer.h          |  173 +++
 sys/contrib/edk2/Include/Protocol/UgaDraw.h        |  159 +++
 sys/contrib/edk2/Include/Protocol/UgaIo.h          |  189 +++
 .../edk2/Include/Protocol/UnicodeCollation.h       |  186 +++
 .../edk2/Include/Protocol/Usb2HostController.h     |  657 +++++++++++
 sys/contrib/edk2/Include/Protocol/UsbIo.h          |  505 ++++++++
 sys/contrib/edk2/Include/Protocol/Variable.h       |   39 +
 sys/contrib/edk2/Include/Protocol/VariableWrite.h  |   39 +
 sys/contrib/edk2/Include/Protocol/VlanConfig.h     |  134 +++
 sys/contrib/edk2/Include/Protocol/WatchdogTimer.h  |  136 +++
 107 files changed, 32156 insertions(+)

diff --git a/sys/contrib/edk2/Include/Guid/Acpi.h b/sys/contrib/edk2/Include/Guid/Acpi.h
new file mode 100644
index 000000000000..9e9d6b5f05a7
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/Acpi.h
@@ -0,0 +1,40 @@
+/** @file
+  GUIDs used for ACPI entries in the EFI system table
+
+  These GUIDs point the ACPI tables as defined in the ACPI specifications.
+  ACPI 2.0 specification defines the ACPI 2.0 GUID. UEFI 2.0 defines the
+  ACPI 2.0 Table GUID and ACPI Table GUID.
+
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Revision Reference:
+  GUIDs defined in UEFI 2.0 spec.
+
+**/
+
+#ifndef __ACPI_GUID_H__
+#define __ACPI_GUID_H__
+
+#define ACPI_TABLE_GUID \
+  { \
+    0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
+  }
+
+#define EFI_ACPI_TABLE_GUID \
+  { \
+    0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \
+  }
+
+#define ACPI_10_TABLE_GUID  ACPI_TABLE_GUID
+
+//
+// ACPI 2.0 or newer tables should use EFI_ACPI_TABLE_GUID.
+//
+#define EFI_ACPI_20_TABLE_GUID  EFI_ACPI_TABLE_GUID
+
+extern EFI_GUID  gEfiAcpiTableGuid;
+extern EFI_GUID  gEfiAcpi10TableGuid;
+extern EFI_GUID  gEfiAcpi20TableGuid;
+
+#endif
diff --git a/sys/contrib/edk2/Include/Guid/DebugImageInfoTable.h b/sys/contrib/edk2/Include/Guid/DebugImageInfoTable.h
new file mode 100644
index 000000000000..c20cc626a07b
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/DebugImageInfoTable.h
@@ -0,0 +1,74 @@
+/** @file
+  GUID and related data structures used with the Debug Image Info Table.
+
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Revision Reference:
+  GUID defined in UEFI 2.0 spec.
+
+**/
+
+#ifndef __DEBUG_IMAGE_INFO_GUID_H__
+#define __DEBUG_IMAGE_INFO_GUID_H__
+
+#include <Protocol/LoadedImage.h>
+
+///
+/// EFI_DEBUG_IMAGE_INFO_TABLE configuration table GUID declaration.
+///
+#define EFI_DEBUG_IMAGE_INFO_TABLE_GUID \
+  { \
+    0x49152e77, 0x1ada, 0x4764, {0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b } \
+  }
+
+#define EFI_DEBUG_IMAGE_INFO_UPDATE_IN_PROGRESS  0x01
+#define EFI_DEBUG_IMAGE_INFO_TABLE_MODIFIED      0x02
+
+#define EFI_DEBUG_IMAGE_INFO_TYPE_NORMAL  0x01
+
+typedef struct {
+  UINT64                  Signature;          ///< A constant UINT64 that has the value EFI_SYSTEM_TABLE_SIGNATURE
+  EFI_PHYSICAL_ADDRESS    EfiSystemTableBase; ///< The physical address of the EFI system table.
+  UINT32                  Crc32;              ///< A 32-bit CRC value that is used to verify the EFI_SYSTEM_TABLE_POINTER structure is valid.
+} EFI_SYSTEM_TABLE_POINTER;
+
+typedef struct {
+  ///
+  /// Indicates the type of image info structure. For PE32 EFI images,
+  /// this is set to EFI_DEBUG_IMAGE_INFO_TYPE_NORMAL.
+  ///
+  UINT32                       ImageInfoType;
+  ///
+  /// A pointer to an instance of the loaded image protocol for the associated image.
+  ///
+  EFI_LOADED_IMAGE_PROTOCOL    *LoadedImageProtocolInstance;
+  ///
+  /// Indicates the image handle of the associated image.
+  ///
+  EFI_HANDLE                   ImageHandle;
+} EFI_DEBUG_IMAGE_INFO_NORMAL;
+
+typedef union {
+  UINT32                         *ImageInfoType;
+  EFI_DEBUG_IMAGE_INFO_NORMAL    *NormalImage;
+} EFI_DEBUG_IMAGE_INFO;
+
+typedef struct {
+  ///
+  /// UpdateStatus is used by the system to indicate the state of the debug image info table.
+  ///
+  volatile UINT32         UpdateStatus;
+  ///
+  /// The number of EFI_DEBUG_IMAGE_INFO elements in the array pointed to by EfiDebugImageInfoTable.
+  ///
+  UINT32                  TableSize;
+  ///
+  /// A pointer to the first element of an array of EFI_DEBUG_IMAGE_INFO structures.
+  ///
+  EFI_DEBUG_IMAGE_INFO    *EfiDebugImageInfoTable;
+} EFI_DEBUG_IMAGE_INFO_TABLE_HEADER;
+
+extern EFI_GUID  gEfiDebugImageInfoTableGuid;
+
+#endif
diff --git a/sys/contrib/edk2/Include/Guid/DxeServices.h b/sys/contrib/edk2/Include/Guid/DxeServices.h
new file mode 100644
index 000000000000..128be13148b0
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/DxeServices.h
@@ -0,0 +1,26 @@
+/** @file
+  GUID used to identify the DXE Services Table
+
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Revision Reference:
+  GUID introduced in PI Version 1.0.
+
+**/
+
+#ifndef __DXE_SERVICES_GUID_H__
+#define __DXE_SERVICES_GUID_H__
+
+//
+// The DXE Services Table shall be stored in memory of type
+// EfiBootServicesData
+//
+#define DXE_SERVICES_TABLE_GUID \
+  { \
+    0x5ad34ba, 0x6f02, 0x4214, {0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9 } \
+  }
+
+extern EFI_GUID  gEfiDxeServicesTableGuid;
+
+#endif
diff --git a/sys/contrib/edk2/Include/Guid/GlobalVariable.h b/sys/contrib/edk2/Include/Guid/GlobalVariable.h
new file mode 100644
index 000000000000..26ba93b4b1c6
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/GlobalVariable.h
@@ -0,0 +1,192 @@
+/** @file
+  GUID for EFI (NVRAM) Variables.
+
+  Copyright (c) 2006 - 2024, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Revision Reference:
+  GUID defined in UEFI 2.1
+**/
+
+#ifndef __GLOBAL_VARIABLE_GUID_H__
+#define __GLOBAL_VARIABLE_GUID_H__
+
+#define EFI_GLOBAL_VARIABLE \
+  { \
+    0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C } \
+  }
+
+extern EFI_GUID  gEfiGlobalVariableGuid;
+
+//
+// Follow UEFI 2.4 spec:
+// To prevent name collisions with possible future globally defined variables,
+// other internal firmware data variables that are not defined here must be
+// saved with a unique VendorGuid other than EFI_GLOBAL_VARIABLE or
+// any other GUID defined by the UEFI Specification. Implementations must
+// only permit the creation of variables with a UEFI Specification-defined
+// VendorGuid when these variables are documented in the UEFI Specification.
+//
+// Note: except the globally defined variables defined below, the spec also defines
+// L"Boot####"      - A boot load option.
+// L"Driver####"    - A driver load option.
+// L"SysPrep####"   - A System Prep application load option.
+// L"Key####"       - Describes hot key relationship with a Boot#### load option.
+// The attribute for them is NV+BS+RT, #### is a printed hex value, and no 0x or h
+// is included in the hex value. They can not be expressed as a #define like other globally
+// defined variables, it is because we can not list the Boot0000, Boot0001, etc one by one.
+//
+
+///
+/// The language codes that the firmware supports. This value is deprecated.
+/// Its attribute is BS+RT.
+///
+#define EFI_LANG_CODES_VARIABLE_NAME  L"LangCodes"
+///
+/// The language code that the system is configured for. This value is deprecated.
+/// Its attribute is NV+BS+RT.
+///
+#define EFI_LANG_VARIABLE_NAME  L"Lang"
+///
+/// The firmware's boot managers timeout, in seconds, before initiating the default boot selection.
+/// Its attribute is NV+BS+RT.
+///
+#define EFI_TIME_OUT_VARIABLE_NAME  L"Timeout"
+///
+/// The language codes that the firmware supports.
+/// Its attribute is BS+RT.
+///
+#define EFI_PLATFORM_LANG_CODES_VARIABLE_NAME  L"PlatformLangCodes"
+///
+/// The language code that the system is configured for.
+/// Its attribute is NV+BS+RT.
+///
+#define EFI_PLATFORM_LANG_VARIABLE_NAME  L"PlatformLang"
+///
+/// The device path of the default input/output/error output console.
+/// Its attribute is NV+BS+RT.
+///
+#define EFI_CON_IN_VARIABLE_NAME   L"ConIn"
+#define EFI_CON_OUT_VARIABLE_NAME  L"ConOut"
+#define EFI_ERR_OUT_VARIABLE_NAME  L"ErrOut"
+///
+/// The device path of all possible input/output/error output devices.
+/// Its attribute is BS+RT.
+///
+#define EFI_CON_IN_DEV_VARIABLE_NAME   L"ConInDev"
+#define EFI_CON_OUT_DEV_VARIABLE_NAME  L"ConOutDev"
+#define EFI_ERR_OUT_DEV_VARIABLE_NAME  L"ErrOutDev"
+///
+/// The ordered boot option load list.
+/// Its attribute is NV+BS+RT.
+///
+#define EFI_BOOT_ORDER_VARIABLE_NAME  L"BootOrder"
+///
+/// The boot option for the next boot only.
+/// Its attribute is NV+BS+RT.
+///
+#define EFI_BOOT_NEXT_VARIABLE_NAME  L"BootNext"
+///
+/// The boot option that was selected for the current boot.
+/// Its attribute is BS+RT.
+///
+#define EFI_BOOT_CURRENT_VARIABLE_NAME  L"BootCurrent"
+///
+/// The types of boot options supported by the boot manager. Should be treated as read-only.
+/// Its attribute is BS+RT.
+///
+#define EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME  L"BootOptionSupport"
+///
+/// The ordered driver load option list.
+/// Its attribute is NV+BS+RT.
+///
+#define EFI_DRIVER_ORDER_VARIABLE_NAME  L"DriverOrder"
+///
+/// The ordered System Prep Application load option list.
+/// Its attribute is NV+BS+RT.
+///
+#define EFI_SYS_PREP_ORDER_VARIABLE_NAME  L"SysPrepOrder"
+///
+/// Identifies the level of hardware error record persistence
+/// support implemented by the platform. This variable is
+/// only modified by firmware and is read-only to the OS.
+/// Its attribute is NV+BS+RT.
+///
+#define EFI_HW_ERR_REC_SUPPORT_VARIABLE_NAME  L"HwErrRecSupport"
+///
+/// Whether the system is operating in setup mode (1) or not (0).
+/// All other values are reserved. Should be treated as read-only.
+/// Its attribute is BS+RT.
+///
+#define EFI_SETUP_MODE_NAME  L"SetupMode"
+///
+/// The Key Exchange Key Signature Database.
+/// Its attribute is NV+BS+RT+AT.
+///
+#define EFI_KEY_EXCHANGE_KEY_NAME  L"KEK"
+///
+/// The public Platform Key.
+/// Its attribute is NV+BS+RT+AT.
+///
+#define EFI_PLATFORM_KEY_NAME  L"PK"
+///
+/// Array of GUIDs representing the type of signatures supported
+/// by the platform firmware. Should be treated as read-only.
+/// Its attribute is BS+RT.
+///
+#define EFI_SIGNATURE_SUPPORT_NAME  L"SignatureSupport"
+///
+/// Whether the platform firmware is operating in Secure boot mode (1) or not (0).
+/// All other values are reserved. Should be treated as read-only.
+/// Its attribute is BS+RT.
+///
+#define EFI_SECURE_BOOT_MODE_NAME  L"SecureBoot"
+///
+/// The OEM's default Key Exchange Key Signature Database. Should be treated as read-only.
+/// Its attribute is BS+RT.
+///
+#define EFI_KEK_DEFAULT_VARIABLE_NAME  L"KEKDefault"
+///
+/// The OEM's default public Platform Key. Should be treated as read-only.
+/// Its attribute is BS+RT.
+///
+#define EFI_PK_DEFAULT_VARIABLE_NAME  L"PKDefault"
+///
+/// The OEM's default secure boot signature store. Should be treated as read-only.
+/// Its attribute is BS+RT.
+///
+#define EFI_DB_DEFAULT_VARIABLE_NAME  L"dbDefault"
+///
+/// The OEM's default secure boot blacklist signature store. Should be treated as read-only.
+/// Its attribute is BS+RT.
+///
+#define EFI_DBX_DEFAULT_VARIABLE_NAME  L"dbxDefault"
+///
+/// The OEM's default secure boot timestamp signature store. Should be treated as read-only.
+/// Its attribute is BS+RT.
+///
+#define EFI_DBT_DEFAULT_VARIABLE_NAME  L"dbtDefault"
+///
+/// Allows the firmware to indicate supported features and actions to the OS.
+/// Its attribute is BS+RT.
+///
+#define EFI_OS_INDICATIONS_SUPPORT_VARIABLE_NAME  L"OsIndicationsSupported"
+///
+/// Allows the OS to request the firmware to enable certain features and to take certain actions.
+/// Its attribute is NV+BS+RT.
+///
+#define EFI_OS_INDICATIONS_VARIABLE_NAME  L"OsIndications"
+///
+/// Whether the system is configured to use only vendor provided
+/// keys or not. Should be treated as read-only.
+/// Its attribute is BS+RT.
+///
+#define EFI_VENDOR_KEYS_VARIABLE_NAME  L"VendorKeys"
+
+///
+/// Whether the platform firmware is operating in device authentication boot mode (1) or not (0).
+/// The content is UINT8.
+///
+#define EFI_DEVICE_AUTH_BOOT_MODE_NAME  L"devAuthBoot"
+
+#endif
diff --git a/sys/contrib/edk2/Include/Guid/Gpt.h b/sys/contrib/edk2/Include/Guid/Gpt.h
new file mode 100644
index 000000000000..8e6ec1f6bde0
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/Gpt.h
@@ -0,0 +1,37 @@
+/** @file
+  Guids used for the GPT (GUID Partition Table)
+
+  GPT defines a new disk partitioning scheme and also describes
+  usage of the legacy Master Boot Record (MBR) partitioning scheme.
+
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Revision Reference:
+  GUIDs defined in UEFI 2.1 spec.
+
+**/
+
+#ifndef __GPT_GUID_H__
+#define __GPT_GUID_H__
+
+#define EFI_PART_TYPE_UNUSED_GUID \
+  { \
+    0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } \
+  }
+
+#define EFI_PART_TYPE_EFI_SYSTEM_PART_GUID \
+  { \
+    0xc12a7328, 0xf81f, 0x11d2, {0xba, 0x4b, 0x00, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b } \
+  }
+
+#define EFI_PART_TYPE_LEGACY_MBR_GUID \
+  { \
+    0x024dee41, 0x33e7, 0x11d3, {0x9d, 0x69, 0x00, 0x08, 0xc7, 0x81, 0xf3, 0x9f } \
+  }
+
+extern EFI_GUID  gEfiPartTypeUnusedGuid;
+extern EFI_GUID  gEfiPartTypeSystemPartGuid;
+extern EFI_GUID  gEfiPartTypeLegacyMbrGuid;
+
+#endif
diff --git a/sys/contrib/edk2/Include/Guid/HiiPlatformSetupFormset.h b/sys/contrib/edk2/Include/Guid/HiiPlatformSetupFormset.h
new file mode 100644
index 000000000000..4ed0f55c05cf
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/HiiPlatformSetupFormset.h
@@ -0,0 +1,33 @@
+/** @file
+  GUID indicates that the form set contains forms designed to be used
+  for platform configuration and this form set will be displayed.
+
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Revision Reference:
+  GUID defined in UEFI 2.1.
+
+**/
+
+#ifndef __HII_PLATFORM_SETUP_FORMSET_GUID_H__
+#define __HII_PLATFORM_SETUP_FORMSET_GUID_H__
+
+#define EFI_HII_PLATFORM_SETUP_FORMSET_GUID \
+  { 0x93039971, 0x8545, 0x4b04, { 0xb4, 0x5e, 0x32, 0xeb, 0x83, 0x26, 0x4, 0xe } }
+
+#define EFI_HII_DRIVER_HEALTH_FORMSET_GUID \
+  { 0xf22fc20c, 0x8cf4, 0x45eb, { 0x8e, 0x6, 0xad, 0x4e, 0x50, 0xb9, 0x5d, 0xd3 } }
+
+#define EFI_HII_USER_CREDENTIAL_FORMSET_GUID \
+  { 0x337f4407, 0x5aee, 0x4b83, { 0xb2, 0xa7, 0x4e, 0xad, 0xca, 0x30, 0x88, 0xcd } }
+
+#define EFI_HII_REST_STYLE_FORMSET_GUID \
+  { 0x790217bd, 0xbecf, 0x485b, { 0x91, 0x70, 0x5f, 0xf7, 0x11, 0x31, 0x8b, 0x27 } }
+
+extern EFI_GUID  gEfiHiiPlatformSetupFormsetGuid;
+extern EFI_GUID  gEfiHiiDriverHealthFormsetGuid;
+extern EFI_GUID  gEfiHiiUserCredentialFormsetGuid;
+extern EFI_GUID  gEfiHiiRestStyleFormsetGuid;
+
+#endif
diff --git a/sys/contrib/edk2/Include/Guid/MemoryAllocationHob.h b/sys/contrib/edk2/Include/Guid/MemoryAllocationHob.h
new file mode 100644
index 000000000000..6054a2c097a4
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/MemoryAllocationHob.h
@@ -0,0 +1,28 @@
+/** @file
+  GUIDs for HOBs used in memory allcation
+
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Revision Reference:
+  GUIDs introduced in PI Version 1.0.
+
+**/
+
+#ifndef __MEMORY_ALLOCATION_GUID_H__
+#define __MEMORY_ALLOCATION_GUID_H__
+
+#define EFI_HOB_MEMORY_ALLOC_BSP_STORE_GUID  \
+  {0x564b33cd, 0xc92a, 0x4593, {0x90, 0xbf, 0x24, 0x73, 0xe4, 0x3c, 0x63, 0x22} };
+
+#define EFI_HOB_MEMORY_ALLOC_STACK_GUID  \
+  {0x4ed4bf27, 0x4092, 0x42e9, {0x80, 0x7d, 0x52, 0x7b, 0x1d, 0x0, 0xc9, 0xbd} }
+
+#define EFI_HOB_MEMORY_ALLOC_MODULE_GUID  \
+  {0xf8e21975, 0x899, 0x4f58, {0xa4, 0xbe, 0x55, 0x25, 0xa9, 0xc6, 0xd7, 0x7a} }
+
+extern EFI_GUID  gEfiHobMemoryAllocBspStoreGuid;
+extern EFI_GUID  gEfiHobMemoryAllocStackGuid;
+extern EFI_GUID  gEfiHobMemoryAllocModuleGuid;
+
+#endif
diff --git a/sys/contrib/edk2/Include/Guid/MemoryAttributesTable.h b/sys/contrib/edk2/Include/Guid/MemoryAttributesTable.h
new file mode 100644
index 000000000000..e741935856da
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/MemoryAttributesTable.h
@@ -0,0 +1,32 @@
+/** @file
+  GUIDs used for UEFI Memory Attributes Table in the UEFI 2.6 specification.
+
+  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef __UEFI_MEMORY_ATTRIBUTES_TABLE_H__
+#define __UEFI_MEMORY_ATTRIBUTES_TABLE_H__
+
+#define EFI_MEMORY_ATTRIBUTES_TABLE_GUID  {\
+  0xdcfa911d, 0x26eb, 0x469f, {0xa2, 0x20, 0x38, 0xb7, 0xdc, 0x46, 0x12, 0x20} \
+}
+
+typedef struct {
+  UINT32    Version;
+  UINT32    NumberOfEntries;
+  UINT32    DescriptorSize;
+  UINT32    Flags;
+  // EFI_MEMORY_DESCRIPTOR Entry[1];
+} EFI_MEMORY_ATTRIBUTES_TABLE;
+
+#define EFI_MEMORY_ATTRIBUTES_TABLE_VERSION  0x00000002
+
+#define EFI_MEMORY_ATTRIBUTES_FLAGS_RT_FORWARD_CONTROL_FLOW_GUARD  0x1
+// BIT0 implies that Runtime code includes the forward control flow guard
+// instruction, such as X86 CET-IBT or ARM BTI.
+
+extern EFI_GUID  gEfiMemoryAttributesTableGuid;
+
+#endif
diff --git a/sys/contrib/edk2/Include/Guid/MemoryOverwriteControl.h b/sys/contrib/edk2/Include/Guid/MemoryOverwriteControl.h
new file mode 100644
index 000000000000..8ee9bbe51563
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/MemoryOverwriteControl.h
@@ -0,0 +1,70 @@
+/** @file
+  GUID used for MemoryOverwriteRequestControl UEFI variable defined in
+  TCG Platform Reset Attack Mitigation Specification 1.00.
+  See http://trustedcomputinggroup.org for the latest specification
+
+  The purpose of the MemoryOverwriteRequestControl UEFI variable is to give users (e.g., OS, loader) the ability to
+  indicate to the platform that secrets are present in memory and that the platform firmware must clear memory upon
+  a restart. The OS loader should not create the variable. Rather, the  firmware is required to create it.
+
+  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef _MEMORY_OVERWRITE_CONTROL_DATA_GUID_H_
+#define _MEMORY_OVERWRITE_CONTROL_DATA_GUID_H_
+
+#define MEMORY_ONLY_RESET_CONTROL_GUID \
+  { \
+    0xe20939be, 0x32d4, 0x41be, {0xa1, 0x50, 0x89, 0x7f, 0x85, 0xd4, 0x98, 0x29} \
+  }
+
+///
+///  Variable name is "MemoryOverwriteRequestControl" and it is a 1 byte unsigned value.
+///  The attributes should be:
+///  EFI_VARIABLE_NON_VOLATILE |
+///  EFI_VARIABLE_BOOTSERVICE_ACCESS |
+///  EFI_VARIABLE_RUNTIME_ACCESS
+///
+#define MEMORY_OVERWRITE_REQUEST_VARIABLE_NAME  L"MemoryOverwriteRequestControl"
+
+///
+/// 0 = Firmware MUST clear the MOR bit
+/// 1 = Firmware MUST set the MOR bit
+///
+#define MOR_CLEAR_MEMORY_BIT_MASK  0x01
+
+///
+/// 0 = Firmware MAY autodetect a clean shutdown of the Static RTM OS.
+/// 1 = Firmware MUST NOT autodetect a clean shutdown of the Static RTM OS.
+///
+#define MOR_DISABLEAUTODETECT_BIT_MASK  0x10
+
+///
+/// MOR field bit offset
+///
+#define MOR_CLEAR_MEMORY_BIT_OFFSET       0
+#define MOR_DISABLEAUTODETECT_BIT_OFFSET  4
+
+/**
+  Return the ClearMemory bit value 0 or 1.
+
+  @param mor   1 byte value that contains ClearMemory and DisableAutoDetect bit.
+
+  @return ClearMemory bit value
+**/
+#define MOR_CLEAR_MEMORY_VALUE(mor)  (((UINT8)(mor) & MOR_CLEAR_MEMORY_BIT_MASK) >> MOR_CLEAR_MEMORY_BIT_OFFSET)
+
+/**
+  Return the DisableAutoDetect bit value 0 or 1.
+
+  @param mor   1 byte value that contains ClearMemory and DisableAutoDetect bit.
+
+  @return DisableAutoDetect bit value
+**/
+#define MOR_DISABLE_AUTO_DETECT_VALUE(mor)  (((UINT8)(mor) & MOR_DISABLEAUTODETECT_BIT_MASK) >> MOR_DISABLEAUTODETECT_BIT_OFFSET)
+
+extern EFI_GUID  gEfiMemoryOverwriteControlDataGuid;
+
+#endif
diff --git a/sys/contrib/edk2/Include/Guid/Mps.h b/sys/contrib/edk2/Include/Guid/Mps.h
new file mode 100644
index 000000000000..5911f4efa9fa
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/Mps.h
@@ -0,0 +1,29 @@
+/** @file
+  GUIDs used for MPS entries in the UEFI 2.0 system table
+  ACPI is the primary means of exporting MPS information to the OS. MPS only was
+  included to support Itanium-based platform power on. So don't use it if you don't have too.
+
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Revision Reference:
+  GUIDs defined in UEFI 2.0 spec.
+
+**/
+
+#ifndef __MPS_GUID_H__
+#define __MPS_GUID_H__
+
+#define EFI_MPS_TABLE_GUID \
+  { \
+    0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
+  }
+
+//
+// GUID name defined in spec.
+//
+#define MPS_TABLE_GUID  EFI_MPS_TABLE_GUID
+
+extern EFI_GUID  gEfiMpsTableGuid;
+
+#endif
diff --git a/sys/contrib/edk2/Include/Guid/Rng.h b/sys/contrib/edk2/Include/Guid/Rng.h
new file mode 100644
index 000000000000..acf0895b2b0d
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/Rng.h
@@ -0,0 +1,155 @@
+/** @file
+  Random Number Generator (RNG) GUIDs and structures shared across RNG interfaces.
+
+  Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) Microsoft Corporation.
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef RNG_GUID_H_
+#define RNG_GUID_H_
+
+typedef struct _EFI_RNG_INTERFACE EFI_RNG_INTERFACE;
+
+///
+/// A selection of EFI_RNG_PROTOCOL algorithms.
+/// The algorithms listed are optional, not meant to be exhaustive and be argmented by
+/// vendors or other industry standards.
+///
+typedef EFI_GUID EFI_RNG_ALGORITHM;
+
+///
+/// The algorithms corresponds to SP800-90 as defined in
+/// NIST SP 800-90, "Recommendation for Random Number Generation Using Deterministic Random
+/// Bit Generators", March 2007.
+///
+#define EFI_RNG_ALGORITHM_SP800_90_HASH_256_GUID \
+  { \
+    0xa7af67cb, 0x603b, 0x4d42, {0xba, 0x21, 0x70, 0xbf, 0xb6, 0x29, 0x3f, 0x96 } \
+  }
+#define EFI_RNG_ALGORITHM_SP800_90_HMAC_256_GUID \
+  { \
+    0xc5149b43, 0xae85, 0x4f53, {0x99, 0x82, 0xb9, 0x43, 0x35, 0xd3, 0xa9, 0xe7 } \
+  }
+#define EFI_RNG_ALGORITHM_SP800_90_CTR_256_GUID \
+  { \
+    0x44f0de6e, 0x4d8c, 0x4045, {0xa8, 0xc7, 0x4d, 0xd1, 0x68, 0x85, 0x6b, 0x9e } \
+  }
+
+///
+/// The algorithms correspond to X9.31 as defined in
+/// NIST, "Recommended Random Number Generator Based on ANSI X9.31 Appendix A.2.4 Using
+/// the 3-Key Triple DES and AES Algorithm", January 2005.
+///
+#define EFI_RNG_ALGORITHM_X9_31_3DES_GUID \
+  { \
+    0x63c4785a, 0xca34, 0x4012, {0xa3, 0xc8, 0x0b, 0x6a, 0x32, 0x4f, 0x55, 0x46 } \
+  }
+#define EFI_RNG_ALGORITHM_X9_31_AES_GUID \
+  { \
+    0xacd03321, 0x777e, 0x4d3d, {0xb1, 0xc8, 0x20, 0xcf, 0xd8, 0x88, 0x20, 0xc9 } \
+  }
+
+///
+/// The "raw" algorithm, when supported, is intended to provide entropy directly from
+/// the source, without it going through some deterministic random bit generator.
+///
+#define EFI_RNG_ALGORITHM_RAW \
+  { \
+    0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61 } \
+  }
+
+///
+/// The Arm Architecture states the RNDR that the DRBG algorithm should be compliant
+/// with NIST SP800-90A, while not mandating a particular algorithm, so as to be
+/// inclusive of different geographies.
+///
+#define EFI_RNG_ALGORITHM_ARM_RNDR \
+  { \
+    0x43d2fde3, 0x9d4e, 0x4d79,  {0x02, 0x96, 0xa8, 0x9b, 0xca, 0x78, 0x08, 0x41} \
+  }
+
+/**
+  Returns information about the random number generation implementation.
+
+  @param[in]     This                 A pointer to this interface instance.
+  @param[in,out] RNGAlgorithmListSize On input, the size in bytes of RNGAlgorithmList.
+                                      On output with a return code of EFI_SUCCESS, the size
+                                      in bytes of the data returned in RNGAlgorithmList. On output
+                                      with a return code of EFI_BUFFER_TOO_SMALL,
+                                      the size of RNGAlgorithmList required to obtain the list.
+  @param[out] RNGAlgorithmList        A caller-allocated memory buffer filled by the driver
+                                      with one EFI_RNG_ALGORITHM element for each supported
+                                      RNG algorithm. The list must not change across multiple
+                                      calls to the same driver. The first algorithm in the list
+                                      is the default algorithm for the driver.
+
+  @retval EFI_SUCCESS                 The RNG algorithm list was returned successfully.
+  @retval EFI_UNSUPPORTED             The services is not supported by this driver.
+  @retval EFI_DEVICE_ERROR            The list of algorithms could not be retrieved due to a
+                                      hardware or firmware error.
+  @retval EFI_INVALID_PARAMETER       One or more of the parameters are incorrect.
+  @retval EFI_BUFFER_TOO_SMALL        The buffer RNGAlgorithmList is too small to hold the result.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_RNG_GET_INFO)(
+  IN EFI_RNG_INTERFACE            *This,
+  IN OUT UINTN                    *RNGAlgorithmListSize,
+  OUT EFI_RNG_ALGORITHM           *RNGAlgorithmList
+  );
+
+/**
+  Produces and returns an RNG value using either the default or specified RNG algorithm.
+
+  @param[in]  This                    A pointer to this interface instance.
+  @param[in]  RNGAlgorithm            A pointer to the EFI_RNG_ALGORITHM that identifies the RNG
+                                      algorithm to use. May be NULL in which case the function will
+                                      use its default RNG algorithm.
+  @param[in]  RNGValueLength          The length in bytes of the memory buffer pointed to by
+                                      RNGValue. The driver shall return exactly this numbers of bytes.
+  @param[out] RNGValue                A caller-allocated memory buffer filled by the driver with the
+                                      resulting RNG value.
+
+  @retval EFI_SUCCESS                 The RNG value was returned successfully.
+  @retval EFI_UNSUPPORTED             The algorithm specified by RNGAlgorithm is not supported by
+                                      this driver.
+  @retval EFI_DEVICE_ERROR            An RNG value could not be retrieved due to a hardware or
+                                      firmware error.
+  @retval EFI_NOT_READY               There is not enough random data available to satisfy the length
+                                      requested by RNGValueLength.
+  @retval EFI_INVALID_PARAMETER       RNGValue is NULL or RNGValueLength is zero.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_RNG_GET_RNG)(
+  IN EFI_RNG_INTERFACE           *This,
+  IN EFI_RNG_ALGORITHM           *RNGAlgorithm  OPTIONAL,
+  IN UINTN                       RNGValueLength,
+  OUT UINT8                      *RNGValue
+  );
+
+///
+/// The Random Number Generator (RNG) interface provides random bits for use in
+/// applications, or entropy for seeding other random number generators.
+///
+/// This interface is shared between the RNG Protocol defined in the UEFI 2.4 Specification
+/// and the RNG PPI defined in the PI 1.9 Specification.
+///
+struct _EFI_RNG_INTERFACE {
+  EFI_RNG_GET_INFO    GetInfo;
+  EFI_RNG_GET_RNG     GetRNG;
+};
+
+extern EFI_GUID  gEfiRngAlgorithmSp80090Hash256Guid;
+extern EFI_GUID  gEfiRngAlgorithmSp80090Hmac256Guid;
+extern EFI_GUID  gEfiRngAlgorithmSp80090Ctr256Guid;
+extern EFI_GUID  gEfiRngAlgorithmX9313DesGuid;
+extern EFI_GUID  gEfiRngAlgorithmX931AesGuid;
+extern EFI_GUID  gEfiRngAlgorithmRaw;
+extern EFI_GUID  gEfiRngAlgorithmArmRndr;
+
+#endif // #ifndef RNG_GUID_H_
diff --git a/sys/contrib/edk2/Include/Guid/SmBios.h b/sys/contrib/edk2/Include/Guid/SmBios.h
new file mode 100644
index 000000000000..c01617a1a4cb
--- /dev/null
+++ b/sys/contrib/edk2/Include/Guid/SmBios.h
@@ -0,0 +1,32 @@
+/** @file
+  GUIDs used to locate the SMBIOS tables in the UEFI 2.5 system table.
+
+  These GUIDs in the system table are the only legal ways to search for and
+  locate the SMBIOS tables. Do not search the 0xF0000 segment to find SMBIOS
+  tables.
+
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Revision Reference:
+  GUIDs defined in UEFI 2.5 spec.
+
+**/
+
+#ifndef __SMBIOS_GUID_H__
+#define __SMBIOS_GUID_H__
+
+#define SMBIOS_TABLE_GUID \
+  { \
+    0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
+  }
+
+#define SMBIOS3_TABLE_GUID \
+  { \
+    0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94 } \
+  }
+
+extern EFI_GUID  gEfiSmbiosTableGuid;
+extern EFI_GUID  gEfiSmbios3TableGuid;
+
+#endif
diff --git a/sys/contrib/edk2/Include/IndustryStandard/Atapi.h b/sys/contrib/edk2/Include/IndustryStandard/Atapi.h
new file mode 100644
index 000000000000..7f11302bfa6e
--- /dev/null
+++ b/sys/contrib/edk2/Include/IndustryStandard/Atapi.h
@@ -0,0 +1,849 @@
+/** @file
+  This file contains just some basic definitions that are needed by drivers
+  that dealing with ATA/ATAPI interface.
+
+Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef _ATAPI_H_
+#define _ATAPI_H_
+
+#pragma pack(1)
+
+///
+/// ATA5_IDENTIFY_DATA is defined in ATA-5.
+/// (This structure is provided mainly for backward-compatibility support.
+/// Old drivers may reference fields that are marked "obsolete" in
+/// ATA_IDENTIFY_DATA, which currently conforms to ATA-8.)
+///
+typedef struct {
+  UINT16    config;           ///< General Configuration.
+  UINT16    cylinders;        ///< Number of Cylinders.
+  UINT16    reserved_2;
+  UINT16    heads;            ///< Number of logical heads.
+  UINT16    vendor_data1;
*** 31946 LINES SKIPPED ***