diff --git a/src/include/ipxe/efi/AArch64/ProcessorBind.h b/src/include/ipxe/efi/AArch64/ProcessorBind.h
index 909b5cd..d0cb86a 100644
--- a/src/include/ipxe/efi/AArch64/ProcessorBind.h
+++ b/src/include/ipxe/efi/AArch64/ProcessorBind.h
@@ -1,24 +1,18 @@
 /** @file
   Processor or Compiler specific defines and types for AArch64.
 
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
   Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
   Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>
 
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __PROCESSOR_BIND_H__
 #define __PROCESSOR_BIND_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// Define the processor type so other code can make processor based choices
@@ -28,53 +22,102 @@
 //
 // Make sure we are using the correct packing rules per EFI specification
 //
-#ifndef __GNUC__
-#pragma pack()
+#if !defined (__GNUC__) && !defined (__ASSEMBLER__)
+  #pragma pack()
 #endif
 
-#if _MSC_EXTENSIONS
-  //
-  // use Microsoft* C compiler dependent integer width types
-  //
-  typedef unsigned __int64    UINT64;
-  typedef __int64             INT64;
-  typedef unsigned __int32    UINT32;
-  typedef __int32             INT32;
-  typedef unsigned short      UINT16;
-  typedef unsigned short      CHAR16;
-  typedef short               INT16;
-  typedef unsigned char       BOOLEAN;
-  typedef unsigned char       UINT8;
-  typedef char                CHAR8;
-  typedef signed char         INT8;
+#if defined (_MSC_EXTENSIONS)
+
+//
+// Disable some level 4 compilation warnings (same as IA32 and X64)
+//
+
+//
+// Disabling bitfield type checking warnings.
+//
+  #pragma warning ( disable : 4214 )
+
+//
+// Disabling the unreferenced formal parameter warnings.
+//
+  #pragma warning ( disable : 4100 )
+
+//
+// Disable slightly different base types warning as CHAR8 * can not be set
+// to a constant string.
+//
+  #pragma warning ( disable : 4057 )
+
+//
+// ASSERT(FALSE) or while (TRUE) are legal constructs so suppress this warning
+//
+  #pragma warning ( disable : 4127 )
+
+//
+// This warning is caused by functions defined but not used. For precompiled header only.
+//
+  #pragma warning ( disable : 4505 )
+
+//
+// This warning is caused by empty (after preprocessing) source file. For precompiled header only.
+//
+  #pragma warning ( disable : 4206 )
+
+//
+// Disable 'potentially uninitialized local variable X used' warnings
+//
+  #pragma warning ( disable : 4701 )
+
+//
+// Disable 'potentially uninitialized local pointer variable X used' warnings
+//
+  #pragma warning ( disable : 4703 )
+
+//
+// use Microsoft* C compiler dependent integer width types
+//
+typedef unsigned __int64  UINT64;
+typedef __int64           INT64;
+typedef unsigned __int32  UINT32;
+typedef __int32           INT32;
+typedef unsigned short    UINT16;
+typedef unsigned short    CHAR16;
+typedef short             INT16;
+typedef unsigned char     BOOLEAN;
+typedef unsigned char     UINT8;
+typedef char              CHAR8;
+typedef signed char       INT8;
+
 #else
-  //
-  // Assume standard AARCH64 alignment.
-  //
-  typedef unsigned long long  UINT64;
-  typedef long long           INT64;
-  typedef unsigned int        UINT32;
-  typedef int                 INT32;
-  typedef unsigned short      UINT16;
-  typedef unsigned short      CHAR16;
-  typedef short               INT16;
-  typedef unsigned char       BOOLEAN;
-  typedef unsigned char       UINT8;
-  typedef char                CHAR8;
-  typedef signed char         INT8;
+
+//
+// Assume standard AARCH64 alignment.
+//
+typedef unsigned long long  UINT64;
+typedef long long           INT64;
+typedef unsigned int        UINT32;
+typedef int                 INT32;
+typedef unsigned short      UINT16;
+typedef unsigned short      CHAR16;
+typedef short               INT16;
+typedef unsigned char       BOOLEAN;
+typedef unsigned char       UINT8;
+typedef char                CHAR8;
+typedef signed char         INT8;
+
 #endif
 
 ///
 /// Unsigned value of native width.  (4 bytes on supported 32-bit processor instructions,
 /// 8 bytes on supported 64-bit processor instructions)
 ///
-typedef UINT64  UINTN;
+typedef UINT64 UINTN;
 
 ///
 /// Signed value of native width.  (4 bytes on supported 32-bit processor instructions,
 /// 8 bytes on supported 64-bit processor instructions)
 ///
-typedef INT64   INTN;
+typedef INT64 INTN;
 
 //
 // Processor specific defines
@@ -83,7 +126,7 @@
 ///
 /// A value of native width with the highest bit set.
 ///
-#define MAX_BIT     0x8000000000000000ULL
+#define MAX_BIT  0x8000000000000000ULL
 
 ///
 /// A value of native width with the two highest bits set.
@@ -93,7 +136,12 @@
 ///
 /// Maximum legal AARCH64  address
 ///
-#define MAX_ADDRESS   0xFFFFFFFFFFFFFFFFULL
+#define MAX_ADDRESS  0xFFFFFFFFFFFFFFFFULL
+
+///
+/// Maximum usable address at boot time (48 bits using 4 KB pages)
+///
+#define MAX_ALLOC_ADDRESS  0xFFFFFFFFFFFFULL
 
 ///
 /// Maximum legal AArch64 INTN and UINTN values.
@@ -102,6 +150,11 @@
 #define MAX_UINTN  ((UINTN)0xFFFFFFFFFFFFFFFFULL)
 
 ///
+/// Minimum legal AArch64 INTN value.
+///
+#define MIN_INTN  (((INTN)-9223372036854775807LL) - 1)
+
+///
 /// The stack alignment required for AARCH64
 ///
 #define CPU_STACK_ALIGNMENT  16
@@ -109,8 +162,8 @@
 ///
 /// Page allocation granularity for AARCH64
 ///
-#define DEFAULT_PAGE_ALLOCATION_GRANULARITY   (0x1000)
-#define RUNTIME_PAGE_ALLOCATION_GRANULARITY   (0x10000)
+#define DEFAULT_PAGE_ALLOCATION_GRANULARITY  (0x1000)
+#define RUNTIME_PAGE_ALLOCATION_GRANULARITY  (0x10000)
 
 //
 // Modifier to ensure that all protocol member functions and EFI intrinsics
@@ -121,18 +174,18 @@
 
 // When compiling with Clang, we still use GNU as for the assembler, so we still
 // need to define the GCC_ASM* macros.
-#if defined(__GNUC__) || defined(__clang__)
-  ///
-  /// For GNU assembly code, .global or .globl can declare global symbols.
-  /// Define this macro to unify the usage.
-  ///
-  #define ASM_GLOBAL .globl
+#if defined (__GNUC__) || defined (__clang__)
+///
+/// For GNU assembly code, .global or .globl can declare global symbols.
+/// Define this macro to unify the usage.
+///
+#define ASM_GLOBAL  .globl
 
-  #define GCC_ASM_EXPORT(func__)  \
+#define GCC_ASM_EXPORT(func__)  \
          .global  _CONCATENATE (__USER_LABEL_PREFIX__, func__)    ;\
          .type ASM_PFX(func__), %function
 
-  #define GCC_ASM_IMPORT(func__)  \
+#define GCC_ASM_IMPORT(func__)  \
          .extern  _CONCATENATE (__USER_LABEL_PREFIX__, func__)
 
 #endif
@@ -147,7 +200,7 @@
   @return The pointer to the first instruction of a function given a function pointer.
 
 **/
-#define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID *)(UINTN)(FunctionPointer)
+#define FUNCTION_ENTRY_POINT(FunctionPointer)  (VOID *)(UINTN)(FunctionPointer)
 
 #ifndef __USER_LABEL_PREFIX__
 #define __USER_LABEL_PREFIX__
diff --git a/src/include/ipxe/efi/Arm/ProcessorBind.h b/src/include/ipxe/efi/Arm/ProcessorBind.h
index efe3bf1..6d558a2 100644
--- a/src/include/ipxe/efi/Arm/ProcessorBind.h
+++ b/src/include/ipxe/efi/Arm/ProcessorBind.h
@@ -1,22 +1,16 @@
 /** @file
   Processor or Compiler specific defines and types for ARM.
 
-  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
   Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __PROCESSOR_BIND_H__
 #define __PROCESSOR_BIND_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// Define the processor type so other code can make processor based choices
@@ -26,61 +20,110 @@
 //
 // Make sure we are using the correct packing rules per EFI specification
 //
-#ifndef __GNUC__
-#pragma pack()
+#if !defined (__GNUC__) && !defined (__ASSEMBLER__)
+  #pragma pack()
+#endif
+
+#if defined (_MSC_EXTENSIONS)
+
+//
+// Disable some level 4 compilation warnings (same as IA32 and X64)
+//
+
+//
+// Disabling bitfield type checking warnings.
+//
+  #pragma warning ( disable : 4214 )
+
+//
+// Disabling the unreferenced formal parameter warnings.
+//
+  #pragma warning ( disable : 4100 )
+
+//
+// Disable slightly different base types warning as CHAR8 * can not be set
+// to a constant string.
+//
+  #pragma warning ( disable : 4057 )
+
+//
+// ASSERT(FALSE) or while (TRUE) are legal constructs so suppress this warning
+//
+  #pragma warning ( disable : 4127 )
+
+//
+// This warning is caused by functions defined but not used. For precompiled header only.
+//
+  #pragma warning ( disable : 4505 )
+
+//
+// This warning is caused by empty (after preprocessing) source file. For precompiled header only.
+//
+  #pragma warning ( disable : 4206 )
+
+//
+// Disable 'potentially uninitialized local variable X used' warnings
+//
+  #pragma warning ( disable : 4701 )
+
+//
+// Disable 'potentially uninitialized local pointer variable X used' warnings
+//
+  #pragma warning ( disable : 4703 )
+
 #endif
 
 //
-// RVCT does not support the __builtin_unreachable() macro
+// MSFT doesn't support the __builtin_unreachable() macro
 //
-#ifdef __ARMCC_VERSION
+#if defined (_MSC_EXTENSIONS)
 #define UNREACHABLE()
 #endif
 
-#if _MSC_EXTENSIONS
-  //
-  // use Microsoft* C compiler dependent integer width types
-  //
-  typedef unsigned __int64    UINT64;
-  typedef __int64             INT64;
-  typedef unsigned __int32    UINT32;
-  typedef __int32             INT32;
-  typedef unsigned short      UINT16;
-  typedef unsigned short      CHAR16;
-  typedef short               INT16;
-  typedef unsigned char       BOOLEAN;
-  typedef unsigned char       UINT8;
-  typedef char                CHAR8;
-  typedef signed char         INT8;
+#if defined (_MSC_EXTENSIONS)
+//
+// use Microsoft* C compiler dependent integer width types
+//
+typedef unsigned __int64  UINT64;
+typedef __int64           INT64;
+typedef unsigned __int32  UINT32;
+typedef __int32           INT32;
+typedef unsigned short    UINT16;
+typedef unsigned short    CHAR16;
+typedef short             INT16;
+typedef unsigned char     BOOLEAN;
+typedef unsigned char     UINT8;
+typedef char              CHAR8;
+typedef signed char       INT8;
 #else
-  //
-  // Assume standard ARM alignment.
-  // Need to check portability of long long
-  //
-  typedef unsigned long long  UINT64;
-  typedef long long           INT64;
-  typedef unsigned int        UINT32;
-  typedef int                 INT32;
-  typedef unsigned short      UINT16;
-  typedef unsigned short      CHAR16;
-  typedef short               INT16;
-  typedef unsigned char       BOOLEAN;
-  typedef unsigned char       UINT8;
-  typedef char                CHAR8;
-  typedef signed char         INT8;
+//
+// Assume standard ARM alignment.
+// Need to check portability of long long
+//
+typedef unsigned long long  UINT64;
+typedef long long           INT64;
+typedef unsigned int        UINT32;
+typedef int                 INT32;
+typedef unsigned short      UINT16;
+typedef unsigned short      CHAR16;
+typedef short               INT16;
+typedef unsigned char       BOOLEAN;
+typedef unsigned char       UINT8;
+typedef char                CHAR8;
+typedef signed char         INT8;
 #endif
 
 ///
 /// Unsigned value of native width.  (4 bytes on supported 32-bit processor instructions,
 /// 8 bytes on supported 64-bit processor instructions)
 ///
-typedef UINT32  UINTN;
+typedef UINT32 UINTN;
 
 ///
 /// Signed value of native width.  (4 bytes on supported 32-bit processor instructions,
 /// 8 bytes on supported 64-bit processor instructions)
 ///
-typedef INT32   INTN;
+typedef INT32 INTN;
 
 //
 // Processor specific defines
@@ -89,12 +132,12 @@
 ///
 /// A value of native width with the highest bit set.
 ///
-#define MAX_BIT      0x80000000
+#define MAX_BIT  0x80000000
 
 ///
 /// A value of native width with the two highest bits set.
 ///
-#define MAX_2_BITS   0xC0000000
+#define MAX_2_BITS  0xC0000000
 
 ///
 /// Maximum legal ARM address
@@ -102,12 +145,22 @@
 #define MAX_ADDRESS  0xFFFFFFFF
 
 ///
+/// Maximum usable address at boot time
+///
+#define MAX_ALLOC_ADDRESS  MAX_ADDRESS
+
+///
 /// Maximum legal ARM INTN and UINTN values.
 ///
 #define MAX_INTN   ((INTN)0x7FFFFFFF)
 #define MAX_UINTN  ((UINTN)0xFFFFFFFF)
 
 ///
+/// Minimum legal ARM INTN value.
+///
+#define MIN_INTN  (((INTN)-2147483647) - 1)
+
+///
 /// The stack alignment required for ARM
 ///
 #define CPU_STACK_ALIGNMENT  sizeof(UINT64)
@@ -115,8 +168,8 @@
 ///
 /// Page allocation granularity for ARM
 ///
-#define DEFAULT_PAGE_ALLOCATION_GRANULARITY   (0x1000)
-#define RUNTIME_PAGE_ALLOCATION_GRANULARITY   (0x1000)
+#define DEFAULT_PAGE_ALLOCATION_GRANULARITY  (0x1000)
+#define RUNTIME_PAGE_ALLOCATION_GRANULARITY  (0x1000)
 
 //
 // Modifier to ensure that all protocol member functions and EFI intrinsics
@@ -127,40 +180,45 @@
 
 // When compiling with Clang, we still use GNU as for the assembler, so we still
 // need to define the GCC_ASM* macros.
-#if defined(__GNUC__) || defined(__clang__)
-  ///
-  /// For GNU assembly code, .global or .globl can declare global symbols.
-  /// Define this macro to unify the usage.
-  ///
-  #define ASM_GLOBAL .globl
+#if defined (__GNUC__) || defined (__clang__)
+///
+/// For GNU assembly code, .global or .globl can declare global symbols.
+/// Define this macro to unify the usage.
+///
+#define ASM_GLOBAL  .globl
 
-  #if !defined(__APPLE__)
-    ///
-    /// ARM EABI defines that the linker should not manipulate call relocations
-    /// (do bl/blx conversion) unless the target symbol has function type.
-    /// CodeSourcery 2010.09 started requiring the .type to function properly
-    ///
-    #define INTERWORK_FUNC(func__)   .type ASM_PFX(func__), %function
+  #if !defined (__APPLE__)
+///
+/// ARM EABI defines that the linker should not manipulate call relocations
+/// (do bl/blx conversion) unless the target symbol has function type.
+/// CodeSourcery 2010.09 started requiring the .type to function properly
+///
+#define INTERWORK_FUNC(func__)  .type ASM_PFX(func__), %function
 
-    #define GCC_ASM_EXPORT(func__)  \
+#define GCC_ASM_EXPORT(func__)  \
              .global  _CONCATENATE (__USER_LABEL_PREFIX__, func__)    ;\
              .type ASM_PFX(func__), %function
 
-    #define GCC_ASM_IMPORT(func__)  \
+#define GCC_ASM_IMPORT(func__)  \
              .extern  _CONCATENATE (__USER_LABEL_PREFIX__, func__)
 
   #else
-    //
-    // .type not supported by Apple Xcode tools
-    //
-    #define INTERWORK_FUNC(func__)
+//
+// .type not supported by Apple Xcode tools
+//
+#define INTERWORK_FUNC(func__)
 
-    #define GCC_ASM_EXPORT(func__)  \
+#define GCC_ASM_EXPORT(func__)  \
              .globl  _CONCATENATE (__USER_LABEL_PREFIX__, func__)    \
 
-    #define GCC_ASM_IMPORT(name)
+#define GCC_ASM_IMPORT(name)
 
   #endif
+#elif defined (_MSC_EXTENSIONS)
+//
+// PRESERVE8 is not supported by the MSFT assembler.
+//
+#define PRESERVE8
 #endif
 
 /**
@@ -173,12 +231,10 @@
   @return The pointer to the first instruction of a function given a function pointer.
 
 **/
-#define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID *)(UINTN)(FunctionPointer)
+#define FUNCTION_ENTRY_POINT(FunctionPointer)  (VOID *)(UINTN)(FunctionPointer)
 
 #ifndef __USER_LABEL_PREFIX__
 #define __USER_LABEL_PREFIX__
 #endif
 
 #endif
-
-
diff --git a/src/include/ipxe/efi/Base.h b/src/include/ipxe/efi/Base.h
index 26c90c1..b0093c6 100644
--- a/src/include/ipxe/efi/Base.h
+++ b/src/include/ipxe/efi/Base.h
@@ -6,107 +6,48 @@
   environment. There are a set of base libraries in the Mde Package that can
   be used to implement base modules.
 
-Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
 Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
-
 #ifndef __BASE_H__
 #define __BASE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 //
 // Include processor specific binding
 //
 #include <ipxe/efi/ProcessorBind.h>
 
-#if defined(_MSC_EXTENSIONS)
+#if defined (_MSC_EXTENSIONS)
 //
 // Disable warning when last field of data structure is a zero sized array.
 //
-#pragma warning ( disable : 4200 )
+  #pragma warning ( disable : 4200 )
 #endif
 
-/**
-  Verifies the storage size of a given data type.
-
-  This macro generates a divide by zero error or a zero size array declaration in
-  the preprocessor if the size is incorrect.  These are declared as "extern" so
-  the space for these arrays will not be in the modules.
-
-  @param  TYPE  The date type to determine the size of.
-  @param  Size  The expected size for the TYPE.
-
-**/
-#define VERIFY_SIZE_OF(TYPE, Size) extern UINT8 _VerifySizeof##TYPE[(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size))]
-
-//
-// Verify that ProcessorBind.h produced UEFI Data Types that are compliant with
-// Section 2.3.1 of the UEFI 2.3 Specification.
-//
-VERIFY_SIZE_OF (BOOLEAN, 1);
-VERIFY_SIZE_OF (INT8, 1);
-VERIFY_SIZE_OF (UINT8, 1);
-VERIFY_SIZE_OF (INT16, 2);
-VERIFY_SIZE_OF (UINT16, 2);
-VERIFY_SIZE_OF (INT32, 4);
-VERIFY_SIZE_OF (UINT32, 4);
-VERIFY_SIZE_OF (INT64, 8);
-VERIFY_SIZE_OF (UINT64, 8);
-VERIFY_SIZE_OF (CHAR8, 1);
-VERIFY_SIZE_OF (CHAR16, 2);
-
-//
-// The following three enum types are used to verify that the compiler
-// configuration for enum types is compliant with Section 2.3.1 of the
-// UEFI 2.3 Specification. These enum types and enum values are not
-// intended to be used. A prefix of '__' is used avoid conflicts with
-// other types.
-//
-typedef enum {
-  __VerifyUint8EnumValue = 0xff
-} __VERIFY_UINT8_ENUM_SIZE;
-
-typedef enum {
-  __VerifyUint16EnumValue = 0xffff
-} __VERIFY_UINT16_ENUM_SIZE;
-
-typedef enum {
-  __VerifyUint32EnumValue = 0xffffffff
-} __VERIFY_UINT32_ENUM_SIZE;
-
-VERIFY_SIZE_OF (__VERIFY_UINT8_ENUM_SIZE, 4);
-VERIFY_SIZE_OF (__VERIFY_UINT16_ENUM_SIZE, 4);
-VERIFY_SIZE_OF (__VERIFY_UINT32_ENUM_SIZE, 4);
-
 //
 // The Microsoft* C compiler can removed references to unreferenced data items
 //  if the /OPT:REF linker option is used. We defined a macro as this is a
 //  a non standard extension
 //
-#if defined(_MSC_EXTENSIONS) && !defined (MDE_CPU_EBC)
-  ///
-  /// Remove global variable from the linked image if there are no references to
-  /// it after all compiler and linker optimizations have been performed.
-  ///
-  ///
-  #define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany)
+#if defined (_MSC_VER) && _MSC_VER < 1800 && !defined (MDE_CPU_EBC)
+///
+/// Remove global variable from the linked image if there are no references to
+/// it after all compiler and linker optimizations have been performed.
+///
+///
+#define GLOBAL_REMOVE_IF_UNREFERENCED  __declspec(selectany)
 #else
-  ///
-  /// Remove the global variable from the linked image if there are no references
-  ///  to it after all compiler and linker optimizations have been performed.
-  ///
-  ///
-  #define GLOBAL_REMOVE_IF_UNREFERENCED
+///
+/// Remove the global variable from the linked image if there are no references
+///  to it after all compiler and linker optimizations have been performed.
+///
+///
+#define GLOBAL_REMOVE_IF_UNREFERENCED
 #endif
 
 //
@@ -114,29 +55,28 @@
 // warnings.
 //
 #ifndef UNREACHABLE
-  #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)
-    ///
-    /// Signal compilers and analyzers that this call is not reachable.  It is
-    /// up to the compiler to remove any code past that point.
-    /// Not implemented by GCC 4.4 or earlier.
-    ///
-    #define UNREACHABLE()  __builtin_unreachable ()
+  #ifdef __GNUC__
+///
+/// Signal compilers and analyzers that this call is not reachable.  It is
+/// up to the compiler to remove any code past that point.
+///
+#define UNREACHABLE()  __builtin_unreachable ()
   #elif defined (__has_feature)
     #if __has_builtin (__builtin_unreachable)
-      ///
-      /// Signal compilers and analyzers that this call is not reachable.  It is
-      /// up to the compiler to remove any code past that point.
-      ///
-      #define UNREACHABLE()  __builtin_unreachable ()
+///
+/// Signal compilers and analyzers that this call is not reachable.  It is
+/// up to the compiler to remove any code past that point.
+///
+#define UNREACHABLE()  __builtin_unreachable ()
     #endif
   #endif
 
   #ifndef UNREACHABLE
-    ///
-    /// Signal compilers and analyzers that this call is not reachable.  It is
-    /// up to the compiler to remove any code past that point.
-    ///
-    #define UNREACHABLE()
+///
+/// Signal compilers and analyzers that this call is not reachable.  It is
+/// up to the compiler to remove any code past that point.
+///
+#define UNREACHABLE()
   #endif
 #endif
 
@@ -147,26 +87,26 @@
 //
 #ifndef NORETURN
   #if defined (__GNUC__) || defined (__clang__)
-    ///
-    /// Signal compilers and analyzers that the function cannot return.
-    /// It is up to the compiler to remove any code past a call to functions
-    /// flagged with this attribute.
-    ///
-    #define NORETURN  __attribute__((noreturn))
-  #elif defined(_MSC_EXTENSIONS) && !defined(MDE_CPU_EBC)
-    ///
-    /// Signal compilers and analyzers that the function cannot return.
-    /// It is up to the compiler to remove any code past a call to functions
-    /// flagged with this attribute.
-    ///
-    #define NORETURN  __declspec(noreturn)
+///
+/// Signal compilers and analyzers that the function cannot return.
+/// It is up to the compiler to remove any code past a call to functions
+/// flagged with this attribute.
+///
+#define NORETURN  __attribute__((noreturn))
+  #elif defined (_MSC_EXTENSIONS) && !defined (MDE_CPU_EBC)
+///
+/// Signal compilers and analyzers that the function cannot return.
+/// It is up to the compiler to remove any code past a call to functions
+/// flagged with this attribute.
+///
+#define NORETURN  __declspec(noreturn)
   #else
-    ///
-    /// Signal compilers and analyzers that the function cannot return.
-    /// It is up to the compiler to remove any code past a call to functions
-    /// flagged with this attribute.
-    ///
-    #define NORETURN
+///
+/// Signal compilers and analyzers that the function cannot return.
+/// It is up to the compiler to remove any code past a call to functions
+/// flagged with this attribute.
+///
+#define NORETURN
   #endif
 #endif
 
@@ -177,20 +117,20 @@
 #ifndef ANALYZER_UNREACHABLE
   #ifdef __clang_analyzer__
     #if __has_builtin (__builtin_unreachable)
-      ///
-      /// Signal the analyzer that this call is not reachable.
-      /// This excludes compilers.
-      ///
-      #define ANALYZER_UNREACHABLE()  __builtin_unreachable ()
+///
+/// Signal the analyzer that this call is not reachable.
+/// This excludes compilers.
+///
+#define ANALYZER_UNREACHABLE()  __builtin_unreachable ()
     #endif
   #endif
 
   #ifndef ANALYZER_UNREACHABLE
-    ///
-    /// Signal the analyzer that this call is not reachable.
-    /// This excludes compilers.
-    ///
-    #define ANALYZER_UNREACHABLE()
+///
+/// Signal the analyzer that this call is not reachable.
+/// This excludes compilers.
+///
+#define ANALYZER_UNREACHABLE()
   #endif
 #endif
 
@@ -203,20 +143,40 @@
 #ifndef ANALYZER_NORETURN
   #ifdef __has_feature
     #if __has_feature (attribute_analyzer_noreturn)
-      ///
-      /// Signal analyzers that the function cannot return.
-      /// This excludes compilers.
-      ///
-      #define ANALYZER_NORETURN  __attribute__((analyzer_noreturn))
+///
+/// Signal analyzers that the function cannot return.
+/// This excludes compilers.
+///
+#define ANALYZER_NORETURN  __attribute__((analyzer_noreturn))
     #endif
   #endif
 
   #ifndef ANALYZER_NORETURN
-    ///
-    /// Signal the analyzer that the function cannot return.
-    /// This excludes compilers.
-    ///
-    #define ANALYZER_NORETURN
+///
+/// Signal the analyzer that the function cannot return.
+/// This excludes compilers.
+///
+#define ANALYZER_NORETURN
+  #endif
+#endif
+
+///
+/// Tell the code optimizer that the function will return twice.
+/// This prevents wrong optimizations which can cause bugs.
+///
+#ifndef RETURNS_TWICE
+  #if defined (__GNUC__) || defined (__clang__)
+///
+/// Tell the code optimizer that the function will return twice.
+/// This prevents wrong optimizations which can cause bugs.
+///
+#define RETURNS_TWICE  __attribute__((returns_twice))
+  #else
+///
+/// Tell the code optimizer that the function will return twice.
+/// This prevents wrong optimizations which can cause bugs.
+///
+#define RETURNS_TWICE
   #endif
 #endif
 
@@ -227,58 +187,50 @@
 ///
 /// Private worker functions for ASM_PFX()
 ///
-#define _CONCATENATE(a, b)  __CONCATENATE(a, b)
-#define __CONCATENATE(a, b) a ## b
+#define _CONCATENATE(a, b)   __CONCATENATE(a, b)
+#define __CONCATENATE(a, b)  a ## b
 
 ///
 /// The __USER_LABEL_PREFIX__ macro predefined by GNUC represents the prefix
 /// on symbols in assembly language.
 ///
-#define ASM_PFX(name) _CONCATENATE (__USER_LABEL_PREFIX__, name)
+#define ASM_PFX(name)  _CONCATENATE (__USER_LABEL_PREFIX__, name)
 
-#if __APPLE__
-  //
-  // Apple extension that is used by the linker to optimize code size
-  // with assembly functions. Put at the end of your .S files
-  //
-  #define ASM_FUNCTION_REMOVE_IF_UNREFERENCED  .subsections_via_symbols
+#ifdef __APPLE__
+//
+// Apple extension that is used by the linker to optimize code size
+// with assembly functions. Put at the end of your .S files
+//
+#define ASM_FUNCTION_REMOVE_IF_UNREFERENCED  .subsections_via_symbols
 #else
-  #define ASM_FUNCTION_REMOVE_IF_UNREFERENCED
+#define ASM_FUNCTION_REMOVE_IF_UNREFERENCED
 #endif
 
-#ifdef __CC_ARM
-  //
-  // Older RVCT ARM compilers don't fully support #pragma pack and require __packed
-  // as a prefix for the structure.
-  //
-  #define PACKED  __packed
-#else
-  #define PACKED
-#endif
+#define PACKED
 
 ///
 /// 128 bit buffer containing a unique identifier value.
 /// Unless otherwise specified, aligned on a 64 bit boundary.
 ///
 typedef struct {
-  UINT32  Data1;
-  UINT16  Data2;
-  UINT16  Data3;
-  UINT8   Data4[8];
+  UINT32    Data1;
+  UINT16    Data2;
+  UINT16    Data3;
+  UINT8     Data4[8];
 } GUID;
 
 ///
 /// 4-byte buffer. An IPv4 internet protocol address.
 ///
 typedef struct {
-  UINT8 Addr[4];
+  UINT8    Addr[4];
 } IPv4_ADDRESS;
 
 ///
 /// 16-byte buffer. An IPv6 internet protocol address.
 ///
 typedef struct {
-  UINT8 Addr[16];
+  UINT8    Addr[16];
 } IPv6_ADDRESS;
 
 //
@@ -295,8 +247,8 @@
 /// _LIST_ENTRY structure definition.
 ///
 struct _LIST_ENTRY {
-  LIST_ENTRY  *ForwardLink;
-  LIST_ENTRY  *BackLink;
+  LIST_ENTRY    *ForwardLink;
+  LIST_ENTRY    *BackLink;
 };
 
 //
@@ -306,17 +258,17 @@
 ///
 /// Datum is read-only.
 ///
-#define CONST     const
+#define CONST  const
 
 ///
 /// Datum is scoped to the current file or function.
 ///
-#define STATIC    static
+#define STATIC  static
 
 ///
 /// Undeclared type.
 ///
-#define VOID      void
+#define VOID  void
 
 //
 // Modifiers for Data Types used to self document code.
@@ -354,17 +306,25 @@
 /// Boolean false value.  UEFI Specification defines this value to be 0,
 /// but this form is more portable.
 ///
-#define FALSE ((BOOLEAN)(0==1))
+#define FALSE  ((BOOLEAN)(0==1))
 
 ///
 /// NULL pointer (VOID *)
 ///
+#if defined (__cplusplus)
+  #if defined (_MSC_EXTENSIONS)
+#define NULL  nullptr
+  #else
+#define NULL  __null
+  #endif
+#else
 #define NULL  ((VOID *) 0)
+#endif
 
 //
 // Null character
 //
-#define CHAR_NULL             0x0000
+#define CHAR_NULL  0x0000
 
 ///
 /// Maximum values for common UEFI Data Types
@@ -378,70 +338,78 @@
 #define MAX_INT64   ((INT64)0x7FFFFFFFFFFFFFFFULL)
 #define MAX_UINT64  ((UINT64)0xFFFFFFFFFFFFFFFFULL)
 
-#define  BIT0     0x00000001
-#define  BIT1     0x00000002
-#define  BIT2     0x00000004
-#define  BIT3     0x00000008
-#define  BIT4     0x00000010
-#define  BIT5     0x00000020
-#define  BIT6     0x00000040
-#define  BIT7     0x00000080
-#define  BIT8     0x00000100
-#define  BIT9     0x00000200
-#define  BIT10    0x00000400
-#define  BIT11    0x00000800
-#define  BIT12    0x00001000
-#define  BIT13    0x00002000
-#define  BIT14    0x00004000
-#define  BIT15    0x00008000
-#define  BIT16    0x00010000
-#define  BIT17    0x00020000
-#define  BIT18    0x00040000
-#define  BIT19    0x00080000
-#define  BIT20    0x00100000
-#define  BIT21    0x00200000
-#define  BIT22    0x00400000
-#define  BIT23    0x00800000
-#define  BIT24    0x01000000
-#define  BIT25    0x02000000
-#define  BIT26    0x04000000
-#define  BIT27    0x08000000
-#define  BIT28    0x10000000
-#define  BIT29    0x20000000
-#define  BIT30    0x40000000
-#define  BIT31    0x80000000
-#define  BIT32    0x0000000100000000ULL
-#define  BIT33    0x0000000200000000ULL
-#define  BIT34    0x0000000400000000ULL
-#define  BIT35    0x0000000800000000ULL
-#define  BIT36    0x0000001000000000ULL
-#define  BIT37    0x0000002000000000ULL
-#define  BIT38    0x0000004000000000ULL
-#define  BIT39    0x0000008000000000ULL
-#define  BIT40    0x0000010000000000ULL
-#define  BIT41    0x0000020000000000ULL
-#define  BIT42    0x0000040000000000ULL
-#define  BIT43    0x0000080000000000ULL
-#define  BIT44    0x0000100000000000ULL
-#define  BIT45    0x0000200000000000ULL
-#define  BIT46    0x0000400000000000ULL
-#define  BIT47    0x0000800000000000ULL
-#define  BIT48    0x0001000000000000ULL
-#define  BIT49    0x0002000000000000ULL
-#define  BIT50    0x0004000000000000ULL
-#define  BIT51    0x0008000000000000ULL
-#define  BIT52    0x0010000000000000ULL
-#define  BIT53    0x0020000000000000ULL
-#define  BIT54    0x0040000000000000ULL
-#define  BIT55    0x0080000000000000ULL
-#define  BIT56    0x0100000000000000ULL
-#define  BIT57    0x0200000000000000ULL
-#define  BIT58    0x0400000000000000ULL
-#define  BIT59    0x0800000000000000ULL
-#define  BIT60    0x1000000000000000ULL
-#define  BIT61    0x2000000000000000ULL
-#define  BIT62    0x4000000000000000ULL
-#define  BIT63    0x8000000000000000ULL
+///
+/// Minimum values for the signed UEFI Data Types
+///
+#define MIN_INT8   (((INT8)  -127) - 1)
+#define MIN_INT16  (((INT16) -32767) - 1)
+#define MIN_INT32  (((INT32) -2147483647) - 1)
+#define MIN_INT64  (((INT64) -9223372036854775807LL) - 1)
+
+#define  BIT0   0x00000001
+#define  BIT1   0x00000002
+#define  BIT2   0x00000004
+#define  BIT3   0x00000008
+#define  BIT4   0x00000010
+#define  BIT5   0x00000020
+#define  BIT6   0x00000040
+#define  BIT7   0x00000080
+#define  BIT8   0x00000100
+#define  BIT9   0x00000200
+#define  BIT10  0x00000400
+#define  BIT11  0x00000800
+#define  BIT12  0x00001000
+#define  BIT13  0x00002000
+#define  BIT14  0x00004000
+#define  BIT15  0x00008000
+#define  BIT16  0x00010000
+#define  BIT17  0x00020000
+#define  BIT18  0x00040000
+#define  BIT19  0x00080000
+#define  BIT20  0x00100000
+#define  BIT21  0x00200000
+#define  BIT22  0x00400000
+#define  BIT23  0x00800000
+#define  BIT24  0x01000000
+#define  BIT25  0x02000000
+#define  BIT26  0x04000000
+#define  BIT27  0x08000000
+#define  BIT28  0x10000000
+#define  BIT29  0x20000000
+#define  BIT30  0x40000000
+#define  BIT31  0x80000000
+#define  BIT32  0x0000000100000000ULL
+#define  BIT33  0x0000000200000000ULL
+#define  BIT34  0x0000000400000000ULL
+#define  BIT35  0x0000000800000000ULL
+#define  BIT36  0x0000001000000000ULL
+#define  BIT37  0x0000002000000000ULL
+#define  BIT38  0x0000004000000000ULL
+#define  BIT39  0x0000008000000000ULL
+#define  BIT40  0x0000010000000000ULL
+#define  BIT41  0x0000020000000000ULL
+#define  BIT42  0x0000040000000000ULL
+#define  BIT43  0x0000080000000000ULL
+#define  BIT44  0x0000100000000000ULL
+#define  BIT45  0x0000200000000000ULL
+#define  BIT46  0x0000400000000000ULL
+#define  BIT47  0x0000800000000000ULL
+#define  BIT48  0x0001000000000000ULL
+#define  BIT49  0x0002000000000000ULL
+#define  BIT50  0x0004000000000000ULL
+#define  BIT51  0x0008000000000000ULL
+#define  BIT52  0x0010000000000000ULL
+#define  BIT53  0x0020000000000000ULL
+#define  BIT54  0x0040000000000000ULL
+#define  BIT55  0x0080000000000000ULL
+#define  BIT56  0x0100000000000000ULL
+#define  BIT57  0x0200000000000000ULL
+#define  BIT58  0x0400000000000000ULL
+#define  BIT59  0x0800000000000000ULL
+#define  BIT60  0x1000000000000000ULL
+#define  BIT61  0x2000000000000000ULL
+#define  BIT62  0x4000000000000000ULL
+#define  BIT63  0x8000000000000000ULL
 
 #define  SIZE_1KB    0x00000400
 #define  SIZE_2KB    0x00000800
@@ -554,21 +522,24 @@
 #define  BASE_8EB    0x8000000000000000ULL
 
 //
-//  Support for variable length argument lists using the ANSI standard.
+//  Support for variable argument lists in freestanding edk2 modules.
 //
-//  Since we are using the ANSI standard we used the standard naming and
-//  did not follow the coding convention
+//  For modules that use the ISO C library interfaces for variable
+//  argument lists, refer to "StdLib/Include/stdarg.h".
 //
 //  VA_LIST  - typedef for argument list.
 //  VA_START (VA_LIST Marker, argument before the ...) - Init Marker for use.
 //  VA_END (VA_LIST Marker) - Clear Marker
-//  VA_ARG (VA_LIST Marker, var arg size) - Use Marker to get an argument from
-//    the ... list. You must know the size and pass it in this macro.
+//  VA_ARG (VA_LIST Marker, var arg type) - Use Marker to get an argument from
+//    the ... list. You must know the type and pass it in this macro.  Type
+//    must be compatible with the type of the actual next argument (as promoted
+//    according to the default argument promotions.)
 //  VA_COPY (VA_LIST Dest, VA_LIST Start) - Initialize Dest as a copy of Start.
 //
-//  example:
+//  Example:
 //
 //  UINTN
+//  EFIAPI
 //  ExampleVarArg (
 //    IN UINTN  NumberOfArgs,
 //    ...
@@ -584,15 +555,21 @@
 //    VA_START (Marker, NumberOfArgs);
 //    for (Index = 0, Result = 0; Index < NumberOfArgs; Index++) {
 //      //
-//      // The ... list is a series of UINTN values, so average them up.
+//      // The ... list is a series of UINTN values, so sum them up.
 //      //
 //      Result += VA_ARG (Marker, UINTN);
 //    }
 //
 //    VA_END (Marker);
-//    return Result
+//    return Result;
 //  }
 //
+//  Notes:
+//  - Functions that call VA_START() / VA_END() must have a variable
+//    argument list and must be declared EFIAPI.
+//  - Functions that call VA_COPY() / VA_END() must be declared EFIAPI.
+//  - Functions that only use VA_LIST and VA_ARG() need not be EFIAPI.
+//
 
 /**
   Return the size of argument that has been aligned to sizeof (UINTN).
@@ -601,41 +578,23 @@
 
   @return The aligned size.
 **/
-#define _INT_SIZE_OF(n) ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1))
+#define _INT_SIZE_OF(n)  ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1))
 
-#if defined(__CC_ARM)
+#if defined (_M_ARM) || defined (_M_ARM64)
 //
-// RVCT ARM variable argument list support.
+// MSFT ARM variable argument list support.
 //
 
-///
-/// Variable used to traverse the list of arguments. This type can vary by
-/// implementation and could be an array or structure.
-///
-#ifdef __APCS_ADSABI
-  typedef int         *va_list[1];
-  #define VA_LIST     va_list
-#else
-  typedef struct __va_list { void *__ap; } va_list;
-  #define VA_LIST                          va_list
-#endif
+typedef char *VA_LIST;
 
-#define VA_START(Marker, Parameter)   __va_start(Marker, Parameter)
+#define VA_START(Marker, Parameter)  __va_start (&Marker, &Parameter, _INT_SIZE_OF (Parameter), __alignof(Parameter), &Parameter)
+#define VA_ARG(Marker, TYPE)         (*(TYPE *) ((Marker += _INT_SIZE_OF (TYPE) + ((-(INTN)Marker) & (sizeof(TYPE) - 1))) - _INT_SIZE_OF (TYPE)))
+#define VA_END(Marker)               (Marker = (VA_LIST) 0)
+#define VA_COPY(Dest, Start)         ((void)((Dest) = (Start)))
 
-#define VA_ARG(Marker, TYPE)          __va_arg(Marker, TYPE)
+#elif defined (__GNUC__) || defined (__clang__)
 
-#define VA_END(Marker)                ((void)0)
-
-// For some ARM RVCT compilers, __va_copy is not defined
-#ifndef __va_copy
-  #define __va_copy(dest, src) ((void)((dest) = (src)))
-#endif
-
-#define VA_COPY(Dest, Start)          __va_copy (Dest, Start)
-
-#elif defined(__GNUC__)
-
-#if defined(MDE_CPU_X64) && !defined(NO_MSABI_VA_FUNCS)
+  #if defined (MDE_CPU_X64) && !defined (NO_MSABI_VA_FUNCS)
 //
 // X64 only. Use MS ABI version of GCC built-in macros for variable argument lists.
 //
@@ -651,13 +610,13 @@
 
 #define VA_START(Marker, Parameter)  __builtin_ms_va_start (Marker, Parameter)
 
-#define VA_ARG(Marker, TYPE)         ((sizeof (TYPE) < sizeof (UINTN)) ? (TYPE)(__builtin_va_arg (Marker, UINTN)) : (TYPE)(__builtin_va_arg (Marker, TYPE)))
+#define VA_ARG(Marker, TYPE)  ((sizeof (TYPE) < sizeof (UINTN)) ? (TYPE)(__builtin_va_arg (Marker, UINTN)) : (TYPE)(__builtin_va_arg (Marker, TYPE)))
 
-#define VA_END(Marker)               __builtin_ms_va_end (Marker)
+#define VA_END(Marker)  __builtin_ms_va_end (Marker)
 
-#define VA_COPY(Dest, Start)         __builtin_ms_va_copy (Dest, Start)
+#define VA_COPY(Dest, Start)  __builtin_ms_va_copy (Dest, Start)
 
-#else
+  #else
 //
 // Use GCC built-in macros for variable argument lists.
 //
@@ -670,13 +629,13 @@
 
 #define VA_START(Marker, Parameter)  __builtin_va_start (Marker, Parameter)
 
-#define VA_ARG(Marker, TYPE)         ((sizeof (TYPE) < sizeof (UINTN)) ? (TYPE)(__builtin_va_arg (Marker, UINTN)) : (TYPE)(__builtin_va_arg (Marker, TYPE)))
+#define VA_ARG(Marker, TYPE)  ((sizeof (TYPE) < sizeof (UINTN)) ? (TYPE)(__builtin_va_arg (Marker, UINTN)) : (TYPE)(__builtin_va_arg (Marker, TYPE)))
 
-#define VA_END(Marker)               __builtin_va_end (Marker)
+#define VA_END(Marker)  __builtin_va_end (Marker)
 
-#define VA_COPY(Dest, Start)         __builtin_va_copy (Dest, Start)
+#define VA_COPY(Dest, Start)  __builtin_va_copy (Dest, Start)
 
-#endif
+  #endif
 
 #else
 ///
@@ -701,7 +660,7 @@
   @return  A pointer to the beginning of a variable argument list.
 
 **/
-#define VA_START(Marker, Parameter) (Marker = (VA_LIST) ((UINTN) & (Parameter) + _INT_SIZE_OF (Parameter)))
+#define VA_START(Marker, Parameter)  (Marker = (VA_LIST) ((UINTN) & (Parameter) + _INT_SIZE_OF (Parameter)))
 
 /**
   Returns an argument of a specified type from a variable argument list and updates
@@ -719,7 +678,7 @@
   @return  An argument of the type specified by TYPE.
 
 **/
-#define VA_ARG(Marker, TYPE)   (*(TYPE *) ((Marker += _INT_SIZE_OF (TYPE)) - _INT_SIZE_OF (TYPE)))
+#define VA_ARG(Marker, TYPE)  (*(TYPE *) ((Marker += _INT_SIZE_OF (TYPE)) - _INT_SIZE_OF (TYPE)))
 
 /**
   Terminates the use of a variable argument list.
@@ -731,7 +690,7 @@
   @param   Marker   VA_LIST used to traverse the list of arguments.
 
 **/
-#define VA_END(Marker)      (Marker = (VA_LIST) 0)
+#define VA_END(Marker)  (Marker = (VA_LIST) 0)
 
 /**
   Initializes a VA_LIST as a copy of an existing VA_LIST.
@@ -751,7 +710,7 @@
 ///
 /// Pointer to the start of a variable argument list stored in a memory buffer. Same as UINT8 *.
 ///
-typedef UINTN  *BASE_LIST;
+typedef UINTN *BASE_LIST;
 
 /**
   Returns the size of a data type in sizeof(UINTN) units rounded up to the nearest UINTN boundary.
@@ -760,7 +719,7 @@
 
   @return The size of TYPE in sizeof (UINTN) units rounded up to the nearest UINTN boundary.
 **/
-#define _BASE_INT_SIZE_OF(TYPE) ((sizeof (TYPE) + sizeof (UINTN) - 1) / sizeof (UINTN))
+#define _BASE_INT_SIZE_OF(TYPE)  ((sizeof (TYPE) + sizeof (UINTN) - 1) / sizeof (UINTN))
 
 /**
   Returns an argument of a specified type from a variable argument list and updates
@@ -778,7 +737,7 @@
   @return  An argument of the type specified by TYPE.
 
 **/
-#define BASE_ARG(Marker, TYPE)   (*(TYPE *) ((Marker += _BASE_INT_SIZE_OF (TYPE)) - _BASE_INT_SIZE_OF (TYPE)))
+#define BASE_ARG(Marker, TYPE)  (*(TYPE *) ((Marker += _BASE_INT_SIZE_OF (TYPE)) - _BASE_INT_SIZE_OF (TYPE)))
 
 /**
   The macro that returns the byte offset of a field in a data structure.
@@ -793,17 +752,73 @@
   @return  Offset, in bytes, of field.
 
 **/
-#ifdef __GNUC__
-#if __GNUC__ >= 4
-#define OFFSET_OF(TYPE, Field) ((UINTN) __builtin_offsetof(TYPE, Field))
-#endif
+#if (defined (__GNUC__) && __GNUC__ >= 4) || defined (__clang__)
+#define OFFSET_OF(TYPE, Field)  ((UINTN) __builtin_offsetof(TYPE, Field))
 #endif
 
 #ifndef OFFSET_OF
-#define OFFSET_OF(TYPE, Field) ((UINTN) &(((TYPE *)0)->Field))
+#define OFFSET_OF(TYPE, Field)  ((UINTN) &(((TYPE *)0)->Field))
 #endif
 
 /**
+  Portable definition for compile time assertions.
+  Equivalent to C11 static_assert macro from assert.h.
+
+  @param  Expression  Boolean expression.
+  @param  Message     Raised compiler diagnostic message when expression is false.
+
+**/
+#ifdef MDE_CPU_EBC
+#define STATIC_ASSERT(Expression, Message)
+#elif defined (_MSC_EXTENSIONS) || defined (__cplusplus)
+#define STATIC_ASSERT  static_assert
+#else
+#define STATIC_ASSERT  _Static_assert
+#endif
+
+//
+// Verify that ProcessorBind.h produced UEFI Data Types that are compliant with
+// Section 2.3.1 of the UEFI 2.3 Specification.
+//
+
+STATIC_ASSERT (sizeof (BOOLEAN) == 1, "sizeof (BOOLEAN) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (INT8)    == 1, "sizeof (INT8) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (UINT8)   == 1, "sizeof (UINT8) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (INT16)   == 2, "sizeof (INT16) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (UINT16)  == 2, "sizeof (UINT16) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (INT32)   == 4, "sizeof (INT32) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (UINT32)  == 4, "sizeof (UINT32) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (INT64)   == 8, "sizeof (INT64) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (UINT64)  == 8, "sizeof (UINT64) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (CHAR8)   == 1, "sizeof (CHAR8) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (CHAR16)  == 2, "sizeof (CHAR16) does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (L'A')    == 2, "sizeof (L'A') does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (L"A")    == 4, "sizeof (L\"A\") does not meet UEFI Specification Data Type requirements");
+
+//
+// The following three enum types are used to verify that the compiler
+// configuration for enum types is compliant with Section 2.3.1 of the
+// UEFI 2.3 Specification. These enum types and enum values are not
+// intended to be used. A prefix of '__' is used avoid conflicts with
+// other types.
+//
+typedef enum {
+  __VerifyUint8EnumValue = 0xff
+} __VERIFY_UINT8_ENUM_SIZE;
+
+typedef enum {
+  __VerifyUint16EnumValue = 0xffff
+} __VERIFY_UINT16_ENUM_SIZE;
+
+typedef enum {
+  __VerifyUint32EnumValue = 0xffffffff
+} __VERIFY_UINT32_ENUM_SIZE;
+
+STATIC_ASSERT (sizeof (__VERIFY_UINT8_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (__VERIFY_UINT16_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements");
+STATIC_ASSERT (sizeof (__VERIFY_UINT32_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements");
+
+/**
   Macro that returns a pointer to the data structure that contains a specified field of
   that data structure.  This is a lightweight method to hide information by placing a
   public data structure inside a larger private data structure and using a pointer to
@@ -822,7 +837,7 @@
   @return  A pointer to the structure from one of it's elements.
 
 **/
-#define BASE_CR(Record, TYPE, Field)  ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))
+#define BASE_CR(Record, TYPE, Field)  ((TYPE *) ((CHAR8 *) (Record) - OFFSET_OF (TYPE, Field)))
 
 /**
   Rounds a value up to the next boundary using a specified alignment.
@@ -836,7 +851,7 @@
   @return  A value up to the next boundary.
 
 **/
-#define ALIGN_VALUE(Value, Alignment) ((Value) + (((Alignment) - (Value)) & ((Alignment) - 1)))
+#define ALIGN_VALUE(Value, Alignment)  ((Value) + (((Alignment) - (Value)) & ((Alignment) - 1)))
 
 /**
   Adjust a pointer by adding the minimum offset required for it to be aligned on
@@ -851,7 +866,7 @@
   @return  Pointer to the aligned address.
 
 **/
-#define ALIGN_POINTER(Pointer, Alignment) ((VOID *) (ALIGN_VALUE ((UINTN)(Pointer), (Alignment))))
+#define ALIGN_POINTER(Pointer, Alignment)  ((VOID *) (ALIGN_VALUE ((UINTN)(Pointer), (Alignment))))
 
 /**
   Rounds a value up to the next natural boundary for the current CPU.
@@ -867,7 +882,6 @@
 **/
 #define ALIGN_VARIABLE(Value)  ALIGN_VALUE ((Value), sizeof (UINTN))
 
-
 /**
   Return the maximum of two operands.
 
@@ -926,7 +940,7 @@
   @return The value specified by StatusCode with the highest bit set.
 
 **/
-#define ENCODE_ERROR(StatusCode)     ((RETURN_STATUS)(MAX_BIT | (StatusCode)))
+#define ENCODE_ERROR(StatusCode)  ((RETURN_STATUS)(MAX_BIT | (StatusCode)))
 
 /**
   Produces a RETURN_STATUS code with the highest bit clear.
@@ -937,7 +951,7 @@
   @return The value specified by StatusCode with the highest bit clear.
 
 **/
-#define ENCODE_WARNING(StatusCode)   ((RETURN_STATUS)(StatusCode))
+#define ENCODE_WARNING(StatusCode)  ((RETURN_STATUS)(StatusCode))
 
 /**
   Returns TRUE if a specified RETURN_STATUS code is an error code.
@@ -950,138 +964,138 @@
   @retval FALSE         The high bit of StatusCode is clear.
 
 **/
-#define RETURN_ERROR(StatusCode)     (((INTN)(RETURN_STATUS)(StatusCode)) < 0)
+#define RETURN_ERROR(StatusCode)  (((INTN)(RETURN_STATUS)(StatusCode)) < 0)
 
 ///
 /// The operation completed successfully.
 ///
-#define RETURN_SUCCESS               0
+#define RETURN_SUCCESS  (RETURN_STATUS)(0)
 
 ///
 /// The image failed to load.
 ///
-#define RETURN_LOAD_ERROR            ENCODE_ERROR (1)
+#define RETURN_LOAD_ERROR  ENCODE_ERROR (1)
 
 ///
 /// The parameter was incorrect.
 ///
-#define RETURN_INVALID_PARAMETER     ENCODE_ERROR (2)
+#define RETURN_INVALID_PARAMETER  ENCODE_ERROR (2)
 
 ///
 /// The operation is not supported.
 ///
-#define RETURN_UNSUPPORTED           ENCODE_ERROR (3)
+#define RETURN_UNSUPPORTED  ENCODE_ERROR (3)
 
 ///
 /// The buffer was not the proper size for the request.
 ///
-#define RETURN_BAD_BUFFER_SIZE       ENCODE_ERROR (4)
+#define RETURN_BAD_BUFFER_SIZE  ENCODE_ERROR (4)
 
 ///
 /// The buffer was not large enough to hold the requested data.
 /// The required buffer size is returned in the appropriate
 /// parameter when this error occurs.
 ///
-#define RETURN_BUFFER_TOO_SMALL      ENCODE_ERROR (5)
+#define RETURN_BUFFER_TOO_SMALL  ENCODE_ERROR (5)
 
 ///
 /// There is no data pending upon return.
 ///
-#define RETURN_NOT_READY             ENCODE_ERROR (6)
+#define RETURN_NOT_READY  ENCODE_ERROR (6)
 
 ///
 /// The physical device reported an error while attempting the
 /// operation.
 ///
-#define RETURN_DEVICE_ERROR          ENCODE_ERROR (7)
+#define RETURN_DEVICE_ERROR  ENCODE_ERROR (7)
 
 ///
 /// The device can not be written to.
 ///
-#define RETURN_WRITE_PROTECTED       ENCODE_ERROR (8)
+#define RETURN_WRITE_PROTECTED  ENCODE_ERROR (8)
 
 ///
 /// The resource has run out.
 ///
-#define RETURN_OUT_OF_RESOURCES      ENCODE_ERROR (9)
+#define RETURN_OUT_OF_RESOURCES  ENCODE_ERROR (9)
 
 ///
 /// An inconsistency was detected on the file system causing the
 /// operation to fail.
 ///
-#define RETURN_VOLUME_CORRUPTED      ENCODE_ERROR (10)
+#define RETURN_VOLUME_CORRUPTED  ENCODE_ERROR (10)
 
 ///
 /// There is no more space on the file system.
 ///
-#define RETURN_VOLUME_FULL           ENCODE_ERROR (11)
+#define RETURN_VOLUME_FULL  ENCODE_ERROR (11)
 
 ///
 /// The device does not contain any medium to perform the
 /// operation.
 ///
-#define RETURN_NO_MEDIA              ENCODE_ERROR (12)
+#define RETURN_NO_MEDIA  ENCODE_ERROR (12)
 
 ///
 /// The medium in the device has changed since the last
 /// access.
 ///
-#define RETURN_MEDIA_CHANGED         ENCODE_ERROR (13)
+#define RETURN_MEDIA_CHANGED  ENCODE_ERROR (13)
 
 ///
 /// The item was not found.
 ///
-#define RETURN_NOT_FOUND             ENCODE_ERROR (14)
+#define RETURN_NOT_FOUND  ENCODE_ERROR (14)
 
 ///
 /// Access was denied.
 ///
-#define RETURN_ACCESS_DENIED         ENCODE_ERROR (15)
+#define RETURN_ACCESS_DENIED  ENCODE_ERROR (15)
 
 ///
 /// The server was not found or did not respond to the request.
 ///
-#define RETURN_NO_RESPONSE           ENCODE_ERROR (16)
+#define RETURN_NO_RESPONSE  ENCODE_ERROR (16)
 
 ///
 /// A mapping to the device does not exist.
 ///
-#define RETURN_NO_MAPPING            ENCODE_ERROR (17)
+#define RETURN_NO_MAPPING  ENCODE_ERROR (17)
 
 ///
 /// A timeout time expired.
 ///
-#define RETURN_TIMEOUT               ENCODE_ERROR (18)
+#define RETURN_TIMEOUT  ENCODE_ERROR (18)
 
 ///
 /// The protocol has not been started.
 ///
-#define RETURN_NOT_STARTED           ENCODE_ERROR (19)
+#define RETURN_NOT_STARTED  ENCODE_ERROR (19)
 
 ///
 /// The protocol has already been started.
 ///
-#define RETURN_ALREADY_STARTED       ENCODE_ERROR (20)
+#define RETURN_ALREADY_STARTED  ENCODE_ERROR (20)
 
 ///
 /// The operation was aborted.
 ///
-#define RETURN_ABORTED               ENCODE_ERROR (21)
+#define RETURN_ABORTED  ENCODE_ERROR (21)
 
 ///
 /// An ICMP error occurred during the network operation.
 ///
-#define RETURN_ICMP_ERROR            ENCODE_ERROR (22)
+#define RETURN_ICMP_ERROR  ENCODE_ERROR (22)
 
 ///
 /// A TFTP error occurred during the network operation.
 ///
-#define RETURN_TFTP_ERROR            ENCODE_ERROR (23)
+#define RETURN_TFTP_ERROR  ENCODE_ERROR (23)
 
 ///
 /// A protocol error occurred during the network operation.
 ///
-#define RETURN_PROTOCOL_ERROR        ENCODE_ERROR (24)
+#define RETURN_PROTOCOL_ERROR  ENCODE_ERROR (24)
 
 ///
 /// A function encountered an internal version that was
@@ -1092,74 +1106,73 @@
 ///
 /// The function was not performed due to a security violation.
 ///
-#define RETURN_SECURITY_VIOLATION    ENCODE_ERROR (26)
+#define RETURN_SECURITY_VIOLATION  ENCODE_ERROR (26)
 
 ///
 /// A CRC error was detected.
 ///
-#define RETURN_CRC_ERROR             ENCODE_ERROR (27)
+#define RETURN_CRC_ERROR  ENCODE_ERROR (27)
 
 ///
 /// The beginning or end of media was reached.
 ///
-#define RETURN_END_OF_MEDIA          ENCODE_ERROR (28)
+#define RETURN_END_OF_MEDIA  ENCODE_ERROR (28)
 
 ///
 /// The end of the file was reached.
 ///
-#define RETURN_END_OF_FILE           ENCODE_ERROR (31)
+#define RETURN_END_OF_FILE  ENCODE_ERROR (31)
 
 ///
 /// The language specified was invalid.
 ///
-#define RETURN_INVALID_LANGUAGE      ENCODE_ERROR (32)
+#define RETURN_INVALID_LANGUAGE  ENCODE_ERROR (32)
 
 ///
 /// The security status of the data is unknown or compromised
 /// and the data must be updated or replaced to restore a valid
 /// security status.
 ///
-#define RETURN_COMPROMISED_DATA      ENCODE_ERROR (33)
+#define RETURN_COMPROMISED_DATA  ENCODE_ERROR (33)
 
 ///
 /// A HTTP error occurred during the network operation.
 ///
-#define RETURN_HTTP_ERROR            ENCODE_ERROR (35)
+#define RETURN_HTTP_ERROR  ENCODE_ERROR (35)
 
 ///
 /// The string contained one or more characters that
 /// the device could not render and were skipped.
 ///
-#define RETURN_WARN_UNKNOWN_GLYPH    ENCODE_WARNING (1)
+#define RETURN_WARN_UNKNOWN_GLYPH  ENCODE_WARNING (1)
 
 ///
 /// The handle was closed, but the file was not deleted.
 ///
-#define RETURN_WARN_DELETE_FAILURE   ENCODE_WARNING (2)
+#define RETURN_WARN_DELETE_FAILURE  ENCODE_WARNING (2)
 
 ///
 /// The handle was closed, but the data to the file was not
 /// flushed properly.
 ///
-#define RETURN_WARN_WRITE_FAILURE    ENCODE_WARNING (3)
+#define RETURN_WARN_WRITE_FAILURE  ENCODE_WARNING (3)
 
 ///
 /// The resulting buffer was too small, and the data was
 /// truncated to the buffer size.
 ///
-#define RETURN_WARN_BUFFER_TOO_SMALL ENCODE_WARNING (4)
+#define RETURN_WARN_BUFFER_TOO_SMALL  ENCODE_WARNING (4)
 
 ///
 /// The data has not been updated within the timeframe set by
 /// local policy for this type of data.
 ///
-#define RETURN_WARN_STALE_DATA       ENCODE_WARNING (5)
+#define RETURN_WARN_STALE_DATA  ENCODE_WARNING (5)
 
 ///
 /// The resulting buffer contains UEFI-compliant file system.
 ///
-#define RETURN_WARN_FILE_SYSTEM      ENCODE_WARNING (6)
-
+#define RETURN_WARN_FILE_SYSTEM  ENCODE_WARNING (6)
 
 /**
   Returns a 16-bit signature built from 2 ASCII characters.
@@ -1173,7 +1186,7 @@
   @return A 16-bit value built from the two ASCII characters specified by A and B.
 
 **/
-#define SIGNATURE_16(A, B)        ((A) | (B << 8))
+#define SIGNATURE_16(A, B)  ((A) | (B << 8))
 
 /**
   Returns a 32-bit signature built from 4 ASCII characters.
@@ -1214,45 +1227,52 @@
 #define SIGNATURE_64(A, B, C, D, E, F, G, H) \
     (SIGNATURE_32 (A, B, C, D) | ((UINT64) (SIGNATURE_32 (E, F, G, H)) << 32))
 
-#if defined(_MSC_EXTENSIONS) && !defined (__INTEL_COMPILER) && !defined (MDE_CPU_EBC)
+#if defined (_MSC_EXTENSIONS) && !defined (__INTEL_COMPILER) && !defined (MDE_CPU_EBC)
+void *
+_ReturnAddress (
+  void
+  );
+
   #pragma intrinsic(_ReturnAddress)
-  /**
-    Get the return address of the calling function.
 
-    Based on intrinsic function _ReturnAddress that provides the address of
-    the instruction in the calling function that will be executed after
-    control returns to the caller.
+/**
+  Get the return address of the calling function.
 
-    @param L    Return Level.
+  Based on intrinsic function _ReturnAddress that provides the address of
+  the instruction in the calling function that will be executed after
+  control returns to the caller.
 
-    @return The return address of the calling function or 0 if L != 0.
+  @param L    Return Level.
 
-  **/
-  #define RETURN_ADDRESS(L)     ((L == 0) ? _ReturnAddress() : (VOID *) 0)
-#elif defined(__GNUC__)
-  void * __builtin_return_address (unsigned int level);
-  /**
-    Get the return address of the calling function.
+  @return The return address of the calling function or 0 if L != 0.
 
-    Based on built-in Function __builtin_return_address that returns
-    the return address of the current function, or of one of its callers.
+**/
+#define RETURN_ADDRESS(L)  ((L == 0) ? _ReturnAddress() : (VOID *) 0)
+#elif defined (__GNUC__) || defined (__clang__)
 
-    @param L    Return Level.
+/**
+  Get the return address of the calling function.
 
-    @return The return address of the calling function.
+  Based on built-in Function __builtin_return_address that returns
+  the return address of the current function, or of one of its callers.
 
-  **/
-  #define RETURN_ADDRESS(L)     __builtin_return_address (L)
+  @param L    Return Level.
+
+  @return The return address of the calling function.
+
+**/
+#define RETURN_ADDRESS(L)  __builtin_return_address (L)
 #else
-  /**
-    Get the return address of the calling function.
 
-    @param L    Return Level.
+/**
+  Get the return address of the calling function.
 
-    @return 0 as compilers don't support this feature.
+  @param L    Return Level.
 
-  **/
-  #define RETURN_ADDRESS(L)     ((VOID *) 0)
+  @return 0 as compilers don't support this feature.
+
+**/
+#define RETURN_ADDRESS(L)  ((VOID *) 0)
 #endif
 
 /**
@@ -1266,7 +1286,6 @@
   @return The number of elements in Array. The result has type UINTN.
 
 **/
-#define ARRAY_SIZE(Array) (sizeof (Array) / sizeof ((Array)[0]))
+#define ARRAY_SIZE(Array)  (sizeof (Array) / sizeof ((Array)[0]))
 
 #endif
-
diff --git a/src/include/ipxe/efi/Guid/Acpi.h b/src/include/ipxe/efi/Guid/Acpi.h
index c4169c5..09b3999 100644
--- a/src/include/ipxe/efi/Guid/Acpi.h
+++ b/src/include/ipxe/efi/Guid/Acpi.h
@@ -5,14 +5,8 @@
   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 - 2009, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  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.
@@ -22,7 +16,7 @@
 #ifndef __ACPI_GUID_H__
 #define __ACPI_GUID_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define ACPI_TABLE_GUID \
   { \
@@ -34,15 +28,15 @@
     0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \
   }
 
-#define ACPI_10_TABLE_GUID     ACPI_TABLE_GUID
+#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
+#define EFI_ACPI_20_TABLE_GUID  EFI_ACPI_TABLE_GUID
 
-extern EFI_GUID gEfiAcpiTableGuid;
-extern EFI_GUID gEfiAcpi10TableGuid;
-extern EFI_GUID gEfiAcpi20TableGuid;
+extern EFI_GUID  gEfiAcpiTableGuid;
+extern EFI_GUID  gEfiAcpi10TableGuid;
+extern EFI_GUID  gEfiAcpi20TableGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Guid/FileInfo.h b/src/include/ipxe/efi/Guid/FileInfo.h
index 21fd389..4fc9e86 100644
--- a/src/include/ipxe/efi/Guid/FileInfo.h
+++ b/src/include/ipxe/efi/Guid/FileInfo.h
@@ -3,21 +3,15 @@
   and EFI_FILE_PROTOCOL.GetInfo() to set or get generic file information.
   This GUID is defined in UEFI specification.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __FILE_INFO_H__
 #define __FILE_INFO_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_FILE_INFO_ID \
   { \
@@ -28,35 +22,35 @@
   ///
   /// The size of the EFI_FILE_INFO structure, including the Null-terminated FileName string.
   ///
-  UINT64    Size;
+  UINT64      Size;
   ///
   /// The size of the file in bytes.
   ///
-  UINT64    FileSize;
+  UINT64      FileSize;
   ///
   /// PhysicalSize The amount of physical space the file consumes on the file system volume.
   ///
-  UINT64    PhysicalSize;
+  UINT64      PhysicalSize;
   ///
   /// The time the file was created.
   ///
-  EFI_TIME  CreateTime;
+  EFI_TIME    CreateTime;
   ///
   /// The time when the file was last accessed.
   ///
-  EFI_TIME  LastAccessTime;
+  EFI_TIME    LastAccessTime;
   ///
   /// The time when the file's contents were last modified.
   ///
-  EFI_TIME  ModificationTime;
+  EFI_TIME    ModificationTime;
   ///
   /// The attribute bits for the file.
   ///
-  UINT64    Attribute;
+  UINT64      Attribute;
   ///
   /// The Null-terminated name of the file.
   ///
-  CHAR16    FileName[1];
+  CHAR16      FileName[1];
 } EFI_FILE_INFO;
 
 ///
@@ -66,8 +60,8 @@
 /// computes this size correctly no matter how big the FileName array is declared.
 /// This is required to make the EFI_FILE_INFO data structure ANSI compilant.
 ///
-#define SIZE_OF_EFI_FILE_INFO OFFSET_OF (EFI_FILE_INFO, FileName)
+#define SIZE_OF_EFI_FILE_INFO  OFFSET_OF (EFI_FILE_INFO, FileName)
 
-extern EFI_GUID gEfiFileInfoGuid;
+extern EFI_GUID  gEfiFileInfoGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Guid/FileSystemInfo.h b/src/include/ipxe/efi/Guid/FileSystemInfo.h
index 504b793..aadebc0 100644
--- a/src/include/ipxe/efi/Guid/FileSystemInfo.h
+++ b/src/include/ipxe/efi/Guid/FileSystemInfo.h
@@ -3,21 +3,15 @@
   or EFI_FILE_PROTOCOL.SetInfo() to get or set information about the system's volume.
   This GUID is defined in UEFI specification.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __FILE_SYSTEM_INFO_H__
 #define __FILE_SYSTEM_INFO_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_FILE_SYSTEM_INFO_ID \
   { \
@@ -28,27 +22,27 @@
   ///
   /// The size of the EFI_FILE_SYSTEM_INFO structure, including the Null-terminated VolumeLabel string.
   ///
-  UINT64  Size;
+  UINT64     Size;
   ///
   /// TRUE if the volume only supports read access.
   ///
-  BOOLEAN ReadOnly;
+  BOOLEAN    ReadOnly;
   ///
   /// The number of bytes managed by the file system.
   ///
-  UINT64  VolumeSize;
+  UINT64     VolumeSize;
   ///
   /// The number of available bytes for use by the file system.
   ///
-  UINT64  FreeSpace;
+  UINT64     FreeSpace;
   ///
   /// The nominal block size by which files are typically grown.
   ///
-  UINT32  BlockSize;
+  UINT32     BlockSize;
   ///
   /// The Null-terminated string that is the volume's label.
   ///
-  CHAR16  VolumeLabel[1];
+  CHAR16     VolumeLabel[1];
 } EFI_FILE_SYSTEM_INFO;
 
 ///
@@ -60,6 +54,6 @@
 ///
 #define SIZE_OF_EFI_FILE_SYSTEM_INFO  OFFSET_OF (EFI_FILE_SYSTEM_INFO, VolumeLabel)
 
-extern EFI_GUID gEfiFileSystemInfoGuid;
+extern EFI_GUID  gEfiFileSystemInfoGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Guid/HiiFormMapMethodGuid.h b/src/include/ipxe/efi/Guid/HiiFormMapMethodGuid.h
index c8f3721..2636a1e 100644
--- a/src/include/ipxe/efi/Guid/HiiFormMapMethodGuid.h
+++ b/src/include/ipxe/efi/Guid/HiiFormMapMethodGuid.h
@@ -1,14 +1,8 @@
 /** @file
   Guid used to identify HII FormMap configuration method.
 
-  Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   GUID defined in UEFI 2.2 spec.
@@ -17,11 +11,11 @@
 #ifndef __EFI_HII_FORMMAP_GUID_H__
 #define __EFI_HII_FORMMAP_GUID_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_HII_STANDARD_FORM_GUID \
   { 0x3bd2f4ec, 0xe524, 0x46e4, { 0xa9, 0xd8, 0x51, 0x1, 0x17, 0x42, 0x55, 0x62 } }
 
-extern EFI_GUID gEfiHiiStandardFormGuid;
+extern EFI_GUID  gEfiHiiStandardFormGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Guid/HiiPlatformSetupFormset.h b/src/include/ipxe/efi/Guid/HiiPlatformSetupFormset.h
index fa81736..e9a0e02 100644
--- a/src/include/ipxe/efi/Guid/HiiPlatformSetupFormset.h
+++ b/src/include/ipxe/efi/Guid/HiiPlatformSetupFormset.h
@@ -2,14 +2,8 @@
   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 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+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.
@@ -19,7 +13,7 @@
 #ifndef __HII_PLATFORM_SETUP_FORMSET_GUID_H__
 #define __HII_PLATFORM_SETUP_FORMSET_GUID_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_HII_PLATFORM_SETUP_FORMSET_GUID \
   { 0x93039971, 0x8545, 0x4b04, { 0xb4, 0x5e, 0x32, 0xeb, 0x83, 0x26, 0x4, 0xe } }
@@ -30,8 +24,12 @@
 #define EFI_HII_USER_CREDENTIAL_FORMSET_GUID \
   { 0x337f4407, 0x5aee, 0x4b83, { 0xb2, 0xa7, 0x4e, 0xad, 0xca, 0x30, 0x88, 0xcd } }
 
-extern EFI_GUID gEfiHiiPlatformSetupFormsetGuid;
-extern EFI_GUID gEfiHiiDriverHealthFormsetGuid;
-extern EFI_GUID gEfiHiiUserCredentialFormsetGuid;
+#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/src/include/ipxe/efi/Guid/MdeModuleHii.h b/src/include/ipxe/efi/Guid/MdeModuleHii.h
index 76890b7..102025a 100644
--- a/src/include/ipxe/efi/Guid/MdeModuleHii.h
+++ b/src/include/ipxe/efi/Guid/MdeModuleHii.h
@@ -1,25 +1,19 @@
 /** @file
   EDKII extented HII IFR guid opcodes.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __MDEMODULE_HII_H__
 #define __MDEMODULE_HII_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
-#define NARROW_CHAR         0xFFF0
-#define WIDE_CHAR           0xFFF1
-#define NON_BREAKING_CHAR   0xFFF2
+#define NARROW_CHAR        0xFFF0
+#define WIDE_CHAR          0xFFF1
+#define NON_BREAKING_CHAR  0xFFF2
 
 ///
 /// State defined for password statemachine .
@@ -38,91 +32,91 @@
 ///
 /// EDKII implementation extension opcodes, new extension can be added here later.
 ///
-#define EFI_IFR_EXTEND_OP_LABEL       0x0
-#define EFI_IFR_EXTEND_OP_BANNER      0x1
-#define EFI_IFR_EXTEND_OP_TIMEOUT     0x2
-#define EFI_IFR_EXTEND_OP_CLASS       0x3
-#define EFI_IFR_EXTEND_OP_SUBCLASS    0x4
+#define EFI_IFR_EXTEND_OP_LABEL     0x0
+#define EFI_IFR_EXTEND_OP_BANNER    0x1
+#define EFI_IFR_EXTEND_OP_TIMEOUT   0x2
+#define EFI_IFR_EXTEND_OP_CLASS     0x3
+#define EFI_IFR_EXTEND_OP_SUBCLASS  0x4
 
 ///
 /// Label opcode.
 ///
 typedef struct _EFI_IFR_GUID_LABEL {
-  EFI_IFR_OP_HEADER   Header;
+  EFI_IFR_OP_HEADER    Header;
   ///
   /// EFI_IFR_TIANO_GUID.
   ///
-  EFI_GUID            Guid;
+  EFI_GUID             Guid;
   ///
   /// EFI_IFR_EXTEND_OP_LABEL.
   ///
-  UINT8               ExtendOpCode;
+  UINT8                ExtendOpCode;
   ///
   /// Label Number.
   ///
-  UINT16              Number;
+  UINT16               Number;
 } EFI_IFR_GUID_LABEL;
 
-#define EFI_IFR_BANNER_ALIGN_LEFT     0
-#define EFI_IFR_BANNER_ALIGN_CENTER   1
-#define EFI_IFR_BANNER_ALIGN_RIGHT    2
+#define EFI_IFR_BANNER_ALIGN_LEFT    0
+#define EFI_IFR_BANNER_ALIGN_CENTER  1
+#define EFI_IFR_BANNER_ALIGN_RIGHT   2
 
 ///
 /// Banner opcode.
 ///
 typedef struct _EFI_IFR_GUID_BANNER {
-  EFI_IFR_OP_HEADER   Header;
+  EFI_IFR_OP_HEADER    Header;
   ///
   /// EFI_IFR_TIANO_GUID.
   ///
-  EFI_GUID            Guid;
+  EFI_GUID             Guid;
   ///
   /// EFI_IFR_EXTEND_OP_BANNER
   ///
-  UINT8               ExtendOpCode;
-  EFI_STRING_ID       Title;        ///< The string token for the banner title.
-  UINT16              LineNumber;   ///< 1-based line number.
-  UINT8               Alignment;    ///< left, center, or right-aligned.
+  UINT8                ExtendOpCode;
+  EFI_STRING_ID        Title;       ///< The string token for the banner title.
+  UINT16               LineNumber;  ///< 1-based line number.
+  UINT8                Alignment;   ///< left, center, or right-aligned.
 } EFI_IFR_GUID_BANNER;
 
 ///
 /// Timeout opcode.
 ///
 typedef struct _EFI_IFR_GUID_TIMEOUT {
-  EFI_IFR_OP_HEADER   Header;
+  EFI_IFR_OP_HEADER    Header;
   ///
   /// EFI_IFR_TIANO_GUID.
   ///
-  EFI_GUID            Guid;
+  EFI_GUID             Guid;
   ///
   /// EFI_IFR_EXTEND_OP_TIMEOUT.
   ///
-  UINT8               ExtendOpCode;
-  UINT16              TimeOut;       ///< TimeOut Value.
+  UINT8                ExtendOpCode;
+  UINT16               TimeOut;      ///< TimeOut Value.
 } EFI_IFR_GUID_TIMEOUT;
 
-#define EFI_NON_DEVICE_CLASS              0x00
-#define EFI_DISK_DEVICE_CLASS             0x01
-#define EFI_VIDEO_DEVICE_CLASS            0x02
-#define EFI_NETWORK_DEVICE_CLASS          0x04
-#define EFI_INPUT_DEVICE_CLASS            0x08
-#define EFI_ON_BOARD_DEVICE_CLASS         0x10
-#define EFI_OTHER_DEVICE_CLASS            0x20
+#define EFI_NON_DEVICE_CLASS       0x00
+#define EFI_DISK_DEVICE_CLASS      0x01
+#define EFI_VIDEO_DEVICE_CLASS     0x02
+#define EFI_NETWORK_DEVICE_CLASS   0x04
+#define EFI_INPUT_DEVICE_CLASS     0x08
+#define EFI_ON_BOARD_DEVICE_CLASS  0x10
+#define EFI_OTHER_DEVICE_CLASS     0x20
 
 ///
 /// Device Class opcode.
 ///
 typedef struct _EFI_IFR_GUID_CLASS {
-  EFI_IFR_OP_HEADER   Header;
+  EFI_IFR_OP_HEADER    Header;
   ///
   /// EFI_IFR_TIANO_GUID.
   ///
-  EFI_GUID            Guid;
+  EFI_GUID             Guid;
   ///
   /// EFI_IFR_EXTEND_OP_CLASS.
   ///
-  UINT8               ExtendOpCode;
-  UINT16              Class;           ///< Device Class from the above.
+  UINT8                ExtendOpCode;
+  UINT16               Class;          ///< Device Class from the above.
 } EFI_IFR_GUID_CLASS;
 
 #define EFI_SETUP_APPLICATION_SUBCLASS    0x00
@@ -134,16 +128,16 @@
 /// SubClass opcode
 ///
 typedef struct _EFI_IFR_GUID_SUBCLASS {
-  EFI_IFR_OP_HEADER   Header;
+  EFI_IFR_OP_HEADER    Header;
   ///
   /// EFI_IFR_TIANO_GUID.
   ///
-  EFI_GUID            Guid;
+  EFI_GUID             Guid;
   ///
   /// EFI_IFR_EXTEND_OP_SUBCLASS.
   ///
-  UINT8               ExtendOpCode;
-  UINT16              SubClass;      ///< Sub Class type from the above.
+  UINT8                ExtendOpCode;
+  UINT16               SubClass;     ///< Sub Class type from the above.
 } EFI_IFR_GUID_SUBCLASS;
 
 ///
@@ -157,66 +151,83 @@
 /// One is for framework OneOf question Option Key value;
 /// another is for framework vareqval.
 ///
-#define EFI_IFR_EXTEND_OP_OPTIONKEY   0x0
-#define EFI_IFR_EXTEND_OP_VAREQNAME   0x1
+#define EFI_IFR_EXTEND_OP_OPTIONKEY  0x0
+#define EFI_IFR_EXTEND_OP_VAREQNAME  0x1
 
 ///
 /// Store the framework vfr option key value.
 ///
 typedef struct _EFI_IFR_GUID_OPTIONKEY {
-  EFI_IFR_OP_HEADER   Header;
+  EFI_IFR_OP_HEADER     Header;
   ///
   /// EFI_IFR_FRAMEWORK_GUID.
   ///
-  EFI_GUID            Guid;
+  EFI_GUID              Guid;
   ///
   /// EFI_IFR_EXTEND_OP_OPTIONKEY.
   ///
-  UINT8               ExtendOpCode;
+  UINT8                 ExtendOpCode;
   ///
   /// OneOf Questiond ID binded by OneOf Option.
   ///
-  EFI_QUESTION_ID     QuestionId;
+  EFI_QUESTION_ID       QuestionId;
   ///
   /// The OneOf Option Value.
   ///
-  EFI_IFR_TYPE_VALUE  OptionValue;
+  EFI_IFR_TYPE_VALUE    OptionValue;
   ///
   /// The Framework OneOf Option Key Value.
   ///
-  UINT16              KeyValue;
+  UINT16                KeyValue;
 } EFI_IFR_GUID_OPTIONKEY;
 
 ///
 /// Store the framework vfr vareqval name number.
 ///
 typedef struct _EFI_IFR_GUID_VAREQNAME {
-  EFI_IFR_OP_HEADER   Header;
+  EFI_IFR_OP_HEADER    Header;
   ///
   /// EFI_IFR_FRAMEWORK_GUID.
   ///
-  EFI_GUID            Guid;
+  EFI_GUID             Guid;
   ///
   /// EFI_IFR_EXTEND_OP_VAREQNAME.
   ///
-  UINT8               ExtendOpCode;
+  UINT8                ExtendOpCode;
   ///
   /// Question ID of the Numeric Opcode created.
   ///
-  EFI_QUESTION_ID     QuestionId;
+  EFI_QUESTION_ID      QuestionId;
   ///
   /// For vareqval (0x100), NameId is 0x100.
   /// This value will convert to a Unicode String following this rule;
   ///            sprintf(StringBuffer, "%d", NameId) .
   /// The the Unicode String will be used as a EFI Variable Name.
   ///
-  UINT16              NameId;
+  UINT16               NameId;
 } EFI_IFR_GUID_VAREQNAME;
 
+///
+/// EDKII implementation extension GUID, used to indaicate there are bit fields in the varstore.
+///
+#define EDKII_IFR_BIT_VARSTORE_GUID \
+  {0x82DDD68B, 0x9163, 0x4187, {0x9B, 0x27, 0x20, 0xA8, 0xFD, 0x60,0xA7, 0x1D}}
+
+///
+/// EDKII implementation extension flags, used to indaicate the disply style and bit width for bit filed storage.
+/// Two high bits for display style and the low six bits for bit width.
+///
+#define EDKII_IFR_DISPLAY_BIT           0xC0
+#define EDKII_IFR_DISPLAY_INT_DEC_BIT   0x00
+#define EDKII_IFR_DISPLAY_UINT_DEC_BIT  0x40
+#define EDKII_IFR_DISPLAY_UINT_HEX_BIT  0x80
+
+#define EDKII_IFR_NUMERIC_SIZE_BIT  0x3F
+
 #pragma pack()
 
-extern EFI_GUID gEfiIfrTianoGuid;
-extern EFI_GUID gEfiIfrFrameworkGuid;
+extern EFI_GUID  gEfiIfrTianoGuid;
+extern EFI_GUID  gEfiIfrFrameworkGuid;
+extern EFI_GUID  gEdkiiIfrBitVarstoreGuid;
 
 #endif
-
diff --git a/src/include/ipxe/efi/Guid/PcAnsi.h b/src/include/ipxe/efi/Guid/PcAnsi.h
index 8b3e63f..82835a2 100644
--- a/src/include/ipxe/efi/Guid/PcAnsi.h
+++ b/src/include/ipxe/efi/Guid/PcAnsi.h
@@ -1,14 +1,8 @@
 /** @file
   Terminal Device Path Vendor Guid.
 
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  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.
@@ -18,7 +12,7 @@
 #ifndef __PC_ANSI_H__
 #define __PC_ANSI_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_PC_ANSI_GUID \
   { \
@@ -50,11 +44,11 @@
     0xd487ddb4, 0x008b, 0x11d9, {0xaf, 0xdc, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d } \
   }
 
-extern EFI_GUID gEfiPcAnsiGuid;
-extern EFI_GUID gEfiVT100Guid;
-extern EFI_GUID gEfiVT100PlusGuid;
-extern EFI_GUID gEfiVTUTF8Guid;
-extern EFI_GUID gEfiUartDevicePathGuid;
-extern EFI_GUID gEfiSasDevicePathGuid;
+extern EFI_GUID  gEfiPcAnsiGuid;
+extern EFI_GUID  gEfiVT100Guid;
+extern EFI_GUID  gEfiVT100PlusGuid;
+extern EFI_GUID  gEfiVTUTF8Guid;
+extern EFI_GUID  gEfiUartDevicePathGuid;
+extern EFI_GUID  gEfiSasDevicePathGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Guid/SmBios.h b/src/include/ipxe/efi/Guid/SmBios.h
index 4914289..0a47a05 100644
--- a/src/include/ipxe/efi/Guid/SmBios.h
+++ b/src/include/ipxe/efi/Guid/SmBios.h
@@ -5,14 +5,8 @@
   locate the SMBIOS tables. Do not search the 0xF0000 segment to find SMBIOS
   tables.
 
-  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  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.
@@ -22,7 +16,7 @@
 #ifndef __SMBIOS_GUID_H__
 #define __SMBIOS_GUID_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define SMBIOS_TABLE_GUID \
   { \
@@ -34,7 +28,7 @@
     0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94 } \
   }
 
-extern EFI_GUID       gEfiSmbiosTableGuid;
-extern EFI_GUID       gEfiSmbios3TableGuid;
+extern EFI_GUID  gEfiSmbiosTableGuid;
+extern EFI_GUID  gEfiSmbios3TableGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Guid/WinCertificate.h b/src/include/ipxe/efi/Guid/WinCertificate.h
index cf0a7c2..1c706d3 100644
--- a/src/include/ipxe/efi/Guid/WinCertificate.h
+++ b/src/include/ipxe/efi/Guid/WinCertificate.h
@@ -2,13 +2,7 @@
   GUID for UEFI WIN_CERTIFICATE structure.
 
   Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   GUID defined in UEFI 2.0 spec.
@@ -17,14 +11,14 @@
 #ifndef __EFI_WIN_CERTIFICATE_H__
 #define __EFI_WIN_CERTIFICATE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 //
 // _WIN_CERTIFICATE.wCertificateType
 //
-#define WIN_CERT_TYPE_PKCS_SIGNED_DATA 0x0002
-#define WIN_CERT_TYPE_EFI_PKCS115      0x0EF0
-#define WIN_CERT_TYPE_EFI_GUID         0x0EF1
+#define WIN_CERT_TYPE_PKCS_SIGNED_DATA  0x0002
+#define WIN_CERT_TYPE_EFI_PKCS115       0x0EF0
+#define WIN_CERT_TYPE_EFI_GUID          0x0EF1
 
 ///
 /// The WIN_CERTIFICATE structure is part of the PE/COFF specification.
@@ -34,18 +28,18 @@
   /// The length of the entire certificate,
   /// including the length of the header, in bytes.
   ///
-  UINT32  dwLength;
+  UINT32    dwLength;
   ///
   /// The revision level of the WIN_CERTIFICATE
   /// structure. The current revision level is 0x0200.
   ///
-  UINT16  wRevision;
+  UINT16    wRevision;
   ///
   /// The certificate type. See WIN_CERT_TYPE_xxx for the UEFI
   /// certificate types. The UEFI specification reserves the range of
   /// certificate type values from 0x0EF0 to 0x0EFF.
   ///
-  UINT16  wCertificateType;
+  UINT16    wCertificateType;
   ///
   /// The following is the actual certificate. The format of
   /// the certificate depends on wCertificateType.
@@ -64,12 +58,11 @@
 /// WIN_CERTIFICATE_UEFI_GUID.CertData
 ///
 typedef struct {
-  EFI_GUID  HashType;
-  UINT8     PublicKey[256];
-  UINT8     Signature[256];
+  EFI_GUID    HashType;
+  UINT8       PublicKey[256];
+  UINT8       Signature[256];
 } EFI_CERT_BLOCK_RSA_2048_SHA256;
 
-
 ///
 /// Certificate which encapsulates a GUID-specific digital signature
 ///
@@ -78,22 +71,21 @@
   /// This is the standard WIN_CERTIFICATE header, where
   /// wCertificateType is set to WIN_CERT_TYPE_EFI_GUID.
   ///
-  WIN_CERTIFICATE   Hdr;
+  WIN_CERTIFICATE    Hdr;
   ///
   /// This is the unique id which determines the
   /// format of the CertData. .
   ///
-  EFI_GUID          CertType;
+  EFI_GUID           CertType;
   ///
   /// The following is the certificate data. The format of
   /// the data is determined by the CertType.
   /// If CertType is EFI_CERT_TYPE_RSA2048_SHA256_GUID,
   /// the CertData will be EFI_CERT_BLOCK_RSA_2048_SHA256 structure.
   ///
-  UINT8            CertData[1];
+  UINT8              CertData[1];
 } WIN_CERTIFICATE_UEFI_GUID;
 
-
 ///
 /// Certificate which encapsulates the RSASSA_PKCS1-v1_5 digital signature.
 ///
@@ -107,12 +99,12 @@
   /// This is the standard WIN_CERTIFICATE header, where
   /// wCertificateType is set to WIN_CERT_TYPE_UEFI_PKCS1_15.
   ///
-  WIN_CERTIFICATE Hdr;
+  WIN_CERTIFICATE    Hdr;
   ///
   /// This is the hashing algorithm which was performed on the
   /// UEFI executable when creating the digital signature.
   ///
-  EFI_GUID        HashAlgorithm;
+  EFI_GUID           HashAlgorithm;
   ///
   /// The following is the actual digital signature. The
   /// size of the signature is the same size as the key
@@ -125,6 +117,6 @@
   ///
 } WIN_CERTIFICATE_EFI_PKCS1_15;
 
-extern EFI_GUID gEfiCertTypeRsa2048Sha256Guid;
+extern EFI_GUID  gEfiCertTypeRsa2048Sha256Guid;
 
 #endif
diff --git a/src/include/ipxe/efi/Ia32/ProcessorBind.h b/src/include/ipxe/efi/Ia32/ProcessorBind.h
index 2d6c4b4..5e3fb92 100644
--- a/src/include/ipxe/efi/Ia32/ProcessorBind.h
+++ b/src/include/ipxe/efi/Ia32/ProcessorBind.h
@@ -1,21 +1,15 @@
 /** @file
   Processor or Compiler specific defines and types for IA-32 architecture.
 
-Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __PROCESSOR_BIND_H__
 #define __PROCESSOR_BIND_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// Define the processor type so other code can make processor based choices.
@@ -25,39 +19,38 @@
 //
 // Make sure we are using the correct packing rules per EFI specification
 //
-#if !defined(__GNUC__)
-#pragma pack()
+#if !defined (__GNUC__)
+  #pragma pack()
 #endif
 
-#if defined(__INTEL_COMPILER)
+#if defined (__INTEL_COMPILER)
 //
 // Disable ICC's remark #869: "Parameter" was never referenced warning.
 // This is legal ANSI C code so we disable the remark that is turned on with -Wall
 //
-#pragma warning ( disable : 869 )
+  #pragma warning ( disable : 869 )
 
 //
 // Disable ICC's remark #1418: external function definition with no prior declaration.
 // This is legal ANSI C code so we disable the remark that is turned on with /W4
 //
-#pragma warning ( disable : 1418 )
+  #pragma warning ( disable : 1418 )
 
 //
 // Disable ICC's remark #1419: external declaration in primary source file
 // This is legal ANSI C code so we disable the remark that is turned on with /W4
 //
-#pragma warning ( disable : 1419 )
+  #pragma warning ( disable : 1419 )
 
 //
 // Disable ICC's remark #593: "Variable" was set but never used.
 // This is legal ANSI C code so we disable the remark that is turned on with /W4
 //
-#pragma warning ( disable : 593 )
+  #pragma warning ( disable : 593 )
 
 #endif
 
-
-#if defined(_MSC_EXTENSIONS)
+#if defined (_MSC_EXTENSIONS)
 
 //
 // Disable warning that make it impossible to compile at /W4
@@ -67,35 +60,35 @@
 //
 // Disabling bitfield type checking warnings.
 //
-#pragma warning ( disable : 4214 )
+  #pragma warning ( disable : 4214 )
 
 //
 // Disabling the unreferenced formal parameter warnings.
 //
-#pragma warning ( disable : 4100 )
+  #pragma warning ( disable : 4100 )
 
 //
 // Disable slightly different base types warning as CHAR8 * can not be set
 // to a constant string.
 //
-#pragma warning ( disable : 4057 )
+  #pragma warning ( disable : 4057 )
 
 //
 // ASSERT(FALSE) or while (TRUE) are legal constructs so suppress this warning
 //
-#pragma warning ( disable : 4127 )
+  #pragma warning ( disable : 4127 )
 
 //
 // This warning is caused by functions defined but not used. For precompiled header only.
 //
-#pragma warning ( disable : 4505 )
+  #pragma warning ( disable : 4505 )
 
 //
 // This warning is caused by empty (after preprocessing) source file. For precompiled header only.
 //
-#pragma warning ( disable : 4206 )
+  #pragma warning ( disable : 4206 )
 
-#if _MSC_VER == 1800 || _MSC_VER == 1900
+  #if defined (_MSC_VER) && _MSC_VER >= 1800
 
 //
 // Disable these warnings for VS2013.
@@ -105,130 +98,129 @@
 // This warning is for potentially uninitialized local variable, and it may cause false
 // positive issues in VS2013 and VS2015 build
 //
-#pragma warning ( disable : 4701 )
+    #pragma warning ( disable : 4701 )
 
 //
 // This warning is for potentially uninitialized local pointer variable, and it may cause
 // false positive issues in VS2013 and VS2015 build
 //
-#pragma warning ( disable : 4703 )
+    #pragma warning ( disable : 4703 )
+
+  #endif
 
 #endif
 
-#endif
+#if defined (_MSC_EXTENSIONS)
 
+//
+// use Microsoft C compiler dependent integer width types
+//
 
-#if defined(_MSC_EXTENSIONS)
-
-  //
-  // use Microsoft C compiler dependent integer width types
-  //
-
-  ///
-  /// 8-byte unsigned value.
-  ///
-  typedef unsigned __int64    UINT64;
-  ///
-  /// 8-byte signed value.
-  ///
-  typedef __int64             INT64;
-  ///
-  /// 4-byte unsigned value.
-  ///
-  typedef unsigned __int32    UINT32;
-  ///
-  /// 4-byte signed value.
-  ///
-  typedef __int32             INT32;
-  ///
-  /// 2-byte unsigned value.
-  ///
-  typedef unsigned short      UINT16;
-  ///
-  /// 2-byte Character.  Unless otherwise specified all strings are stored in the
-  /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
-  ///
-  typedef unsigned short      CHAR16;
-  ///
-  /// 2-byte signed value.
-  ///
-  typedef short               INT16;
-  ///
-  /// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
-  /// values are undefined.
-  ///
-  typedef unsigned char       BOOLEAN;
-  ///
-  /// 1-byte unsigned value.
-  ///
-  typedef unsigned char       UINT8;
-  ///
-  /// 1-byte Character.
-  ///
-  typedef char                CHAR8;
-  ///
-  /// 1-byte signed value.
-  ///
-  typedef signed char         INT8;
+///
+/// 8-byte unsigned value.
+///
+typedef unsigned __int64 UINT64;
+///
+/// 8-byte signed value.
+///
+typedef __int64 INT64;
+///
+/// 4-byte unsigned value.
+///
+typedef unsigned __int32 UINT32;
+///
+/// 4-byte signed value.
+///
+typedef __int32 INT32;
+///
+/// 2-byte unsigned value.
+///
+typedef unsigned short UINT16;
+///
+/// 2-byte Character.  Unless otherwise specified all strings are stored in the
+/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
+///
+typedef unsigned short CHAR16;
+///
+/// 2-byte signed value.
+///
+typedef short INT16;
+///
+/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
+/// values are undefined.
+///
+typedef unsigned char BOOLEAN;
+///
+/// 1-byte unsigned value.
+///
+typedef unsigned char UINT8;
+///
+/// 1-byte Character.
+///
+typedef char CHAR8;
+///
+/// 1-byte signed value.
+///
+typedef signed char INT8;
 #else
-  ///
-  /// 8-byte unsigned value.
-  ///
-  typedef unsigned long long  UINT64;
-  ///
-  /// 8-byte signed value.
-  ///
-  typedef long long           INT64;
-  ///
-  /// 4-byte unsigned value.
-  ///
-  typedef unsigned int        UINT32;
-  ///
-  /// 4-byte signed value.
-  ///
-  typedef int                 INT32;
-  ///
-  /// 2-byte unsigned value.
-  ///
-  typedef unsigned short      UINT16;
-  ///
-  /// 2-byte Character.  Unless otherwise specified all strings are stored in the
-  /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
-  ///
-  typedef unsigned short      CHAR16;
-  ///
-  /// 2-byte signed value.
-  ///
-  typedef short               INT16;
-  ///
-  /// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
-  /// values are undefined.
-  ///
-  typedef unsigned char       BOOLEAN;
-  ///
-  /// 1-byte unsigned value.
-  ///
-  typedef unsigned char       UINT8;
-  ///
-  /// 1-byte Character
-  ///
-  typedef char                CHAR8;
-  ///
-  /// 1-byte signed value
-  ///
-  typedef signed char         INT8;
+///
+/// 8-byte unsigned value.
+///
+typedef unsigned long long UINT64;
+///
+/// 8-byte signed value.
+///
+typedef long long INT64;
+///
+/// 4-byte unsigned value.
+///
+typedef unsigned int UINT32;
+///
+/// 4-byte signed value.
+///
+typedef int INT32;
+///
+/// 2-byte unsigned value.
+///
+typedef unsigned short UINT16;
+///
+/// 2-byte Character.  Unless otherwise specified all strings are stored in the
+/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
+///
+typedef unsigned short CHAR16;
+///
+/// 2-byte signed value.
+///
+typedef short INT16;
+///
+/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
+/// values are undefined.
+///
+typedef unsigned char BOOLEAN;
+///
+/// 1-byte unsigned value.
+///
+typedef unsigned char UINT8;
+///
+/// 1-byte Character
+///
+typedef char CHAR8;
+///
+/// 1-byte signed value
+///
+typedef signed char INT8;
 #endif
 
 ///
 /// Unsigned value of native width.  (4 bytes on supported 32-bit processor instructions;
 /// 8 bytes on supported 64-bit processor instructions.)
 ///
-typedef UINT32  UINTN;
+typedef UINT32 UINTN;
 ///
 /// Signed value of native width.  (4 bytes on supported 32-bit processor instructions;
 /// 8 bytes on supported 64-bit processor instructions.)
 ///
-typedef INT32   INTN;
+typedef INT32 INTN;
 
 //
 // Processor specific defines
@@ -237,7 +229,7 @@
 ///
 /// A value of native width with the highest bit set.
 ///
-#define MAX_BIT     0x80000000
+#define MAX_BIT  0x80000000
 ///
 /// A value of native width with the two highest bits set.
 ///
@@ -246,7 +238,12 @@
 ///
 /// Maximum legal IA-32 address.
 ///
-#define MAX_ADDRESS   0xFFFFFFFF
+#define MAX_ADDRESS  0xFFFFFFFF
+
+///
+/// Maximum usable address at boot time
+///
+#define MAX_ALLOC_ADDRESS  MAX_ADDRESS
 
 ///
 /// Maximum legal IA-32 INTN and UINTN values.
@@ -255,15 +252,20 @@
 #define MAX_UINTN  ((UINTN)0xFFFFFFFF)
 
 ///
+/// Minimum legal IA-32 INTN value.
+///
+#define MIN_INTN  (((INTN)-2147483647) - 1)
+
+///
 /// The stack alignment required for IA-32.
 ///
-#define CPU_STACK_ALIGNMENT   sizeof(UINTN)
+#define CPU_STACK_ALIGNMENT  sizeof(UINTN)
 
 ///
 /// Page allocation granularity for IA-32.
 ///
-#define DEFAULT_PAGE_ALLOCATION_GRANULARITY   (0x1000)
-#define RUNTIME_PAGE_ALLOCATION_GRANULARITY   (0x1000)
+#define DEFAULT_PAGE_ALLOCATION_GRANULARITY  (0x1000)
+#define RUNTIME_PAGE_ALLOCATION_GRANULARITY  (0x1000)
 
 //
 // Modifier to ensure that all protocol member functions and EFI intrinsics
@@ -271,33 +273,33 @@
 // EFI intrinsics are required to modify their member functions with EFIAPI.
 //
 #ifdef EFIAPI
-  ///
-  /// If EFIAPI is already defined, then we use that definition.
-  ///
-#elif defined(_MSC_EXTENSIONS)
-  ///
-  /// Microsoft* compiler specific method for EFIAPI calling convention.
-  ///
-  #define EFIAPI __cdecl
-#elif defined(__GNUC__)
-  ///
-  /// GCC specific method for EFIAPI calling convention.
-  ///
-  #define EFIAPI __attribute__((cdecl))
+///
+/// If EFIAPI is already defined, then we use that definition.
+///
+#elif defined (_MSC_EXTENSIONS)
+///
+/// Microsoft* compiler specific method for EFIAPI calling convention.
+///
+#define EFIAPI  __cdecl
+#elif defined (__GNUC__) || defined (__clang__)
+///
+/// GCC specific method for EFIAPI calling convention.
+///
+#define EFIAPI  __attribute__((cdecl))
 #else
-  ///
-  /// The default for a non Microsoft* or GCC compiler is to assume the EFI ABI
-  /// is the standard.
-  ///
-  #define EFIAPI
+///
+/// The default for a non Microsoft* or GCC compiler is to assume the EFI ABI
+/// is the standard.
+///
+#define EFIAPI
 #endif
 
-#if defined(__GNUC__)
-  ///
-  /// For GNU assembly code, .global or .globl can declare global symbols.
-  /// Define this macro to unify the usage.
-  ///
-  #define ASM_GLOBAL .globl
+#if defined (__GNUC__) || defined (__clang__)
+///
+/// For GNU assembly code, .global or .globl can declare global symbols.
+/// Define this macro to unify the usage.
+///
+#define ASM_GLOBAL  .globl
 #endif
 
 /**
@@ -310,11 +312,10 @@
   @return The pointer to the first instruction of a function given a function pointer.
 
 **/
-#define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID *)(UINTN)(FunctionPointer)
+#define FUNCTION_ENTRY_POINT(FunctionPointer)  (VOID *)(UINTN)(FunctionPointer)
 
 #ifndef __USER_LABEL_PREFIX__
-#define __USER_LABEL_PREFIX__ _
+#define __USER_LABEL_PREFIX__  _
 #endif
 
 #endif
-
diff --git a/src/include/ipxe/efi/IndustryStandard/Acpi10.h b/src/include/ipxe/efi/IndustryStandard/Acpi10.h
index 7857047..e9a561c 100644
--- a/src/include/ipxe/efi/IndustryStandard/Acpi10.h
+++ b/src/include/ipxe/efi/IndustryStandard/Acpi10.h
@@ -1,20 +1,15 @@
 /** @file
   ACPI 1.0b definitions from the ACPI Specification, revision 1.0b
 
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2020, Arm Limited. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 **/
 
 #ifndef _ACPI_1_0_H_
 #define _ACPI_1_0_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/AcpiAml.h>
 
@@ -23,8 +18,8 @@
 /// excluding the RSD PTR structure.
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
+  UINT32    Signature;
+  UINT32    Length;
 } EFI_ACPI_COMMON_HEADER;
 
 #pragma pack(1)
@@ -32,84 +27,84 @@
 /// The common ACPI description table header.  This structure prefaces most ACPI tables.
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
-  UINT8   Revision;
-  UINT8   Checksum;
-  UINT8   OemId[6];
-  UINT64  OemTableId;
-  UINT32  OemRevision;
-  UINT32  CreatorId;
-  UINT32  CreatorRevision;
+  UINT32    Signature;
+  UINT32    Length;
+  UINT8     Revision;
+  UINT8     Checksum;
+  UINT8     OemId[6];
+  UINT64    OemTableId;
+  UINT32    OemRevision;
+  UINT32    CreatorId;
+  UINT32    CreatorRevision;
 } EFI_ACPI_DESCRIPTION_HEADER;
 #pragma pack()
 
 //
-// Define for Desriptor
+// Define for Descriptor
 //
-#define ACPI_SMALL_ITEM_FLAG                   0x00
-#define ACPI_LARGE_ITEM_FLAG                   0x01
+#define ACPI_SMALL_ITEM_FLAG  0x00
+#define ACPI_LARGE_ITEM_FLAG  0x01
 
 //
 // Small Item Descriptor Name
 //
-#define ACPI_SMALL_IRQ_DESCRIPTOR_NAME                       0x04
-#define ACPI_SMALL_DMA_DESCRIPTOR_NAME                       0x05
-#define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME           0x06
-#define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME             0x07
-#define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME                   0x08
-#define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME             0x09
-#define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME            0x0E
-#define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME                   0x0F
+#define ACPI_SMALL_IRQ_DESCRIPTOR_NAME              0x04
+#define ACPI_SMALL_DMA_DESCRIPTOR_NAME              0x05
+#define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME  0x06
+#define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME    0x07
+#define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME          0x08
+#define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME    0x09
+#define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME   0x0E
+#define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME          0x0F
 
 //
 // Large Item Descriptor Name
 //
-#define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME       0x01
-#define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME            0x04
-#define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME       0x05
-#define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME 0x06
-#define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME       0x07
-#define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME        0x08
-#define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME              0x09
-#define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME       0x0A
+#define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME        0x01
+#define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME             0x04
+#define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME        0x05
+#define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME  0x06
+#define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME        0x07
+#define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME         0x08
+#define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME               0x09
+#define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME        0x0A
 
 //
 // Small Item Descriptor Value
 //
-#define ACPI_IRQ_NOFLAG_DESCRIPTOR                0x22
-#define ACPI_IRQ_DESCRIPTOR                       0x23
-#define ACPI_DMA_DESCRIPTOR                       0x2A
-#define ACPI_START_DEPENDENT_DESCRIPTOR           0x30
-#define ACPI_START_DEPENDENT_EX_DESCRIPTOR        0x31
-#define ACPI_END_DEPENDENT_DESCRIPTOR             0x38
-#define ACPI_IO_PORT_DESCRIPTOR                   0x47
-#define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR    0x4B
-#define ACPI_END_TAG_DESCRIPTOR                   0x79
+#define ACPI_IRQ_NOFLAG_DESCRIPTOR              0x22
+#define ACPI_IRQ_DESCRIPTOR                     0x23
+#define ACPI_DMA_DESCRIPTOR                     0x2A
+#define ACPI_START_DEPENDENT_DESCRIPTOR         0x30
+#define ACPI_START_DEPENDENT_EX_DESCRIPTOR      0x31
+#define ACPI_END_DEPENDENT_DESCRIPTOR           0x38
+#define ACPI_IO_PORT_DESCRIPTOR                 0x47
+#define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR  0x4B
+#define ACPI_END_TAG_DESCRIPTOR                 0x79
 
 //
 // Large Item Descriptor Value
 //
-#define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR       0x81
-#define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR       0x85
-#define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR 0x86
-#define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR       0x87
-#define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR        0x88
-#define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR        0x89
-#define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR       0x8A
-#define ACPI_ADDRESS_SPACE_DESCRIPTOR             0x8A
+#define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR        0x81
+#define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR        0x85
+#define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR  0x86
+#define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR        0x87
+#define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR         0x88
+#define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR         0x89
+#define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR        0x8A
+#define ACPI_ADDRESS_SPACE_DESCRIPTOR              0x8A
 
 //
 // Resource Type
 //
-#define ACPI_ADDRESS_SPACE_TYPE_MEM   0x00
-#define ACPI_ADDRESS_SPACE_TYPE_IO    0x01
-#define ACPI_ADDRESS_SPACE_TYPE_BUS   0x02
+#define ACPI_ADDRESS_SPACE_TYPE_MEM  0x00
+#define ACPI_ADDRESS_SPACE_TYPE_IO   0x01
+#define ACPI_ADDRESS_SPACE_TYPE_BUS  0x02
 
 ///
 /// Power Management Timer frequency is fixed at 3.579545MHz.
 ///
-#define ACPI_TIMER_FREQUENCY       3579545
+#define ACPI_TIMER_FREQUENCY  3579545
 
 //
 // Ensure proper structure formats
@@ -117,87 +112,87 @@
 #pragma pack(1)
 
 ///
-/// The commond definition of QWORD, DWORD, and WORD
+/// The common definition of QWORD, DWORD, and WORD
 /// Address Space Descriptors.
 ///
 typedef PACKED struct {
-  UINT8   Desc;
-  UINT16  Len;
-  UINT8   ResType;
-  UINT8   GenFlag;
-  UINT8   SpecificFlag;
-  UINT64  AddrSpaceGranularity;
-  UINT64  AddrRangeMin;
-  UINT64  AddrRangeMax;
-  UINT64  AddrTranslationOffset;
-  UINT64  AddrLen;
+  UINT8     Desc;
+  UINT16    Len;
+  UINT8     ResType;
+  UINT8     GenFlag;
+  UINT8     SpecificFlag;
+  UINT64    AddrSpaceGranularity;
+  UINT64    AddrRangeMin;
+  UINT64    AddrRangeMax;
+  UINT64    AddrTranslationOffset;
+  UINT64    AddrLen;
 } EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR;
 
 typedef PACKED union {
-  UINT8     Byte;
+  UINT8    Byte;
   PACKED struct {
-    UINT8 Length : 3;
-    UINT8 Name : 4;
-    UINT8 Type : 1;
+    UINT8    Length : 3;
+    UINT8    Name   : 4;
+    UINT8    Type   : 1;
   } Bits;
 } ACPI_SMALL_RESOURCE_HEADER;
 
 typedef PACKED struct {
   PACKED union {
-    UINT8 Byte;
+    UINT8    Byte;
     PACKED struct {
-      UINT8 Name : 7;
-      UINT8 Type : 1;
-    }Bits;
+      UINT8    Name : 7;
+      UINT8    Type : 1;
+    } Bits;
   } Header;
-  UINT16 Length;
+  UINT16    Length;
 } ACPI_LARGE_RESOURCE_HEADER;
 
 ///
 /// IRQ Descriptor.
 ///
 typedef PACKED struct {
-  ACPI_SMALL_RESOURCE_HEADER   Header;
-  UINT16                       Mask;
+  ACPI_SMALL_RESOURCE_HEADER    Header;
+  UINT16                        Mask;
 } EFI_ACPI_IRQ_NOFLAG_DESCRIPTOR;
 
 ///
 /// IRQ Descriptor.
 ///
 typedef PACKED struct {
-  ACPI_SMALL_RESOURCE_HEADER   Header;
-  UINT16                       Mask;
-  UINT8                        Information;
+  ACPI_SMALL_RESOURCE_HEADER    Header;
+  UINT16                        Mask;
+  UINT8                         Information;
 } EFI_ACPI_IRQ_DESCRIPTOR;
 
 ///
 /// DMA Descriptor.
 ///
 typedef PACKED struct {
-  ACPI_SMALL_RESOURCE_HEADER   Header;
-  UINT8                        ChannelMask;
-  UINT8                        Information;
+  ACPI_SMALL_RESOURCE_HEADER    Header;
+  UINT8                         ChannelMask;
+  UINT8                         Information;
 } EFI_ACPI_DMA_DESCRIPTOR;
 
 ///
 /// I/O Port Descriptor
 ///
 typedef PACKED struct {
-  ACPI_SMALL_RESOURCE_HEADER   Header;
-  UINT8                        Information;
-  UINT16                       BaseAddressMin;
-  UINT16                       BaseAddressMax;
-  UINT8                        Alignment;
-  UINT8                        Length;
+  ACPI_SMALL_RESOURCE_HEADER    Header;
+  UINT8                         Information;
+  UINT16                        BaseAddressMin;
+  UINT16                        BaseAddressMax;
+  UINT8                         Alignment;
+  UINT8                         Length;
 } EFI_ACPI_IO_PORT_DESCRIPTOR;
 
 ///
 /// Fixed Location I/O Port Descriptor.
 ///
 typedef PACKED struct {
-  ACPI_SMALL_RESOURCE_HEADER   Header;
-  UINT16                       BaseAddress;
-  UINT8                        Length;
+  ACPI_SMALL_RESOURCE_HEADER    Header;
+  UINT16                        BaseAddress;
+  UINT8                         Length;
 } EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR;
 
 ///
@@ -295,17 +290,17 @@
 /// The End tag identifies an end of resource data.
 ///
 typedef struct {
-  UINT8 Desc;
-  UINT8 Checksum;
+  UINT8    Desc;
+  UINT8    Checksum;
 } EFI_ACPI_END_TAG_DESCRIPTOR;
 
 //
 // General use definitions
 //
-#define EFI_ACPI_RESERVED_BYTE  0x00
-#define EFI_ACPI_RESERVED_WORD  0x0000
-#define EFI_ACPI_RESERVED_DWORD 0x00000000
-#define EFI_ACPI_RESERVED_QWORD 0x0000000000000000
+#define EFI_ACPI_RESERVED_BYTE   0x00
+#define EFI_ACPI_RESERVED_WORD   0x0000
+#define EFI_ACPI_RESERVED_DWORD  0x00000000
+#define EFI_ACPI_RESERVED_QWORD  0x0000000000000000
 
 //
 // Resource Type Specific Flags
@@ -313,76 +308,86 @@
 //
 // Bit [0]    : Write Status, _RW
 //
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE                (1 << 0)
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY                 (0 << 0)
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE  (1 << 0)
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY   (0 << 0)
 //
 // Bit [2:1]  : Memory Attributes, _MEM
 //
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE             (0 << 1)
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE                 (1 << 1)
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1)
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE    (3 << 1)
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE              (0 << 1)
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE                  (1 << 1)
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING  (2 << 1)
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE     (3 << 1)
 //
 // Bit [4:3]  : Memory Attributes, _MTP
 //
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY      (0 << 3)
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED    (1 << 3)
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI        (2 << 3)
-#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS         (3 << 3)
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY    (0 << 3)
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED  (1 << 3)
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI      (2 << 3)
+#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS       (3 << 3)
 //
 // Bit [5]    : Memory to I/O Translation, _TTP
 //
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION          (1 << 5)
-#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC               (0 << 5)
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION  (1 << 5)
+#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC       (0 << 5)
 
 //
 // IRQ Information
 // Ref ACPI specification 6.4.2.1
 //
-#define EFI_ACPI_IRQ_SHARABLE_MASK                      0x10
-#define   EFI_ACPI_IRQ_SHARABLE                         0x10
+#define EFI_ACPI_IRQ_SHARABLE_MASK  0x10
+#define   EFI_ACPI_IRQ_SHARABLE     0x10
 
-#define EFI_ACPI_IRQ_POLARITY_MASK                      0x08
-#define   EFI_ACPI_IRQ_HIGH_TRUE                        0x00
-#define   EFI_ACPI_IRQ_LOW_FALSE                        0x08
+#define EFI_ACPI_IRQ_POLARITY_MASK  0x08
+#define   EFI_ACPI_IRQ_HIGH_TRUE    0x00
+#define   EFI_ACPI_IRQ_LOW_FALSE    0x08
 
-#define EFI_ACPI_IRQ_MODE                               0x01
-#define   EFI_ACPI_IRQ_LEVEL_TRIGGERED                  0x00
-#define   EFI_ACPI_IRQ_EDGE_TRIGGERED                   0x01
+#define EFI_ACPI_IRQ_MODE               0x01
+#define   EFI_ACPI_IRQ_LEVEL_TRIGGERED  0x00
+#define   EFI_ACPI_IRQ_EDGE_TRIGGERED   0x01
 
 //
 // DMA Information
 // Ref ACPI specification 6.4.2.2
 //
-#define EFI_ACPI_DMA_SPEED_TYPE_MASK                    0x60
-#define   EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY         0x00
-#define   EFI_ACPI_DMA_SPEED_TYPE_A                     0x20
-#define   EFI_ACPI_DMA_SPEED_TYPE_B                     0x40
-#define   EFI_ACPI_DMA_SPEED_TYPE_F                     0x60
+#define EFI_ACPI_DMA_SPEED_TYPE_MASK             0x60
+#define   EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY  0x00
+#define   EFI_ACPI_DMA_SPEED_TYPE_A              0x20
+#define   EFI_ACPI_DMA_SPEED_TYPE_B              0x40
+#define   EFI_ACPI_DMA_SPEED_TYPE_F              0x60
 
-#define EFI_ACPI_DMA_BUS_MASTER_MASK                    0x04
-#define   EFI_ACPI_DMA_BUS_MASTER                       0x04
+#define EFI_ACPI_DMA_BUS_MASTER_MASK  0x04
+#define   EFI_ACPI_DMA_BUS_MASTER     0x04
 
-#define EFI_ACPI_DMA_TRANSFER_TYPE_MASK                 0x03
-#define   EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT              0x00
-#define   EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT   0x01
-#define   EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT             0x10
+#define EFI_ACPI_DMA_TRANSFER_TYPE_MASK                0x03
+#define   EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT             0x00
+#define   EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT  0x01
+#define   EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT            0x02
 
 //
 // IO Information
 // Ref ACPI specification 6.4.2.5
 //
-#define EFI_ACPI_IO_DECODE_MASK                         0x01
-#define   EFI_ACPI_IO_DECODE_16_BIT                     0x01
-#define   EFI_ACPI_IO_DECODE_10_BIT                     0x00
+#define EFI_ACPI_IO_DECODE_MASK      0x01
+#define   EFI_ACPI_IO_DECODE_16_BIT  0x01
+#define   EFI_ACPI_IO_DECODE_10_BIT  0x00
 
 //
 // Memory Information
 // Ref ACPI specification 6.4.3.4
 //
-#define EFI_ACPI_MEMORY_WRITE_STATUS_MASK               0x01
-#define   EFI_ACPI_MEMORY_WRITABLE                      0x01
-#define   EFI_ACPI_MEMORY_NON_WRITABLE                  0x00
+#define EFI_ACPI_MEMORY_WRITE_STATUS_MASK  0x01
+#define   EFI_ACPI_MEMORY_WRITABLE         0x01
+#define   EFI_ACPI_MEMORY_NON_WRITABLE     0x00
+
+//
+// Interrupt Vector Flags definitions for Extended Interrupt Descriptor
+// Ref ACPI specification 6.4.3.6
+//
+#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_PRODUCER_CONSUMER_MASK  BIT0
+#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_MODE_MASK               BIT1
+#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_POLARITY_MASK           BIT2
+#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_SHARABLE_MASK           BIT3
+#define EFI_ACPI_EXTENDED_INTERRUPT_FLAG_WAKE_CAPABLITY_MASK     BIT4
 
 //
 // Ensure proper structure formats
@@ -396,11 +401,11 @@
 /// Root System Description Pointer Structure.
 ///
 typedef struct {
-  UINT64  Signature;
-  UINT8   Checksum;
-  UINT8   OemId[6];
-  UINT8   Reserved;
-  UINT32  RsdtAddress;
+  UINT64    Signature;
+  UINT8     Checksum;
+  UINT8     OemId[6];
+  UINT8     Reserved;
+  UINT32    RsdtAddress;
 } EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
 
 //
@@ -412,52 +417,52 @@
 ///
 /// RSDT Revision (as defined in ACPI 1.0b specification).
 ///
-#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Fixed ACPI Description Table Structure (FADT).
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      FirmwareCtrl;
-  UINT32                      Dsdt;
-  UINT8                       IntModel;
-  UINT8                       Reserved1;
-  UINT16                      SciInt;
-  UINT32                      SmiCmd;
-  UINT8                       AcpiEnable;
-  UINT8                       AcpiDisable;
-  UINT8                       S4BiosReq;
-  UINT8                       Reserved2;
-  UINT32                      Pm1aEvtBlk;
-  UINT32                      Pm1bEvtBlk;
-  UINT32                      Pm1aCntBlk;
-  UINT32                      Pm1bCntBlk;
-  UINT32                      Pm2CntBlk;
-  UINT32                      PmTmrBlk;
-  UINT32                      Gpe0Blk;
-  UINT32                      Gpe1Blk;
-  UINT8                       Pm1EvtLen;
-  UINT8                       Pm1CntLen;
-  UINT8                       Pm2CntLen;
-  UINT8                       PmTmLen;
-  UINT8                       Gpe0BlkLen;
-  UINT8                       Gpe1BlkLen;
-  UINT8                       Gpe1Base;
-  UINT8                       Reserved3;
-  UINT16                      PLvl2Lat;
-  UINT16                      PLvl3Lat;
-  UINT16                      FlushSize;
-  UINT16                      FlushStride;
-  UINT8                       DutyOffset;
-  UINT8                       DutyWidth;
-  UINT8                       DayAlrm;
-  UINT8                       MonAlrm;
-  UINT8                       Century;
-  UINT8                       Reserved4;
-  UINT8                       Reserved5;
-  UINT8                       Reserved6;
-  UINT32                      Flags;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         FirmwareCtrl;
+  UINT32                         Dsdt;
+  UINT8                          IntModel;
+  UINT8                          Reserved1;
+  UINT16                         SciInt;
+  UINT32                         SmiCmd;
+  UINT8                          AcpiEnable;
+  UINT8                          AcpiDisable;
+  UINT8                          S4BiosReq;
+  UINT8                          Reserved2;
+  UINT32                         Pm1aEvtBlk;
+  UINT32                         Pm1bEvtBlk;
+  UINT32                         Pm1aCntBlk;
+  UINT32                         Pm1bCntBlk;
+  UINT32                         Pm2CntBlk;
+  UINT32                         PmTmrBlk;
+  UINT32                         Gpe0Blk;
+  UINT32                         Gpe1Blk;
+  UINT8                          Pm1EvtLen;
+  UINT8                          Pm1CntLen;
+  UINT8                          Pm2CntLen;
+  UINT8                          PmTmLen;
+  UINT8                          Gpe0BlkLen;
+  UINT8                          Gpe1BlkLen;
+  UINT8                          Gpe1Base;
+  UINT8                          Reserved3;
+  UINT16                         PLvl2Lat;
+  UINT16                         PLvl3Lat;
+  UINT16                         FlushSize;
+  UINT16                         FlushStride;
+  UINT8                          DutyOffset;
+  UINT8                          DutyWidth;
+  UINT8                          DayAlrm;
+  UINT8                          MonAlrm;
+  UINT8                          Century;
+  UINT8                          Reserved4;
+  UINT8                          Reserved5;
+  UINT8                          Reserved6;
+  UINT32                         Flags;
 } EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE;
 
 ///
@@ -465,63 +470,63 @@
 ///
 #define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x01
 
-#define EFI_ACPI_1_0_INT_MODE_DUAL_PIC         0
-#define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC    1
+#define EFI_ACPI_1_0_INT_MODE_DUAL_PIC       0
+#define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC  1
 
 //
 // Fixed ACPI Description Table Fixed Feature Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_1_0_WBINVD               BIT0
-#define EFI_ACPI_1_0_WBINVD_FLUSH         BIT1
-#define EFI_ACPI_1_0_PROC_C1              BIT2
-#define EFI_ACPI_1_0_P_LVL2_UP            BIT3
-#define EFI_ACPI_1_0_PWR_BUTTON           BIT4
-#define EFI_ACPI_1_0_SLP_BUTTON           BIT5
-#define EFI_ACPI_1_0_FIX_RTC              BIT6
-#define EFI_ACPI_1_0_RTC_S4               BIT7
-#define EFI_ACPI_1_0_TMR_VAL_EXT          BIT8
-#define EFI_ACPI_1_0_DCK_CAP              BIT9
+#define EFI_ACPI_1_0_WBINVD        BIT0
+#define EFI_ACPI_1_0_WBINVD_FLUSH  BIT1
+#define EFI_ACPI_1_0_PROC_C1       BIT2
+#define EFI_ACPI_1_0_P_LVL2_UP     BIT3
+#define EFI_ACPI_1_0_PWR_BUTTON    BIT4
+#define EFI_ACPI_1_0_SLP_BUTTON    BIT5
+#define EFI_ACPI_1_0_FIX_RTC       BIT6
+#define EFI_ACPI_1_0_RTC_S4        BIT7
+#define EFI_ACPI_1_0_TMR_VAL_EXT   BIT8
+#define EFI_ACPI_1_0_DCK_CAP       BIT9
 
 ///
 /// Firmware ACPI Control Structure.
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
-  UINT32  HardwareSignature;
-  UINT32  FirmwareWakingVector;
-  UINT32  GlobalLock;
-  UINT32  Flags;
-  UINT8   Reserved[40];
+  UINT32    Signature;
+  UINT32    Length;
+  UINT32    HardwareSignature;
+  UINT32    FirmwareWakingVector;
+  UINT32    GlobalLock;
+  UINT32    Flags;
+  UINT8     Reserved[40];
 } EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
 
 ///
 /// Firmware Control Structure Feature Flags.
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_1_0_S4BIOS_F             BIT0
+#define EFI_ACPI_1_0_S4BIOS_F  BIT0
 
 ///
 /// Multiple APIC Description Table header definition.  The rest of the table
 /// must be defined in a platform-specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      LocalApicAddress;
-  UINT32                      Flags;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         LocalApicAddress;
+  UINT32                         Flags;
 } EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
 
 ///
 /// MADT Revision (as defined in ACPI 1.0b specification).
 ///
-#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Multiple APIC Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_1_0_PCAT_COMPAT           BIT0
+#define EFI_ACPI_1_0_PCAT_COMPAT  BIT0
 
 //
 // Multiple APIC Description Table APIC structure types
@@ -542,71 +547,71 @@
 /// Processor Local APIC Structure Definition.
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   ApicId;
-  UINT32  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     ApicId;
+  UINT32    Flags;
 } EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
 
 ///
 /// Local APIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED      BIT0
+#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED  BIT0
 
 ///
 /// IO APIC Structure.
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  IoApicAddress;
-  UINT32  SystemVectorBase;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    IoApicAddress;
+  UINT32    SystemVectorBase;
 } EFI_ACPI_1_0_IO_APIC_STRUCTURE;
 
 ///
 /// Interrupt Source Override Structure.
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Bus;
-  UINT8   Source;
-  UINT32  GlobalSystemInterruptVector;
-  UINT16  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Bus;
+  UINT8     Source;
+  UINT32    GlobalSystemInterruptVector;
+  UINT16    Flags;
 } EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
 
 ///
 /// Non-Maskable Interrupt Source Structure.
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT32  GlobalSystemInterruptVector;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT32    GlobalSystemInterruptVector;
 } EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
 
 ///
 /// Local APIC NMI Structure.
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT16  Flags;
-  UINT8   LocalApicInti;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT16    Flags;
+  UINT8     LocalApicInti;
 } EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE;
 
 ///
 /// Smart Battery Description Table (SBST)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      WarningEnergyLevel;
-  UINT32                      LowEnergyLevel;
-  UINT32                      CriticalEnergyLevel;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         WarningEnergyLevel;
+  UINT32                         LowEnergyLevel;
+  UINT32                         CriticalEnergyLevel;
 } EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE;
 
 //
diff --git a/src/include/ipxe/efi/IndustryStandard/Acpi20.h b/src/include/ipxe/efi/IndustryStandard/Acpi20.h
index f5ff44c..ad28120 100644
--- a/src/include/ipxe/efi/IndustryStandard/Acpi20.h
+++ b/src/include/ipxe/efi/IndustryStandard/Acpi20.h
@@ -1,29 +1,23 @@
 /** @file
   ACPI 2.0 definitions from the ACPI Specification, revision 2.0
 
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 **/
 
 #ifndef _ACPI_2_0_H_
 #define _ACPI_2_0_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/Acpi10.h>
 
 //
-// Define for Desriptor
+// Define for Descriptor
 //
-#define ACPI_LARGE_GENERIC_REGISTER_DESCRIPTOR_NAME          0x02
+#define ACPI_LARGE_GENERIC_REGISTER_DESCRIPTOR_NAME  0x02
 
-#define ACPI_GENERIC_REGISTER_DESCRIPTOR          0x82
+#define ACPI_GENERIC_REGISTER_DESCRIPTOR  0x82
 
 //
 // Ensure proper structure formats
@@ -53,11 +47,11 @@
 /// ACPI 2.0 Generic Address Space definition
 ///
 typedef struct {
-  UINT8   AddressSpaceId;
-  UINT8   RegisterBitWidth;
-  UINT8   RegisterBitOffset;
-  UINT8   Reserved;
-  UINT64  Address;
+  UINT8     AddressSpaceId;
+  UINT8     RegisterBitWidth;
+  UINT8     RegisterBitOffset;
+  UINT8     Reserved;
+  UINT64    Address;
 } EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE;
 
 //
@@ -78,29 +72,29 @@
 /// Root System Description Pointer Structure
 ///
 typedef struct {
-  UINT64  Signature;
-  UINT8   Checksum;
-  UINT8   OemId[6];
-  UINT8   Revision;
-  UINT32  RsdtAddress;
-  UINT32  Length;
-  UINT64  XsdtAddress;
-  UINT8   ExtendedChecksum;
-  UINT8   Reserved[3];
+  UINT64    Signature;
+  UINT8     Checksum;
+  UINT8     OemId[6];
+  UINT8     Revision;
+  UINT32    RsdtAddress;
+  UINT32    Length;
+  UINT64    XsdtAddress;
+  UINT8     ExtendedChecksum;
+  UINT8     Reserved[3];
 } EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
 
 ///
 /// RSD_PTR Revision (as defined in ACPI 2.0 spec.)
 ///
-#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02
+#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION  0x02
 
 ///
 /// Common table header, this prefaces all ACPI tables, including FACS, but
 /// excluding the RSD PTR structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
+  UINT32    Signature;
+  UINT32    Length;
 } EFI_ACPI_2_0_COMMON_HEADER;
 
 //
@@ -112,7 +106,7 @@
 ///
 /// RSDT Revision (as defined in ACPI 2.0 spec.)
 ///
-#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 //
 // Extended System Description Table
@@ -123,64 +117,64 @@
 ///
 /// XSDT Revision (as defined in ACPI 2.0 spec.)
 ///
-#define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Fixed ACPI Description Table Structure (FADT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  UINT32                                  FirmwareCtrl;
-  UINT32                                  Dsdt;
-  UINT8                                   Reserved0;
-  UINT8                                   PreferredPmProfile;
-  UINT16                                  SciInt;
-  UINT32                                  SmiCmd;
-  UINT8                                   AcpiEnable;
-  UINT8                                   AcpiDisable;
-  UINT8                                   S4BiosReq;
-  UINT8                                   PstateCnt;
-  UINT32                                  Pm1aEvtBlk;
-  UINT32                                  Pm1bEvtBlk;
-  UINT32                                  Pm1aCntBlk;
-  UINT32                                  Pm1bCntBlk;
-  UINT32                                  Pm2CntBlk;
-  UINT32                                  PmTmrBlk;
-  UINT32                                  Gpe0Blk;
-  UINT32                                  Gpe1Blk;
-  UINT8                                   Pm1EvtLen;
-  UINT8                                   Pm1CntLen;
-  UINT8                                   Pm2CntLen;
-  UINT8                                   PmTmrLen;
-  UINT8                                   Gpe0BlkLen;
-  UINT8                                   Gpe1BlkLen;
-  UINT8                                   Gpe1Base;
-  UINT8                                   CstCnt;
-  UINT16                                  PLvl2Lat;
-  UINT16                                  PLvl3Lat;
-  UINT16                                  FlushSize;
-  UINT16                                  FlushStride;
-  UINT8                                   DutyOffset;
-  UINT8                                   DutyWidth;
-  UINT8                                   DayAlrm;
-  UINT8                                   MonAlrm;
-  UINT8                                   Century;
-  UINT16                                  IaPcBootArch;
-  UINT8                                   Reserved1;
-  UINT32                                  Flags;
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  ResetReg;
-  UINT8                                   ResetValue;
-  UINT8                                   Reserved2[3];
-  UINT64                                  XFirmwareCtrl;
-  UINT64                                  XDsdt;
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  UINT32                                    FirmwareCtrl;
+  UINT32                                    Dsdt;
+  UINT8                                     Reserved0;
+  UINT8                                     PreferredPmProfile;
+  UINT16                                    SciInt;
+  UINT32                                    SmiCmd;
+  UINT8                                     AcpiEnable;
+  UINT8                                     AcpiDisable;
+  UINT8                                     S4BiosReq;
+  UINT8                                     PstateCnt;
+  UINT32                                    Pm1aEvtBlk;
+  UINT32                                    Pm1bEvtBlk;
+  UINT32                                    Pm1aCntBlk;
+  UINT32                                    Pm1bCntBlk;
+  UINT32                                    Pm2CntBlk;
+  UINT32                                    PmTmrBlk;
+  UINT32                                    Gpe0Blk;
+  UINT32                                    Gpe1Blk;
+  UINT8                                     Pm1EvtLen;
+  UINT8                                     Pm1CntLen;
+  UINT8                                     Pm2CntLen;
+  UINT8                                     PmTmrLen;
+  UINT8                                     Gpe0BlkLen;
+  UINT8                                     Gpe1BlkLen;
+  UINT8                                     Gpe1Base;
+  UINT8                                     CstCnt;
+  UINT16                                    PLvl2Lat;
+  UINT16                                    PLvl3Lat;
+  UINT16                                    FlushSize;
+  UINT16                                    FlushStride;
+  UINT8                                     DutyOffset;
+  UINT8                                     DutyWidth;
+  UINT8                                     DayAlrm;
+  UINT8                                     MonAlrm;
+  UINT8                                     Century;
+  UINT16                                    IaPcBootArch;
+  UINT8                                     Reserved1;
+  UINT32                                    Flags;
+  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE    ResetReg;
+  UINT8                                     ResetValue;
+  UINT8                                     Reserved2[3];
+  UINT64                                    XFirmwareCtrl;
+  UINT64                                    XDsdt;
+  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE    XPm1aEvtBlk;
+  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE    XPm1bEvtBlk;
+  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE    XPm1aCntBlk;
+  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE    XPm1bCntBlk;
+  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE    XPm2CntBlk;
+  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE    XPmTmrBlk;
+  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE    XGpe0Blk;
+  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE    XGpe1Blk;
 } EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE;
 
 ///
@@ -191,53 +185,53 @@
 //
 // Fixed ACPI Description Table Preferred Power Management Profile
 //
-#define EFI_ACPI_2_0_PM_PROFILE_UNSPECIFIED         0
-#define EFI_ACPI_2_0_PM_PROFILE_DESKTOP             1
-#define EFI_ACPI_2_0_PM_PROFILE_MOBILE              2
-#define EFI_ACPI_2_0_PM_PROFILE_WORKSTATION         3
-#define EFI_ACPI_2_0_PM_PROFILE_ENTERPRISE_SERVER   4
-#define EFI_ACPI_2_0_PM_PROFILE_SOHO_SERVER         5
-#define EFI_ACPI_2_0_PM_PROFILE_APPLIANCE_PC        6
+#define EFI_ACPI_2_0_PM_PROFILE_UNSPECIFIED        0
+#define EFI_ACPI_2_0_PM_PROFILE_DESKTOP            1
+#define EFI_ACPI_2_0_PM_PROFILE_MOBILE             2
+#define EFI_ACPI_2_0_PM_PROFILE_WORKSTATION        3
+#define EFI_ACPI_2_0_PM_PROFILE_ENTERPRISE_SERVER  4
+#define EFI_ACPI_2_0_PM_PROFILE_SOHO_SERVER        5
+#define EFI_ACPI_2_0_PM_PROFILE_APPLIANCE_PC       6
 
 //
 // Fixed ACPI Description Table Boot Architecture Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_2_0_LEGACY_DEVICES          BIT0
-#define EFI_ACPI_2_0_8042                    BIT1
+#define EFI_ACPI_2_0_LEGACY_DEVICES  BIT0
+#define EFI_ACPI_2_0_8042            BIT1
 
 //
 // Fixed ACPI Description Table Fixed Feature Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_2_0_WBINVD                  BIT0
-#define EFI_ACPI_2_0_WBINVD_FLUSH            BIT1
-#define EFI_ACPI_2_0_PROC_C1                 BIT2
-#define EFI_ACPI_2_0_P_LVL2_UP               BIT3
-#define EFI_ACPI_2_0_PWR_BUTTON              BIT4
-#define EFI_ACPI_2_0_SLP_BUTTON              BIT5
-#define EFI_ACPI_2_0_FIX_RTC                 BIT6
-#define EFI_ACPI_2_0_RTC_S4                  BIT7
-#define EFI_ACPI_2_0_TMR_VAL_EXT             BIT8
-#define EFI_ACPI_2_0_DCK_CAP                 BIT9
-#define EFI_ACPI_2_0_RESET_REG_SUP           BIT10
-#define EFI_ACPI_2_0_SEALED_CASE             BIT11
-#define EFI_ACPI_2_0_HEADLESS                BIT12
-#define EFI_ACPI_2_0_CPU_SW_SLP              BIT13
+#define EFI_ACPI_2_0_WBINVD         BIT0
+#define EFI_ACPI_2_0_WBINVD_FLUSH   BIT1
+#define EFI_ACPI_2_0_PROC_C1        BIT2
+#define EFI_ACPI_2_0_P_LVL2_UP      BIT3
+#define EFI_ACPI_2_0_PWR_BUTTON     BIT4
+#define EFI_ACPI_2_0_SLP_BUTTON     BIT5
+#define EFI_ACPI_2_0_FIX_RTC        BIT6
+#define EFI_ACPI_2_0_RTC_S4         BIT7
+#define EFI_ACPI_2_0_TMR_VAL_EXT    BIT8
+#define EFI_ACPI_2_0_DCK_CAP        BIT9
+#define EFI_ACPI_2_0_RESET_REG_SUP  BIT10
+#define EFI_ACPI_2_0_SEALED_CASE    BIT11
+#define EFI_ACPI_2_0_HEADLESS       BIT12
+#define EFI_ACPI_2_0_CPU_SW_SLP     BIT13
 
 ///
 /// Firmware ACPI Control Structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
-  UINT32  HardwareSignature;
-  UINT32  FirmwareWakingVector;
-  UINT32  GlobalLock;
-  UINT32  Flags;
-  UINT64  XFirmwareWakingVector;
-  UINT8   Version;
-  UINT8   Reserved[31];
+  UINT32    Signature;
+  UINT32    Length;
+  UINT32    HardwareSignature;
+  UINT32    FirmwareWakingVector;
+  UINT32    GlobalLock;
+  UINT32    Flags;
+  UINT64    XFirmwareWakingVector;
+  UINT8     Version;
+  UINT8     Reserved[31];
 } EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
 
 ///
@@ -249,28 +243,28 @@
 /// Firmware Control Structure Feature Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_2_0_S4BIOS_F        BIT0
+#define EFI_ACPI_2_0_S4BIOS_F  BIT0
 
 ///
 /// Multiple APIC Description Table header definition.  The rest of the table
 /// must be defined in a platform specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      LocalApicAddress;
-  UINT32                      Flags;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         LocalApicAddress;
+  UINT32                         Flags;
 } EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
 
 ///
 /// MADT Revision (as defined in ACPI 2.0 spec.)
 ///
-#define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Multiple APIC Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_2_0_PCAT_COMPAT          BIT0
+#define EFI_ACPI_2_0_PCAT_COMPAT  BIT0
 
 //
 // Multiple APIC Description Table APIC structure types
@@ -295,127 +289,127 @@
 /// Processor Local APIC Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   ApicId;
-  UINT32  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     ApicId;
+  UINT32    Flags;
 } EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
 
 ///
 /// Local APIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_2_0_LOCAL_APIC_ENABLED         BIT0
+#define EFI_ACPI_2_0_LOCAL_APIC_ENABLED  BIT0
 
 ///
 /// IO APIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  IoApicAddress;
-  UINT32  GlobalSystemInterruptBase;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    IoApicAddress;
+  UINT32    GlobalSystemInterruptBase;
 } EFI_ACPI_2_0_IO_APIC_STRUCTURE;
 
 ///
 /// Interrupt Source Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Bus;
-  UINT8   Source;
-  UINT32  GlobalSystemInterrupt;
-  UINT16  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Bus;
+  UINT8     Source;
+  UINT32    GlobalSystemInterrupt;
+  UINT16    Flags;
 } EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
 
 ///
 /// Non-Maskable Interrupt Source Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT32  GlobalSystemInterrupt;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT32    GlobalSystemInterrupt;
 } EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
 
 ///
 /// Local APIC NMI Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT16  Flags;
-  UINT8   LocalApicLint;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT16    Flags;
+  UINT8     LocalApicLint;
 } EFI_ACPI_2_0_LOCAL_APIC_NMI_STRUCTURE;
 
 ///
 /// Local APIC Address Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT64  LocalApicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT64    LocalApicAddress;
 } EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
 
 ///
 /// IO SAPIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  GlobalSystemInterruptBase;
-  UINT64  IoSapicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    GlobalSystemInterruptBase;
+  UINT64    IoSapicAddress;
 } EFI_ACPI_2_0_IO_SAPIC_STRUCTURE;
 
 ///
 /// Local SAPIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   LocalSapicId;
-  UINT8   LocalSapicEid;
-  UINT8   Reserved[3];
-  UINT32  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     LocalSapicId;
+  UINT8     LocalSapicEid;
+  UINT8     Reserved[3];
+  UINT32    Flags;
 } EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
 
 ///
 /// Platform Interrupt Sources Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT8   InterruptType;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT8   IoSapicVector;
-  UINT32  GlobalSystemInterrupt;
-  UINT32  Reserved;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT8     InterruptType;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT8     IoSapicVector;
+  UINT32    GlobalSystemInterrupt;
+  UINT32    Reserved;
 } EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
 
 ///
 /// Smart Battery Description Table (SBST)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      WarningEnergyLevel;
-  UINT32                      LowEnergyLevel;
-  UINT32                      CriticalEnergyLevel;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         WarningEnergyLevel;
+  UINT32                         LowEnergyLevel;
+  UINT32                         CriticalEnergyLevel;
 } EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE;
 
 ///
 /// SBST Version (as defined in ACPI 2.0 spec.)
 ///
-#define EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Embedded Controller Boot Resources Table (ECDT)
@@ -423,11 +417,11 @@
 /// a fully qualified reference to the name space object.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  EcControl;
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  EcData;
-  UINT32                                  Uid;
-  UINT8                                   GpeBit;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE    EcControl;
+  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE    EcData;
+  UINT32                                    Uid;
+  UINT8                                     GpeBit;
 } EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
 
 ///
@@ -513,7 +507,7 @@
 #define EFI_ACPI_2_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'T')
 
 ///
-/// "SPCR" Serial Port Concole Redirection Table
+/// "SPCR" Serial Port Console Redirection Table
 ///
 #define EFI_ACPI_2_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
 
diff --git a/src/include/ipxe/efi/IndustryStandard/Acpi30.h b/src/include/ipxe/efi/IndustryStandard/Acpi30.h
index abaa721..c7dfd5c 100644
--- a/src/include/ipxe/efi/IndustryStandard/Acpi30.h
+++ b/src/include/ipxe/efi/IndustryStandard/Acpi30.h
@@ -1,29 +1,23 @@
 /** @file
   ACPI 3.0 definitions from the ACPI Specification Revision 3.0b October 10, 2006
 
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 **/
 
 #ifndef _ACPI_3_0_H_
 #define _ACPI_3_0_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/Acpi20.h>
 
 //
-// Define for Desriptor
+// Define for Descriptor
 //
-#define ACPI_LARGE_EXTENDED_ADDRESS_SPACE_DESCRIPTOR_NAME    0x0B
+#define ACPI_LARGE_EXTENDED_ADDRESS_SPACE_DESCRIPTOR_NAME  0x0B
 
-#define ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR    0x8B
+#define ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR  0x8B
 
 //
 // Ensure proper structure formats
@@ -53,12 +47,12 @@
 //
 // Memory Type Specific Flags
 //
-#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UC  0x0000000000000001
-#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WC  0x0000000000000002
-#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WT  0x0000000000000004
-#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WB  0x0000000000000008
-#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UCE 0x0000000000000010
-#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_NV  0x0000000000008000
+#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UC   0x0000000000000001
+#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WC   0x0000000000000002
+#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WT   0x0000000000000004
+#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WB   0x0000000000000008
+#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UCE  0x0000000000000010
+#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_NV   0x0000000000008000
 
 //
 // Ensure proper structure formats
@@ -69,11 +63,11 @@
 /// ACPI 3.0 Generic Address Space definition
 ///
 typedef struct {
-  UINT8   AddressSpaceId;
-  UINT8   RegisterBitWidth;
-  UINT8   RegisterBitOffset;
-  UINT8   AccessSize;
-  UINT64  Address;
+  UINT8     AddressSpaceId;
+  UINT8     RegisterBitWidth;
+  UINT8     RegisterBitOffset;
+  UINT8     AccessSize;
+  UINT64    Address;
 } EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE;
 
 //
@@ -103,29 +97,29 @@
 /// Root System Description Pointer Structure
 ///
 typedef struct {
-  UINT64  Signature;
-  UINT8   Checksum;
-  UINT8   OemId[6];
-  UINT8   Revision;
-  UINT32  RsdtAddress;
-  UINT32  Length;
-  UINT64  XsdtAddress;
-  UINT8   ExtendedChecksum;
-  UINT8   Reserved[3];
+  UINT64    Signature;
+  UINT8     Checksum;
+  UINT8     OemId[6];
+  UINT8     Revision;
+  UINT32    RsdtAddress;
+  UINT32    Length;
+  UINT64    XsdtAddress;
+  UINT8     ExtendedChecksum;
+  UINT8     Reserved[3];
 } EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
 
 ///
 /// RSD_PTR Revision (as defined in ACPI 3.0b spec.)
 ///
-#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  ///< ACPISpec (Revision 3.0b) says current value is 2
+#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION  0x02 ///< ACPISpec (Revision 3.0b) says current value is 2
 
 ///
 /// Common table header, this prefaces all ACPI tables, including FACS, but
 /// excluding the RSD PTR structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
+  UINT32    Signature;
+  UINT32    Length;
 } EFI_ACPI_3_0_COMMON_HEADER;
 
 //
@@ -137,7 +131,7 @@
 ///
 /// RSDT Revision (as defined in ACPI 3.0 spec.)
 ///
-#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 //
 // Extended System Description Table
@@ -148,64 +142,64 @@
 ///
 /// XSDT Revision (as defined in ACPI 3.0 spec.)
 ///
-#define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Fixed ACPI Description Table Structure (FADT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  UINT32                                  FirmwareCtrl;
-  UINT32                                  Dsdt;
-  UINT8                                   Reserved0;
-  UINT8                                   PreferredPmProfile;
-  UINT16                                  SciInt;
-  UINT32                                  SmiCmd;
-  UINT8                                   AcpiEnable;
-  UINT8                                   AcpiDisable;
-  UINT8                                   S4BiosReq;
-  UINT8                                   PstateCnt;
-  UINT32                                  Pm1aEvtBlk;
-  UINT32                                  Pm1bEvtBlk;
-  UINT32                                  Pm1aCntBlk;
-  UINT32                                  Pm1bCntBlk;
-  UINT32                                  Pm2CntBlk;
-  UINT32                                  PmTmrBlk;
-  UINT32                                  Gpe0Blk;
-  UINT32                                  Gpe1Blk;
-  UINT8                                   Pm1EvtLen;
-  UINT8                                   Pm1CntLen;
-  UINT8                                   Pm2CntLen;
-  UINT8                                   PmTmrLen;
-  UINT8                                   Gpe0BlkLen;
-  UINT8                                   Gpe1BlkLen;
-  UINT8                                   Gpe1Base;
-  UINT8                                   CstCnt;
-  UINT16                                  PLvl2Lat;
-  UINT16                                  PLvl3Lat;
-  UINT16                                  FlushSize;
-  UINT16                                  FlushStride;
-  UINT8                                   DutyOffset;
-  UINT8                                   DutyWidth;
-  UINT8                                   DayAlrm;
-  UINT8                                   MonAlrm;
-  UINT8                                   Century;
-  UINT16                                  IaPcBootArch;
-  UINT8                                   Reserved1;
-  UINT32                                  Flags;
-  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  ResetReg;
-  UINT8                                   ResetValue;
-  UINT8                                   Reserved2[3];
-  UINT64                                  XFirmwareCtrl;
-  UINT64                                  XDsdt;
-  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
-  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
-  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
-  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
-  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
-  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
-  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
-  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  UINT32                                    FirmwareCtrl;
+  UINT32                                    Dsdt;
+  UINT8                                     Reserved0;
+  UINT8                                     PreferredPmProfile;
+  UINT16                                    SciInt;
+  UINT32                                    SmiCmd;
+  UINT8                                     AcpiEnable;
+  UINT8                                     AcpiDisable;
+  UINT8                                     S4BiosReq;
+  UINT8                                     PstateCnt;
+  UINT32                                    Pm1aEvtBlk;
+  UINT32                                    Pm1bEvtBlk;
+  UINT32                                    Pm1aCntBlk;
+  UINT32                                    Pm1bCntBlk;
+  UINT32                                    Pm2CntBlk;
+  UINT32                                    PmTmrBlk;
+  UINT32                                    Gpe0Blk;
+  UINT32                                    Gpe1Blk;
+  UINT8                                     Pm1EvtLen;
+  UINT8                                     Pm1CntLen;
+  UINT8                                     Pm2CntLen;
+  UINT8                                     PmTmrLen;
+  UINT8                                     Gpe0BlkLen;
+  UINT8                                     Gpe1BlkLen;
+  UINT8                                     Gpe1Base;
+  UINT8                                     CstCnt;
+  UINT16                                    PLvl2Lat;
+  UINT16                                    PLvl3Lat;
+  UINT16                                    FlushSize;
+  UINT16                                    FlushStride;
+  UINT8                                     DutyOffset;
+  UINT8                                     DutyWidth;
+  UINT8                                     DayAlrm;
+  UINT8                                     MonAlrm;
+  UINT8                                     Century;
+  UINT16                                    IaPcBootArch;
+  UINT8                                     Reserved1;
+  UINT32                                    Flags;
+  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    ResetReg;
+  UINT8                                     ResetValue;
+  UINT8                                     Reserved2[3];
+  UINT64                                    XFirmwareCtrl;
+  UINT64                                    XDsdt;
+  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    XPm1aEvtBlk;
+  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    XPm1bEvtBlk;
+  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    XPm1aCntBlk;
+  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    XPm1bCntBlk;
+  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    XPm2CntBlk;
+  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    XPmTmrBlk;
+  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    XGpe0Blk;
+  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    XGpe1Blk;
 } EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE;
 
 ///
@@ -229,50 +223,50 @@
 // Fixed ACPI Description Table Boot Architecture Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_3_0_LEGACY_DEVICES              BIT0
-#define EFI_ACPI_3_0_8042                        BIT1
-#define EFI_ACPI_3_0_VGA_NOT_PRESENT             BIT2
-#define EFI_ACPI_3_0_MSI_NOT_SUPPORTED           BIT3
-#define EFI_ACPI_3_0_PCIE_ASPM_CONTROLS          BIT4
+#define EFI_ACPI_3_0_LEGACY_DEVICES      BIT0
+#define EFI_ACPI_3_0_8042                BIT1
+#define EFI_ACPI_3_0_VGA_NOT_PRESENT     BIT2
+#define EFI_ACPI_3_0_MSI_NOT_SUPPORTED   BIT3
+#define EFI_ACPI_3_0_PCIE_ASPM_CONTROLS  BIT4
 
 //
 // Fixed ACPI Description Table Fixed Feature Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_3_0_WBINVD                                 BIT0
-#define EFI_ACPI_3_0_WBINVD_FLUSH                           BIT1
-#define EFI_ACPI_3_0_PROC_C1                                BIT2
-#define EFI_ACPI_3_0_P_LVL2_UP                              BIT3
-#define EFI_ACPI_3_0_PWR_BUTTON                             BIT4
-#define EFI_ACPI_3_0_SLP_BUTTON                             BIT5
-#define EFI_ACPI_3_0_FIX_RTC                                BIT6
-#define EFI_ACPI_3_0_RTC_S4                                 BIT7
-#define EFI_ACPI_3_0_TMR_VAL_EXT                            BIT8
-#define EFI_ACPI_3_0_DCK_CAP                                BIT9
-#define EFI_ACPI_3_0_RESET_REG_SUP                          BIT10
-#define EFI_ACPI_3_0_SEALED_CASE                            BIT11
-#define EFI_ACPI_3_0_HEADLESS                               BIT12
-#define EFI_ACPI_3_0_CPU_SW_SLP                             BIT13
-#define EFI_ACPI_3_0_PCI_EXP_WAK                            BIT14
-#define EFI_ACPI_3_0_USE_PLATFORM_CLOCK                     BIT15
-#define EFI_ACPI_3_0_S4_RTC_STS_VALID                       BIT16
-#define EFI_ACPI_3_0_REMOTE_POWER_ON_CAPABLE                BIT17
-#define EFI_ACPI_3_0_FORCE_APIC_CLUSTER_MODEL               BIT18
-#define EFI_ACPI_3_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE   BIT19
+#define EFI_ACPI_3_0_WBINVD                                BIT0
+#define EFI_ACPI_3_0_WBINVD_FLUSH                          BIT1
+#define EFI_ACPI_3_0_PROC_C1                               BIT2
+#define EFI_ACPI_3_0_P_LVL2_UP                             BIT3
+#define EFI_ACPI_3_0_PWR_BUTTON                            BIT4
+#define EFI_ACPI_3_0_SLP_BUTTON                            BIT5
+#define EFI_ACPI_3_0_FIX_RTC                               BIT6
+#define EFI_ACPI_3_0_RTC_S4                                BIT7
+#define EFI_ACPI_3_0_TMR_VAL_EXT                           BIT8
+#define EFI_ACPI_3_0_DCK_CAP                               BIT9
+#define EFI_ACPI_3_0_RESET_REG_SUP                         BIT10
+#define EFI_ACPI_3_0_SEALED_CASE                           BIT11
+#define EFI_ACPI_3_0_HEADLESS                              BIT12
+#define EFI_ACPI_3_0_CPU_SW_SLP                            BIT13
+#define EFI_ACPI_3_0_PCI_EXP_WAK                           BIT14
+#define EFI_ACPI_3_0_USE_PLATFORM_CLOCK                    BIT15
+#define EFI_ACPI_3_0_S4_RTC_STS_VALID                      BIT16
+#define EFI_ACPI_3_0_REMOTE_POWER_ON_CAPABLE               BIT17
+#define EFI_ACPI_3_0_FORCE_APIC_CLUSTER_MODEL              BIT18
+#define EFI_ACPI_3_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE  BIT19
 
 ///
 /// Firmware ACPI Control Structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
-  UINT32  HardwareSignature;
-  UINT32  FirmwareWakingVector;
-  UINT32  GlobalLock;
-  UINT32  Flags;
-  UINT64  XFirmwareWakingVector;
-  UINT8   Version;
-  UINT8   Reserved[31];
+  UINT32    Signature;
+  UINT32    Length;
+  UINT32    HardwareSignature;
+  UINT32    FirmwareWakingVector;
+  UINT32    GlobalLock;
+  UINT32    Flags;
+  UINT64    XFirmwareWakingVector;
+  UINT8     Version;
+  UINT8     Reserved[31];
 } EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
 
 ///
@@ -284,7 +278,7 @@
 /// Firmware Control Structure Feature Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_3_0_S4BIOS_F       BIT0
+#define EFI_ACPI_3_0_S4BIOS_F  BIT0
 
 //
 // Differentiated System Description Table,
@@ -293,29 +287,29 @@
 // no definition needed as they are common description table header, the same with
 // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
 //
-#define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02
-#define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02
+#define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x02
+#define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION       0x02
 
 ///
 /// Multiple APIC Description Table header definition.  The rest of the table
 /// must be defined in a platform specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      LocalApicAddress;
-  UINT32                      Flags;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         LocalApicAddress;
+  UINT32                         Flags;
 } EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
 
 ///
 /// MADT Revision (as defined in ACPI 3.0 spec.)
 ///
-#define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x02
+#define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION  0x02
 
 ///
 /// Multiple APIC Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_3_0_PCAT_COMPAT         BIT0
+#define EFI_ACPI_3_0_PCAT_COMPAT  BIT0
 
 //
 // Multiple APIC Description Table APIC structure types
@@ -340,57 +334,57 @@
 /// Processor Local APIC Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   ApicId;
-  UINT32  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     ApicId;
+  UINT32    Flags;
 } EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
 
 ///
 /// Local APIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_3_0_LOCAL_APIC_ENABLED        BIT0
+#define EFI_ACPI_3_0_LOCAL_APIC_ENABLED  BIT0
 
 ///
 /// IO APIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  IoApicAddress;
-  UINT32  GlobalSystemInterruptBase;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    IoApicAddress;
+  UINT32    GlobalSystemInterruptBase;
 } EFI_ACPI_3_0_IO_APIC_STRUCTURE;
 
 ///
 /// Interrupt Source Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Bus;
-  UINT8   Source;
-  UINT32  GlobalSystemInterrupt;
-  UINT16  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Bus;
+  UINT8     Source;
+  UINT32    GlobalSystemInterrupt;
+  UINT16    Flags;
 } EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
 
 ///
 /// Platform Interrupt Sources Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT8   InterruptType;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT8   IoSapicVector;
-  UINT32  GlobalSystemInterrupt;
-  UINT32  PlatformInterruptSourceFlags;
-  UINT8   CpeiProcessorOverride;
-  UINT8   Reserved[31];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT8     InterruptType;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT8     IoSapicVector;
+  UINT32    GlobalSystemInterrupt;
+  UINT32    PlatformInterruptSourceFlags;
+  UINT8     CpeiProcessorOverride;
+  UINT8     Reserved[31];
 } EFI_ACPI_3_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
 
 //
@@ -404,43 +398,43 @@
 /// Non-Maskable Interrupt Source Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT32  GlobalSystemInterrupt;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT32    GlobalSystemInterrupt;
 } EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
 
 ///
 /// Local APIC NMI Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT16  Flags;
-  UINT8   LocalApicLint;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT16    Flags;
+  UINT8     LocalApicLint;
 } EFI_ACPI_3_0_LOCAL_APIC_NMI_STRUCTURE;
 
 ///
 /// Local APIC Address Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT64  LocalApicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT64    LocalApicAddress;
 } EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
 
 ///
 /// IO SAPIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  GlobalSystemInterruptBase;
-  UINT64  IoSapicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    GlobalSystemInterruptBase;
+  UINT64    IoSapicAddress;
 } EFI_ACPI_3_0_IO_SAPIC_STRUCTURE;
 
 ///
@@ -448,51 +442,51 @@
 /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   LocalSapicId;
-  UINT8   LocalSapicEid;
-  UINT8   Reserved[3];
-  UINT32  Flags;
-  UINT32  ACPIProcessorUIDValue;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     LocalSapicId;
+  UINT8     LocalSapicEid;
+  UINT8     Reserved[3];
+  UINT32    Flags;
+  UINT32    ACPIProcessorUIDValue;
 } EFI_ACPI_3_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
 
 ///
 /// Platform Interrupt Sources Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT8   InterruptType;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT8   IoSapicVector;
-  UINT32  GlobalSystemInterrupt;
-  UINT32  PlatformInterruptSourceFlags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT8     InterruptType;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT8     IoSapicVector;
+  UINT32    GlobalSystemInterrupt;
+  UINT32    PlatformInterruptSourceFlags;
 } EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
 
 ///
 /// Platform Interrupt Source Flags.
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_3_0_CPEI_PROCESSOR_OVERRIDE          BIT0
+#define EFI_ACPI_3_0_CPEI_PROCESSOR_OVERRIDE  BIT0
 
 ///
 /// Smart Battery Description Table (SBST)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      WarningEnergyLevel;
-  UINT32                      LowEnergyLevel;
-  UINT32                      CriticalEnergyLevel;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         WarningEnergyLevel;
+  UINT32                         LowEnergyLevel;
+  UINT32                         CriticalEnergyLevel;
 } EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE;
 
 ///
 /// SBST Version (as defined in ACPI 3.0 spec.)
 ///
-#define EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Embedded Controller Boot Resources Table (ECDT)
@@ -500,11 +494,11 @@
 /// a fully qualified reference to the name space object.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  EcControl;
-  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  EcData;
-  UINT32                                  Uid;
-  UINT8                                   GpeBit;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    EcControl;
+  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    EcData;
+  UINT32                                    Uid;
+  UINT8                                     GpeBit;
 } EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
 
 ///
@@ -517,9 +511,9 @@
 /// must be defined in a platform specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      Reserved1;  ///< Must be set to 1
-  UINT64                      Reserved2;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         Reserved1; ///< Must be set to 1
+  UINT64                         Reserved2;
 } EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
 
 ///
@@ -539,52 +533,52 @@
 /// Processor Local APIC/SAPIC Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   ProximityDomain7To0;
-  UINT8   ApicId;
-  UINT32  Flags;
-  UINT8   LocalSapicEid;
-  UINT8   ProximityDomain31To8[3];
-  UINT8   Reserved[4];
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     ProximityDomain7To0;
+  UINT8     ApicId;
+  UINT32    Flags;
+  UINT8     LocalSapicEid;
+  UINT8     ProximityDomain31To8[3];
+  UINT8     Reserved[4];
 } EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
 
 ///
 /// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
+#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED  (1 << 0)
 
 ///
 /// Memory Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT32  ProximityDomain;
-  UINT16  Reserved1;
-  UINT32  AddressBaseLow;
-  UINT32  AddressBaseHigh;
-  UINT32  LengthLow;
-  UINT32  LengthHigh;
-  UINT32  Reserved2;
-  UINT32  Flags;
-  UINT64  Reserved3;
+  UINT8     Type;
+  UINT8     Length;
+  UINT32    ProximityDomain;
+  UINT16    Reserved1;
+  UINT32    AddressBaseLow;
+  UINT32    AddressBaseHigh;
+  UINT32    LengthLow;
+  UINT32    LengthHigh;
+  UINT32    Reserved2;
+  UINT32    Flags;
+  UINT64    Reserved3;
 } EFI_ACPI_3_0_MEMORY_AFFINITY_STRUCTURE;
 
 //
 // Memory Flags.  All other bits are reserved and must be 0.
 //
-#define EFI_ACPI_3_0_MEMORY_ENABLED       (1 << 0)
-#define EFI_ACPI_3_0_MEMORY_HOT_PLUGGABLE (1 << 1)
-#define EFI_ACPI_3_0_MEMORY_NONVOLATILE   (1 << 2)
+#define EFI_ACPI_3_0_MEMORY_ENABLED        (1 << 0)
+#define EFI_ACPI_3_0_MEMORY_HOT_PLUGGABLE  (1 << 1)
+#define EFI_ACPI_3_0_MEMORY_NONVOLATILE    (1 << 2)
 
 ///
 /// System Locality Distance Information Table (SLIT).
 /// The rest of the table is a matrix.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT64                      NumberOfSystemLocalities;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT64                         NumberOfSystemLocalities;
 } EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
 
 ///
@@ -692,7 +686,7 @@
 #define EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'F', 'G')
 
 ///
-/// "SPCR" Serial Port Concole Redirection Table
+/// "SPCR" Serial Port Console Redirection Table
 ///
 #define EFI_ACPI_3_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
 
diff --git a/src/include/ipxe/efi/IndustryStandard/Acpi40.h b/src/include/ipxe/efi/IndustryStandard/Acpi40.h
index 5fcad3e..f6c70d7 100644
--- a/src/include/ipxe/efi/IndustryStandard/Acpi40.h
+++ b/src/include/ipxe/efi/IndustryStandard/Acpi40.h
@@ -1,20 +1,14 @@
 /** @file
   ACPI 4.0 definitions from the ACPI Specification Revision 4.0a April 5, 2010
 
-  Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2010 - 2022, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 **/
 
 #ifndef _ACPI_4_0_H_
 #define _ACPI_4_0_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/Acpi30.h>
 
@@ -27,11 +21,11 @@
 /// ACPI 4.0 Generic Address Space definition
 ///
 typedef struct {
-  UINT8   AddressSpaceId;
-  UINT8   RegisterBitWidth;
-  UINT8   RegisterBitOffset;
-  UINT8   AccessSize;
-  UINT64  Address;
+  UINT8     AddressSpaceId;
+  UINT8     RegisterBitWidth;
+  UINT8     RegisterBitOffset;
+  UINT8     AccessSize;
+  UINT64    Address;
 } EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE;
 
 //
@@ -61,29 +55,29 @@
 /// Root System Description Pointer Structure
 ///
 typedef struct {
-  UINT64  Signature;
-  UINT8   Checksum;
-  UINT8   OemId[6];
-  UINT8   Revision;
-  UINT32  RsdtAddress;
-  UINT32  Length;
-  UINT64  XsdtAddress;
-  UINT8   ExtendedChecksum;
-  UINT8   Reserved[3];
+  UINT64    Signature;
+  UINT8     Checksum;
+  UINT8     OemId[6];
+  UINT8     Revision;
+  UINT32    RsdtAddress;
+  UINT32    Length;
+  UINT64    XsdtAddress;
+  UINT8     ExtendedChecksum;
+  UINT8     Reserved[3];
 } EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
 
 ///
 /// RSD_PTR Revision (as defined in ACPI 4.0b spec.)
 ///
-#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  ///< ACPISpec (Revision 4.0a) says current value is 2
+#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION  0x02 ///< ACPISpec (Revision 4.0a) says current value is 2
 
 ///
 /// Common table header, this prefaces all ACPI tables, including FACS, but
 /// excluding the RSD PTR structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
+  UINT32    Signature;
+  UINT32    Length;
 } EFI_ACPI_4_0_COMMON_HEADER;
 
 //
@@ -95,7 +89,7 @@
 ///
 /// RSDT Revision (as defined in ACPI 4.0 spec.)
 ///
-#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 //
 // Extended System Description Table
@@ -106,64 +100,64 @@
 ///
 /// XSDT Revision (as defined in ACPI 4.0 spec.)
 ///
-#define EFI_ACPI_4_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_4_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Fixed ACPI Description Table Structure (FADT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  UINT32                                  FirmwareCtrl;
-  UINT32                                  Dsdt;
-  UINT8                                   Reserved0;
-  UINT8                                   PreferredPmProfile;
-  UINT16                                  SciInt;
-  UINT32                                  SmiCmd;
-  UINT8                                   AcpiEnable;
-  UINT8                                   AcpiDisable;
-  UINT8                                   S4BiosReq;
-  UINT8                                   PstateCnt;
-  UINT32                                  Pm1aEvtBlk;
-  UINT32                                  Pm1bEvtBlk;
-  UINT32                                  Pm1aCntBlk;
-  UINT32                                  Pm1bCntBlk;
-  UINT32                                  Pm2CntBlk;
-  UINT32                                  PmTmrBlk;
-  UINT32                                  Gpe0Blk;
-  UINT32                                  Gpe1Blk;
-  UINT8                                   Pm1EvtLen;
-  UINT8                                   Pm1CntLen;
-  UINT8                                   Pm2CntLen;
-  UINT8                                   PmTmrLen;
-  UINT8                                   Gpe0BlkLen;
-  UINT8                                   Gpe1BlkLen;
-  UINT8                                   Gpe1Base;
-  UINT8                                   CstCnt;
-  UINT16                                  PLvl2Lat;
-  UINT16                                  PLvl3Lat;
-  UINT16                                  FlushSize;
-  UINT16                                  FlushStride;
-  UINT8                                   DutyOffset;
-  UINT8                                   DutyWidth;
-  UINT8                                   DayAlrm;
-  UINT8                                   MonAlrm;
-  UINT8                                   Century;
-  UINT16                                  IaPcBootArch;
-  UINT8                                   Reserved1;
-  UINT32                                  Flags;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE  ResetReg;
-  UINT8                                   ResetValue;
-  UINT8                                   Reserved2[3];
-  UINT64                                  XFirmwareCtrl;
-  UINT64                                  XDsdt;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  UINT32                                    FirmwareCtrl;
+  UINT32                                    Dsdt;
+  UINT8                                     Reserved0;
+  UINT8                                     PreferredPmProfile;
+  UINT16                                    SciInt;
+  UINT32                                    SmiCmd;
+  UINT8                                     AcpiEnable;
+  UINT8                                     AcpiDisable;
+  UINT8                                     S4BiosReq;
+  UINT8                                     PstateCnt;
+  UINT32                                    Pm1aEvtBlk;
+  UINT32                                    Pm1bEvtBlk;
+  UINT32                                    Pm1aCntBlk;
+  UINT32                                    Pm1bCntBlk;
+  UINT32                                    Pm2CntBlk;
+  UINT32                                    PmTmrBlk;
+  UINT32                                    Gpe0Blk;
+  UINT32                                    Gpe1Blk;
+  UINT8                                     Pm1EvtLen;
+  UINT8                                     Pm1CntLen;
+  UINT8                                     Pm2CntLen;
+  UINT8                                     PmTmrLen;
+  UINT8                                     Gpe0BlkLen;
+  UINT8                                     Gpe1BlkLen;
+  UINT8                                     Gpe1Base;
+  UINT8                                     CstCnt;
+  UINT16                                    PLvl2Lat;
+  UINT16                                    PLvl3Lat;
+  UINT16                                    FlushSize;
+  UINT16                                    FlushStride;
+  UINT8                                     DutyOffset;
+  UINT8                                     DutyWidth;
+  UINT8                                     DayAlrm;
+  UINT8                                     MonAlrm;
+  UINT8                                     Century;
+  UINT16                                    IaPcBootArch;
+  UINT8                                     Reserved1;
+  UINT32                                    Flags;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    ResetReg;
+  UINT8                                     ResetValue;
+  UINT8                                     Reserved2[3];
+  UINT64                                    XFirmwareCtrl;
+  UINT64                                    XDsdt;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPm1aEvtBlk;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPm1bEvtBlk;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPm1aCntBlk;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPm1bCntBlk;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPm2CntBlk;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XPmTmrBlk;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XGpe0Blk;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    XGpe1Blk;
 } EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE;
 
 ///
@@ -187,52 +181,52 @@
 // Fixed ACPI Description Table Boot Architecture Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_4_0_LEGACY_DEVICES              BIT0
-#define EFI_ACPI_4_0_8042                        BIT1
-#define EFI_ACPI_4_0_VGA_NOT_PRESENT             BIT2
-#define EFI_ACPI_4_0_MSI_NOT_SUPPORTED           BIT3
-#define EFI_ACPI_4_0_PCIE_ASPM_CONTROLS          BIT4
+#define EFI_ACPI_4_0_LEGACY_DEVICES      BIT0
+#define EFI_ACPI_4_0_8042                BIT1
+#define EFI_ACPI_4_0_VGA_NOT_PRESENT     BIT2
+#define EFI_ACPI_4_0_MSI_NOT_SUPPORTED   BIT3
+#define EFI_ACPI_4_0_PCIE_ASPM_CONTROLS  BIT4
 
 //
 // Fixed ACPI Description Table Fixed Feature Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_4_0_WBINVD                                 BIT0
-#define EFI_ACPI_4_0_WBINVD_FLUSH                           BIT1
-#define EFI_ACPI_4_0_PROC_C1                                BIT2
-#define EFI_ACPI_4_0_P_LVL2_UP                              BIT3
-#define EFI_ACPI_4_0_PWR_BUTTON                             BIT4
-#define EFI_ACPI_4_0_SLP_BUTTON                             BIT5
-#define EFI_ACPI_4_0_FIX_RTC                                BIT6
-#define EFI_ACPI_4_0_RTC_S4                                 BIT7
-#define EFI_ACPI_4_0_TMR_VAL_EXT                            BIT8
-#define EFI_ACPI_4_0_DCK_CAP                                BIT9
-#define EFI_ACPI_4_0_RESET_REG_SUP                          BIT10
-#define EFI_ACPI_4_0_SEALED_CASE                            BIT11
-#define EFI_ACPI_4_0_HEADLESS                               BIT12
-#define EFI_ACPI_4_0_CPU_SW_SLP                             BIT13
-#define EFI_ACPI_4_0_PCI_EXP_WAK                            BIT14
-#define EFI_ACPI_4_0_USE_PLATFORM_CLOCK                     BIT15
-#define EFI_ACPI_4_0_S4_RTC_STS_VALID                       BIT16
-#define EFI_ACPI_4_0_REMOTE_POWER_ON_CAPABLE                BIT17
-#define EFI_ACPI_4_0_FORCE_APIC_CLUSTER_MODEL               BIT18
-#define EFI_ACPI_4_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE   BIT19
+#define EFI_ACPI_4_0_WBINVD                                BIT0
+#define EFI_ACPI_4_0_WBINVD_FLUSH                          BIT1
+#define EFI_ACPI_4_0_PROC_C1                               BIT2
+#define EFI_ACPI_4_0_P_LVL2_UP                             BIT3
+#define EFI_ACPI_4_0_PWR_BUTTON                            BIT4
+#define EFI_ACPI_4_0_SLP_BUTTON                            BIT5
+#define EFI_ACPI_4_0_FIX_RTC                               BIT6
+#define EFI_ACPI_4_0_RTC_S4                                BIT7
+#define EFI_ACPI_4_0_TMR_VAL_EXT                           BIT8
+#define EFI_ACPI_4_0_DCK_CAP                               BIT9
+#define EFI_ACPI_4_0_RESET_REG_SUP                         BIT10
+#define EFI_ACPI_4_0_SEALED_CASE                           BIT11
+#define EFI_ACPI_4_0_HEADLESS                              BIT12
+#define EFI_ACPI_4_0_CPU_SW_SLP                            BIT13
+#define EFI_ACPI_4_0_PCI_EXP_WAK                           BIT14
+#define EFI_ACPI_4_0_USE_PLATFORM_CLOCK                    BIT15
+#define EFI_ACPI_4_0_S4_RTC_STS_VALID                      BIT16
+#define EFI_ACPI_4_0_REMOTE_POWER_ON_CAPABLE               BIT17
+#define EFI_ACPI_4_0_FORCE_APIC_CLUSTER_MODEL              BIT18
+#define EFI_ACPI_4_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE  BIT19
 
 ///
 /// Firmware ACPI Control Structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
-  UINT32  HardwareSignature;
-  UINT32  FirmwareWakingVector;
-  UINT32  GlobalLock;
-  UINT32  Flags;
-  UINT64  XFirmwareWakingVector;
-  UINT8   Version;
-  UINT8   Reserved0[3];
-  UINT32  OspmFlags;
-  UINT8   Reserved1[24];
+  UINT32    Signature;
+  UINT32    Length;
+  UINT32    HardwareSignature;
+  UINT32    FirmwareWakingVector;
+  UINT32    GlobalLock;
+  UINT32    Flags;
+  UINT64    XFirmwareWakingVector;
+  UINT8     Version;
+  UINT8     Reserved0[3];
+  UINT32    OspmFlags;
+  UINT8     Reserved1[24];
 } EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
 
 ///
@@ -244,14 +238,14 @@
 /// Firmware Control Structure Feature Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_4_0_S4BIOS_F                     BIT0
-#define EFI_ACPI_4_0_64BIT_WAKE_SUPPORTED_F       BIT1
+#define EFI_ACPI_4_0_S4BIOS_F                BIT0
+#define EFI_ACPI_4_0_64BIT_WAKE_SUPPORTED_F  BIT1
 
 ///
 /// OSPM Enabled Firmware Control Structure Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_4_0_OSPM_64BIT_WAKE__F           BIT0
+#define EFI_ACPI_4_0_OSPM_64BIT_WAKE__F  BIT0
 
 //
 // Differentiated System Description Table,
@@ -260,29 +254,29 @@
 // no definition needed as they are common description table header, the same with
 // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
 //
-#define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02
-#define EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02
+#define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x02
+#define EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION       0x02
 
 ///
 /// Multiple APIC Description Table header definition.  The rest of the table
 /// must be defined in a platform specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      LocalApicAddress;
-  UINT32                      Flags;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         LocalApicAddress;
+  UINT32                         Flags;
 } EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
 
 ///
 /// MADT Revision (as defined in ACPI 4.0 spec.)
 ///
-#define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03
+#define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION  0x03
 
 ///
 /// Multiple APIC Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_4_0_PCAT_COMPAT         BIT0
+#define EFI_ACPI_4_0_PCAT_COMPAT  BIT0
 
 //
 // Multiple APIC Description Table APIC structure types
@@ -309,57 +303,57 @@
 /// Processor Local APIC Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   ApicId;
-  UINT32  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     ApicId;
+  UINT32    Flags;
 } EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
 
 ///
 /// Local APIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_4_0_LOCAL_APIC_ENABLED        BIT0
+#define EFI_ACPI_4_0_LOCAL_APIC_ENABLED  BIT0
 
 ///
 /// IO APIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  IoApicAddress;
-  UINT32  GlobalSystemInterruptBase;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    IoApicAddress;
+  UINT32    GlobalSystemInterruptBase;
 } EFI_ACPI_4_0_IO_APIC_STRUCTURE;
 
 ///
 /// Interrupt Source Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Bus;
-  UINT8   Source;
-  UINT32  GlobalSystemInterrupt;
-  UINT16  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Bus;
+  UINT8     Source;
+  UINT32    GlobalSystemInterrupt;
+  UINT16    Flags;
 } EFI_ACPI_4_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
 
 ///
 /// Platform Interrupt Sources Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT8   InterruptType;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT8   IoSapicVector;
-  UINT32  GlobalSystemInterrupt;
-  UINT32  PlatformInterruptSourceFlags;
-  UINT8   CpeiProcessorOverride;
-  UINT8   Reserved[31];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT8     InterruptType;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT8     IoSapicVector;
+  UINT32    GlobalSystemInterrupt;
+  UINT32    PlatformInterruptSourceFlags;
+  UINT8     CpeiProcessorOverride;
+  UINT8     Reserved[31];
 } EFI_ACPI_4_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
 
 //
@@ -373,43 +367,43 @@
 /// Non-Maskable Interrupt Source Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT32  GlobalSystemInterrupt;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT32    GlobalSystemInterrupt;
 } EFI_ACPI_4_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
 
 ///
 /// Local APIC NMI Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT16  Flags;
-  UINT8   LocalApicLint;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT16    Flags;
+  UINT8     LocalApicLint;
 } EFI_ACPI_4_0_LOCAL_APIC_NMI_STRUCTURE;
 
 ///
 /// Local APIC Address Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT64  LocalApicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT64    LocalApicAddress;
 } EFI_ACPI_4_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
 
 ///
 /// IO SAPIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  GlobalSystemInterruptBase;
-  UINT64  IoSapicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    GlobalSystemInterruptBase;
+  UINT64    IoSapicAddress;
 } EFI_ACPI_4_0_IO_SAPIC_STRUCTURE;
 
 ///
@@ -417,75 +411,75 @@
 /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   LocalSapicId;
-  UINT8   LocalSapicEid;
-  UINT8   Reserved[3];
-  UINT32  Flags;
-  UINT32  ACPIProcessorUIDValue;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     LocalSapicId;
+  UINT8     LocalSapicEid;
+  UINT8     Reserved[3];
+  UINT32    Flags;
+  UINT32    ACPIProcessorUIDValue;
 } EFI_ACPI_4_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
 
 ///
 /// Platform Interrupt Sources Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT8   InterruptType;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT8   IoSapicVector;
-  UINT32  GlobalSystemInterrupt;
-  UINT32  PlatformInterruptSourceFlags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT8     InterruptType;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT8     IoSapicVector;
+  UINT32    GlobalSystemInterrupt;
+  UINT32    PlatformInterruptSourceFlags;
 } EFI_ACPI_4_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
 
 ///
 /// Platform Interrupt Source Flags.
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_4_0_CPEI_PROCESSOR_OVERRIDE          BIT0
+#define EFI_ACPI_4_0_CPEI_PROCESSOR_OVERRIDE  BIT0
 
 ///
 /// Processor Local x2APIC Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Reserved[2];
-  UINT32  X2ApicId;
-  UINT32  Flags;
-  UINT32  AcpiProcessorUid;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Reserved[2];
+  UINT32    X2ApicId;
+  UINT32    Flags;
+  UINT32    AcpiProcessorUid;
 } EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
 
 ///
 /// Local x2APIC NMI Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT32  AcpiProcessorUid;
-  UINT8   LocalX2ApicLint;
-  UINT8   Reserved[3];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT32    AcpiProcessorUid;
+  UINT8     LocalX2ApicLint;
+  UINT8     Reserved[3];
 } EFI_ACPI_4_0_LOCAL_X2APIC_NMI_STRUCTURE;
 
 ///
 /// Smart Battery Description Table (SBST)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      WarningEnergyLevel;
-  UINT32                      LowEnergyLevel;
-  UINT32                      CriticalEnergyLevel;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         WarningEnergyLevel;
+  UINT32                         LowEnergyLevel;
+  UINT32                         CriticalEnergyLevel;
 } EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE;
 
 ///
 /// SBST Version (as defined in ACPI 4.0 spec.)
 ///
-#define EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Embedded Controller Boot Resources Table (ECDT)
@@ -493,11 +487,11 @@
 /// a fully qualified reference to the name space object.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE  EcControl;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE  EcData;
-  UINT32                                  Uid;
-  UINT8                                   GpeBit;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    EcControl;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    EcData;
+  UINT32                                    Uid;
+  UINT8                                     GpeBit;
 } EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
 
 ///
@@ -510,9 +504,9 @@
 /// must be defined in a platform specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      Reserved1;  ///< Must be set to 1
-  UINT64                      Reserved2;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         Reserved1; ///< Must be set to 1
+  UINT64                         Reserved2;
 } EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
 
 ///
@@ -533,57 +527,57 @@
 /// Processor Local APIC/SAPIC Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   ProximityDomain7To0;
-  UINT8   ApicId;
-  UINT32  Flags;
-  UINT8   LocalSapicEid;
-  UINT8   ProximityDomain31To8[3];
-  UINT32  ClockDomain;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     ProximityDomain7To0;
+  UINT8     ApicId;
+  UINT32    Flags;
+  UINT8     LocalSapicEid;
+  UINT8     ProximityDomain31To8[3];
+  UINT32    ClockDomain;
 } EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
 
 ///
 /// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
+#define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED  (1 << 0)
 
 ///
 /// Memory Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT32  ProximityDomain;
-  UINT16  Reserved1;
-  UINT32  AddressBaseLow;
-  UINT32  AddressBaseHigh;
-  UINT32  LengthLow;
-  UINT32  LengthHigh;
-  UINT32  Reserved2;
-  UINT32  Flags;
-  UINT64  Reserved3;
+  UINT8     Type;
+  UINT8     Length;
+  UINT32    ProximityDomain;
+  UINT16    Reserved1;
+  UINT32    AddressBaseLow;
+  UINT32    AddressBaseHigh;
+  UINT32    LengthLow;
+  UINT32    LengthHigh;
+  UINT32    Reserved2;
+  UINT32    Flags;
+  UINT64    Reserved3;
 } EFI_ACPI_4_0_MEMORY_AFFINITY_STRUCTURE;
 
 //
 // Memory Flags.  All other bits are reserved and must be 0.
 //
-#define EFI_ACPI_4_0_MEMORY_ENABLED       (1 << 0)
-#define EFI_ACPI_4_0_MEMORY_HOT_PLUGGABLE (1 << 1)
-#define EFI_ACPI_4_0_MEMORY_NONVOLATILE   (1 << 2)
+#define EFI_ACPI_4_0_MEMORY_ENABLED        (1 << 0)
+#define EFI_ACPI_4_0_MEMORY_HOT_PLUGGABLE  (1 << 1)
+#define EFI_ACPI_4_0_MEMORY_NONVOLATILE    (1 << 2)
 
 ///
 /// Processor Local x2APIC Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Reserved1[2];
-  UINT32  ProximityDomain;
-  UINT32  X2ApicId;
-  UINT32  Flags;
-  UINT32  ClockDomain;
-  UINT8   Reserved2[4];
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Reserved1[2];
+  UINT32    ProximityDomain;
+  UINT32    X2ApicId;
+  UINT32    Flags;
+  UINT32    ClockDomain;
+  UINT8     Reserved2[4];
 } EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
 
 ///
@@ -591,8 +585,8 @@
 /// The rest of the table is a matrix.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT64                      NumberOfSystemLocalities;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT64                         NumberOfSystemLocalities;
 } EFI_ACPI_4_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
 
 ///
@@ -604,14 +598,14 @@
 /// Corrected Platform Error Polling Table (CPEP)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT8                       Reserved[8];
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT8                          Reserved[8];
 } EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
 
 ///
 /// CPEP Version (as defined in ACPI 4.0 spec.)
 ///
-#define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
+#define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION  0x01
 
 //
 // CPEP processor structure types.
@@ -622,82 +616,83 @@
 /// Corrected Platform Error Polling Processor Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT32  PollingInterval;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT32    PollingInterval;
 } EFI_ACPI_4_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
 
 ///
 /// Maximum System Characteristics Table (MSCT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      OffsetProxDomInfo;
-  UINT32                      MaximumNumberOfProximityDomains;
-  UINT32                      MaximumNumberOfClockDomains;
-  UINT64                      MaximumPhysicalAddress;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         OffsetProxDomInfo;
+  UINT32                         MaximumNumberOfProximityDomains;
+  UINT32                         MaximumNumberOfClockDomains;
+  UINT64                         MaximumPhysicalAddress;
 } EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
 
 ///
 /// MSCT Version (as defined in ACPI 4.0 spec.)
 ///
-#define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
+#define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION  0x01
 
 ///
 /// Maximum Proximity Domain Information Structure Definition
 ///
 typedef struct {
-  UINT8   Revision;
-  UINT8   Length;
-  UINT32  ProximityDomainRangeLow;
-  UINT32  ProximityDomainRangeHigh;
-  UINT32  MaximumProcessorCapacity;
-  UINT64  MaximumMemoryCapacity;
+  UINT8     Revision;
+  UINT8     Length;
+  UINT32    ProximityDomainRangeLow;
+  UINT32    ProximityDomainRangeHigh;
+  UINT32    MaximumProcessorCapacity;
+  UINT64    MaximumMemoryCapacity;
 } EFI_ACPI_4_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
 
 ///
 /// Boot Error Record Table (BERT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      BootErrorRegionLength;
-  UINT64                      BootErrorRegion;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         BootErrorRegionLength;
+  UINT64                         BootErrorRegion;
 } EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_HEADER;
 
 ///
 /// BERT Version (as defined in ACPI 4.0 spec.)
 ///
-#define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
+#define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_REVISION  0x01
 
 ///
 /// Boot Error Region Block Status Definition
 ///
 typedef struct {
-  UINT32       UncorrectableErrorValid:1;
-  UINT32       CorrectableErrorValid:1;
-  UINT32       MultipleUncorrectableErrors:1;
-  UINT32       MultipleCorrectableErrors:1;
-  UINT32       ErrorDataEntryCount:10;
-  UINT32       Reserved:18;
+  UINT32    UncorrectableErrorValid     : 1;
+  UINT32    CorrectableErrorValid       : 1;
+  UINT32    MultipleUncorrectableErrors : 1;
+  UINT32    MultipleCorrectableErrors   : 1;
+  UINT32    ErrorDataEntryCount         : 10;
+  UINT32    Reserved                    : 18;
 } EFI_ACPI_4_0_ERROR_BLOCK_STATUS;
 
 ///
 /// Boot Error Region Definition
 ///
 typedef struct {
-  EFI_ACPI_4_0_ERROR_BLOCK_STATUS              BlockStatus;
-  UINT32                                       RawDataOffset;
-  UINT32                                       RawDataLength;
-  UINT32                                       DataLength;
-  UINT32                                       ErrorSeverity;
+  EFI_ACPI_4_0_ERROR_BLOCK_STATUS    BlockStatus;
+  UINT32                             RawDataOffset;
+  UINT32                             RawDataLength;
+  UINT32                             DataLength;
+  UINT32                             ErrorSeverity;
 } EFI_ACPI_4_0_BOOT_ERROR_REGION_STRUCTURE;
 
 //
 // Boot Error Severity types
 //
 #define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTABLE  0x00
+#define EFI_ACPI_4_0_ERROR_SEVERITY_RECOVERABLE  0x00
 #define EFI_ACPI_4_0_ERROR_SEVERITY_FATAL        0x01
 #define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTED    0x02
 #define EFI_ACPI_4_0_ERROR_SEVERITY_NONE         0x03
@@ -706,14 +701,14 @@
 /// Generic Error Data Entry Definition
 ///
 typedef struct {
-  UINT8    SectionType[16];
-  UINT32   ErrorSeverity;
-  UINT16   Revision;
-  UINT8    ValidationBits;
-  UINT8    Flags;
-  UINT32   ErrorDataLength;
-  UINT8    FruId[16];
-  UINT8    FruText[20];
+  UINT8     SectionType[16];
+  UINT32    ErrorSeverity;
+  UINT16    Revision;
+  UINT8     ValidationBits;
+  UINT8     Flags;
+  UINT32    ErrorDataLength;
+  UINT8     FruId[16];
+  UINT8     FruText[20];
 } EFI_ACPI_4_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
 
 ///
@@ -725,14 +720,14 @@
 /// HEST - Hardware Error Source Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      ErrorSourceCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         ErrorSourceCount;
 } EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
 
 ///
 /// HEST Version (as defined in ACPI 4.0 spec.)
 ///
-#define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
+#define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION  0x01
 
 //
 // Error Source structure types.
@@ -748,383 +743,383 @@
 //
 // Error Source structure flags.
 //
-#define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST       (1 << 0)
-#define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_GLOBAL               (1 << 1)
+#define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST  (1 << 0)
+#define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_GLOBAL          (1 << 1)
 
 ///
 /// IA-32 Architecture Machine Check Exception Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT64  GlobalCapabilityInitData;
-  UINT64  GlobalControlInitData;
-  UINT8   NumberOfHardwareBanks;
-  UINT8   Reserved1[7];
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT64    GlobalCapabilityInitData;
+  UINT64    GlobalControlInitData;
+  UINT8     NumberOfHardwareBanks;
+  UINT8     Reserved1[7];
 } EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
 
 ///
 /// IA-32 Architecture Machine Check Bank Structure Definition
 ///
 typedef struct {
-  UINT8   BankNumber;
-  UINT8   ClearStatusOnInitialization;
-  UINT8   StatusDataFormat;
-  UINT8   Reserved0;
-  UINT32  ControlRegisterMsrAddress;
-  UINT64  ControlInitData;
-  UINT32  StatusRegisterMsrAddress;
-  UINT32  AddressRegisterMsrAddress;
-  UINT32  MiscRegisterMsrAddress;
+  UINT8     BankNumber;
+  UINT8     ClearStatusOnInitialization;
+  UINT8     StatusDataFormat;
+  UINT8     Reserved0;
+  UINT32    ControlRegisterMsrAddress;
+  UINT64    ControlInitData;
+  UINT32    StatusRegisterMsrAddress;
+  UINT32    AddressRegisterMsrAddress;
+  UINT32    MiscRegisterMsrAddress;
 } EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
 
 ///
 /// IA-32 Architecture Machine Check Bank Structure MCA data format
 ///
-#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32      0x00
-#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64   0x01
-#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64     0x02
+#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32     0x00
+#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64  0x01
+#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64    0x02
 
 //
 // Hardware Error Notification types. All other values are reserved
 //
-#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_POLLED                0x00
-#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT    0x01
-#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT       0x02
-#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_SCI                   0x03
-#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_NMI                   0x04
+#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_POLLED              0x00
+#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT  0x01
+#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT     0x02
+#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_SCI                 0x03
+#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_NMI                 0x04
 
 ///
 /// Hardware Error Notification Configuration Write Enable Structure Definition
 ///
 typedef struct {
-  UINT16    Type:1;
-  UINT16    PollInterval:1;
-  UINT16    SwitchToPollingThresholdValue:1;
-  UINT16    SwitchToPollingThresholdWindow:1;
-  UINT16    ErrorThresholdValue:1;
-  UINT16    ErrorThresholdWindow:1;
-  UINT16    Reserved:10;
+  UINT16    Type                           : 1;
+  UINT16    PollInterval                   : 1;
+  UINT16    SwitchToPollingThresholdValue  : 1;
+  UINT16    SwitchToPollingThresholdWindow : 1;
+  UINT16    ErrorThresholdValue            : 1;
+  UINT16    ErrorThresholdWindow           : 1;
+  UINT16    Reserved                       : 10;
 } EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
 
 ///
 /// Hardware Error Notification Structure Definition
 ///
 typedef struct {
-  UINT8                                                                          Type;
-  UINT8                                                                          Length;
-  EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE  ConfigurationWriteEnable;
-  UINT32                                                                         PollInterval;
-  UINT32                                                                         Vector;
-  UINT32                                                                         SwitchToPollingThresholdValue;
-  UINT32                                                                         SwitchToPollingThresholdWindow;
-  UINT32                                                                         ErrorThresholdValue;
-  UINT32                                                                         ErrorThresholdWindow;
+  UINT8                                                                            Type;
+  UINT8                                                                            Length;
+  EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE    ConfigurationWriteEnable;
+  UINT32                                                                           PollInterval;
+  UINT32                                                                           Vector;
+  UINT32                                                                           SwitchToPollingThresholdValue;
+  UINT32                                                                           SwitchToPollingThresholdWindow;
+  UINT32                                                                           ErrorThresholdValue;
+  UINT32                                                                           ErrorThresholdWindow;
 } EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
 
 ///
 /// IA-32 Architecture Corrected Machine Check Structure Definition
 ///
 typedef struct {
-  UINT16                                                 Type;
-  UINT16                                                 SourceId;
-  UINT8                                                  Reserved0[2];
-  UINT8                                                  Flags;
-  UINT8                                                  Enabled;
-  UINT32                                                 NumberOfRecordsToPreAllocate;
-  UINT32                                                 MaxSectionsPerRecord;
-  EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
-  UINT8                                                  NumberOfHardwareBanks;
-  UINT8                                                  Reserved1[3];
+  UINT16                                                Type;
+  UINT16                                                SourceId;
+  UINT8                                                 Reserved0[2];
+  UINT8                                                 Flags;
+  UINT8                                                 Enabled;
+  UINT32                                                NumberOfRecordsToPreAllocate;
+  UINT32                                                MaxSectionsPerRecord;
+  EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE    NotificationStructure;
+  UINT8                                                 NumberOfHardwareBanks;
+  UINT8                                                 Reserved1[3];
 } EFI_ACPI_4_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
 
 ///
 /// IA-32 Architecture NMI Error Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  MaxRawDataLength;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    MaxRawDataLength;
 } EFI_ACPI_4_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
 
 ///
 /// PCI Express Root Port AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
-  UINT32  RootErrorCommand;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
+  UINT32    RootErrorCommand;
 } EFI_ACPI_4_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
 
 ///
 /// PCI Express Device AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
 } EFI_ACPI_4_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
 
 ///
 /// PCI Express Bridge AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
-  UINT32  SecondaryUncorrectableErrorMask;
-  UINT32  SecondaryUncorrectableErrorSeverity;
-  UINT32  SecondaryAdvancedErrorCapabilitiesAndControl;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
+  UINT32    SecondaryUncorrectableErrorMask;
+  UINT32    SecondaryUncorrectableErrorSeverity;
+  UINT32    SecondaryAdvancedErrorCapabilitiesAndControl;
 } EFI_ACPI_4_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
 
 ///
 /// Generic Hardware Error Source Structure Definition
 ///
 typedef struct {
-  UINT16                                                 Type;
-  UINT16                                                 SourceId;
-  UINT16                                                 RelatedSourceId;
-  UINT8                                                  Flags;
-  UINT8                                                  Enabled;
-  UINT32                                                 NumberOfRecordsToPreAllocate;
-  UINT32                                                 MaxSectionsPerRecord;
-  UINT32                                                 MaxRawDataLength;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE                 ErrorStatusAddress;
-  EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
-  UINT32                                                 ErrorStatusBlockLength;
+  UINT16                                                Type;
+  UINT16                                                SourceId;
+  UINT16                                                RelatedSourceId;
+  UINT8                                                 Flags;
+  UINT8                                                 Enabled;
+  UINT32                                                NumberOfRecordsToPreAllocate;
+  UINT32                                                MaxSectionsPerRecord;
+  UINT32                                                MaxRawDataLength;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE                ErrorStatusAddress;
+  EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE    NotificationStructure;
+  UINT32                                                ErrorStatusBlockLength;
 } EFI_ACPI_4_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
 
 ///
 /// Generic Error Status Definition
 ///
 typedef struct {
-  EFI_ACPI_4_0_ERROR_BLOCK_STATUS              BlockStatus;
-  UINT32                                       RawDataOffset;
-  UINT32                                       RawDataLength;
-  UINT32                                       DataLength;
-  UINT32                                       ErrorSeverity;
+  EFI_ACPI_4_0_ERROR_BLOCK_STATUS    BlockStatus;
+  UINT32                             RawDataOffset;
+  UINT32                             RawDataLength;
+  UINT32                             DataLength;
+  UINT32                             ErrorSeverity;
 } EFI_ACPI_4_0_GENERIC_ERROR_STATUS_STRUCTURE;
 
 ///
 /// ERST - Error Record Serialization Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      SerializationHeaderSize;
-  UINT8                       Reserved0[4];
-  UINT32                      InstructionEntryCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         SerializationHeaderSize;
+  UINT8                          Reserved0[4];
+  UINT32                         InstructionEntryCount;
 } EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
 
 ///
 /// ERST Version (as defined in ACPI 4.0 spec.)
 ///
-#define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
+#define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION  0x01
 
 ///
 /// ERST Serialization Actions
 ///
-#define EFI_ACPI_4_0_ERST_BEGIN_WRITE_OPERATION                    0x00
-#define EFI_ACPI_4_0_ERST_BEGIN_READ_OPERATION                     0x01
-#define EFI_ACPI_4_0_ERST_BEGIN_CLEAR_OPERATION                    0x02
-#define EFI_ACPI_4_0_ERST_END_OPERATION                            0x03
-#define EFI_ACPI_4_0_ERST_SET_RECORD_OFFSET                        0x04
-#define EFI_ACPI_4_0_ERST_EXECUTE_OPERATION                        0x05
-#define EFI_ACPI_4_0_ERST_CHECK_BUSY_STATUS                        0x06
-#define EFI_ACPI_4_0_ERST_GET_COMMAND_STATUS                       0x07
-#define EFI_ACPI_4_0_ERST_GET_RECORD_IDENTIFIER                    0x08
-#define EFI_ACPI_4_0_ERST_SET_RECORD_IDENTIFIER                    0x09
-#define EFI_ACPI_4_0_ERST_GET_RECORD_COUNT                         0x0A
-#define EFI_ACPI_4_0_ERST_BEGIN_DUMMY_WRITE_OPERATION              0x0B
-#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE              0x0D
-#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH       0x0E
-#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES   0x0F
+#define EFI_ACPI_4_0_ERST_BEGIN_WRITE_OPERATION                   0x00
+#define EFI_ACPI_4_0_ERST_BEGIN_READ_OPERATION                    0x01
+#define EFI_ACPI_4_0_ERST_BEGIN_CLEAR_OPERATION                   0x02
+#define EFI_ACPI_4_0_ERST_END_OPERATION                           0x03
+#define EFI_ACPI_4_0_ERST_SET_RECORD_OFFSET                       0x04
+#define EFI_ACPI_4_0_ERST_EXECUTE_OPERATION                       0x05
+#define EFI_ACPI_4_0_ERST_CHECK_BUSY_STATUS                       0x06
+#define EFI_ACPI_4_0_ERST_GET_COMMAND_STATUS                      0x07
+#define EFI_ACPI_4_0_ERST_GET_RECORD_IDENTIFIER                   0x08
+#define EFI_ACPI_4_0_ERST_SET_RECORD_IDENTIFIER                   0x09
+#define EFI_ACPI_4_0_ERST_GET_RECORD_COUNT                        0x0A
+#define EFI_ACPI_4_0_ERST_BEGIN_DUMMY_WRITE_OPERATION             0x0B
+#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE             0x0D
+#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH      0x0E
+#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES  0x0F
 
 ///
 /// ERST Action Command Status
 ///
-#define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS                           0x00
-#define EFI_ACPI_4_0_EINJ_STATUS_NOT_ENOUGH_SPACE                  0x01
-#define EFI_ACPI_4_0_EINJ_STATUS_HARDWARE_NOT_AVAILABLE            0x02
-#define EFI_ACPI_4_0_EINJ_STATUS_FAILED                            0x03
-#define EFI_ACPI_4_0_EINJ_STATUS_RECORD_STORE_EMPTY                0x04
-#define EFI_ACPI_4_0_EINJ_STATUS_RECORD_NOT_FOUND                  0x05
+#define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS                 0x00
+#define EFI_ACPI_4_0_EINJ_STATUS_NOT_ENOUGH_SPACE        0x01
+#define EFI_ACPI_4_0_EINJ_STATUS_HARDWARE_NOT_AVAILABLE  0x02
+#define EFI_ACPI_4_0_EINJ_STATUS_FAILED                  0x03
+#define EFI_ACPI_4_0_EINJ_STATUS_RECORD_STORE_EMPTY      0x04
+#define EFI_ACPI_4_0_EINJ_STATUS_RECORD_NOT_FOUND        0x05
 
 ///
 /// ERST Serialization Instructions
 ///
-#define EFI_ACPI_4_0_ERST_READ_REGISTER                            0x00
-#define EFI_ACPI_4_0_ERST_READ_REGISTER_VALUE                      0x01
-#define EFI_ACPI_4_0_ERST_WRITE_REGISTER                           0x02
-#define EFI_ACPI_4_0_ERST_WRITE_REGISTER_VALUE                     0x03
-#define EFI_ACPI_4_0_ERST_NOOP                                     0x04
-#define EFI_ACPI_4_0_ERST_LOAD_VAR1                                0x05
-#define EFI_ACPI_4_0_ERST_LOAD_VAR2                                0x06
-#define EFI_ACPI_4_0_ERST_STORE_VAR1                               0x07
-#define EFI_ACPI_4_0_ERST_ADD                                      0x08
-#define EFI_ACPI_4_0_ERST_SUBTRACT                                 0x09
-#define EFI_ACPI_4_0_ERST_ADD_VALUE                                0x0A
-#define EFI_ACPI_4_0_ERST_SUBTRACT_VALUE                           0x0B
-#define EFI_ACPI_4_0_ERST_STALL                                    0x0C
-#define EFI_ACPI_4_0_ERST_STALL_WHILE_TRUE                         0x0D
-#define EFI_ACPI_4_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE            0x0E
-#define EFI_ACPI_4_0_ERST_GOTO                                     0x0F
-#define EFI_ACPI_4_0_ERST_SET_SRC_ADDRESS_BASE                     0x10
-#define EFI_ACPI_4_0_ERST_SET_DST_ADDRESS_BASE                     0x11
-#define EFI_ACPI_4_0_ERST_MOVE_DATA                                0x12
+#define EFI_ACPI_4_0_ERST_READ_REGISTER                  0x00
+#define EFI_ACPI_4_0_ERST_READ_REGISTER_VALUE            0x01
+#define EFI_ACPI_4_0_ERST_WRITE_REGISTER                 0x02
+#define EFI_ACPI_4_0_ERST_WRITE_REGISTER_VALUE           0x03
+#define EFI_ACPI_4_0_ERST_NOOP                           0x04
+#define EFI_ACPI_4_0_ERST_LOAD_VAR1                      0x05
+#define EFI_ACPI_4_0_ERST_LOAD_VAR2                      0x06
+#define EFI_ACPI_4_0_ERST_STORE_VAR1                     0x07
+#define EFI_ACPI_4_0_ERST_ADD                            0x08
+#define EFI_ACPI_4_0_ERST_SUBTRACT                       0x09
+#define EFI_ACPI_4_0_ERST_ADD_VALUE                      0x0A
+#define EFI_ACPI_4_0_ERST_SUBTRACT_VALUE                 0x0B
+#define EFI_ACPI_4_0_ERST_STALL                          0x0C
+#define EFI_ACPI_4_0_ERST_STALL_WHILE_TRUE               0x0D
+#define EFI_ACPI_4_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE  0x0E
+#define EFI_ACPI_4_0_ERST_GOTO                           0x0F
+#define EFI_ACPI_4_0_ERST_SET_SRC_ADDRESS_BASE           0x10
+#define EFI_ACPI_4_0_ERST_SET_DST_ADDRESS_BASE           0x11
+#define EFI_ACPI_4_0_ERST_MOVE_DATA                      0x12
 
 ///
 /// ERST Instruction Flags
 ///
-#define EFI_ACPI_4_0_ERST_PRESERVE_REGISTER                        0x01
+#define EFI_ACPI_4_0_ERST_PRESERVE_REGISTER  0x01
 
 ///
 /// ERST Serialization Instruction Entry
 ///
 typedef struct {
-  UINT8                                    SerializationAction;
-  UINT8                                    Instruction;
-  UINT8                                    Flags;
-  UINT8                                    Reserved0;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
-  UINT64                                   Value;
-  UINT64                                   Mask;
+  UINT8                                     SerializationAction;
+  UINT8                                     Instruction;
+  UINT8                                     Flags;
+  UINT8                                     Reserved0;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    RegisterRegion;
+  UINT64                                    Value;
+  UINT64                                    Mask;
 } EFI_ACPI_4_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
 
 ///
 /// EINJ - Error Injection Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      InjectionHeaderSize;
-  UINT8                       InjectionFlags;
-  UINT8                       Reserved0[3];
-  UINT32                      InjectionEntryCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         InjectionHeaderSize;
+  UINT8                          InjectionFlags;
+  UINT8                          Reserved0[3];
+  UINT32                         InjectionEntryCount;
 } EFI_ACPI_4_0_ERROR_INJECTION_TABLE_HEADER;
 
 ///
 /// EINJ Version (as defined in ACPI 4.0 spec.)
 ///
-#define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_REVISION 0x01
+#define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_REVISION  0x01
 
 ///
 /// EINJ Error Injection Actions
 ///
-#define EFI_ACPI_4_0_EINJ_BEGIN_INJECTION_OPERATION                0x00
-#define EFI_ACPI_4_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE           0x01
-#define EFI_ACPI_4_0_EINJ_SET_ERROR_TYPE                           0x02
-#define EFI_ACPI_4_0_EINJ_GET_ERROR_TYPE                           0x03
-#define EFI_ACPI_4_0_EINJ_END_OPERATION                            0x04
-#define EFI_ACPI_4_0_EINJ_EXECUTE_OPERATION                        0x05
-#define EFI_ACPI_4_0_EINJ_CHECK_BUSY_STATUS                        0x06
-#define EFI_ACPI_4_0_EINJ_GET_COMMAND_STATUS                       0x07
-#define EFI_ACPI_4_0_EINJ_TRIGGER_ERROR                            0xFF
+#define EFI_ACPI_4_0_EINJ_BEGIN_INJECTION_OPERATION       0x00
+#define EFI_ACPI_4_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE  0x01
+#define EFI_ACPI_4_0_EINJ_SET_ERROR_TYPE                  0x02
+#define EFI_ACPI_4_0_EINJ_GET_ERROR_TYPE                  0x03
+#define EFI_ACPI_4_0_EINJ_END_OPERATION                   0x04
+#define EFI_ACPI_4_0_EINJ_EXECUTE_OPERATION               0x05
+#define EFI_ACPI_4_0_EINJ_CHECK_BUSY_STATUS               0x06
+#define EFI_ACPI_4_0_EINJ_GET_COMMAND_STATUS              0x07
+#define EFI_ACPI_4_0_EINJ_TRIGGER_ERROR                   0xFF
 
 ///
 /// EINJ Action Command Status
 ///
-#define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS                           0x00
-#define EFI_ACPI_4_0_EINJ_STATUS_UNKNOWN_FAILURE                   0x01
-#define EFI_ACPI_4_0_EINJ_STATUS_INVALID_ACCESS                    0x02
+#define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS          0x00
+#define EFI_ACPI_4_0_EINJ_STATUS_UNKNOWN_FAILURE  0x01
+#define EFI_ACPI_4_0_EINJ_STATUS_INVALID_ACCESS   0x02
 
 ///
 /// EINJ Error Type Definition
 ///
-#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_CORRECTABLE                 (1 << 0)
-#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL      (1 << 1)
-#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL         (1 << 2)
-#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_CORRECTABLE                    (1 << 3)
-#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL         (1 << 4)
-#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL            (1 << 5)
-#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE               (1 << 6)
-#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL    (1 << 7)
-#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL       (1 << 8)
-#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_CORRECTABLE                  (1 << 9)
-#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL       (1 << 10)
-#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL          (1 << 11)
+#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_CORRECTABLE               (1 << 0)
+#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL    (1 << 1)
+#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL       (1 << 2)
+#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_CORRECTABLE                  (1 << 3)
+#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL       (1 << 4)
+#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL          (1 << 5)
+#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE             (1 << 6)
+#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL  (1 << 7)
+#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL     (1 << 8)
+#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_CORRECTABLE                (1 << 9)
+#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL     (1 << 10)
+#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL        (1 << 11)
 
 ///
 /// EINJ Injection Instructions
 ///
-#define EFI_ACPI_4_0_EINJ_READ_REGISTER                            0x00
-#define EFI_ACPI_4_0_EINJ_READ_REGISTER_VALUE                      0x01
-#define EFI_ACPI_4_0_EINJ_WRITE_REGISTER                           0x02
-#define EFI_ACPI_4_0_EINJ_WRITE_REGISTER_VALUE                     0x03
-#define EFI_ACPI_4_0_EINJ_NOOP                                     0x04
+#define EFI_ACPI_4_0_EINJ_READ_REGISTER         0x00
+#define EFI_ACPI_4_0_EINJ_READ_REGISTER_VALUE   0x01
+#define EFI_ACPI_4_0_EINJ_WRITE_REGISTER        0x02
+#define EFI_ACPI_4_0_EINJ_WRITE_REGISTER_VALUE  0x03
+#define EFI_ACPI_4_0_EINJ_NOOP                  0x04
 
 ///
 /// EINJ Instruction Flags
 ///
-#define EFI_ACPI_4_0_EINJ_PRESERVE_REGISTER                        0x01
+#define EFI_ACPI_4_0_EINJ_PRESERVE_REGISTER  0x01
 
 ///
 /// EINJ Injection Instruction Entry
 ///
 typedef struct {
-  UINT8                                    InjectionAction;
-  UINT8                                    Instruction;
-  UINT8                                    Flags;
-  UINT8                                    Reserved0;
-  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
-  UINT64                                   Value;
-  UINT64                                   Mask;
+  UINT8                                     InjectionAction;
+  UINT8                                     Instruction;
+  UINT8                                     Flags;
+  UINT8                                     Reserved0;
+  EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE    RegisterRegion;
+  UINT64                                    Value;
+  UINT64                                    Mask;
 } EFI_ACPI_4_0_EINJ_INJECTION_INSTRUCTION_ENTRY;
 
 ///
 /// EINJ Trigger Action Table
 ///
 typedef struct {
-  UINT32  HeaderSize;
-  UINT32  Revision;
-  UINT32  TableSize;
-  UINT32  EntryCount;
+  UINT32    HeaderSize;
+  UINT32    Revision;
+  UINT32    TableSize;
+  UINT32    EntryCount;
 } EFI_ACPI_4_0_EINJ_TRIGGER_ACTION_TABLE;
 
 //
@@ -1272,7 +1267,7 @@
 #define EFI_ACPI_4_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'H', 'I')
 
 ///
-/// "SPCR" Serial Port Concole Redirection Table
+/// "SPCR" Serial Port Console Redirection Table
 ///
 #define EFI_ACPI_4_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
 
diff --git a/src/include/ipxe/efi/IndustryStandard/Acpi50.h b/src/include/ipxe/efi/IndustryStandard/Acpi50.h
index df9e715..7d57b9f 100644
--- a/src/include/ipxe/efi/IndustryStandard/Acpi50.h
+++ b/src/include/ipxe/efi/IndustryStandard/Acpi50.h
@@ -2,33 +2,28 @@
   ACPI 5.0 definitions from the ACPI Specification Revision 5.0a November 13, 2013.
 
   Copyright (c) 2014 Hewlett-Packard Development Company, L.P.<BR>
-  Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2011 - 2022, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 **/
 
 #ifndef _ACPI_5_0_H_
 #define _ACPI_5_0_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/Acpi40.h>
 
 //
-// Define for Desriptor
+// Define for Descriptor
 //
-#define ACPI_SMALL_FIXED_DMA_DESCRIPTOR_NAME                         0x0A
-#define ACPI_LARGE_GPIO_CONNECTION_DESCRIPTOR_NAME                   0x0C
-#define ACPI_LARGE_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR_NAME     0x0E
+#define ACPI_SMALL_FIXED_DMA_DESCRIPTOR_NAME                      0x0A
+#define ACPI_LARGE_GPIO_CONNECTION_DESCRIPTOR_NAME                0x0C
+#define ACPI_LARGE_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR_NAME  0x0E
 
-#define ACPI_FIXED_DMA_DESCRIPTOR                         0x55
-#define ACPI_GPIO_CONNECTION_DESCRIPTOR                   0x8C
-#define ACPI_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR     0x8E
+#define ACPI_FIXED_DMA_DESCRIPTOR                      0x55
+#define ACPI_GPIO_CONNECTION_DESCRIPTOR                0x8C
+#define ACPI_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR  0x8E
 
 #pragma pack(1)
 
@@ -36,10 +31,10 @@
 /// Generic DMA Descriptor.
 ///
 typedef PACKED struct {
-  ACPI_SMALL_RESOURCE_HEADER   Header;
-  UINT16                       DmaRequestLine;
-  UINT16                       DmaChannel;
-  UINT8                        DmaTransferWidth;
+  ACPI_SMALL_RESOURCE_HEADER    Header;
+  UINT16                        DmaRequestLine;
+  UINT16                        DmaChannel;
+  UINT8                         DmaTransferWidth;
 } EFI_ACPI_FIXED_DMA_DESCRIPTOR;
 
 ///
@@ -61,8 +56,8 @@
   UINT16                        VendorDataLength;
 } EFI_ACPI_GPIO_CONNECTION_DESCRIPTOR;
 
-#define EFI_ACPI_GPIO_CONNECTION_TYPE_INTERRUPT   0x0
-#define EFI_ACPI_GPIO_CONNECTION_TYPE_IO          0x1
+#define EFI_ACPI_GPIO_CONNECTION_TYPE_INTERRUPT  0x0
+#define EFI_ACPI_GPIO_CONNECTION_TYPE_IO         0x1
 
 ///
 /// Serial Bus Resource Descriptor (Generic)
@@ -76,7 +71,7 @@
   UINT16                        TypeSpecificFlags;
   UINT8                         TypeSpecificRevisionId;
   UINT16                        TypeDataLength;
-// Type specific data
+  // Type specific data
 } EFI_ACPI_SERIAL_BUS_RESOURCE_DESCRIPTOR;
 
 #define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_I2C   0x1
@@ -148,21 +143,21 @@
 /// ACPI 5.0 Generic Address Space definition
 ///
 typedef struct {
-  UINT8   AddressSpaceId;
-  UINT8   RegisterBitWidth;
-  UINT8   RegisterBitOffset;
-  UINT8   AccessSize;
-  UINT64  Address;
+  UINT8     AddressSpaceId;
+  UINT8     RegisterBitWidth;
+  UINT8     RegisterBitOffset;
+  UINT8     AccessSize;
+  UINT64    Address;
 } EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE;
 
 //
 // Generic Address Space Address IDs
 //
-#define EFI_ACPI_5_0_SYSTEM_MEMORY              0
-#define EFI_ACPI_5_0_SYSTEM_IO                  1
-#define EFI_ACPI_5_0_PCI_CONFIGURATION_SPACE    2
-#define EFI_ACPI_5_0_EMBEDDED_CONTROLLER        3
-#define EFI_ACPI_5_0_SMBUS                      4
+#define EFI_ACPI_5_0_SYSTEM_MEMORY                   0
+#define EFI_ACPI_5_0_SYSTEM_IO                       1
+#define EFI_ACPI_5_0_PCI_CONFIGURATION_SPACE         2
+#define EFI_ACPI_5_0_EMBEDDED_CONTROLLER             3
+#define EFI_ACPI_5_0_SMBUS                           4
 #define EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL  0x0A
 #define EFI_ACPI_5_0_FUNCTIONAL_FIXED_HARDWARE       0x7F
 
@@ -183,29 +178,29 @@
 /// Root System Description Pointer Structure
 ///
 typedef struct {
-  UINT64  Signature;
-  UINT8   Checksum;
-  UINT8   OemId[6];
-  UINT8   Revision;
-  UINT32  RsdtAddress;
-  UINT32  Length;
-  UINT64  XsdtAddress;
-  UINT8   ExtendedChecksum;
-  UINT8   Reserved[3];
+  UINT64    Signature;
+  UINT8     Checksum;
+  UINT8     OemId[6];
+  UINT8     Revision;
+  UINT32    RsdtAddress;
+  UINT32    Length;
+  UINT64    XsdtAddress;
+  UINT8     ExtendedChecksum;
+  UINT8     Reserved[3];
 } EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
 
 ///
 /// RSD_PTR Revision (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  ///< ACPISpec (Revision 5.0) says current value is 2
+#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION  0x02 ///< ACPISpec (Revision 5.0) says current value is 2
 
 ///
 /// Common table header, this prefaces all ACPI tables, including FACS, but
 /// excluding the RSD PTR structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
+  UINT32    Signature;
+  UINT32    Length;
 } EFI_ACPI_5_0_COMMON_HEADER;
 
 //
@@ -217,7 +212,7 @@
 ///
 /// RSDT Revision (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 //
 // Extended System Description Table
@@ -228,66 +223,66 @@
 ///
 /// XSDT Revision (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Fixed ACPI Description Table Structure (FADT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  UINT32                                  FirmwareCtrl;
-  UINT32                                  Dsdt;
-  UINT8                                   Reserved0;
-  UINT8                                   PreferredPmProfile;
-  UINT16                                  SciInt;
-  UINT32                                  SmiCmd;
-  UINT8                                   AcpiEnable;
-  UINT8                                   AcpiDisable;
-  UINT8                                   S4BiosReq;
-  UINT8                                   PstateCnt;
-  UINT32                                  Pm1aEvtBlk;
-  UINT32                                  Pm1bEvtBlk;
-  UINT32                                  Pm1aCntBlk;
-  UINT32                                  Pm1bCntBlk;
-  UINT32                                  Pm2CntBlk;
-  UINT32                                  PmTmrBlk;
-  UINT32                                  Gpe0Blk;
-  UINT32                                  Gpe1Blk;
-  UINT8                                   Pm1EvtLen;
-  UINT8                                   Pm1CntLen;
-  UINT8                                   Pm2CntLen;
-  UINT8                                   PmTmrLen;
-  UINT8                                   Gpe0BlkLen;
-  UINT8                                   Gpe1BlkLen;
-  UINT8                                   Gpe1Base;
-  UINT8                                   CstCnt;
-  UINT16                                  PLvl2Lat;
-  UINT16                                  PLvl3Lat;
-  UINT16                                  FlushSize;
-  UINT16                                  FlushStride;
-  UINT8                                   DutyOffset;
-  UINT8                                   DutyWidth;
-  UINT8                                   DayAlrm;
-  UINT8                                   MonAlrm;
-  UINT8                                   Century;
-  UINT16                                  IaPcBootArch;
-  UINT8                                   Reserved1;
-  UINT32                                  Flags;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  ResetReg;
-  UINT8                                   ResetValue;
-  UINT8                                   Reserved2[3];
-  UINT64                                  XFirmwareCtrl;
-  UINT64                                  XDsdt;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  SleepControlReg;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  SleepStatusReg;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  UINT32                                    FirmwareCtrl;
+  UINT32                                    Dsdt;
+  UINT8                                     Reserved0;
+  UINT8                                     PreferredPmProfile;
+  UINT16                                    SciInt;
+  UINT32                                    SmiCmd;
+  UINT8                                     AcpiEnable;
+  UINT8                                     AcpiDisable;
+  UINT8                                     S4BiosReq;
+  UINT8                                     PstateCnt;
+  UINT32                                    Pm1aEvtBlk;
+  UINT32                                    Pm1bEvtBlk;
+  UINT32                                    Pm1aCntBlk;
+  UINT32                                    Pm1bCntBlk;
+  UINT32                                    Pm2CntBlk;
+  UINT32                                    PmTmrBlk;
+  UINT32                                    Gpe0Blk;
+  UINT32                                    Gpe1Blk;
+  UINT8                                     Pm1EvtLen;
+  UINT8                                     Pm1CntLen;
+  UINT8                                     Pm2CntLen;
+  UINT8                                     PmTmrLen;
+  UINT8                                     Gpe0BlkLen;
+  UINT8                                     Gpe1BlkLen;
+  UINT8                                     Gpe1Base;
+  UINT8                                     CstCnt;
+  UINT16                                    PLvl2Lat;
+  UINT16                                    PLvl3Lat;
+  UINT16                                    FlushSize;
+  UINT16                                    FlushStride;
+  UINT8                                     DutyOffset;
+  UINT8                                     DutyWidth;
+  UINT8                                     DayAlrm;
+  UINT8                                     MonAlrm;
+  UINT8                                     Century;
+  UINT16                                    IaPcBootArch;
+  UINT8                                     Reserved1;
+  UINT32                                    Flags;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    ResetReg;
+  UINT8                                     ResetValue;
+  UINT8                                     Reserved2[3];
+  UINT64                                    XFirmwareCtrl;
+  UINT64                                    XDsdt;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    XPm1aEvtBlk;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    XPm1bEvtBlk;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    XPm1aCntBlk;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    XPm1bCntBlk;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    XPm2CntBlk;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    XPmTmrBlk;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    XGpe0Blk;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    XGpe1Blk;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    SleepControlReg;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    SleepStatusReg;
 } EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE;
 
 ///
@@ -312,55 +307,55 @@
 // Fixed ACPI Description Table Boot Architecture Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_5_0_LEGACY_DEVICES              BIT0
-#define EFI_ACPI_5_0_8042                        BIT1
-#define EFI_ACPI_5_0_VGA_NOT_PRESENT             BIT2
-#define EFI_ACPI_5_0_MSI_NOT_SUPPORTED           BIT3
-#define EFI_ACPI_5_0_PCIE_ASPM_CONTROLS          BIT4
-#define EFI_ACPI_5_0_CMOS_RTC_NOT_PRESENT        BIT5
+#define EFI_ACPI_5_0_LEGACY_DEVICES        BIT0
+#define EFI_ACPI_5_0_8042                  BIT1
+#define EFI_ACPI_5_0_VGA_NOT_PRESENT       BIT2
+#define EFI_ACPI_5_0_MSI_NOT_SUPPORTED     BIT3
+#define EFI_ACPI_5_0_PCIE_ASPM_CONTROLS    BIT4
+#define EFI_ACPI_5_0_CMOS_RTC_NOT_PRESENT  BIT5
 
 //
 // Fixed ACPI Description Table Fixed Feature Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_5_0_WBINVD                                 BIT0
-#define EFI_ACPI_5_0_WBINVD_FLUSH                           BIT1
-#define EFI_ACPI_5_0_PROC_C1                                BIT2
-#define EFI_ACPI_5_0_P_LVL2_UP                              BIT3
-#define EFI_ACPI_5_0_PWR_BUTTON                             BIT4
-#define EFI_ACPI_5_0_SLP_BUTTON                             BIT5
-#define EFI_ACPI_5_0_FIX_RTC                                BIT6
-#define EFI_ACPI_5_0_RTC_S4                                 BIT7
-#define EFI_ACPI_5_0_TMR_VAL_EXT                            BIT8
-#define EFI_ACPI_5_0_DCK_CAP                                BIT9
-#define EFI_ACPI_5_0_RESET_REG_SUP                          BIT10
-#define EFI_ACPI_5_0_SEALED_CASE                            BIT11
-#define EFI_ACPI_5_0_HEADLESS                               BIT12
-#define EFI_ACPI_5_0_CPU_SW_SLP                             BIT13
-#define EFI_ACPI_5_0_PCI_EXP_WAK                            BIT14
-#define EFI_ACPI_5_0_USE_PLATFORM_CLOCK                     BIT15
-#define EFI_ACPI_5_0_S4_RTC_STS_VALID                       BIT16
-#define EFI_ACPI_5_0_REMOTE_POWER_ON_CAPABLE                BIT17
-#define EFI_ACPI_5_0_FORCE_APIC_CLUSTER_MODEL               BIT18
-#define EFI_ACPI_5_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE   BIT19
-#define EFI_ACPI_5_0_HW_REDUCED_ACPI                        BIT20
-#define EFI_ACPI_5_0_LOW_POWER_S0_IDLE_CAPABLE              BIT21
+#define EFI_ACPI_5_0_WBINVD                                BIT0
+#define EFI_ACPI_5_0_WBINVD_FLUSH                          BIT1
+#define EFI_ACPI_5_0_PROC_C1                               BIT2
+#define EFI_ACPI_5_0_P_LVL2_UP                             BIT3
+#define EFI_ACPI_5_0_PWR_BUTTON                            BIT4
+#define EFI_ACPI_5_0_SLP_BUTTON                            BIT5
+#define EFI_ACPI_5_0_FIX_RTC                               BIT6
+#define EFI_ACPI_5_0_RTC_S4                                BIT7
+#define EFI_ACPI_5_0_TMR_VAL_EXT                           BIT8
+#define EFI_ACPI_5_0_DCK_CAP                               BIT9
+#define EFI_ACPI_5_0_RESET_REG_SUP                         BIT10
+#define EFI_ACPI_5_0_SEALED_CASE                           BIT11
+#define EFI_ACPI_5_0_HEADLESS                              BIT12
+#define EFI_ACPI_5_0_CPU_SW_SLP                            BIT13
+#define EFI_ACPI_5_0_PCI_EXP_WAK                           BIT14
+#define EFI_ACPI_5_0_USE_PLATFORM_CLOCK                    BIT15
+#define EFI_ACPI_5_0_S4_RTC_STS_VALID                      BIT16
+#define EFI_ACPI_5_0_REMOTE_POWER_ON_CAPABLE               BIT17
+#define EFI_ACPI_5_0_FORCE_APIC_CLUSTER_MODEL              BIT18
+#define EFI_ACPI_5_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE  BIT19
+#define EFI_ACPI_5_0_HW_REDUCED_ACPI                       BIT20
+#define EFI_ACPI_5_0_LOW_POWER_S0_IDLE_CAPABLE             BIT21
 
 ///
 /// Firmware ACPI Control Structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
-  UINT32  HardwareSignature;
-  UINT32  FirmwareWakingVector;
-  UINT32  GlobalLock;
-  UINT32  Flags;
-  UINT64  XFirmwareWakingVector;
-  UINT8   Version;
-  UINT8   Reserved0[3];
-  UINT32  OspmFlags;
-  UINT8   Reserved1[24];
+  UINT32    Signature;
+  UINT32    Length;
+  UINT32    HardwareSignature;
+  UINT32    FirmwareWakingVector;
+  UINT32    GlobalLock;
+  UINT32    Flags;
+  UINT64    XFirmwareWakingVector;
+  UINT8     Version;
+  UINT8     Reserved0[3];
+  UINT32    OspmFlags;
+  UINT8     Reserved1[24];
 } EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
 
 ///
@@ -372,14 +367,14 @@
 /// Firmware Control Structure Feature Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_5_0_S4BIOS_F                     BIT0
-#define EFI_ACPI_5_0_64BIT_WAKE_SUPPORTED_F       BIT1
+#define EFI_ACPI_5_0_S4BIOS_F                BIT0
+#define EFI_ACPI_5_0_64BIT_WAKE_SUPPORTED_F  BIT1
 
 ///
 /// OSPM Enabled Firmware Control Structure Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_5_0_OSPM_64BIT_WAKE_F            BIT0
+#define EFI_ACPI_5_0_OSPM_64BIT_WAKE_F  BIT0
 
 //
 // Differentiated System Description Table,
@@ -388,29 +383,29 @@
 // no definition needed as they are common description table header, the same with
 // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
 //
-#define EFI_ACPI_5_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02
-#define EFI_ACPI_5_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02
+#define EFI_ACPI_5_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x02
+#define EFI_ACPI_5_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION       0x02
 
 ///
 /// Multiple APIC Description Table header definition.  The rest of the table
 /// must be defined in a platform specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      LocalApicAddress;
-  UINT32                      Flags;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         LocalApicAddress;
+  UINT32                         Flags;
 } EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
 
 ///
 /// MADT Revision (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03
+#define EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION  0x03
 
 ///
 /// Multiple APIC Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_5_0_PCAT_COMPAT         BIT0
+#define EFI_ACPI_5_0_PCAT_COMPAT  BIT0
 
 //
 // Multiple APIC Description Table APIC structure types
@@ -439,57 +434,57 @@
 /// Processor Local APIC Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   ApicId;
-  UINT32  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     ApicId;
+  UINT32    Flags;
 } EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
 
 ///
 /// Local APIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_0_LOCAL_APIC_ENABLED        BIT0
+#define EFI_ACPI_5_0_LOCAL_APIC_ENABLED  BIT0
 
 ///
 /// IO APIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  IoApicAddress;
-  UINT32  GlobalSystemInterruptBase;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    IoApicAddress;
+  UINT32    GlobalSystemInterruptBase;
 } EFI_ACPI_5_0_IO_APIC_STRUCTURE;
 
 ///
 /// Interrupt Source Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Bus;
-  UINT8   Source;
-  UINT32  GlobalSystemInterrupt;
-  UINT16  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Bus;
+  UINT8     Source;
+  UINT32    GlobalSystemInterrupt;
+  UINT16    Flags;
 } EFI_ACPI_5_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
 
 ///
 /// Platform Interrupt Sources Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT8   InterruptType;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT8   IoSapicVector;
-  UINT32  GlobalSystemInterrupt;
-  UINT32  PlatformInterruptSourceFlags;
-  UINT8   CpeiProcessorOverride;
-  UINT8   Reserved[31];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT8     InterruptType;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT8     IoSapicVector;
+  UINT32    GlobalSystemInterrupt;
+  UINT32    PlatformInterruptSourceFlags;
+  UINT8     CpeiProcessorOverride;
+  UINT8     Reserved[31];
 } EFI_ACPI_5_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
 
 //
@@ -503,43 +498,43 @@
 /// Non-Maskable Interrupt Source Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT32  GlobalSystemInterrupt;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT32    GlobalSystemInterrupt;
 } EFI_ACPI_5_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
 
 ///
 /// Local APIC NMI Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT16  Flags;
-  UINT8   LocalApicLint;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT16    Flags;
+  UINT8     LocalApicLint;
 } EFI_ACPI_5_0_LOCAL_APIC_NMI_STRUCTURE;
 
 ///
 /// Local APIC Address Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT64  LocalApicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT64    LocalApicAddress;
 } EFI_ACPI_5_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
 
 ///
 /// IO SAPIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  GlobalSystemInterruptBase;
-  UINT64  IoSapicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    GlobalSystemInterruptBase;
+  UINT64    IoSapicAddress;
 } EFI_ACPI_5_0_IO_SAPIC_STRUCTURE;
 
 ///
@@ -547,110 +542,110 @@
 /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   LocalSapicId;
-  UINT8   LocalSapicEid;
-  UINT8   Reserved[3];
-  UINT32  Flags;
-  UINT32  ACPIProcessorUIDValue;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     LocalSapicId;
+  UINT8     LocalSapicEid;
+  UINT8     Reserved[3];
+  UINT32    Flags;
+  UINT32    ACPIProcessorUIDValue;
 } EFI_ACPI_5_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
 
 ///
 /// Platform Interrupt Sources Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT8   InterruptType;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT8   IoSapicVector;
-  UINT32  GlobalSystemInterrupt;
-  UINT32  PlatformInterruptSourceFlags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT8     InterruptType;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT8     IoSapicVector;
+  UINT32    GlobalSystemInterrupt;
+  UINT32    PlatformInterruptSourceFlags;
 } EFI_ACPI_5_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
 
 ///
 /// Platform Interrupt Source Flags.
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_5_0_CPEI_PROCESSOR_OVERRIDE          BIT0
+#define EFI_ACPI_5_0_CPEI_PROCESSOR_OVERRIDE  BIT0
 
 ///
 /// Processor Local x2APIC Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Reserved[2];
-  UINT32  X2ApicId;
-  UINT32  Flags;
-  UINT32  AcpiProcessorUid;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Reserved[2];
+  UINT32    X2ApicId;
+  UINT32    Flags;
+  UINT32    AcpiProcessorUid;
 } EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
 
 ///
 /// Local x2APIC NMI Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT32  AcpiProcessorUid;
-  UINT8   LocalX2ApicLint;
-  UINT8   Reserved[3];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT32    AcpiProcessorUid;
+  UINT8     LocalX2ApicLint;
+  UINT8     Reserved[3];
 } EFI_ACPI_5_0_LOCAL_X2APIC_NMI_STRUCTURE;
 
 ///
 /// GIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT32  GicId;
-  UINT32  AcpiProcessorUid;
-  UINT32  Flags;
-  UINT32  ParkingProtocolVersion;
-  UINT32  PerformanceInterruptGsiv;
-  UINT64  ParkedAddress;
-  UINT64  PhysicalBaseAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT32    GicId;
+  UINT32    AcpiProcessorUid;
+  UINT32    Flags;
+  UINT32    ParkingProtocolVersion;
+  UINT32    PerformanceInterruptGsiv;
+  UINT64    ParkedAddress;
+  UINT64    PhysicalBaseAddress;
 } EFI_ACPI_5_0_GIC_STRUCTURE;
 
 ///
 /// GIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_0_GIC_ENABLED                     BIT0
-#define EFI_ACPI_5_0_PERFORMANCE_INTERRUPT_MODEL     BIT1
+#define EFI_ACPI_5_0_GIC_ENABLED                  BIT0
+#define EFI_ACPI_5_0_PERFORMANCE_INTERRUPT_MODEL  BIT1
 
 ///
 /// GIC Distributor Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved1;
-  UINT32  GicId;
-  UINT64  PhysicalBaseAddress;
-  UINT32  SystemVectorBase;
-  UINT32  Reserved2;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved1;
+  UINT32    GicId;
+  UINT64    PhysicalBaseAddress;
+  UINT32    SystemVectorBase;
+  UINT32    Reserved2;
 } EFI_ACPI_5_0_GIC_DISTRIBUTOR_STRUCTURE;
 
 ///
 /// Smart Battery Description Table (SBST)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      WarningEnergyLevel;
-  UINT32                      LowEnergyLevel;
-  UINT32                      CriticalEnergyLevel;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         WarningEnergyLevel;
+  UINT32                         LowEnergyLevel;
+  UINT32                         CriticalEnergyLevel;
 } EFI_ACPI_5_0_SMART_BATTERY_DESCRIPTION_TABLE;
 
 ///
 /// SBST Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Embedded Controller Boot Resources Table (ECDT)
@@ -658,11 +653,11 @@
 /// a fully qualified reference to the name space object.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  EcControl;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  EcData;
-  UINT32                                  Uid;
-  UINT8                                   GpeBit;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    EcControl;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    EcData;
+  UINT32                                    Uid;
+  UINT8                                     GpeBit;
 } EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
 
 ///
@@ -675,9 +670,9 @@
 /// must be defined in a platform specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      Reserved1;  ///< Must be set to 1
-  UINT64                      Reserved2;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         Reserved1; ///< Must be set to 1
+  UINT64                         Reserved2;
 } EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
 
 ///
@@ -698,57 +693,57 @@
 /// Processor Local APIC/SAPIC Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   ProximityDomain7To0;
-  UINT8   ApicId;
-  UINT32  Flags;
-  UINT8   LocalSapicEid;
-  UINT8   ProximityDomain31To8[3];
-  UINT32  ClockDomain;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     ProximityDomain7To0;
+  UINT8     ApicId;
+  UINT32    Flags;
+  UINT8     LocalSapicEid;
+  UINT8     ProximityDomain31To8[3];
+  UINT32    ClockDomain;
 } EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
 
 ///
 /// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
+#define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED  (1 << 0)
 
 ///
 /// Memory Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT32  ProximityDomain;
-  UINT16  Reserved1;
-  UINT32  AddressBaseLow;
-  UINT32  AddressBaseHigh;
-  UINT32  LengthLow;
-  UINT32  LengthHigh;
-  UINT32  Reserved2;
-  UINT32  Flags;
-  UINT64  Reserved3;
+  UINT8     Type;
+  UINT8     Length;
+  UINT32    ProximityDomain;
+  UINT16    Reserved1;
+  UINT32    AddressBaseLow;
+  UINT32    AddressBaseHigh;
+  UINT32    LengthLow;
+  UINT32    LengthHigh;
+  UINT32    Reserved2;
+  UINT32    Flags;
+  UINT64    Reserved3;
 } EFI_ACPI_5_0_MEMORY_AFFINITY_STRUCTURE;
 
 //
 // Memory Flags.  All other bits are reserved and must be 0.
 //
-#define EFI_ACPI_5_0_MEMORY_ENABLED       (1 << 0)
-#define EFI_ACPI_5_0_MEMORY_HOT_PLUGGABLE (1 << 1)
-#define EFI_ACPI_5_0_MEMORY_NONVOLATILE   (1 << 2)
+#define EFI_ACPI_5_0_MEMORY_ENABLED        (1 << 0)
+#define EFI_ACPI_5_0_MEMORY_HOT_PLUGGABLE  (1 << 1)
+#define EFI_ACPI_5_0_MEMORY_NONVOLATILE    (1 << 2)
 
 ///
 /// Processor Local x2APIC Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Reserved1[2];
-  UINT32  ProximityDomain;
-  UINT32  X2ApicId;
-  UINT32  Flags;
-  UINT32  ClockDomain;
-  UINT8   Reserved2[4];
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Reserved1[2];
+  UINT32    ProximityDomain;
+  UINT32    X2ApicId;
+  UINT32    Flags;
+  UINT32    ClockDomain;
+  UINT8     Reserved2[4];
 } EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
 
 ///
@@ -756,8 +751,8 @@
 /// The rest of the table is a matrix.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT64                      NumberOfSystemLocalities;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT64                         NumberOfSystemLocalities;
 } EFI_ACPI_5_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
 
 ///
@@ -769,14 +764,14 @@
 /// Corrected Platform Error Polling Table (CPEP)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT8                       Reserved[8];
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT8                          Reserved[8];
 } EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
 
 ///
 /// CPEP Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION  0x01
 
 //
 // CPEP processor structure types.
@@ -787,66 +782,66 @@
 /// Corrected Platform Error Polling Processor Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT32  PollingInterval;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT32    PollingInterval;
 } EFI_ACPI_5_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
 
 ///
 /// Maximum System Characteristics Table (MSCT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      OffsetProxDomInfo;
-  UINT32                      MaximumNumberOfProximityDomains;
-  UINT32                      MaximumNumberOfClockDomains;
-  UINT64                      MaximumPhysicalAddress;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         OffsetProxDomInfo;
+  UINT32                         MaximumNumberOfProximityDomains;
+  UINT32                         MaximumNumberOfClockDomains;
+  UINT64                         MaximumPhysicalAddress;
 } EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
 
 ///
 /// MSCT Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION  0x01
 
 ///
 /// Maximum Proximity Domain Information Structure Definition
 ///
 typedef struct {
-  UINT8   Revision;
-  UINT8   Length;
-  UINT32  ProximityDomainRangeLow;
-  UINT32  ProximityDomainRangeHigh;
-  UINT32  MaximumProcessorCapacity;
-  UINT64  MaximumMemoryCapacity;
+  UINT8     Revision;
+  UINT8     Length;
+  UINT32    ProximityDomainRangeLow;
+  UINT32    ProximityDomainRangeHigh;
+  UINT32    MaximumProcessorCapacity;
+  UINT64    MaximumMemoryCapacity;
 } EFI_ACPI_5_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
 
 ///
 /// ACPI RAS Feature Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT8                       PlatformCommunicationChannelIdentifier[12];
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT8                          PlatformCommunicationChannelIdentifier[12];
 } EFI_ACPI_5_0_RAS_FEATURE_TABLE;
 
 ///
 /// RASF Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_RAS_FEATURE_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_RAS_FEATURE_TABLE_REVISION  0x01
 
 ///
 /// ACPI RASF Platform Communication Channel Shared Memory Region definition.
 ///
 typedef struct {
-  UINT32                      Signature;
-  UINT16                      Command;
-  UINT16                      Status;
-  UINT16                      Version;
-  UINT8                       RASCapabilities[16];
-  UINT8                       SetRASCapabilities[16];
-  UINT16                      NumberOfRASFParameterBlocks;
-  UINT32                      SetRASCapabilitiesStatus;
+  UINT32    Signature;
+  UINT16    Command;
+  UINT16    Status;
+  UINT16    Version;
+  UINT8     RASCapabilities[16];
+  UINT8     SetRASCapabilities[16];
+  UINT16    NumberOfRASFParameterBlocks;
+  UINT32    SetRASCapabilitiesStatus;
 } EFI_ACPI_5_0_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
 
 ///
@@ -864,52 +859,52 @@
 /// ACPI RASF Parameter Block structure for PATROL_SCRUB
 ///
 typedef struct {
-  UINT16                      Type;
-  UINT16                      Version;
-  UINT16                      Length;
-  UINT16                      PatrolScrubCommand;
-  UINT64                      RequestedAddressRange[2];
-  UINT64                      ActualAddressRange[2];
-  UINT16                      Flags;
-  UINT8                       RequestedSpeed;
+  UINT16    Type;
+  UINT16    Version;
+  UINT16    Length;
+  UINT16    PatrolScrubCommand;
+  UINT64    RequestedAddressRange[2];
+  UINT64    ActualAddressRange[2];
+  UINT16    Flags;
+  UINT8     RequestedSpeed;
 } EFI_ACPI_5_0_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
 
 ///
 /// ACPI RASF Patrol Scrub command
 ///
-#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS   0x01
-#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER   0x02
-#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER    0x03
+#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS  0x01
+#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER  0x02
+#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER   0x03
 
 ///
 /// Memory Power State Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT8                       PlatformCommunicationChannelIdentifier;
-  UINT8                       Reserved[3];
-// Memory Power Node Structure
-// Memory Power State Characteristics
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT8                          PlatformCommunicationChannelIdentifier;
+  UINT8                          Reserved[3];
+  // Memory Power Node Structure
+  // Memory Power State Characteristics
 } EFI_ACPI_5_0_MEMORY_POWER_STATUS_TABLE;
 
 ///
 /// MPST Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_MEMORY_POWER_STATE_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_MEMORY_POWER_STATE_TABLE_REVISION  0x01
 
 ///
 /// MPST Platform Communication Channel Shared Memory Region definition.
 ///
 typedef struct {
-  UINT32                      Signature;
-  UINT16                      Command;
-  UINT16                      Status;
-  UINT32                      MemoryPowerCommandRegister;
-  UINT32                      MemoryPowerStatusRegister;
-  UINT32                      PowerStateId;
-  UINT32                      MemoryPowerNodeId;
-  UINT64                      MemoryEnergyConsumed;
-  UINT64                      ExpectedAveragePowerComsuned;
+  UINT32    Signature;
+  UINT16    Command;
+  UINT16    Status;
+  UINT32    MemoryPowerCommandRegister;
+  UINT32    MemoryPowerStatusRegister;
+  UINT32    PowerStateId;
+  UINT32    MemoryPowerNodeId;
+  UINT64    MemoryEnergyConsumed;
+  UINT64    ExpectedAveragePowerComsuned;
 } EFI_ACPI_5_0_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
 
 ///
@@ -920,188 +915,188 @@
 ///
 /// ACPI MPST Memory Power command
 ///
-#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE       0x01
-#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE       0x02
-#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED   0x03
-#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED   0x04
+#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE      0x01
+#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE      0x02
+#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED  0x03
+#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED  0x04
 
 ///
 /// MPST Memory Power Node Table
 ///
 typedef struct {
-  UINT8                                             PowerStateValue;
-  UINT8                                             PowerStateInformationIndex;
+  UINT8    PowerStateValue;
+  UINT8    PowerStateInformationIndex;
 } EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE;
 
 typedef struct {
-  UINT8                                             Flag;
-  UINT8                                             Reserved;
-  UINT16                                            MemoryPowerNodeId;
-  UINT32                                            Length;
-  UINT64                                            AddressBase;
-  UINT64                                            AddressLength;
-  UINT32                                            NumberOfPowerStates;
-  UINT32                                            NumberOfPhysicalComponents;
-//EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE              MemoryPowerState[NumberOfPowerStates];
-//UINT16                                            PhysicalComponentIdentifier[NumberOfPhysicalComponents];
+  UINT8     Flag;
+  UINT8     Reserved;
+  UINT16    MemoryPowerNodeId;
+  UINT32    Length;
+  UINT64    AddressBase;
+  UINT64    AddressLength;
+  UINT32    NumberOfPowerStates;
+  UINT32    NumberOfPhysicalComponents;
+  // EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE              MemoryPowerState[NumberOfPowerStates];
+  // UINT16                                            PhysicalComponentIdentifier[NumberOfPhysicalComponents];
 } EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE;
 
-#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE          0x01
-#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED   0x02
-#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE   0x04
+#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE         0x01
+#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED  0x02
+#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE  0x04
 
 typedef struct {
-  UINT16                      MemoryPowerNodeCount;
-  UINT8                       Reserved[2];
+  UINT16    MemoryPowerNodeCount;
+  UINT8     Reserved[2];
 } EFI_ACPI_5_0_MPST_MEMORY_POWER_NODE_TABLE;
 
 ///
 /// MPST Memory Power State Characteristics Table
 ///
 typedef struct {
-  UINT8                                             PowerStateStructureID;
-  UINT8                                             Flag;
-  UINT16                                            Reserved;
-  UINT32                                            AveragePowerConsumedInMPS0;
-  UINT32                                            RelativePowerSavingToMPS0;
-  UINT64                                            ExitLatencyToMPS0;
+  UINT8     PowerStateStructureID;
+  UINT8     Flag;
+  UINT16    Reserved;
+  UINT32    AveragePowerConsumedInMPS0;
+  UINT32    RelativePowerSavingToMPS0;
+  UINT64    ExitLatencyToMPS0;
 } EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
 
-#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED              0x01
-#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY   0x02
-#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT    0x04
+#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED             0x01
+#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY  0x02
+#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT   0x04
 
 typedef struct {
-  UINT16                      MemoryPowerStateCharacteristicsCount;
-  UINT8                       Reserved[2];
+  UINT16    MemoryPowerStateCharacteristicsCount;
+  UINT8     Reserved[2];
 } EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
 
 ///
 /// Memory Topology Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      Reserved;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         Reserved;
 } EFI_ACPI_5_0_MEMORY_TOPOLOGY_TABLE;
 
 ///
 /// PMTT Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_MEMORY_TOPOLOGY_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_MEMORY_TOPOLOGY_TABLE_REVISION  0x01
 
 ///
 /// Common Memory Aggregator Device Structure.
 ///
 typedef struct {
-  UINT8                       Type;
-  UINT8                       Reserved;
-  UINT16                      Length;
-  UINT16                      Flags;
-  UINT16                      Reserved1;
+  UINT8     Type;
+  UINT8     Reserved;
+  UINT16    Length;
+  UINT16    Flags;
+  UINT16    Reserved1;
 } EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// Memory Aggregator Device Type
 ///
-#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET            0x1
-#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2
-#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM              0x3
+#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET             0x0
+#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER  0x1
+#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM               0x2
 
 ///
 /// Socket Memory Aggregator Device Structure.
 ///
 typedef struct {
-  EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
-  UINT16                                                       SocketIdentifier;
-  UINT16                                                       Reserved;
-//EFI_ACPI_5_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  MemoryController[];
+  EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    Header;
+  UINT16                                                         SocketIdentifier;
+  UINT16                                                         Reserved;
+  // EFI_ACPI_5_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  MemoryController[];
 } EFI_ACPI_5_0_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// MemoryController Memory Aggregator Device Structure.
 ///
 typedef struct {
-  EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
-  UINT32                                                       ReadLatency;
-  UINT32                                                       WriteLatency;
-  UINT32                                                       ReadBandwidth;
-  UINT32                                                       WriteBandwidth;
-  UINT16                                                       OptimalAccessUnit;
-  UINT16                                                       OptimalAccessAlignment;
-  UINT16                                                       Reserved;
-  UINT16                                                       NumberOfProximityDomains;
-//UINT32                                                       ProximityDomain[NumberOfProximityDomains];
-//EFI_ACPI_5_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    PhysicalComponent[];
+  EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    Header;
+  UINT32                                                         ReadLatency;
+  UINT32                                                         WriteLatency;
+  UINT32                                                         ReadBandwidth;
+  UINT32                                                         WriteBandwidth;
+  UINT16                                                         OptimalAccessUnit;
+  UINT16                                                         OptimalAccessAlignment;
+  UINT16                                                         Reserved;
+  UINT16                                                         NumberOfProximityDomains;
+  // UINT32                                                       ProximityDomain[NumberOfProximityDomains];
+  // EFI_ACPI_5_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    PhysicalComponent[];
 } EFI_ACPI_5_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// DIMM Memory Aggregator Device Structure.
 ///
 typedef struct {
-  EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
-  UINT16                                                       PhysicalComponentIdentifier;
-  UINT16                                                       Reserved;
-  UINT32                                                       SizeOfDimm;
-  UINT32                                                       SmbiosHandle;
+  EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    Header;
+  UINT16                                                         PhysicalComponentIdentifier;
+  UINT16                                                         Reserved;
+  UINT32                                                         SizeOfDimm;
+  UINT32                                                         SmbiosHandle;
 } EFI_ACPI_5_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// Boot Graphics Resource Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
   ///
   /// 2-bytes (16 bit) version ID. This value must be 1.
   ///
-  UINT16                      Version;
+  UINT16                         Version;
   ///
   /// 1-byte status field indicating current status about the table.
   ///     Bits[7:1] = Reserved (must be zero)
   ///     Bit [0] = Valid. A one indicates the boot image graphic is valid.
   ///
-  UINT8                       Status;
+  UINT8                          Status;
   ///
   /// 1-byte enumerated type field indicating format of the image.
   ///     0 = Bitmap
   ///     1 - 255  Reserved (for future use)
   ///
-  UINT8                       ImageType;
+  UINT8                          ImageType;
   ///
   /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy
   /// of the image bitmap.
   ///
-  UINT64                      ImageAddress;
+  UINT64                         ImageAddress;
   ///
   /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.
   /// (X, Y) display offset of the top left corner of the boot image.
   /// The top left corner of the display is at offset (0, 0).
   ///
-  UINT32                      ImageOffsetX;
+  UINT32                         ImageOffsetX;
   ///
   /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.
   /// (X, Y) display offset of the top left corner of the boot image.
   /// The top left corner of the display is at offset (0, 0).
   ///
-  UINT32                      ImageOffsetY;
+  UINT32                         ImageOffsetY;
 } EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE;
 
 ///
 /// BGRT Revision
 ///
-#define EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
+#define EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION  1
 
 ///
 /// BGRT Version
 ///
-#define EFI_ACPI_5_0_BGRT_VERSION         0x01
+#define EFI_ACPI_5_0_BGRT_VERSION  0x01
 
 ///
 /// BGRT Status
 ///
-#define EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED 0x00
-#define EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED     0x01
-#define EFI_ACPI_5_0_BGRT_STATUS_INVALID       EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED
-#define EFI_ACPI_5_0_BGRT_STATUS_VALID         EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED
+#define EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED  0x00
+#define EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED      0x01
+#define EFI_ACPI_5_0_BGRT_STATUS_INVALID        EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED
+#define EFI_ACPI_5_0_BGRT_STATUS_VALID          EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED
 
 ///
 /// BGRT Image Type
@@ -1111,26 +1106,26 @@
 ///
 /// FPDT Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION  0x01
 
 ///
 /// FPDT Performance Record Types
 ///
-#define EFI_ACPI_5_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER      0x0000
-#define EFI_ACPI_5_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER     0x0001
+#define EFI_ACPI_5_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER   0x0000
+#define EFI_ACPI_5_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER  0x0001
 
 ///
 /// FPDT Performance Record Revision
 ///
-#define EFI_ACPI_5_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER  0x01
-#define EFI_ACPI_5_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
+#define EFI_ACPI_5_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER   0x01
+#define EFI_ACPI_5_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER  0x01
 
 ///
 /// FPDT Runtime Performance Record Types
 ///
-#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME                0x0000
-#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND               0x0001
-#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT      0x0002
+#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME            0x0000
+#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND           0x0001
+#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT  0x0002
 
 ///
 /// FPDT Runtime Performance Record Revision
@@ -1143,77 +1138,77 @@
 /// FPDT Performance Record header
 ///
 typedef struct {
-  UINT16           Type;
-  UINT8            Length;
-  UINT8            Revision;
+  UINT16    Type;
+  UINT8     Length;
+  UINT8     Revision;
 } EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER;
 
 ///
 /// FPDT Performance Table header
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
+  UINT32    Signature;
+  UINT32    Length;
 } EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER;
 
 ///
 /// FPDT Firmware Basic Boot Performance Pointer Record Structure
 ///
 typedef struct {
-  EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
-  UINT32                                          Reserved;
+  EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER    Header;
+  UINT32                                         Reserved;
   ///
   /// 64-bit processor-relative physical address of the Basic Boot Performance Table.
   ///
-  UINT64                                          BootPerformanceTablePointer;
+  UINT64                                         BootPerformanceTablePointer;
 } EFI_ACPI_5_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;
 
 ///
 /// FPDT S3 Performance Table Pointer Record Structure
 ///
 typedef struct {
-  EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
-  UINT32                                          Reserved;
+  EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER    Header;
+  UINT32                                         Reserved;
   ///
   /// 64-bit processor-relative physical address of the S3 Performance Table.
   ///
-  UINT64                                          S3PerformanceTablePointer;
+  UINT64                                         S3PerformanceTablePointer;
 } EFI_ACPI_5_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;
 
 ///
 /// FPDT Firmware Basic Boot Performance Record Structure
 ///
 typedef struct {
-  EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
-  UINT32                                          Reserved;
+  EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER    Header;
+  UINT32                                         Reserved;
   ///
   /// Timer value logged at the beginning of firmware image execution.
   /// This may not always be zero or near zero.
   ///
-  UINT64                                          ResetEnd;
+  UINT64                                         ResetEnd;
   ///
   /// Timer value logged just prior to loading the OS boot loader into memory.
   /// For non-UEFI compatible boots, this field must be zero.
   ///
-  UINT64                                          OsLoaderLoadImageStart;
+  UINT64                                         OsLoaderLoadImageStart;
   ///
   /// Timer value logged just prior to launching the previously loaded OS boot loader image.
   /// For non-UEFI compatible boots, the timer value logged will be just prior
   /// to the INT 19h handler invocation.
   ///
-  UINT64                                          OsLoaderStartImageStart;
+  UINT64                                         OsLoaderStartImageStart;
   ///
   /// Timer value logged at the point when the OS loader calls the
   /// ExitBootServices function for UEFI compatible firmware.
   /// For non-UEFI compatible boots, this field must be zero.
   ///
-  UINT64                                          ExitBootServicesEntry;
+  UINT64                                         ExitBootServicesEntry;
   ///
-  /// Timer value logged at the point just prior towhen the OS loader gaining
+  /// Timer value logged at the point just prior to when the OS loader gaining
   /// control back from calls the ExitBootServices function for UEFI compatible firmware.
   /// For non-UEFI compatible boots, this field must be zero.
   ///
-  UINT64                                          ExitBootServicesExit;
+  UINT64                                         ExitBootServicesExit;
 } EFI_ACPI_5_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD;
 
 ///
@@ -1225,7 +1220,7 @@
 // FPDT Firmware Basic Boot Performance Table
 //
 typedef struct {
-  EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER      Header;
+  EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER    Header;
   //
   // one or more Performance Records.
   //
@@ -1240,7 +1235,7 @@
 // FPDT Firmware S3 Boot Performance Table
 //
 typedef struct {
-  EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER      Header;
+  EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER    Header;
   //
   // one or more Performance Records.
   //
@@ -1250,124 +1245,125 @@
 /// FPDT Basic S3 Resume Performance Record
 ///
 typedef struct {
-  EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
+  EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER    Header;
   ///
   /// A count of the number of S3 resume cycles since the last full boot sequence.
   ///
-  UINT32                                          ResumeCount;
+  UINT32                                         ResumeCount;
   ///
   /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the
   /// OS waking vector. Only the most recent resume cycle's time is retained.
   ///
-  UINT64                                          FullResume;
+  UINT64                                         FullResume;
   ///
   /// Average timer value of all resume cycles logged since the last full boot
   /// sequence, including the most recent resume.  Note that the entire log of
   /// timer values does not need to be retained in order to calculate this average.
   ///
-  UINT64                                          AverageResume;
+  UINT64                                         AverageResume;
 } EFI_ACPI_5_0_FPDT_S3_RESUME_RECORD;
 
 ///
 /// FPDT Basic S3 Suspend Performance Record
 ///
 typedef struct {
-  EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
+  EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER    Header;
   ///
   /// Timer value recorded at the OS write to SLP_TYP upon entry to S3.
   /// Only the most recent suspend cycle's timer value is retained.
   ///
-  UINT64                                          SuspendStart;
+  UINT64                                         SuspendStart;
   ///
   /// Timer value recorded at the final firmware write to SLP_TYP (or other
   /// mechanism) used to trigger hardware entry to S3.
   /// Only the most recent suspend cycle's timer value is retained.
   ///
-  UINT64                                          SuspendEnd;
+  UINT64                                         SuspendEnd;
 } EFI_ACPI_5_0_FPDT_S3_SUSPEND_RECORD;
 
 ///
 /// Firmware Performance Record Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
 } EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_RECORD_TABLE;
 
 ///
 /// Generic Timer Description Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT64                      PhysicalAddress;
-  UINT32                      GlobalFlags;
-  UINT32                      SecurePL1TimerGSIV;
-  UINT32                      SecurePL1TimerFlags;
-  UINT32                      NonSecurePL1TimerGSIV;
-  UINT32                      NonSecurePL1TimerFlags;
-  UINT32                      VirtualTimerGSIV;
-  UINT32                      VirtualTimerFlags;
-  UINT32                      NonSecurePL2TimerGSIV;
-  UINT32                      NonSecurePL2TimerFlags;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT64                         PhysicalAddress;
+  UINT32                         GlobalFlags;
+  UINT32                         SecurePL1TimerGSIV;
+  UINT32                         SecurePL1TimerFlags;
+  UINT32                         NonSecurePL1TimerGSIV;
+  UINT32                         NonSecurePL1TimerFlags;
+  UINT32                         VirtualTimerGSIV;
+  UINT32                         VirtualTimerFlags;
+  UINT32                         NonSecurePL2TimerGSIV;
+  UINT32                         NonSecurePL2TimerFlags;
 } EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE;
 
 ///
 /// GTDT Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Global Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_MEMORY_MAPPED_BLOCK_PRESENT   BIT0
-#define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_INTERRUPT_MODE                BIT1
+#define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_MEMORY_MAPPED_BLOCK_PRESENT  BIT0
+#define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_INTERRUPT_MODE               BIT1
 
 ///
 /// Timer Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE          BIT0
-#define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
+#define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE      BIT0
+#define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY  BIT1
 
 ///
 /// Boot Error Record Table (BERT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      BootErrorRegionLength;
-  UINT64                      BootErrorRegion;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         BootErrorRegionLength;
+  UINT64                         BootErrorRegion;
 } EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_HEADER;
 
 ///
 /// BERT Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_REVISION  0x01
 
 ///
 /// Boot Error Region Block Status Definition
 ///
 typedef struct {
-  UINT32       UncorrectableErrorValid:1;
-  UINT32       CorrectableErrorValid:1;
-  UINT32       MultipleUncorrectableErrors:1;
-  UINT32       MultipleCorrectableErrors:1;
-  UINT32       ErrorDataEntryCount:10;
-  UINT32       Reserved:18;
+  UINT32    UncorrectableErrorValid     : 1;
+  UINT32    CorrectableErrorValid       : 1;
+  UINT32    MultipleUncorrectableErrors : 1;
+  UINT32    MultipleCorrectableErrors   : 1;
+  UINT32    ErrorDataEntryCount         : 10;
+  UINT32    Reserved                    : 18;
 } EFI_ACPI_5_0_ERROR_BLOCK_STATUS;
 
 ///
 /// Boot Error Region Definition
 ///
 typedef struct {
-  EFI_ACPI_5_0_ERROR_BLOCK_STATUS              BlockStatus;
-  UINT32                                       RawDataOffset;
-  UINT32                                       RawDataLength;
-  UINT32                                       DataLength;
-  UINT32                                       ErrorSeverity;
+  EFI_ACPI_5_0_ERROR_BLOCK_STATUS    BlockStatus;
+  UINT32                             RawDataOffset;
+  UINT32                             RawDataLength;
+  UINT32                             DataLength;
+  UINT32                             ErrorSeverity;
 } EFI_ACPI_5_0_BOOT_ERROR_REGION_STRUCTURE;
 
 //
 // Boot Error Severity types
 //
 #define EFI_ACPI_5_0_ERROR_SEVERITY_CORRECTABLE  0x00
+#define EFI_ACPI_5_0_ERROR_SEVERITY_RECOVERABLE  0x00
 #define EFI_ACPI_5_0_ERROR_SEVERITY_FATAL        0x01
 #define EFI_ACPI_5_0_ERROR_SEVERITY_CORRECTED    0x02
 #define EFI_ACPI_5_0_ERROR_SEVERITY_NONE         0x03
@@ -1376,14 +1372,14 @@
 /// Generic Error Data Entry Definition
 ///
 typedef struct {
-  UINT8    SectionType[16];
-  UINT32   ErrorSeverity;
-  UINT16   Revision;
-  UINT8    ValidationBits;
-  UINT8    Flags;
-  UINT32   ErrorDataLength;
-  UINT8    FruId[16];
-  UINT8    FruText[20];
+  UINT8     SectionType[16];
+  UINT32    ErrorSeverity;
+  UINT16    Revision;
+  UINT8     ValidationBits;
+  UINT8     Flags;
+  UINT32    ErrorDataLength;
+  UINT8     FruId[16];
+  UINT8     FruText[20];
 } EFI_ACPI_5_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
 
 ///
@@ -1395,14 +1391,14 @@
 /// HEST - Hardware Error Source Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      ErrorSourceCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         ErrorSourceCount;
 } EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
 
 ///
 /// HEST Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION  0x01
 
 //
 // Error Source structure types.
@@ -1418,403 +1414,403 @@
 //
 // Error Source structure flags.
 //
-#define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST       (1 << 0)
-#define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_GLOBAL               (1 << 1)
+#define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST  (1 << 0)
+#define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_GLOBAL          (1 << 1)
 
 ///
 /// IA-32 Architecture Machine Check Exception Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT64  GlobalCapabilityInitData;
-  UINT64  GlobalControlInitData;
-  UINT8   NumberOfHardwareBanks;
-  UINT8   Reserved1[7];
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT64    GlobalCapabilityInitData;
+  UINT64    GlobalControlInitData;
+  UINT8     NumberOfHardwareBanks;
+  UINT8     Reserved1[7];
 } EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
 
 ///
 /// IA-32 Architecture Machine Check Bank Structure Definition
 ///
 typedef struct {
-  UINT8   BankNumber;
-  UINT8   ClearStatusOnInitialization;
-  UINT8   StatusDataFormat;
-  UINT8   Reserved0;
-  UINT32  ControlRegisterMsrAddress;
-  UINT64  ControlInitData;
-  UINT32  StatusRegisterMsrAddress;
-  UINT32  AddressRegisterMsrAddress;
-  UINT32  MiscRegisterMsrAddress;
+  UINT8     BankNumber;
+  UINT8     ClearStatusOnInitialization;
+  UINT8     StatusDataFormat;
+  UINT8     Reserved0;
+  UINT32    ControlRegisterMsrAddress;
+  UINT64    ControlInitData;
+  UINT32    StatusRegisterMsrAddress;
+  UINT32    AddressRegisterMsrAddress;
+  UINT32    MiscRegisterMsrAddress;
 } EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
 
 ///
 /// IA-32 Architecture Machine Check Bank Structure MCA data format
 ///
-#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32      0x00
-#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64   0x01
-#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64     0x02
+#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32     0x00
+#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64  0x01
+#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64    0x02
 
 //
 // Hardware Error Notification types. All other values are reserved
 //
-#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_POLLED                0x00
-#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT    0x01
-#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT       0x02
-#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_SCI                   0x03
-#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_NMI                   0x04
+#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_POLLED              0x00
+#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT  0x01
+#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT     0x02
+#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_SCI                 0x03
+#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_NMI                 0x04
 
 ///
 /// Hardware Error Notification Configuration Write Enable Structure Definition
 ///
 typedef struct {
-  UINT16    Type:1;
-  UINT16    PollInterval:1;
-  UINT16    SwitchToPollingThresholdValue:1;
-  UINT16    SwitchToPollingThresholdWindow:1;
-  UINT16    ErrorThresholdValue:1;
-  UINT16    ErrorThresholdWindow:1;
-  UINT16    Reserved:10;
+  UINT16    Type                           : 1;
+  UINT16    PollInterval                   : 1;
+  UINT16    SwitchToPollingThresholdValue  : 1;
+  UINT16    SwitchToPollingThresholdWindow : 1;
+  UINT16    ErrorThresholdValue            : 1;
+  UINT16    ErrorThresholdWindow           : 1;
+  UINT16    Reserved                       : 10;
 } EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
 
 ///
 /// Hardware Error Notification Structure Definition
 ///
 typedef struct {
-  UINT8                                                                          Type;
-  UINT8                                                                          Length;
-  EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE  ConfigurationWriteEnable;
-  UINT32                                                                         PollInterval;
-  UINT32                                                                         Vector;
-  UINT32                                                                         SwitchToPollingThresholdValue;
-  UINT32                                                                         SwitchToPollingThresholdWindow;
-  UINT32                                                                         ErrorThresholdValue;
-  UINT32                                                                         ErrorThresholdWindow;
+  UINT8                                                                            Type;
+  UINT8                                                                            Length;
+  EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE    ConfigurationWriteEnable;
+  UINT32                                                                           PollInterval;
+  UINT32                                                                           Vector;
+  UINT32                                                                           SwitchToPollingThresholdValue;
+  UINT32                                                                           SwitchToPollingThresholdWindow;
+  UINT32                                                                           ErrorThresholdValue;
+  UINT32                                                                           ErrorThresholdWindow;
 } EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
 
 ///
 /// IA-32 Architecture Corrected Machine Check Structure Definition
 ///
 typedef struct {
-  UINT16                                                 Type;
-  UINT16                                                 SourceId;
-  UINT8                                                  Reserved0[2];
-  UINT8                                                  Flags;
-  UINT8                                                  Enabled;
-  UINT32                                                 NumberOfRecordsToPreAllocate;
-  UINT32                                                 MaxSectionsPerRecord;
-  EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
-  UINT8                                                  NumberOfHardwareBanks;
-  UINT8                                                  Reserved1[3];
+  UINT16                                                Type;
+  UINT16                                                SourceId;
+  UINT8                                                 Reserved0[2];
+  UINT8                                                 Flags;
+  UINT8                                                 Enabled;
+  UINT32                                                NumberOfRecordsToPreAllocate;
+  UINT32                                                MaxSectionsPerRecord;
+  EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE    NotificationStructure;
+  UINT8                                                 NumberOfHardwareBanks;
+  UINT8                                                 Reserved1[3];
 } EFI_ACPI_5_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
 
 ///
 /// IA-32 Architecture NMI Error Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  MaxRawDataLength;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    MaxRawDataLength;
 } EFI_ACPI_5_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
 
 ///
 /// PCI Express Root Port AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
-  UINT32  RootErrorCommand;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
+  UINT32    RootErrorCommand;
 } EFI_ACPI_5_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
 
 ///
 /// PCI Express Device AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
 } EFI_ACPI_5_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
 
 ///
 /// PCI Express Bridge AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
-  UINT32  SecondaryUncorrectableErrorMask;
-  UINT32  SecondaryUncorrectableErrorSeverity;
-  UINT32  SecondaryAdvancedErrorCapabilitiesAndControl;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
+  UINT32    SecondaryUncorrectableErrorMask;
+  UINT32    SecondaryUncorrectableErrorSeverity;
+  UINT32    SecondaryAdvancedErrorCapabilitiesAndControl;
 } EFI_ACPI_5_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
 
 ///
 /// Generic Hardware Error Source Structure Definition
 ///
 typedef struct {
-  UINT16                                                 Type;
-  UINT16                                                 SourceId;
-  UINT16                                                 RelatedSourceId;
-  UINT8                                                  Flags;
-  UINT8                                                  Enabled;
-  UINT32                                                 NumberOfRecordsToPreAllocate;
-  UINT32                                                 MaxSectionsPerRecord;
-  UINT32                                                 MaxRawDataLength;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE                 ErrorStatusAddress;
-  EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
-  UINT32                                                 ErrorStatusBlockLength;
+  UINT16                                                Type;
+  UINT16                                                SourceId;
+  UINT16                                                RelatedSourceId;
+  UINT8                                                 Flags;
+  UINT8                                                 Enabled;
+  UINT32                                                NumberOfRecordsToPreAllocate;
+  UINT32                                                MaxSectionsPerRecord;
+  UINT32                                                MaxRawDataLength;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE                ErrorStatusAddress;
+  EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE    NotificationStructure;
+  UINT32                                                ErrorStatusBlockLength;
 } EFI_ACPI_5_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
 
 ///
 /// Generic Error Status Definition
 ///
 typedef struct {
-  EFI_ACPI_5_0_ERROR_BLOCK_STATUS              BlockStatus;
-  UINT32                                       RawDataOffset;
-  UINT32                                       RawDataLength;
-  UINT32                                       DataLength;
-  UINT32                                       ErrorSeverity;
+  EFI_ACPI_5_0_ERROR_BLOCK_STATUS    BlockStatus;
+  UINT32                             RawDataOffset;
+  UINT32                             RawDataLength;
+  UINT32                             DataLength;
+  UINT32                             ErrorSeverity;
 } EFI_ACPI_5_0_GENERIC_ERROR_STATUS_STRUCTURE;
 
 ///
 /// ERST - Error Record Serialization Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      SerializationHeaderSize;
-  UINT8                       Reserved0[4];
-  UINT32                      InstructionEntryCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         SerializationHeaderSize;
+  UINT8                          Reserved0[4];
+  UINT32                         InstructionEntryCount;
 } EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
 
 ///
 /// ERST Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION  0x01
 
 ///
 /// ERST Serialization Actions
 ///
-#define EFI_ACPI_5_0_ERST_BEGIN_WRITE_OPERATION                    0x00
-#define EFI_ACPI_5_0_ERST_BEGIN_READ_OPERATION                     0x01
-#define EFI_ACPI_5_0_ERST_BEGIN_CLEAR_OPERATION                    0x02
-#define EFI_ACPI_5_0_ERST_END_OPERATION                            0x03
-#define EFI_ACPI_5_0_ERST_SET_RECORD_OFFSET                        0x04
-#define EFI_ACPI_5_0_ERST_EXECUTE_OPERATION                        0x05
-#define EFI_ACPI_5_0_ERST_CHECK_BUSY_STATUS                        0x06
-#define EFI_ACPI_5_0_ERST_GET_COMMAND_STATUS                       0x07
-#define EFI_ACPI_5_0_ERST_GET_RECORD_IDENTIFIER                    0x08
-#define EFI_ACPI_5_0_ERST_SET_RECORD_IDENTIFIER                    0x09
-#define EFI_ACPI_5_0_ERST_GET_RECORD_COUNT                         0x0A
-#define EFI_ACPI_5_0_ERST_BEGIN_DUMMY_WRITE_OPERATION              0x0B
-#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE              0x0D
-#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH       0x0E
-#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES   0x0F
+#define EFI_ACPI_5_0_ERST_BEGIN_WRITE_OPERATION                   0x00
+#define EFI_ACPI_5_0_ERST_BEGIN_READ_OPERATION                    0x01
+#define EFI_ACPI_5_0_ERST_BEGIN_CLEAR_OPERATION                   0x02
+#define EFI_ACPI_5_0_ERST_END_OPERATION                           0x03
+#define EFI_ACPI_5_0_ERST_SET_RECORD_OFFSET                       0x04
+#define EFI_ACPI_5_0_ERST_EXECUTE_OPERATION                       0x05
+#define EFI_ACPI_5_0_ERST_CHECK_BUSY_STATUS                       0x06
+#define EFI_ACPI_5_0_ERST_GET_COMMAND_STATUS                      0x07
+#define EFI_ACPI_5_0_ERST_GET_RECORD_IDENTIFIER                   0x08
+#define EFI_ACPI_5_0_ERST_SET_RECORD_IDENTIFIER                   0x09
+#define EFI_ACPI_5_0_ERST_GET_RECORD_COUNT                        0x0A
+#define EFI_ACPI_5_0_ERST_BEGIN_DUMMY_WRITE_OPERATION             0x0B
+#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE             0x0D
+#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH      0x0E
+#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES  0x0F
 
 ///
 /// ERST Action Command Status
 ///
-#define EFI_ACPI_5_0_ERST_STATUS_SUCCESS                           0x00
-#define EFI_ACPI_5_0_ERST_STATUS_NOT_ENOUGH_SPACE                  0x01
-#define EFI_ACPI_5_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE            0x02
-#define EFI_ACPI_5_0_ERST_STATUS_FAILED                            0x03
-#define EFI_ACPI_5_0_ERST_STATUS_RECORD_STORE_EMPTY                0x04
-#define EFI_ACPI_5_0_ERST_STATUS_RECORD_NOT_FOUND                  0x05
+#define EFI_ACPI_5_0_ERST_STATUS_SUCCESS                 0x00
+#define EFI_ACPI_5_0_ERST_STATUS_NOT_ENOUGH_SPACE        0x01
+#define EFI_ACPI_5_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE  0x02
+#define EFI_ACPI_5_0_ERST_STATUS_FAILED                  0x03
+#define EFI_ACPI_5_0_ERST_STATUS_RECORD_STORE_EMPTY      0x04
+#define EFI_ACPI_5_0_ERST_STATUS_RECORD_NOT_FOUND        0x05
 
 ///
 /// ERST Serialization Instructions
 ///
-#define EFI_ACPI_5_0_ERST_READ_REGISTER                            0x00
-#define EFI_ACPI_5_0_ERST_READ_REGISTER_VALUE                      0x01
-#define EFI_ACPI_5_0_ERST_WRITE_REGISTER                           0x02
-#define EFI_ACPI_5_0_ERST_WRITE_REGISTER_VALUE                     0x03
-#define EFI_ACPI_5_0_ERST_NOOP                                     0x04
-#define EFI_ACPI_5_0_ERST_LOAD_VAR1                                0x05
-#define EFI_ACPI_5_0_ERST_LOAD_VAR2                                0x06
-#define EFI_ACPI_5_0_ERST_STORE_VAR1                               0x07
-#define EFI_ACPI_5_0_ERST_ADD                                      0x08
-#define EFI_ACPI_5_0_ERST_SUBTRACT                                 0x09
-#define EFI_ACPI_5_0_ERST_ADD_VALUE                                0x0A
-#define EFI_ACPI_5_0_ERST_SUBTRACT_VALUE                           0x0B
-#define EFI_ACPI_5_0_ERST_STALL                                    0x0C
-#define EFI_ACPI_5_0_ERST_STALL_WHILE_TRUE                         0x0D
-#define EFI_ACPI_5_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE            0x0E
-#define EFI_ACPI_5_0_ERST_GOTO                                     0x0F
-#define EFI_ACPI_5_0_ERST_SET_SRC_ADDRESS_BASE                     0x10
-#define EFI_ACPI_5_0_ERST_SET_DST_ADDRESS_BASE                     0x11
-#define EFI_ACPI_5_0_ERST_MOVE_DATA                                0x12
+#define EFI_ACPI_5_0_ERST_READ_REGISTER                  0x00
+#define EFI_ACPI_5_0_ERST_READ_REGISTER_VALUE            0x01
+#define EFI_ACPI_5_0_ERST_WRITE_REGISTER                 0x02
+#define EFI_ACPI_5_0_ERST_WRITE_REGISTER_VALUE           0x03
+#define EFI_ACPI_5_0_ERST_NOOP                           0x04
+#define EFI_ACPI_5_0_ERST_LOAD_VAR1                      0x05
+#define EFI_ACPI_5_0_ERST_LOAD_VAR2                      0x06
+#define EFI_ACPI_5_0_ERST_STORE_VAR1                     0x07
+#define EFI_ACPI_5_0_ERST_ADD                            0x08
+#define EFI_ACPI_5_0_ERST_SUBTRACT                       0x09
+#define EFI_ACPI_5_0_ERST_ADD_VALUE                      0x0A
+#define EFI_ACPI_5_0_ERST_SUBTRACT_VALUE                 0x0B
+#define EFI_ACPI_5_0_ERST_STALL                          0x0C
+#define EFI_ACPI_5_0_ERST_STALL_WHILE_TRUE               0x0D
+#define EFI_ACPI_5_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE  0x0E
+#define EFI_ACPI_5_0_ERST_GOTO                           0x0F
+#define EFI_ACPI_5_0_ERST_SET_SRC_ADDRESS_BASE           0x10
+#define EFI_ACPI_5_0_ERST_SET_DST_ADDRESS_BASE           0x11
+#define EFI_ACPI_5_0_ERST_MOVE_DATA                      0x12
 
 ///
 /// ERST Instruction Flags
 ///
-#define EFI_ACPI_5_0_ERST_PRESERVE_REGISTER                        0x01
+#define EFI_ACPI_5_0_ERST_PRESERVE_REGISTER  0x01
 
 ///
 /// ERST Serialization Instruction Entry
 ///
 typedef struct {
-  UINT8                                    SerializationAction;
-  UINT8                                    Instruction;
-  UINT8                                    Flags;
-  UINT8                                    Reserved0;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
-  UINT64                                   Value;
-  UINT64                                   Mask;
+  UINT8                                     SerializationAction;
+  UINT8                                     Instruction;
+  UINT8                                     Flags;
+  UINT8                                     Reserved0;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    RegisterRegion;
+  UINT64                                    Value;
+  UINT64                                    Mask;
 } EFI_ACPI_5_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
 
 ///
 /// EINJ - Error Injection Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      InjectionHeaderSize;
-  UINT8                       InjectionFlags;
-  UINT8                       Reserved0[3];
-  UINT32                      InjectionEntryCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         InjectionHeaderSize;
+  UINT8                          InjectionFlags;
+  UINT8                          Reserved0[3];
+  UINT32                         InjectionEntryCount;
 } EFI_ACPI_5_0_ERROR_INJECTION_TABLE_HEADER;
 
 ///
 /// EINJ Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_ERROR_INJECTION_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_ERROR_INJECTION_TABLE_REVISION  0x01
 
 ///
 /// EINJ Error Injection Actions
 ///
-#define EFI_ACPI_5_0_EINJ_BEGIN_INJECTION_OPERATION                0x00
-#define EFI_ACPI_5_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE           0x01
-#define EFI_ACPI_5_0_EINJ_SET_ERROR_TYPE                           0x02
-#define EFI_ACPI_5_0_EINJ_GET_ERROR_TYPE                           0x03
-#define EFI_ACPI_5_0_EINJ_END_OPERATION                            0x04
-#define EFI_ACPI_5_0_EINJ_EXECUTE_OPERATION                        0x05
-#define EFI_ACPI_5_0_EINJ_CHECK_BUSY_STATUS                        0x06
-#define EFI_ACPI_5_0_EINJ_GET_COMMAND_STATUS                       0x07
-#define EFI_ACPI_5_0_EINJ_TRIGGER_ERROR                            0xFF
+#define EFI_ACPI_5_0_EINJ_BEGIN_INJECTION_OPERATION       0x00
+#define EFI_ACPI_5_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE  0x01
+#define EFI_ACPI_5_0_EINJ_SET_ERROR_TYPE                  0x02
+#define EFI_ACPI_5_0_EINJ_GET_ERROR_TYPE                  0x03
+#define EFI_ACPI_5_0_EINJ_END_OPERATION                   0x04
+#define EFI_ACPI_5_0_EINJ_EXECUTE_OPERATION               0x05
+#define EFI_ACPI_5_0_EINJ_CHECK_BUSY_STATUS               0x06
+#define EFI_ACPI_5_0_EINJ_GET_COMMAND_STATUS              0x07
+#define EFI_ACPI_5_0_EINJ_TRIGGER_ERROR                   0xFF
 
 ///
 /// EINJ Action Command Status
 ///
-#define EFI_ACPI_5_0_EINJ_STATUS_SUCCESS                           0x00
-#define EFI_ACPI_5_0_EINJ_STATUS_UNKNOWN_FAILURE                   0x01
-#define EFI_ACPI_5_0_EINJ_STATUS_INVALID_ACCESS                    0x02
+#define EFI_ACPI_5_0_EINJ_STATUS_SUCCESS          0x00
+#define EFI_ACPI_5_0_EINJ_STATUS_UNKNOWN_FAILURE  0x01
+#define EFI_ACPI_5_0_EINJ_STATUS_INVALID_ACCESS   0x02
 
 ///
 /// EINJ Error Type Definition
 ///
-#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_CORRECTABLE                 (1 << 0)
-#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL      (1 << 1)
-#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL         (1 << 2)
-#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_CORRECTABLE                    (1 << 3)
-#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL         (1 << 4)
-#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL            (1 << 5)
-#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE               (1 << 6)
-#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL    (1 << 7)
-#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL       (1 << 8)
-#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_CORRECTABLE                  (1 << 9)
-#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL       (1 << 10)
-#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL          (1 << 11)
+#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_CORRECTABLE               (1 << 0)
+#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL    (1 << 1)
+#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL       (1 << 2)
+#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_CORRECTABLE                  (1 << 3)
+#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL       (1 << 4)
+#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL          (1 << 5)
+#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE             (1 << 6)
+#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL  (1 << 7)
+#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL     (1 << 8)
+#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_CORRECTABLE                (1 << 9)
+#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL     (1 << 10)
+#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL        (1 << 11)
 
 ///
 /// EINJ Injection Instructions
 ///
-#define EFI_ACPI_5_0_EINJ_READ_REGISTER                            0x00
-#define EFI_ACPI_5_0_EINJ_READ_REGISTER_VALUE                      0x01
-#define EFI_ACPI_5_0_EINJ_WRITE_REGISTER                           0x02
-#define EFI_ACPI_5_0_EINJ_WRITE_REGISTER_VALUE                     0x03
-#define EFI_ACPI_5_0_EINJ_NOOP                                     0x04
+#define EFI_ACPI_5_0_EINJ_READ_REGISTER         0x00
+#define EFI_ACPI_5_0_EINJ_READ_REGISTER_VALUE   0x01
+#define EFI_ACPI_5_0_EINJ_WRITE_REGISTER        0x02
+#define EFI_ACPI_5_0_EINJ_WRITE_REGISTER_VALUE  0x03
+#define EFI_ACPI_5_0_EINJ_NOOP                  0x04
 
 ///
 /// EINJ Instruction Flags
 ///
-#define EFI_ACPI_5_0_EINJ_PRESERVE_REGISTER                        0x01
+#define EFI_ACPI_5_0_EINJ_PRESERVE_REGISTER  0x01
 
 ///
 /// EINJ Injection Instruction Entry
 ///
 typedef struct {
-  UINT8                                    InjectionAction;
-  UINT8                                    Instruction;
-  UINT8                                    Flags;
-  UINT8                                    Reserved0;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
-  UINT64                                   Value;
-  UINT64                                   Mask;
+  UINT8                                     InjectionAction;
+  UINT8                                     Instruction;
+  UINT8                                     Flags;
+  UINT8                                     Reserved0;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    RegisterRegion;
+  UINT64                                    Value;
+  UINT64                                    Mask;
 } EFI_ACPI_5_0_EINJ_INJECTION_INSTRUCTION_ENTRY;
 
 ///
 /// EINJ Trigger Action Table
 ///
 typedef struct {
-  UINT32  HeaderSize;
-  UINT32  Revision;
-  UINT32  TableSize;
-  UINT32  EntryCount;
+  UINT32    HeaderSize;
+  UINT32    Revision;
+  UINT32    TableSize;
+  UINT32    EntryCount;
 } EFI_ACPI_5_0_EINJ_TRIGGER_ACTION_TABLE;
 
 ///
 /// Platform Communications Channel Table (PCCT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      Flags;
-  UINT64                      Reserved;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         Flags;
+  UINT64                         Reserved;
 } EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;
 
 ///
 /// PCCT Version (as defined in ACPI 5.0 spec.)
 ///
-#define EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01
+#define EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION  0x01
 
 ///
 /// PCCT Global Flags
 ///
-#define EFI_ACPI_5_0_PCCT_FLAGS_SCI_DOORBELL                      BIT0
+#define EFI_ACPI_5_0_PCCT_FLAGS_SCI_DOORBELL  BIT0
 
 //
 // PCCT Subspace type
@@ -1825,25 +1821,25 @@
 /// PCC Subspace Structure Header
 ///
 typedef struct {
-  UINT8        Type;
-  UINT8        Length;
+  UINT8    Type;
+  UINT8    Length;
 } EFI_ACPI_5_0_PCCT_SUBSPACE_HEADER;
 
 ///
 /// Generic Communications Subspace Structure
 ///
 typedef struct {
-  UINT8                                    Type;
-  UINT8                                    Length;
-  UINT8                                    Reserved[6];
-  UINT64                                   BaseAddress;
-  UINT64                                   AddressLength;
-  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE   DoorbellRegister;
-  UINT64                                   DoorbellPreserve;
-  UINT64                                   DoorbellWrite;
-  UINT32                                   NominalLatency;
-  UINT32                                   MaximumPeriodicAccessRate;
-  UINT16                                   MinimumRequestTurnaroundTime;
+  UINT8                                     Type;
+  UINT8                                     Length;
+  UINT8                                     Reserved[6];
+  UINT64                                    BaseAddress;
+  UINT64                                    AddressLength;
+  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE    DoorbellRegister;
+  UINT64                                    DoorbellPreserve;
+  UINT64                                    DoorbellWrite;
+  UINT32                                    NominalLatency;
+  UINT32                                    MaximumPeriodicAccessRate;
+  UINT16                                    MinimumRequestTurnaroundTime;
 } EFI_ACPI_5_0_PCCT_SUBSPACE_GENERIC;
 
 ///
@@ -1851,18 +1847,18 @@
 ///
 
 typedef struct {
-  UINT8                                    Command;
-  UINT8                                    Reserved:7;
-  UINT8                                    GenerateSci:1;
+  UINT8    Command;
+  UINT8    Reserved    : 7;
+  UINT8    GenerateSci : 1;
 } EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;
 
 typedef struct {
-  UINT8                                    CommandComplete:1;
-  UINT8                                    SciDoorbell:1;
-  UINT8                                    Error:1;
-  UINT8                                    PlatformNotification:1;
-  UINT8                                    Reserved:4;
-  UINT8                                    Reserved1;
+  UINT8    CommandComplete      : 1;
+  UINT8    SciDoorbell          : 1;
+  UINT8    Error                : 1;
+  UINT8    PlatformNotification : 1;
+  UINT8    Reserved             : 4;
+  UINT8    Reserved1;
 } EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;
 
 typedef struct {
@@ -2066,12 +2062,17 @@
 #define EFI_ACPI_5_0_DATA_MANAGEMENT_TABLE_SIGNATURE  SIGNATURE_32('M', 'S', 'D', 'M')
 
 ///
+/// "PCCT" Platform Communications Channel Table
+///
+#define EFI_ACPI_5_0_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE  SIGNATURE_32('P', 'C', 'C', 'T')
+
+///
 /// "SLIC" MS Software Licensing Table Specification
 ///
 #define EFI_ACPI_5_0_SOFTWARE_LICENSING_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'C')
 
 ///
-/// "SPCR" Serial Port Concole Redirection Table
+/// "SPCR" Serial Port Console Redirection Table
 ///
 #define EFI_ACPI_5_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
 
@@ -2099,7 +2100,7 @@
 /// "WAET" Windows ACPI Emulated Devices Table
 ///
 #define EFI_ACPI_5_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE  SIGNATURE_32('W', 'A', 'E', 'T')
-#define EFI_ACPI_5_0_WINDOWS_ACPI_ENLIGHTENMENT_TABLE_SIGNATURE  EFI_ACPI_5_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE
+#define EFI_ACPI_5_0_WINDOWS_ACPI_ENLIGHTENMENT_TABLE_SIGNATURE     EFI_ACPI_5_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE
 
 ///
 /// "WDAT" Watchdog Action Table
diff --git a/src/include/ipxe/efi/IndustryStandard/Acpi51.h b/src/include/ipxe/efi/IndustryStandard/Acpi51.h
index 1ca114c..49bb972 100644
--- a/src/include/ipxe/efi/IndustryStandard/Acpi51.h
+++ b/src/include/ipxe/efi/IndustryStandard/Acpi51.h
@@ -2,21 +2,16 @@
   ACPI 5.1 definitions from the ACPI Specification Revision 5.1 Errata B January, 2016.
 
   Copyright (c) 2014 Hewlett-Packard Development Company, L.P.<BR>
-  Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2014 - 2022, Intel Corporation. All rights reserved.<BR>
   (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 **/
 
 #ifndef _ACPI_5_1_H_
 #define _ACPI_5_1_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/Acpi50.h>
 
@@ -29,21 +24,21 @@
 /// ACPI 5.1 Generic Address Space definition
 ///
 typedef struct {
-  UINT8   AddressSpaceId;
-  UINT8   RegisterBitWidth;
-  UINT8   RegisterBitOffset;
-  UINT8   AccessSize;
-  UINT64  Address;
+  UINT8     AddressSpaceId;
+  UINT8     RegisterBitWidth;
+  UINT8     RegisterBitOffset;
+  UINT8     AccessSize;
+  UINT64    Address;
 } EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE;
 
 //
 // Generic Address Space Address IDs
 //
-#define EFI_ACPI_5_1_SYSTEM_MEMORY              0
-#define EFI_ACPI_5_1_SYSTEM_IO                  1
-#define EFI_ACPI_5_1_PCI_CONFIGURATION_SPACE    2
-#define EFI_ACPI_5_1_EMBEDDED_CONTROLLER        3
-#define EFI_ACPI_5_1_SMBUS                      4
+#define EFI_ACPI_5_1_SYSTEM_MEMORY                   0
+#define EFI_ACPI_5_1_SYSTEM_IO                       1
+#define EFI_ACPI_5_1_PCI_CONFIGURATION_SPACE         2
+#define EFI_ACPI_5_1_EMBEDDED_CONTROLLER             3
+#define EFI_ACPI_5_1_SMBUS                           4
 #define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL  0x0A
 #define EFI_ACPI_5_1_FUNCTIONAL_FIXED_HARDWARE       0x7F
 
@@ -64,29 +59,29 @@
 /// Root System Description Pointer Structure
 ///
 typedef struct {
-  UINT64  Signature;
-  UINT8   Checksum;
-  UINT8   OemId[6];
-  UINT8   Revision;
-  UINT32  RsdtAddress;
-  UINT32  Length;
-  UINT64  XsdtAddress;
-  UINT8   ExtendedChecksum;
-  UINT8   Reserved[3];
+  UINT64    Signature;
+  UINT8     Checksum;
+  UINT8     OemId[6];
+  UINT8     Revision;
+  UINT32    RsdtAddress;
+  UINT32    Length;
+  UINT64    XsdtAddress;
+  UINT8     ExtendedChecksum;
+  UINT8     Reserved[3];
 } EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER;
 
 ///
 /// RSD_PTR Revision (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  ///< ACPISpec (Revision 5.1) says current value is 2
+#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION  0x02 ///< ACPISpec (Revision 5.1) says current value is 2
 
 ///
 /// Common table header, this prefaces all ACPI tables, including FACS, but
 /// excluding the RSD PTR structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
+  UINT32    Signature;
+  UINT32    Length;
 } EFI_ACPI_5_1_COMMON_HEADER;
 
 //
@@ -98,7 +93,7 @@
 ///
 /// RSDT Revision (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 //
 // Extended System Description Table
@@ -109,73 +104,73 @@
 ///
 /// XSDT Revision (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Fixed ACPI Description Table Structure (FADT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  UINT32                                  FirmwareCtrl;
-  UINT32                                  Dsdt;
-  UINT8                                   Reserved0;
-  UINT8                                   PreferredPmProfile;
-  UINT16                                  SciInt;
-  UINT32                                  SmiCmd;
-  UINT8                                   AcpiEnable;
-  UINT8                                   AcpiDisable;
-  UINT8                                   S4BiosReq;
-  UINT8                                   PstateCnt;
-  UINT32                                  Pm1aEvtBlk;
-  UINT32                                  Pm1bEvtBlk;
-  UINT32                                  Pm1aCntBlk;
-  UINT32                                  Pm1bCntBlk;
-  UINT32                                  Pm2CntBlk;
-  UINT32                                  PmTmrBlk;
-  UINT32                                  Gpe0Blk;
-  UINT32                                  Gpe1Blk;
-  UINT8                                   Pm1EvtLen;
-  UINT8                                   Pm1CntLen;
-  UINT8                                   Pm2CntLen;
-  UINT8                                   PmTmrLen;
-  UINT8                                   Gpe0BlkLen;
-  UINT8                                   Gpe1BlkLen;
-  UINT8                                   Gpe1Base;
-  UINT8                                   CstCnt;
-  UINT16                                  PLvl2Lat;
-  UINT16                                  PLvl3Lat;
-  UINT16                                  FlushSize;
-  UINT16                                  FlushStride;
-  UINT8                                   DutyOffset;
-  UINT8                                   DutyWidth;
-  UINT8                                   DayAlrm;
-  UINT8                                   MonAlrm;
-  UINT8                                   Century;
-  UINT16                                  IaPcBootArch;
-  UINT8                                   Reserved1;
-  UINT32                                  Flags;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  ResetReg;
-  UINT8                                   ResetValue;
-  UINT16                                  ArmBootArch;
-  UINT8                                   MinorVersion;
-  UINT64                                  XFirmwareCtrl;
-  UINT64                                  XDsdt;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  SleepControlReg;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  SleepStatusReg;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  UINT32                                    FirmwareCtrl;
+  UINT32                                    Dsdt;
+  UINT8                                     Reserved0;
+  UINT8                                     PreferredPmProfile;
+  UINT16                                    SciInt;
+  UINT32                                    SmiCmd;
+  UINT8                                     AcpiEnable;
+  UINT8                                     AcpiDisable;
+  UINT8                                     S4BiosReq;
+  UINT8                                     PstateCnt;
+  UINT32                                    Pm1aEvtBlk;
+  UINT32                                    Pm1bEvtBlk;
+  UINT32                                    Pm1aCntBlk;
+  UINT32                                    Pm1bCntBlk;
+  UINT32                                    Pm2CntBlk;
+  UINT32                                    PmTmrBlk;
+  UINT32                                    Gpe0Blk;
+  UINT32                                    Gpe1Blk;
+  UINT8                                     Pm1EvtLen;
+  UINT8                                     Pm1CntLen;
+  UINT8                                     Pm2CntLen;
+  UINT8                                     PmTmrLen;
+  UINT8                                     Gpe0BlkLen;
+  UINT8                                     Gpe1BlkLen;
+  UINT8                                     Gpe1Base;
+  UINT8                                     CstCnt;
+  UINT16                                    PLvl2Lat;
+  UINT16                                    PLvl3Lat;
+  UINT16                                    FlushSize;
+  UINT16                                    FlushStride;
+  UINT8                                     DutyOffset;
+  UINT8                                     DutyWidth;
+  UINT8                                     DayAlrm;
+  UINT8                                     MonAlrm;
+  UINT8                                     Century;
+  UINT16                                    IaPcBootArch;
+  UINT8                                     Reserved1;
+  UINT32                                    Flags;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    ResetReg;
+  UINT8                                     ResetValue;
+  UINT16                                    ArmBootArch;
+  UINT8                                     MinorVersion;
+  UINT64                                    XFirmwareCtrl;
+  UINT64                                    XDsdt;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    XPm1aEvtBlk;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    XPm1bEvtBlk;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    XPm1aCntBlk;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    XPm1bCntBlk;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    XPm2CntBlk;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    XPmTmrBlk;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    XGpe0Blk;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    XGpe1Blk;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    SleepControlReg;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    SleepStatusReg;
 } EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE;
 
 ///
 /// FADT Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x05
+#define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION        0x05
 #define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION  0x01
 
 //
@@ -195,62 +190,62 @@
 // Fixed ACPI Description Table Boot Architecture Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_5_1_LEGACY_DEVICES              BIT0
-#define EFI_ACPI_5_1_8042                        BIT1
-#define EFI_ACPI_5_1_VGA_NOT_PRESENT             BIT2
-#define EFI_ACPI_5_1_MSI_NOT_SUPPORTED           BIT3
-#define EFI_ACPI_5_1_PCIE_ASPM_CONTROLS          BIT4
-#define EFI_ACPI_5_1_CMOS_RTC_NOT_PRESENT        BIT5
+#define EFI_ACPI_5_1_LEGACY_DEVICES        BIT0
+#define EFI_ACPI_5_1_8042                  BIT1
+#define EFI_ACPI_5_1_VGA_NOT_PRESENT       BIT2
+#define EFI_ACPI_5_1_MSI_NOT_SUPPORTED     BIT3
+#define EFI_ACPI_5_1_PCIE_ASPM_CONTROLS    BIT4
+#define EFI_ACPI_5_1_CMOS_RTC_NOT_PRESENT  BIT5
 
 //
 // Fixed ACPI Description Table Arm Boot Architecture Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_5_1_ARM_PSCI_COMPLIANT              BIT0
-#define EFI_ACPI_5_1_ARM_PSCI_USE_HVC                BIT1
+#define EFI_ACPI_5_1_ARM_PSCI_COMPLIANT  BIT0
+#define EFI_ACPI_5_1_ARM_PSCI_USE_HVC    BIT1
 
 //
 // Fixed ACPI Description Table Fixed Feature Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_5_1_WBINVD                                 BIT0
-#define EFI_ACPI_5_1_WBINVD_FLUSH                           BIT1
-#define EFI_ACPI_5_1_PROC_C1                                BIT2
-#define EFI_ACPI_5_1_P_LVL2_UP                              BIT3
-#define EFI_ACPI_5_1_PWR_BUTTON                             BIT4
-#define EFI_ACPI_5_1_SLP_BUTTON                             BIT5
-#define EFI_ACPI_5_1_FIX_RTC                                BIT6
-#define EFI_ACPI_5_1_RTC_S4                                 BIT7
-#define EFI_ACPI_5_1_TMR_VAL_EXT                            BIT8
-#define EFI_ACPI_5_1_DCK_CAP                                BIT9
-#define EFI_ACPI_5_1_RESET_REG_SUP                          BIT10
-#define EFI_ACPI_5_1_SEALED_CASE                            BIT11
-#define EFI_ACPI_5_1_HEADLESS                               BIT12
-#define EFI_ACPI_5_1_CPU_SW_SLP                             BIT13
-#define EFI_ACPI_5_1_PCI_EXP_WAK                            BIT14
-#define EFI_ACPI_5_1_USE_PLATFORM_CLOCK                     BIT15
-#define EFI_ACPI_5_1_S4_RTC_STS_VALID                       BIT16
-#define EFI_ACPI_5_1_REMOTE_POWER_ON_CAPABLE                BIT17
-#define EFI_ACPI_5_1_FORCE_APIC_CLUSTER_MODEL               BIT18
-#define EFI_ACPI_5_1_FORCE_APIC_PHYSICAL_DESTINATION_MODE   BIT19
-#define EFI_ACPI_5_1_HW_REDUCED_ACPI                        BIT20
-#define EFI_ACPI_5_1_LOW_POWER_S0_IDLE_CAPABLE              BIT21
+#define EFI_ACPI_5_1_WBINVD                                BIT0
+#define EFI_ACPI_5_1_WBINVD_FLUSH                          BIT1
+#define EFI_ACPI_5_1_PROC_C1                               BIT2
+#define EFI_ACPI_5_1_P_LVL2_UP                             BIT3
+#define EFI_ACPI_5_1_PWR_BUTTON                            BIT4
+#define EFI_ACPI_5_1_SLP_BUTTON                            BIT5
+#define EFI_ACPI_5_1_FIX_RTC                               BIT6
+#define EFI_ACPI_5_1_RTC_S4                                BIT7
+#define EFI_ACPI_5_1_TMR_VAL_EXT                           BIT8
+#define EFI_ACPI_5_1_DCK_CAP                               BIT9
+#define EFI_ACPI_5_1_RESET_REG_SUP                         BIT10
+#define EFI_ACPI_5_1_SEALED_CASE                           BIT11
+#define EFI_ACPI_5_1_HEADLESS                              BIT12
+#define EFI_ACPI_5_1_CPU_SW_SLP                            BIT13
+#define EFI_ACPI_5_1_PCI_EXP_WAK                           BIT14
+#define EFI_ACPI_5_1_USE_PLATFORM_CLOCK                    BIT15
+#define EFI_ACPI_5_1_S4_RTC_STS_VALID                      BIT16
+#define EFI_ACPI_5_1_REMOTE_POWER_ON_CAPABLE               BIT17
+#define EFI_ACPI_5_1_FORCE_APIC_CLUSTER_MODEL              BIT18
+#define EFI_ACPI_5_1_FORCE_APIC_PHYSICAL_DESTINATION_MODE  BIT19
+#define EFI_ACPI_5_1_HW_REDUCED_ACPI                       BIT20
+#define EFI_ACPI_5_1_LOW_POWER_S0_IDLE_CAPABLE             BIT21
 
 ///
 /// Firmware ACPI Control Structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
-  UINT32  HardwareSignature;
-  UINT32  FirmwareWakingVector;
-  UINT32  GlobalLock;
-  UINT32  Flags;
-  UINT64  XFirmwareWakingVector;
-  UINT8   Version;
-  UINT8   Reserved0[3];
-  UINT32  OspmFlags;
-  UINT8   Reserved1[24];
+  UINT32    Signature;
+  UINT32    Length;
+  UINT32    HardwareSignature;
+  UINT32    FirmwareWakingVector;
+  UINT32    GlobalLock;
+  UINT32    Flags;
+  UINT64    XFirmwareWakingVector;
+  UINT8     Version;
+  UINT8     Reserved0[3];
+  UINT32    OspmFlags;
+  UINT8     Reserved1[24];
 } EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE;
 
 ///
@@ -262,14 +257,14 @@
 /// Firmware Control Structure Feature Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_5_1_S4BIOS_F                     BIT0
-#define EFI_ACPI_5_1_64BIT_WAKE_SUPPORTED_F       BIT1
+#define EFI_ACPI_5_1_S4BIOS_F                BIT0
+#define EFI_ACPI_5_1_64BIT_WAKE_SUPPORTED_F  BIT1
 
 ///
 /// OSPM Enabled Firmware Control Structure Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_5_1_OSPM_64BIT_WAKE_F            BIT0
+#define EFI_ACPI_5_1_OSPM_64BIT_WAKE_F  BIT0
 
 //
 // Differentiated System Description Table,
@@ -278,29 +273,29 @@
 // no definition needed as they are common description table header, the same with
 // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
 //
-#define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02
-#define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02
+#define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x02
+#define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION       0x02
 
 ///
 /// Multiple APIC Description Table header definition.  The rest of the table
 /// must be defined in a platform specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      LocalApicAddress;
-  UINT32                      Flags;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         LocalApicAddress;
+  UINT32                         Flags;
 } EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
 
 ///
 /// MADT Revision (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03
+#define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION  0x03
 
 ///
 /// Multiple APIC Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_5_1_PCAT_COMPAT         BIT0
+#define EFI_ACPI_5_1_PCAT_COMPAT  BIT0
 
 //
 // Multiple APIC Description Table APIC structure types
@@ -331,57 +326,57 @@
 /// Processor Local APIC Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   ApicId;
-  UINT32  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     ApicId;
+  UINT32    Flags;
 } EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_STRUCTURE;
 
 ///
 /// Local APIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_1_LOCAL_APIC_ENABLED        BIT0
+#define EFI_ACPI_5_1_LOCAL_APIC_ENABLED  BIT0
 
 ///
 /// IO APIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  IoApicAddress;
-  UINT32  GlobalSystemInterruptBase;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    IoApicAddress;
+  UINT32    GlobalSystemInterruptBase;
 } EFI_ACPI_5_1_IO_APIC_STRUCTURE;
 
 ///
 /// Interrupt Source Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Bus;
-  UINT8   Source;
-  UINT32  GlobalSystemInterrupt;
-  UINT16  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Bus;
+  UINT8     Source;
+  UINT32    GlobalSystemInterrupt;
+  UINT16    Flags;
 } EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
 
 ///
 /// Platform Interrupt Sources Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT8   InterruptType;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT8   IoSapicVector;
-  UINT32  GlobalSystemInterrupt;
-  UINT32  PlatformInterruptSourceFlags;
-  UINT8   CpeiProcessorOverride;
-  UINT8   Reserved[31];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT8     InterruptType;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT8     IoSapicVector;
+  UINT32    GlobalSystemInterrupt;
+  UINT32    PlatformInterruptSourceFlags;
+  UINT8     CpeiProcessorOverride;
+  UINT8     Reserved[31];
 } EFI_ACPI_5_1_PLATFORM_INTERRUPT_APIC_STRUCTURE;
 
 //
@@ -395,43 +390,43 @@
 /// Non-Maskable Interrupt Source Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT32  GlobalSystemInterrupt;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT32    GlobalSystemInterrupt;
 } EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
 
 ///
 /// Local APIC NMI Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT16  Flags;
-  UINT8   LocalApicLint;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT16    Flags;
+  UINT8     LocalApicLint;
 } EFI_ACPI_5_1_LOCAL_APIC_NMI_STRUCTURE;
 
 ///
 /// Local APIC Address Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT64  LocalApicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT64    LocalApicAddress;
 } EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
 
 ///
 /// IO SAPIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  GlobalSystemInterruptBase;
-  UINT64  IoSapicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    GlobalSystemInterruptBase;
+  UINT64    IoSapicAddress;
 } EFI_ACPI_5_1_IO_SAPIC_STRUCTURE;
 
 ///
@@ -439,155 +434,155 @@
 /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   LocalSapicId;
-  UINT8   LocalSapicEid;
-  UINT8   Reserved[3];
-  UINT32  Flags;
-  UINT32  ACPIProcessorUIDValue;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     LocalSapicId;
+  UINT8     LocalSapicEid;
+  UINT8     Reserved[3];
+  UINT32    Flags;
+  UINT32    ACPIProcessorUIDValue;
 } EFI_ACPI_5_1_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
 
 ///
 /// Platform Interrupt Sources Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT8   InterruptType;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT8   IoSapicVector;
-  UINT32  GlobalSystemInterrupt;
-  UINT32  PlatformInterruptSourceFlags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT8     InterruptType;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT8     IoSapicVector;
+  UINT32    GlobalSystemInterrupt;
+  UINT32    PlatformInterruptSourceFlags;
 } EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
 
 ///
 /// Platform Interrupt Source Flags.
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_5_1_CPEI_PROCESSOR_OVERRIDE          BIT0
+#define EFI_ACPI_5_1_CPEI_PROCESSOR_OVERRIDE  BIT0
 
 ///
 /// Processor Local x2APIC Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Reserved[2];
-  UINT32  X2ApicId;
-  UINT32  Flags;
-  UINT32  AcpiProcessorUid;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Reserved[2];
+  UINT32    X2ApicId;
+  UINT32    Flags;
+  UINT32    AcpiProcessorUid;
 } EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
 
 ///
 /// Local x2APIC NMI Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT32  AcpiProcessorUid;
-  UINT8   LocalX2ApicLint;
-  UINT8   Reserved[3];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT32    AcpiProcessorUid;
+  UINT8     LocalX2ApicLint;
+  UINT8     Reserved[3];
 } EFI_ACPI_5_1_LOCAL_X2APIC_NMI_STRUCTURE;
 
 ///
 /// GIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT32  CPUInterfaceNumber;
-  UINT32  AcpiProcessorUid;
-  UINT32  Flags;
-  UINT32  ParkingProtocolVersion;
-  UINT32  PerformanceInterruptGsiv;
-  UINT64  ParkedAddress;
-  UINT64  PhysicalBaseAddress;
-  UINT64  GICV;
-  UINT64  GICH;
-  UINT32  VGICMaintenanceInterrupt;
-  UINT64  GICRBaseAddress;
-  UINT64  MPIDR;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT32    CPUInterfaceNumber;
+  UINT32    AcpiProcessorUid;
+  UINT32    Flags;
+  UINT32    ParkingProtocolVersion;
+  UINT32    PerformanceInterruptGsiv;
+  UINT64    ParkedAddress;
+  UINT64    PhysicalBaseAddress;
+  UINT64    GICV;
+  UINT64    GICH;
+  UINT32    VGICMaintenanceInterrupt;
+  UINT64    GICRBaseAddress;
+  UINT64    MPIDR;
 } EFI_ACPI_5_1_GIC_STRUCTURE;
 
 ///
 /// GIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_1_GIC_ENABLED                              BIT0
-#define EFI_ACPI_5_1_PERFORMANCE_INTERRUPT_MODEL              BIT1
-#define EFI_ACPI_5_1_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS    BIT2
+#define EFI_ACPI_5_1_GIC_ENABLED                            BIT0
+#define EFI_ACPI_5_1_PERFORMANCE_INTERRUPT_MODEL            BIT1
+#define EFI_ACPI_5_1_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS  BIT2
 
 ///
 /// GIC Distributor Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved1;
-  UINT32  GicId;
-  UINT64  PhysicalBaseAddress;
-  UINT32  SystemVectorBase;
-  UINT8   GicVersion;
-  UINT8   Reserved2[3];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved1;
+  UINT32    GicId;
+  UINT64    PhysicalBaseAddress;
+  UINT32    SystemVectorBase;
+  UINT8     GicVersion;
+  UINT8     Reserved2[3];
 } EFI_ACPI_5_1_GIC_DISTRIBUTOR_STRUCTURE;
 
 ///
 /// GIC Version
 ///
-#define EFI_ACPI_5_1_GIC_V1                                   0x01
-#define EFI_ACPI_5_1_GIC_V2                                   0x02
-#define EFI_ACPI_5_1_GIC_V3                                   0x03
-#define EFI_ACPI_5_1_GIC_V4                                   0x04
+#define EFI_ACPI_5_1_GIC_V1  0x01
+#define EFI_ACPI_5_1_GIC_V2  0x02
+#define EFI_ACPI_5_1_GIC_V3  0x03
+#define EFI_ACPI_5_1_GIC_V4  0x04
 
 ///
 /// GIC MSI Frame Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved1;
-  UINT32  GicMsiFrameId;
-  UINT64  PhysicalBaseAddress;
-  UINT32  Flags;
-  UINT16  SPICount;
-  UINT16  SPIBase;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved1;
+  UINT32    GicMsiFrameId;
+  UINT64    PhysicalBaseAddress;
+  UINT32    Flags;
+  UINT16    SPICount;
+  UINT16    SPIBase;
 } EFI_ACPI_5_1_GIC_MSI_FRAME_STRUCTURE;
 
 ///
 /// GIC MSI Frame Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_1_SPI_COUNT_BASE_SELECT                    BIT0
+#define EFI_ACPI_5_1_SPI_COUNT_BASE_SELECT  BIT0
 
 ///
 /// GICR Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT64  DiscoveryRangeBaseAddress;
-  UINT32  DiscoveryRangeLength;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT64    DiscoveryRangeBaseAddress;
+  UINT32    DiscoveryRangeLength;
 } EFI_ACPI_5_1_GICR_STRUCTURE;
 
 ///
 /// Smart Battery Description Table (SBST)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      WarningEnergyLevel;
-  UINT32                      LowEnergyLevel;
-  UINT32                      CriticalEnergyLevel;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         WarningEnergyLevel;
+  UINT32                         LowEnergyLevel;
+  UINT32                         CriticalEnergyLevel;
 } EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE;
 
 ///
 /// SBST Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Embedded Controller Boot Resources Table (ECDT)
@@ -595,11 +590,11 @@
 /// a fully qualified reference to the name space object.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  EcControl;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  EcData;
-  UINT32                                  Uid;
-  UINT8                                   GpeBit;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    EcControl;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    EcData;
+  UINT32                                    Uid;
+  UINT8                                     GpeBit;
 } EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
 
 ///
@@ -612,9 +607,9 @@
 /// must be defined in a platform specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      Reserved1;  ///< Must be set to 1
-  UINT64                      Reserved2;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         Reserved1; ///< Must be set to 1
+  UINT64                         Reserved2;
 } EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
 
 ///
@@ -636,83 +631,83 @@
 /// Processor Local APIC/SAPIC Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   ProximityDomain7To0;
-  UINT8   ApicId;
-  UINT32  Flags;
-  UINT8   LocalSapicEid;
-  UINT8   ProximityDomain31To8[3];
-  UINT32  ClockDomain;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     ProximityDomain7To0;
+  UINT8     ApicId;
+  UINT32    Flags;
+  UINT8     LocalSapicEid;
+  UINT8     ProximityDomain31To8[3];
+  UINT32    ClockDomain;
 } EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
 
 ///
 /// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
+#define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED  (1 << 0)
 
 ///
 /// Memory Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT32  ProximityDomain;
-  UINT16  Reserved1;
-  UINT32  AddressBaseLow;
-  UINT32  AddressBaseHigh;
-  UINT32  LengthLow;
-  UINT32  LengthHigh;
-  UINT32  Reserved2;
-  UINT32  Flags;
-  UINT64  Reserved3;
+  UINT8     Type;
+  UINT8     Length;
+  UINT32    ProximityDomain;
+  UINT16    Reserved1;
+  UINT32    AddressBaseLow;
+  UINT32    AddressBaseHigh;
+  UINT32    LengthLow;
+  UINT32    LengthHigh;
+  UINT32    Reserved2;
+  UINT32    Flags;
+  UINT64    Reserved3;
 } EFI_ACPI_5_1_MEMORY_AFFINITY_STRUCTURE;
 
 //
 // Memory Flags.  All other bits are reserved and must be 0.
 //
-#define EFI_ACPI_5_1_MEMORY_ENABLED       (1 << 0)
-#define EFI_ACPI_5_1_MEMORY_HOT_PLUGGABLE (1 << 1)
-#define EFI_ACPI_5_1_MEMORY_NONVOLATILE   (1 << 2)
+#define EFI_ACPI_5_1_MEMORY_ENABLED        (1 << 0)
+#define EFI_ACPI_5_1_MEMORY_HOT_PLUGGABLE  (1 << 1)
+#define EFI_ACPI_5_1_MEMORY_NONVOLATILE    (1 << 2)
 
 ///
 /// Processor Local x2APIC Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Reserved1[2];
-  UINT32  ProximityDomain;
-  UINT32  X2ApicId;
-  UINT32  Flags;
-  UINT32  ClockDomain;
-  UINT8   Reserved2[4];
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Reserved1[2];
+  UINT32    ProximityDomain;
+  UINT32    X2ApicId;
+  UINT32    Flags;
+  UINT32    ClockDomain;
+  UINT8     Reserved2[4];
 } EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
 
 ///
 /// GICC Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT32  ProximityDomain;
-  UINT32  AcpiProcessorUid;
-  UINT32  Flags;
-  UINT32  ClockDomain;
+  UINT8     Type;
+  UINT8     Length;
+  UINT32    ProximityDomain;
+  UINT32    AcpiProcessorUid;
+  UINT32    Flags;
+  UINT32    ClockDomain;
 } EFI_ACPI_5_1_GICC_AFFINITY_STRUCTURE;
 
 ///
 /// GICC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_1_GICC_ENABLED (1 << 0)
+#define EFI_ACPI_5_1_GICC_ENABLED  (1 << 0)
 
 ///
 /// System Locality Distance Information Table (SLIT).
 /// The rest of the table is a matrix.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT64                      NumberOfSystemLocalities;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT64                         NumberOfSystemLocalities;
 } EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
 
 ///
@@ -724,14 +719,14 @@
 /// Corrected Platform Error Polling Table (CPEP)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT8                       Reserved[8];
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT8                          Reserved[8];
 } EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
 
 ///
 /// CPEP Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION  0x01
 
 //
 // CPEP processor structure types.
@@ -742,66 +737,66 @@
 /// Corrected Platform Error Polling Processor Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT32  PollingInterval;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT32    PollingInterval;
 } EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
 
 ///
 /// Maximum System Characteristics Table (MSCT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      OffsetProxDomInfo;
-  UINT32                      MaximumNumberOfProximityDomains;
-  UINT32                      MaximumNumberOfClockDomains;
-  UINT64                      MaximumPhysicalAddress;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         OffsetProxDomInfo;
+  UINT32                         MaximumNumberOfProximityDomains;
+  UINT32                         MaximumNumberOfClockDomains;
+  UINT64                         MaximumPhysicalAddress;
 } EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
 
 ///
 /// MSCT Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION  0x01
 
 ///
 /// Maximum Proximity Domain Information Structure Definition
 ///
 typedef struct {
-  UINT8   Revision;
-  UINT8   Length;
-  UINT32  ProximityDomainRangeLow;
-  UINT32  ProximityDomainRangeHigh;
-  UINT32  MaximumProcessorCapacity;
-  UINT64  MaximumMemoryCapacity;
+  UINT8     Revision;
+  UINT8     Length;
+  UINT32    ProximityDomainRangeLow;
+  UINT32    ProximityDomainRangeHigh;
+  UINT32    MaximumProcessorCapacity;
+  UINT64    MaximumMemoryCapacity;
 } EFI_ACPI_5_1_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
 
 ///
 /// ACPI RAS Feature Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT8                       PlatformCommunicationChannelIdentifier[12];
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT8                          PlatformCommunicationChannelIdentifier[12];
 } EFI_ACPI_5_1_RAS_FEATURE_TABLE;
 
 ///
 /// RASF Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_RAS_FEATURE_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_RAS_FEATURE_TABLE_REVISION  0x01
 
 ///
 /// ACPI RASF Platform Communication Channel Shared Memory Region definition.
 ///
 typedef struct {
-  UINT32                      Signature;
-  UINT16                      Command;
-  UINT16                      Status;
-  UINT16                      Version;
-  UINT8                       RASCapabilities[16];
-  UINT8                       SetRASCapabilities[16];
-  UINT16                      NumberOfRASFParameterBlocks;
-  UINT32                      SetRASCapabilitiesStatus;
+  UINT32    Signature;
+  UINT16    Command;
+  UINT16    Status;
+  UINT16    Version;
+  UINT8     RASCapabilities[16];
+  UINT8     SetRASCapabilities[16];
+  UINT16    NumberOfRASFParameterBlocks;
+  UINT32    SetRASCapabilitiesStatus;
 } EFI_ACPI_5_1_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
 
 ///
@@ -819,52 +814,52 @@
 /// ACPI RASF Parameter Block structure for PATROL_SCRUB
 ///
 typedef struct {
-  UINT16                      Type;
-  UINT16                      Version;
-  UINT16                      Length;
-  UINT16                      PatrolScrubCommand;
-  UINT64                      RequestedAddressRange[2];
-  UINT64                      ActualAddressRange[2];
-  UINT16                      Flags;
-  UINT8                       RequestedSpeed;
+  UINT16    Type;
+  UINT16    Version;
+  UINT16    Length;
+  UINT16    PatrolScrubCommand;
+  UINT64    RequestedAddressRange[2];
+  UINT64    ActualAddressRange[2];
+  UINT16    Flags;
+  UINT8     RequestedSpeed;
 } EFI_ACPI_5_1_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
 
 ///
 /// ACPI RASF Patrol Scrub command
 ///
-#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS   0x01
-#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER   0x02
-#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER    0x03
+#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS  0x01
+#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER  0x02
+#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER   0x03
 
 ///
 /// Memory Power State Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT8                       PlatformCommunicationChannelIdentifier;
-  UINT8                       Reserved[3];
-// Memory Power Node Structure
-// Memory Power State Characteristics
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT8                          PlatformCommunicationChannelIdentifier;
+  UINT8                          Reserved[3];
+  // Memory Power Node Structure
+  // Memory Power State Characteristics
 } EFI_ACPI_5_1_MEMORY_POWER_STATUS_TABLE;
 
 ///
 /// MPST Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_REVISION  0x01
 
 ///
 /// MPST Platform Communication Channel Shared Memory Region definition.
 ///
 typedef struct {
-  UINT32                      Signature;
-  UINT16                      Command;
-  UINT16                      Status;
-  UINT32                      MemoryPowerCommandRegister;
-  UINT32                      MemoryPowerStatusRegister;
-  UINT32                      PowerStateId;
-  UINT32                      MemoryPowerNodeId;
-  UINT64                      MemoryEnergyConsumed;
-  UINT64                      ExpectedAveragePowerComsuned;
+  UINT32    Signature;
+  UINT16    Command;
+  UINT16    Status;
+  UINT32    MemoryPowerCommandRegister;
+  UINT32    MemoryPowerStatusRegister;
+  UINT32    PowerStateId;
+  UINT32    MemoryPowerNodeId;
+  UINT64    MemoryEnergyConsumed;
+  UINT64    ExpectedAveragePowerComsuned;
 } EFI_ACPI_5_1_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
 
 ///
@@ -875,186 +870,186 @@
 ///
 /// ACPI MPST Memory Power command
 ///
-#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE       0x01
-#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE       0x02
-#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED   0x03
-#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED   0x04
+#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE      0x01
+#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE      0x02
+#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED  0x03
+#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED  0x04
 
 ///
 /// MPST Memory Power Node Table
 ///
 typedef struct {
-  UINT8                                             PowerStateValue;
-  UINT8                                             PowerStateInformationIndex;
+  UINT8    PowerStateValue;
+  UINT8    PowerStateInformationIndex;
 } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE;
 
 typedef struct {
-  UINT8                                             Flag;
-  UINT8                                             Reserved;
-  UINT16                                            MemoryPowerNodeId;
-  UINT32                                            Length;
-  UINT64                                            AddressBase;
-  UINT64                                            AddressLength;
-  UINT32                                            NumberOfPowerStates;
-  UINT32                                            NumberOfPhysicalComponents;
-//EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE              MemoryPowerState[NumberOfPowerStates];
-//UINT16                                            PhysicalComponentIdentifier[NumberOfPhysicalComponents];
+  UINT8     Flag;
+  UINT8     Reserved;
+  UINT16    MemoryPowerNodeId;
+  UINT32    Length;
+  UINT64    AddressBase;
+  UINT64    AddressLength;
+  UINT32    NumberOfPowerStates;
+  UINT32    NumberOfPhysicalComponents;
+  // EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE              MemoryPowerState[NumberOfPowerStates];
+  // UINT16                                            PhysicalComponentIdentifier[NumberOfPhysicalComponents];
 } EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE;
 
-#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE          0x01
-#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED   0x02
-#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE   0x04
+#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE         0x01
+#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED  0x02
+#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE  0x04
 
 typedef struct {
-  UINT16                      MemoryPowerNodeCount;
-  UINT8                       Reserved[2];
+  UINT16    MemoryPowerNodeCount;
+  UINT8     Reserved[2];
 } EFI_ACPI_5_1_MPST_MEMORY_POWER_NODE_TABLE;
 
 ///
 /// MPST Memory Power State Characteristics Table
 ///
 typedef struct {
-  UINT8                                             PowerStateStructureID;
-  UINT8                                             Flag;
-  UINT16                                            Reserved;
-  UINT32                                            AveragePowerConsumedInMPS0;
-  UINT32                                            RelativePowerSavingToMPS0;
-  UINT64                                            ExitLatencyToMPS0;
+  UINT8     PowerStateStructureID;
+  UINT8     Flag;
+  UINT16    Reserved;
+  UINT32    AveragePowerConsumedInMPS0;
+  UINT32    RelativePowerSavingToMPS0;
+  UINT64    ExitLatencyToMPS0;
 } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
 
-#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED              0x01
-#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY   0x02
-#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT    0x04
+#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED             0x01
+#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY  0x02
+#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT   0x04
 
 typedef struct {
-  UINT16                      MemoryPowerStateCharacteristicsCount;
-  UINT8                       Reserved[2];
+  UINT16    MemoryPowerStateCharacteristicsCount;
+  UINT8     Reserved[2];
 } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
 
 ///
 /// Memory Topology Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      Reserved;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         Reserved;
 } EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE;
 
 ///
 /// PMTT Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE_REVISION  0x01
 
 ///
 /// Common Memory Aggregator Device Structure.
 ///
 typedef struct {
-  UINT8                       Type;
-  UINT8                       Reserved;
-  UINT16                      Length;
-  UINT16                      Flags;
-  UINT16                      Reserved1;
+  UINT8     Type;
+  UINT8     Reserved;
+  UINT16    Length;
+  UINT16    Flags;
+  UINT16    Reserved1;
 } EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// Memory Aggregator Device Type
 ///
-#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET            0x1
-#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2
-#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM              0x3
+#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET             0x0
+#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER  0x1
+#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM               0x2
 
 ///
 /// Socket Memory Aggregator Device Structure.
 ///
 typedef struct {
-  EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
-  UINT16                                                       SocketIdentifier;
-  UINT16                                                       Reserved;
-//EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  MemoryController[];
+  EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    Header;
+  UINT16                                                         SocketIdentifier;
+  UINT16                                                         Reserved;
+  // EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  MemoryController[];
 } EFI_ACPI_5_1_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// MemoryController Memory Aggregator Device Structure.
 ///
 typedef struct {
-  EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
-  UINT32                                                       ReadLatency;
-  UINT32                                                       WriteLatency;
-  UINT32                                                       ReadBandwidth;
-  UINT32                                                       WriteBandwidth;
-  UINT16                                                       OptimalAccessUnit;
-  UINT16                                                       OptimalAccessAlignment;
-  UINT16                                                       Reserved;
-  UINT16                                                       NumberOfProximityDomains;
-//UINT32                                                       ProximityDomain[NumberOfProximityDomains];
-//EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    PhysicalComponent[];
+  EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    Header;
+  UINT32                                                         ReadLatency;
+  UINT32                                                         WriteLatency;
+  UINT32                                                         ReadBandwidth;
+  UINT32                                                         WriteBandwidth;
+  UINT16                                                         OptimalAccessUnit;
+  UINT16                                                         OptimalAccessAlignment;
+  UINT16                                                         Reserved;
+  UINT16                                                         NumberOfProximityDomains;
+  // UINT32                                                       ProximityDomain[NumberOfProximityDomains];
+  // EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    PhysicalComponent[];
 } EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// DIMM Memory Aggregator Device Structure.
 ///
 typedef struct {
-  EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
-  UINT16                                                       PhysicalComponentIdentifier;
-  UINT16                                                       Reserved;
-  UINT32                                                       SizeOfDimm;
-  UINT32                                                       SmbiosHandle;
+  EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    Header;
+  UINT16                                                         PhysicalComponentIdentifier;
+  UINT16                                                         Reserved;
+  UINT32                                                         SizeOfDimm;
+  UINT32                                                         SmbiosHandle;
 } EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// Boot Graphics Resource Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
   ///
   /// 2-bytes (16 bit) version ID. This value must be 1.
   ///
-  UINT16                      Version;
+  UINT16                         Version;
   ///
   /// 1-byte status field indicating current status about the table.
   ///     Bits[7:1] = Reserved (must be zero)
   ///     Bit [0] = Valid. A one indicates the boot image graphic is valid.
   ///
-  UINT8                       Status;
+  UINT8                          Status;
   ///
   /// 1-byte enumerated type field indicating format of the image.
   ///     0 = Bitmap
   ///     1 - 255  Reserved (for future use)
   ///
-  UINT8                       ImageType;
+  UINT8                          ImageType;
   ///
   /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy
   /// of the image bitmap.
   ///
-  UINT64                      ImageAddress;
+  UINT64                         ImageAddress;
   ///
   /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.
   /// (X, Y) display offset of the top left corner of the boot image.
   /// The top left corner of the display is at offset (0, 0).
   ///
-  UINT32                      ImageOffsetX;
+  UINT32                         ImageOffsetX;
   ///
   /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.
   /// (X, Y) display offset of the top left corner of the boot image.
   /// The top left corner of the display is at offset (0, 0).
   ///
-  UINT32                      ImageOffsetY;
+  UINT32                         ImageOffsetY;
 } EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE;
 
 ///
 /// BGRT Revision
 ///
-#define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
+#define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION  1
 
 ///
 /// BGRT Version
 ///
-#define EFI_ACPI_5_1_BGRT_VERSION         0x01
+#define EFI_ACPI_5_1_BGRT_VERSION  0x01
 
 ///
 /// BGRT Status
 ///
-#define EFI_ACPI_5_1_BGRT_STATUS_NOT_DISPLAYED 0x00
-#define EFI_ACPI_5_1_BGRT_STATUS_DISPLAYED     0x01
+#define EFI_ACPI_5_1_BGRT_STATUS_NOT_DISPLAYED  0x00
+#define EFI_ACPI_5_1_BGRT_STATUS_DISPLAYED      0x01
 
 ///
 /// BGRT Image Type
@@ -1064,26 +1059,26 @@
 ///
 /// FPDT Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION  0x01
 
 ///
 /// FPDT Performance Record Types
 ///
-#define EFI_ACPI_5_1_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER      0x0000
-#define EFI_ACPI_5_1_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER     0x0001
+#define EFI_ACPI_5_1_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER   0x0000
+#define EFI_ACPI_5_1_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER  0x0001
 
 ///
 /// FPDT Performance Record Revision
 ///
-#define EFI_ACPI_5_1_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER  0x01
-#define EFI_ACPI_5_1_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
+#define EFI_ACPI_5_1_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER   0x01
+#define EFI_ACPI_5_1_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER  0x01
 
 ///
 /// FPDT Runtime Performance Record Types
 ///
-#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME                0x0000
-#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND               0x0001
-#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT      0x0002
+#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME            0x0000
+#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND           0x0001
+#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT  0x0002
 
 ///
 /// FPDT Runtime Performance Record Revision
@@ -1096,77 +1091,77 @@
 /// FPDT Performance Record header
 ///
 typedef struct {
-  UINT16           Type;
-  UINT8            Length;
-  UINT8            Revision;
+  UINT16    Type;
+  UINT8     Length;
+  UINT8     Revision;
 } EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER;
 
 ///
 /// FPDT Performance Table header
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
+  UINT32    Signature;
+  UINT32    Length;
 } EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER;
 
 ///
 /// FPDT Firmware Basic Boot Performance Pointer Record Structure
 ///
 typedef struct {
-  EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
-  UINT32                                          Reserved;
+  EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER    Header;
+  UINT32                                         Reserved;
   ///
   /// 64-bit processor-relative physical address of the Basic Boot Performance Table.
   ///
-  UINT64                                          BootPerformanceTablePointer;
+  UINT64                                         BootPerformanceTablePointer;
 } EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;
 
 ///
 /// FPDT S3 Performance Table Pointer Record Structure
 ///
 typedef struct {
-  EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
-  UINT32                                          Reserved;
+  EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER    Header;
+  UINT32                                         Reserved;
   ///
   /// 64-bit processor-relative physical address of the S3 Performance Table.
   ///
-  UINT64                                          S3PerformanceTablePointer;
+  UINT64                                         S3PerformanceTablePointer;
 } EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;
 
 ///
 /// FPDT Firmware Basic Boot Performance Record Structure
 ///
 typedef struct {
-  EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
-  UINT32                                          Reserved;
+  EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER    Header;
+  UINT32                                         Reserved;
   ///
   /// Timer value logged at the beginning of firmware image execution.
   /// This may not always be zero or near zero.
   ///
-  UINT64                                          ResetEnd;
+  UINT64                                         ResetEnd;
   ///
   /// Timer value logged just prior to loading the OS boot loader into memory.
   /// For non-UEFI compatible boots, this field must be zero.
   ///
-  UINT64                                          OsLoaderLoadImageStart;
+  UINT64                                         OsLoaderLoadImageStart;
   ///
   /// Timer value logged just prior to launching the previously loaded OS boot loader image.
   /// For non-UEFI compatible boots, the timer value logged will be just prior
   /// to the INT 19h handler invocation.
   ///
-  UINT64                                          OsLoaderStartImageStart;
+  UINT64                                         OsLoaderStartImageStart;
   ///
   /// Timer value logged at the point when the OS loader calls the
   /// ExitBootServices function for UEFI compatible firmware.
   /// For non-UEFI compatible boots, this field must be zero.
   ///
-  UINT64                                          ExitBootServicesEntry;
+  UINT64                                         ExitBootServicesEntry;
   ///
-  /// Timer value logged at the point just prior towhen the OS loader gaining
+  /// Timer value logged at the point just prior to when the OS loader gaining
   /// control back from calls the ExitBootServices function for UEFI compatible firmware.
   /// For non-UEFI compatible boots, this field must be zero.
   ///
-  UINT64                                          ExitBootServicesExit;
+  UINT64                                         ExitBootServicesExit;
 } EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_RECORD;
 
 ///
@@ -1178,7 +1173,7 @@
 // FPDT Firmware Basic Boot Performance Table
 //
 typedef struct {
-  EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER      Header;
+  EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER    Header;
   //
   // one or more Performance Records.
   //
@@ -1193,7 +1188,7 @@
 // FPDT Firmware S3 Boot Performance Table
 //
 typedef struct {
-  EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER      Header;
+  EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER    Header;
   //
   // one or more Performance Records.
   //
@@ -1203,203 +1198,209 @@
 /// FPDT Basic S3 Resume Performance Record
 ///
 typedef struct {
-  EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
+  EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER    Header;
   ///
   /// A count of the number of S3 resume cycles since the last full boot sequence.
   ///
-  UINT32                                          ResumeCount;
+  UINT32                                         ResumeCount;
   ///
   /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the
   /// OS waking vector. Only the most recent resume cycle's time is retained.
   ///
-  UINT64                                          FullResume;
+  UINT64                                         FullResume;
   ///
   /// Average timer value of all resume cycles logged since the last full boot
   /// sequence, including the most recent resume.  Note that the entire log of
   /// timer values does not need to be retained in order to calculate this average.
   ///
-  UINT64                                          AverageResume;
+  UINT64                                         AverageResume;
 } EFI_ACPI_5_1_FPDT_S3_RESUME_RECORD;
 
 ///
 /// FPDT Basic S3 Suspend Performance Record
 ///
 typedef struct {
-  EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
+  EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER    Header;
   ///
   /// Timer value recorded at the OS write to SLP_TYP upon entry to S3.
   /// Only the most recent suspend cycle's timer value is retained.
   ///
-  UINT64                                          SuspendStart;
+  UINT64                                         SuspendStart;
   ///
   /// Timer value recorded at the final firmware write to SLP_TYP (or other
   /// mechanism) used to trigger hardware entry to S3.
   /// Only the most recent suspend cycle's timer value is retained.
   ///
-  UINT64                                          SuspendEnd;
+  UINT64                                         SuspendEnd;
 } EFI_ACPI_5_1_FPDT_S3_SUSPEND_RECORD;
 
 ///
 /// Firmware Performance Record Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
 } EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_RECORD_TABLE;
 
 ///
 /// Generic Timer Description Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT64                      CntControlBasePhysicalAddress;
-  UINT32                      Reserved;
-  UINT32                      SecurePL1TimerGSIV;
-  UINT32                      SecurePL1TimerFlags;
-  UINT32                      NonSecurePL1TimerGSIV;
-  UINT32                      NonSecurePL1TimerFlags;
-  UINT32                      VirtualTimerGSIV;
-  UINT32                      VirtualTimerFlags;
-  UINT32                      NonSecurePL2TimerGSIV;
-  UINT32                      NonSecurePL2TimerFlags;
-  UINT64                      CntReadBasePhysicalAddress;
-  UINT32                      PlatformTimerCount;
-  UINT32                      PlatformTimerOffset;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT64                         CntControlBasePhysicalAddress;
+  UINT32                         Reserved;
+  UINT32                         SecurePL1TimerGSIV;
+  UINT32                         SecurePL1TimerFlags;
+  UINT32                         NonSecurePL1TimerGSIV;
+  UINT32                         NonSecurePL1TimerFlags;
+  UINT32                         VirtualTimerGSIV;
+  UINT32                         VirtualTimerFlags;
+  UINT32                         NonSecurePL2TimerGSIV;
+  UINT32                         NonSecurePL2TimerFlags;
+  UINT64                         CntReadBasePhysicalAddress;
+  UINT32                         PlatformTimerCount;
+  UINT32                         PlatformTimerOffset;
 } EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE;
 
 ///
 /// GTDT Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x02
+#define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION  0x02
 
 ///
 /// Timer Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE          BIT0
-#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
-#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY          BIT2
+#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE      BIT0
+#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY  BIT1
+#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY      BIT2
 
 ///
 /// Platform Timer Type
 ///
-#define EFI_ACPI_5_1_GTDT_GT_BLOCK                       0
-#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG          1
+#define EFI_ACPI_5_1_GTDT_GT_BLOCK               0
+#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG  1
 
 ///
 /// GT Block Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT16  Length;
-  UINT8   Reserved;
-  UINT64  CntCtlBase;
-  UINT32  GTBlockTimerCount;
-  UINT32  GTBlockTimerOffset;
+  UINT8     Type;
+  UINT16    Length;
+  UINT8     Reserved;
+  UINT64    CntCtlBase;
+  UINT32    GTBlockTimerCount;
+  UINT32    GTBlockTimerOffset;
 } EFI_ACPI_5_1_GTDT_GT_BLOCK_STRUCTURE;
 
 ///
 /// GT Block Timer Structure
 ///
 typedef struct {
-  UINT8   GTFrameNumber;
-  UINT8   Reserved[3];
-  UINT64  CntBaseX;
-  UINT64  CntEL0BaseX;
-  UINT32  GTxPhysicalTimerGSIV;
-  UINT32  GTxPhysicalTimerFlags;
-  UINT32  GTxVirtualTimerGSIV;
-  UINT32  GTxVirtualTimerFlags;
-  UINT32  GTxCommonFlags;
+  UINT8     GTFrameNumber;
+  UINT8     Reserved[3];
+  UINT64    CntBaseX;
+  UINT64    CntEL0BaseX;
+  UINT32    GTxPhysicalTimerGSIV;
+  UINT32    GTxPhysicalTimerFlags;
+  UINT32    GTxVirtualTimerGSIV;
+  UINT32    GTxVirtualTimerFlags;
+  UINT32    GTxCommonFlags;
 } EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_STRUCTURE;
 
 ///
 /// GT Block Physical Timers and Virtual Timers Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE          BIT0
-#define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
+#define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE      BIT0
+#define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY  BIT1
 
 ///
 /// Common Flags Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER              BIT0
-#define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY      BIT1
+#define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER          BIT0
+#define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY  BIT1
 
 ///
 /// SBSA Generic Watchdog Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT16  Length;
-  UINT8   Reserved;
-  UINT64  RefreshFramePhysicalAddress;
-  UINT64  WatchdogControlFramePhysicalAddress;
-  UINT32  WatchdogTimerGSIV;
-  UINT32  WatchdogTimerFlags;
+  UINT8     Type;
+  UINT16    Length;
+  UINT8     Reserved;
+  UINT64    RefreshFramePhysicalAddress;
+  UINT64    WatchdogControlFramePhysicalAddress;
+  UINT32    WatchdogTimerGSIV;
+  UINT32    WatchdogTimerFlags;
 } EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE;
 
 ///
 /// SBSA Generic Watchdog Timer Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE          BIT0
-#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
-#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER                  BIT2
+#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE      BIT0
+#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY  BIT1
+#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER              BIT2
 
 ///
 /// Boot Error Record Table (BERT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      BootErrorRegionLength;
-  UINT64                      BootErrorRegion;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         BootErrorRegionLength;
+  UINT64                         BootErrorRegion;
 } EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_HEADER;
 
 ///
 /// BERT Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_REVISION  0x01
 
 ///
 /// Boot Error Region Block Status Definition
 ///
 typedef struct {
-  UINT32       UncorrectableErrorValid:1;
-  UINT32       CorrectableErrorValid:1;
-  UINT32       MultipleUncorrectableErrors:1;
-  UINT32       MultipleCorrectableErrors:1;
-  UINT32       ErrorDataEntryCount:10;
-  UINT32       Reserved:18;
+  UINT32    UncorrectableErrorValid     : 1;
+  UINT32    CorrectableErrorValid       : 1;
+  UINT32    MultipleUncorrectableErrors : 1;
+  UINT32    MultipleCorrectableErrors   : 1;
+  UINT32    ErrorDataEntryCount         : 10;
+  UINT32    Reserved                    : 18;
 } EFI_ACPI_5_1_ERROR_BLOCK_STATUS;
 
 ///
 /// Boot Error Region Definition
 ///
 typedef struct {
-  EFI_ACPI_5_1_ERROR_BLOCK_STATUS              BlockStatus;
-  UINT32                                       RawDataOffset;
-  UINT32                                       RawDataLength;
-  UINT32                                       DataLength;
-  UINT32                                       ErrorSeverity;
+  EFI_ACPI_5_1_ERROR_BLOCK_STATUS    BlockStatus;
+  UINT32                             RawDataOffset;
+  UINT32                             RawDataLength;
+  UINT32                             DataLength;
+  UINT32                             ErrorSeverity;
 } EFI_ACPI_5_1_BOOT_ERROR_REGION_STRUCTURE;
 
 //
 // Boot Error Severity types
 //
-#define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTABLE  0x00
+#define EFI_ACPI_5_1_ERROR_SEVERITY_RECOVERABLE  0x00
 #define EFI_ACPI_5_1_ERROR_SEVERITY_FATAL        0x01
 #define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTED    0x02
 #define EFI_ACPI_5_1_ERROR_SEVERITY_NONE         0x03
+//
+// The term 'Correctable' is no longer being used as an error severity of the
+// reported error since ACPI Specification Version 5.1 Errata B.
+// The below macro is considered as deprecated and should no longer be used.
+//
+#define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTABLE  0x00
 
 ///
 /// Generic Error Data Entry Definition
 ///
 typedef struct {
-  UINT8    SectionType[16];
-  UINT32   ErrorSeverity;
-  UINT16   Revision;
-  UINT8    ValidationBits;
-  UINT8    Flags;
-  UINT32   ErrorDataLength;
-  UINT8    FruId[16];
-  UINT8    FruText[20];
+  UINT8     SectionType[16];
+  UINT32    ErrorSeverity;
+  UINT16    Revision;
+  UINT8     ValidationBits;
+  UINT8     Flags;
+  UINT32    ErrorDataLength;
+  UINT8     FruId[16];
+  UINT8     FruText[20];
 } EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
 
 ///
@@ -1411,14 +1412,14 @@
 /// HEST - Hardware Error Source Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      ErrorSourceCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         ErrorSourceCount;
 } EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
 
 ///
 /// HEST Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_REVISION  0x01
 
 //
 // Error Source structure types.
@@ -1434,403 +1435,403 @@
 //
 // Error Source structure flags.
 //
-#define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_FIRMWARE_FIRST       (1 << 0)
-#define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_GLOBAL               (1 << 1)
+#define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_FIRMWARE_FIRST  (1 << 0)
+#define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_GLOBAL          (1 << 1)
 
 ///
 /// IA-32 Architecture Machine Check Exception Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT64  GlobalCapabilityInitData;
-  UINT64  GlobalControlInitData;
-  UINT8   NumberOfHardwareBanks;
-  UINT8   Reserved1[7];
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT64    GlobalCapabilityInitData;
+  UINT64    GlobalControlInitData;
+  UINT8     NumberOfHardwareBanks;
+  UINT8     Reserved1[7];
 } EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
 
 ///
 /// IA-32 Architecture Machine Check Bank Structure Definition
 ///
 typedef struct {
-  UINT8   BankNumber;
-  UINT8   ClearStatusOnInitialization;
-  UINT8   StatusDataFormat;
-  UINT8   Reserved0;
-  UINT32  ControlRegisterMsrAddress;
-  UINT64  ControlInitData;
-  UINT32  StatusRegisterMsrAddress;
-  UINT32  AddressRegisterMsrAddress;
-  UINT32  MiscRegisterMsrAddress;
+  UINT8     BankNumber;
+  UINT8     ClearStatusOnInitialization;
+  UINT8     StatusDataFormat;
+  UINT8     Reserved0;
+  UINT32    ControlRegisterMsrAddress;
+  UINT64    ControlInitData;
+  UINT32    StatusRegisterMsrAddress;
+  UINT32    AddressRegisterMsrAddress;
+  UINT32    MiscRegisterMsrAddress;
 } EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
 
 ///
 /// IA-32 Architecture Machine Check Bank Structure MCA data format
 ///
-#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32      0x00
-#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64   0x01
-#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64     0x02
+#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32     0x00
+#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64  0x01
+#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64    0x02
 
 //
 // Hardware Error Notification types. All other values are reserved
 //
-#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_POLLED                0x00
-#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT    0x01
-#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT       0x02
-#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_SCI                   0x03
-#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_NMI                   0x04
+#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_POLLED              0x00
+#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT  0x01
+#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT     0x02
+#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_SCI                 0x03
+#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_NMI                 0x04
 
 ///
 /// Hardware Error Notification Configuration Write Enable Structure Definition
 ///
 typedef struct {
-  UINT16    Type:1;
-  UINT16    PollInterval:1;
-  UINT16    SwitchToPollingThresholdValue:1;
-  UINT16    SwitchToPollingThresholdWindow:1;
-  UINT16    ErrorThresholdValue:1;
-  UINT16    ErrorThresholdWindow:1;
-  UINT16    Reserved:10;
+  UINT16    Type                           : 1;
+  UINT16    PollInterval                   : 1;
+  UINT16    SwitchToPollingThresholdValue  : 1;
+  UINT16    SwitchToPollingThresholdWindow : 1;
+  UINT16    ErrorThresholdValue            : 1;
+  UINT16    ErrorThresholdWindow           : 1;
+  UINT16    Reserved                       : 10;
 } EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
 
 ///
 /// Hardware Error Notification Structure Definition
 ///
 typedef struct {
-  UINT8                                                                          Type;
-  UINT8                                                                          Length;
-  EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE  ConfigurationWriteEnable;
-  UINT32                                                                         PollInterval;
-  UINT32                                                                         Vector;
-  UINT32                                                                         SwitchToPollingThresholdValue;
-  UINT32                                                                         SwitchToPollingThresholdWindow;
-  UINT32                                                                         ErrorThresholdValue;
-  UINT32                                                                         ErrorThresholdWindow;
+  UINT8                                                                            Type;
+  UINT8                                                                            Length;
+  EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE    ConfigurationWriteEnable;
+  UINT32                                                                           PollInterval;
+  UINT32                                                                           Vector;
+  UINT32                                                                           SwitchToPollingThresholdValue;
+  UINT32                                                                           SwitchToPollingThresholdWindow;
+  UINT32                                                                           ErrorThresholdValue;
+  UINT32                                                                           ErrorThresholdWindow;
 } EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
 
 ///
 /// IA-32 Architecture Corrected Machine Check Structure Definition
 ///
 typedef struct {
-  UINT16                                                 Type;
-  UINT16                                                 SourceId;
-  UINT8                                                  Reserved0[2];
-  UINT8                                                  Flags;
-  UINT8                                                  Enabled;
-  UINT32                                                 NumberOfRecordsToPreAllocate;
-  UINT32                                                 MaxSectionsPerRecord;
-  EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
-  UINT8                                                  NumberOfHardwareBanks;
-  UINT8                                                  Reserved1[3];
+  UINT16                                                Type;
+  UINT16                                                SourceId;
+  UINT8                                                 Reserved0[2];
+  UINT8                                                 Flags;
+  UINT8                                                 Enabled;
+  UINT32                                                NumberOfRecordsToPreAllocate;
+  UINT32                                                MaxSectionsPerRecord;
+  EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE    NotificationStructure;
+  UINT8                                                 NumberOfHardwareBanks;
+  UINT8                                                 Reserved1[3];
 } EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
 
 ///
 /// IA-32 Architecture NMI Error Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  MaxRawDataLength;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    MaxRawDataLength;
 } EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
 
 ///
 /// PCI Express Root Port AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
-  UINT32  RootErrorCommand;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
+  UINT32    RootErrorCommand;
 } EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
 
 ///
 /// PCI Express Device AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
 } EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
 
 ///
 /// PCI Express Bridge AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
-  UINT32  SecondaryUncorrectableErrorMask;
-  UINT32  SecondaryUncorrectableErrorSeverity;
-  UINT32  SecondaryAdvancedErrorCapabilitiesAndControl;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
+  UINT32    SecondaryUncorrectableErrorMask;
+  UINT32    SecondaryUncorrectableErrorSeverity;
+  UINT32    SecondaryAdvancedErrorCapabilitiesAndControl;
 } EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
 
 ///
 /// Generic Hardware Error Source Structure Definition
 ///
 typedef struct {
-  UINT16                                                 Type;
-  UINT16                                                 SourceId;
-  UINT16                                                 RelatedSourceId;
-  UINT8                                                  Flags;
-  UINT8                                                  Enabled;
-  UINT32                                                 NumberOfRecordsToPreAllocate;
-  UINT32                                                 MaxSectionsPerRecord;
-  UINT32                                                 MaxRawDataLength;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE                 ErrorStatusAddress;
-  EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
-  UINT32                                                 ErrorStatusBlockLength;
+  UINT16                                                Type;
+  UINT16                                                SourceId;
+  UINT16                                                RelatedSourceId;
+  UINT8                                                 Flags;
+  UINT8                                                 Enabled;
+  UINT32                                                NumberOfRecordsToPreAllocate;
+  UINT32                                                MaxSectionsPerRecord;
+  UINT32                                                MaxRawDataLength;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE                ErrorStatusAddress;
+  EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE    NotificationStructure;
+  UINT32                                                ErrorStatusBlockLength;
 } EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
 
 ///
 /// Generic Error Status Definition
 ///
 typedef struct {
-  EFI_ACPI_5_1_ERROR_BLOCK_STATUS              BlockStatus;
-  UINT32                                       RawDataOffset;
-  UINT32                                       RawDataLength;
-  UINT32                                       DataLength;
-  UINT32                                       ErrorSeverity;
+  EFI_ACPI_5_1_ERROR_BLOCK_STATUS    BlockStatus;
+  UINT32                             RawDataOffset;
+  UINT32                             RawDataLength;
+  UINT32                             DataLength;
+  UINT32                             ErrorSeverity;
 } EFI_ACPI_5_1_GENERIC_ERROR_STATUS_STRUCTURE;
 
 ///
 /// ERST - Error Record Serialization Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      SerializationHeaderSize;
-  UINT8                       Reserved0[4];
-  UINT32                      InstructionEntryCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         SerializationHeaderSize;
+  UINT8                          Reserved0[4];
+  UINT32                         InstructionEntryCount;
 } EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
 
 ///
 /// ERST Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_REVISION  0x01
 
 ///
 /// ERST Serialization Actions
 ///
-#define EFI_ACPI_5_1_ERST_BEGIN_WRITE_OPERATION                    0x00
-#define EFI_ACPI_5_1_ERST_BEGIN_READ_OPERATION                     0x01
-#define EFI_ACPI_5_1_ERST_BEGIN_CLEAR_OPERATION                    0x02
-#define EFI_ACPI_5_1_ERST_END_OPERATION                            0x03
-#define EFI_ACPI_5_1_ERST_SET_RECORD_OFFSET                        0x04
-#define EFI_ACPI_5_1_ERST_EXECUTE_OPERATION                        0x05
-#define EFI_ACPI_5_1_ERST_CHECK_BUSY_STATUS                        0x06
-#define EFI_ACPI_5_1_ERST_GET_COMMAND_STATUS                       0x07
-#define EFI_ACPI_5_1_ERST_GET_RECORD_IDENTIFIER                    0x08
-#define EFI_ACPI_5_1_ERST_SET_RECORD_IDENTIFIER                    0x09
-#define EFI_ACPI_5_1_ERST_GET_RECORD_COUNT                         0x0A
-#define EFI_ACPI_5_1_ERST_BEGIN_DUMMY_WRITE_OPERATION              0x0B
-#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE              0x0D
-#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH       0x0E
-#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES   0x0F
+#define EFI_ACPI_5_1_ERST_BEGIN_WRITE_OPERATION                   0x00
+#define EFI_ACPI_5_1_ERST_BEGIN_READ_OPERATION                    0x01
+#define EFI_ACPI_5_1_ERST_BEGIN_CLEAR_OPERATION                   0x02
+#define EFI_ACPI_5_1_ERST_END_OPERATION                           0x03
+#define EFI_ACPI_5_1_ERST_SET_RECORD_OFFSET                       0x04
+#define EFI_ACPI_5_1_ERST_EXECUTE_OPERATION                       0x05
+#define EFI_ACPI_5_1_ERST_CHECK_BUSY_STATUS                       0x06
+#define EFI_ACPI_5_1_ERST_GET_COMMAND_STATUS                      0x07
+#define EFI_ACPI_5_1_ERST_GET_RECORD_IDENTIFIER                   0x08
+#define EFI_ACPI_5_1_ERST_SET_RECORD_IDENTIFIER                   0x09
+#define EFI_ACPI_5_1_ERST_GET_RECORD_COUNT                        0x0A
+#define EFI_ACPI_5_1_ERST_BEGIN_DUMMY_WRITE_OPERATION             0x0B
+#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE             0x0D
+#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH      0x0E
+#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES  0x0F
 
 ///
 /// ERST Action Command Status
 ///
-#define EFI_ACPI_5_1_ERST_STATUS_SUCCESS                           0x00
-#define EFI_ACPI_5_1_ERST_STATUS_NOT_ENOUGH_SPACE                  0x01
-#define EFI_ACPI_5_1_ERST_STATUS_HARDWARE_NOT_AVAILABLE            0x02
-#define EFI_ACPI_5_1_ERST_STATUS_FAILED                            0x03
-#define EFI_ACPI_5_1_ERST_STATUS_RECORD_STORE_EMPTY                0x04
-#define EFI_ACPI_5_1_ERST_STATUS_RECORD_NOT_FOUND                  0x05
+#define EFI_ACPI_5_1_ERST_STATUS_SUCCESS                 0x00
+#define EFI_ACPI_5_1_ERST_STATUS_NOT_ENOUGH_SPACE        0x01
+#define EFI_ACPI_5_1_ERST_STATUS_HARDWARE_NOT_AVAILABLE  0x02
+#define EFI_ACPI_5_1_ERST_STATUS_FAILED                  0x03
+#define EFI_ACPI_5_1_ERST_STATUS_RECORD_STORE_EMPTY      0x04
+#define EFI_ACPI_5_1_ERST_STATUS_RECORD_NOT_FOUND        0x05
 
 ///
 /// ERST Serialization Instructions
 ///
-#define EFI_ACPI_5_1_ERST_READ_REGISTER                            0x00
-#define EFI_ACPI_5_1_ERST_READ_REGISTER_VALUE                      0x01
-#define EFI_ACPI_5_1_ERST_WRITE_REGISTER                           0x02
-#define EFI_ACPI_5_1_ERST_WRITE_REGISTER_VALUE                     0x03
-#define EFI_ACPI_5_1_ERST_NOOP                                     0x04
-#define EFI_ACPI_5_1_ERST_LOAD_VAR1                                0x05
-#define EFI_ACPI_5_1_ERST_LOAD_VAR2                                0x06
-#define EFI_ACPI_5_1_ERST_STORE_VAR1                               0x07
-#define EFI_ACPI_5_1_ERST_ADD                                      0x08
-#define EFI_ACPI_5_1_ERST_SUBTRACT                                 0x09
-#define EFI_ACPI_5_1_ERST_ADD_VALUE                                0x0A
-#define EFI_ACPI_5_1_ERST_SUBTRACT_VALUE                           0x0B
-#define EFI_ACPI_5_1_ERST_STALL                                    0x0C
-#define EFI_ACPI_5_1_ERST_STALL_WHILE_TRUE                         0x0D
-#define EFI_ACPI_5_1_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE            0x0E
-#define EFI_ACPI_5_1_ERST_GOTO                                     0x0F
-#define EFI_ACPI_5_1_ERST_SET_SRC_ADDRESS_BASE                     0x10
-#define EFI_ACPI_5_1_ERST_SET_DST_ADDRESS_BASE                     0x11
-#define EFI_ACPI_5_1_ERST_MOVE_DATA                                0x12
+#define EFI_ACPI_5_1_ERST_READ_REGISTER                  0x00
+#define EFI_ACPI_5_1_ERST_READ_REGISTER_VALUE            0x01
+#define EFI_ACPI_5_1_ERST_WRITE_REGISTER                 0x02
+#define EFI_ACPI_5_1_ERST_WRITE_REGISTER_VALUE           0x03
+#define EFI_ACPI_5_1_ERST_NOOP                           0x04
+#define EFI_ACPI_5_1_ERST_LOAD_VAR1                      0x05
+#define EFI_ACPI_5_1_ERST_LOAD_VAR2                      0x06
+#define EFI_ACPI_5_1_ERST_STORE_VAR1                     0x07
+#define EFI_ACPI_5_1_ERST_ADD                            0x08
+#define EFI_ACPI_5_1_ERST_SUBTRACT                       0x09
+#define EFI_ACPI_5_1_ERST_ADD_VALUE                      0x0A
+#define EFI_ACPI_5_1_ERST_SUBTRACT_VALUE                 0x0B
+#define EFI_ACPI_5_1_ERST_STALL                          0x0C
+#define EFI_ACPI_5_1_ERST_STALL_WHILE_TRUE               0x0D
+#define EFI_ACPI_5_1_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE  0x0E
+#define EFI_ACPI_5_1_ERST_GOTO                           0x0F
+#define EFI_ACPI_5_1_ERST_SET_SRC_ADDRESS_BASE           0x10
+#define EFI_ACPI_5_1_ERST_SET_DST_ADDRESS_BASE           0x11
+#define EFI_ACPI_5_1_ERST_MOVE_DATA                      0x12
 
 ///
 /// ERST Instruction Flags
 ///
-#define EFI_ACPI_5_1_ERST_PRESERVE_REGISTER                        0x01
+#define EFI_ACPI_5_1_ERST_PRESERVE_REGISTER  0x01
 
 ///
 /// ERST Serialization Instruction Entry
 ///
 typedef struct {
-  UINT8                                    SerializationAction;
-  UINT8                                    Instruction;
-  UINT8                                    Flags;
-  UINT8                                    Reserved0;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
-  UINT64                                   Value;
-  UINT64                                   Mask;
+  UINT8                                     SerializationAction;
+  UINT8                                     Instruction;
+  UINT8                                     Flags;
+  UINT8                                     Reserved0;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    RegisterRegion;
+  UINT64                                    Value;
+  UINT64                                    Mask;
 } EFI_ACPI_5_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
 
 ///
 /// EINJ - Error Injection Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      InjectionHeaderSize;
-  UINT8                       InjectionFlags;
-  UINT8                       Reserved0[3];
-  UINT32                      InjectionEntryCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         InjectionHeaderSize;
+  UINT8                          InjectionFlags;
+  UINT8                          Reserved0[3];
+  UINT32                         InjectionEntryCount;
 } EFI_ACPI_5_1_ERROR_INJECTION_TABLE_HEADER;
 
 ///
 /// EINJ Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_REVISION  0x01
 
 ///
 /// EINJ Error Injection Actions
 ///
-#define EFI_ACPI_5_1_EINJ_BEGIN_INJECTION_OPERATION                0x00
-#define EFI_ACPI_5_1_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE           0x01
-#define EFI_ACPI_5_1_EINJ_SET_ERROR_TYPE                           0x02
-#define EFI_ACPI_5_1_EINJ_GET_ERROR_TYPE                           0x03
-#define EFI_ACPI_5_1_EINJ_END_OPERATION                            0x04
-#define EFI_ACPI_5_1_EINJ_EXECUTE_OPERATION                        0x05
-#define EFI_ACPI_5_1_EINJ_CHECK_BUSY_STATUS                        0x06
-#define EFI_ACPI_5_1_EINJ_GET_COMMAND_STATUS                       0x07
-#define EFI_ACPI_5_1_EINJ_TRIGGER_ERROR                            0xFF
+#define EFI_ACPI_5_1_EINJ_BEGIN_INJECTION_OPERATION       0x00
+#define EFI_ACPI_5_1_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE  0x01
+#define EFI_ACPI_5_1_EINJ_SET_ERROR_TYPE                  0x02
+#define EFI_ACPI_5_1_EINJ_GET_ERROR_TYPE                  0x03
+#define EFI_ACPI_5_1_EINJ_END_OPERATION                   0x04
+#define EFI_ACPI_5_1_EINJ_EXECUTE_OPERATION               0x05
+#define EFI_ACPI_5_1_EINJ_CHECK_BUSY_STATUS               0x06
+#define EFI_ACPI_5_1_EINJ_GET_COMMAND_STATUS              0x07
+#define EFI_ACPI_5_1_EINJ_TRIGGER_ERROR                   0xFF
 
 ///
 /// EINJ Action Command Status
 ///
-#define EFI_ACPI_5_1_EINJ_STATUS_SUCCESS                           0x00
-#define EFI_ACPI_5_1_EINJ_STATUS_UNKNOWN_FAILURE                   0x01
-#define EFI_ACPI_5_1_EINJ_STATUS_INVALID_ACCESS                    0x02
+#define EFI_ACPI_5_1_EINJ_STATUS_SUCCESS          0x00
+#define EFI_ACPI_5_1_EINJ_STATUS_UNKNOWN_FAILURE  0x01
+#define EFI_ACPI_5_1_EINJ_STATUS_INVALID_ACCESS   0x02
 
 ///
 /// EINJ Error Type Definition
 ///
-#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_CORRECTABLE                 (1 << 0)
-#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL      (1 << 1)
-#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL         (1 << 2)
-#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_CORRECTABLE                    (1 << 3)
-#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL         (1 << 4)
-#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL            (1 << 5)
-#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE               (1 << 6)
-#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL    (1 << 7)
-#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL       (1 << 8)
-#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_CORRECTABLE                  (1 << 9)
-#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL       (1 << 10)
-#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL          (1 << 11)
+#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_CORRECTABLE               (1 << 0)
+#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL    (1 << 1)
+#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL       (1 << 2)
+#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_CORRECTABLE                  (1 << 3)
+#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL       (1 << 4)
+#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL          (1 << 5)
+#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE             (1 << 6)
+#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL  (1 << 7)
+#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL     (1 << 8)
+#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_CORRECTABLE                (1 << 9)
+#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL     (1 << 10)
+#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL        (1 << 11)
 
 ///
 /// EINJ Injection Instructions
 ///
-#define EFI_ACPI_5_1_EINJ_READ_REGISTER                            0x00
-#define EFI_ACPI_5_1_EINJ_READ_REGISTER_VALUE                      0x01
-#define EFI_ACPI_5_1_EINJ_WRITE_REGISTER                           0x02
-#define EFI_ACPI_5_1_EINJ_WRITE_REGISTER_VALUE                     0x03
-#define EFI_ACPI_5_1_EINJ_NOOP                                     0x04
+#define EFI_ACPI_5_1_EINJ_READ_REGISTER         0x00
+#define EFI_ACPI_5_1_EINJ_READ_REGISTER_VALUE   0x01
+#define EFI_ACPI_5_1_EINJ_WRITE_REGISTER        0x02
+#define EFI_ACPI_5_1_EINJ_WRITE_REGISTER_VALUE  0x03
+#define EFI_ACPI_5_1_EINJ_NOOP                  0x04
 
 ///
 /// EINJ Instruction Flags
 ///
-#define EFI_ACPI_5_1_EINJ_PRESERVE_REGISTER                        0x01
+#define EFI_ACPI_5_1_EINJ_PRESERVE_REGISTER  0x01
 
 ///
 /// EINJ Injection Instruction Entry
 ///
 typedef struct {
-  UINT8                                    InjectionAction;
-  UINT8                                    Instruction;
-  UINT8                                    Flags;
-  UINT8                                    Reserved0;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
-  UINT64                                   Value;
-  UINT64                                   Mask;
+  UINT8                                     InjectionAction;
+  UINT8                                     Instruction;
+  UINT8                                     Flags;
+  UINT8                                     Reserved0;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    RegisterRegion;
+  UINT64                                    Value;
+  UINT64                                    Mask;
 } EFI_ACPI_5_1_EINJ_INJECTION_INSTRUCTION_ENTRY;
 
 ///
 /// EINJ Trigger Action Table
 ///
 typedef struct {
-  UINT32  HeaderSize;
-  UINT32  Revision;
-  UINT32  TableSize;
-  UINT32  EntryCount;
+  UINT32    HeaderSize;
+  UINT32    Revision;
+  UINT32    TableSize;
+  UINT32    EntryCount;
 } EFI_ACPI_5_1_EINJ_TRIGGER_ACTION_TABLE;
 
 ///
 /// Platform Communications Channel Table (PCCT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      Flags;
-  UINT64                      Reserved;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         Flags;
+  UINT64                         Reserved;
 } EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;
 
 ///
 /// PCCT Version (as defined in ACPI 5.1 spec.)
 ///
-#define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01
+#define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION  0x01
 
 ///
 /// PCCT Global Flags
 ///
-#define EFI_ACPI_5_1_PCCT_FLAGS_SCI_DOORBELL                      BIT0
+#define EFI_ACPI_5_1_PCCT_FLAGS_SCI_DOORBELL  BIT0
 
 //
 // PCCT Subspace type
@@ -1841,25 +1842,25 @@
 /// PCC Subspace Structure Header
 ///
 typedef struct {
-  UINT8        Type;
-  UINT8        Length;
+  UINT8    Type;
+  UINT8    Length;
 } EFI_ACPI_5_1_PCCT_SUBSPACE_HEADER;
 
 ///
 /// Generic Communications Subspace Structure
 ///
 typedef struct {
-  UINT8                                    Type;
-  UINT8                                    Length;
-  UINT8                                    Reserved[6];
-  UINT64                                   BaseAddress;
-  UINT64                                   AddressLength;
-  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE   DoorbellRegister;
-  UINT64                                   DoorbellPreserve;
-  UINT64                                   DoorbellWrite;
-  UINT32                                   NominalLatency;
-  UINT32                                   MaximumPeriodicAccessRate;
-  UINT16                                   MinimumRequestTurnaroundTime;
+  UINT8                                     Type;
+  UINT8                                     Length;
+  UINT8                                     Reserved[6];
+  UINT64                                    BaseAddress;
+  UINT64                                    AddressLength;
+  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE    DoorbellRegister;
+  UINT64                                    DoorbellPreserve;
+  UINT64                                    DoorbellWrite;
+  UINT32                                    NominalLatency;
+  UINT32                                    MaximumPeriodicAccessRate;
+  UINT16                                    MinimumRequestTurnaroundTime;
 } EFI_ACPI_5_1_PCCT_SUBSPACE_GENERIC;
 
 ///
@@ -1867,18 +1868,18 @@
 ///
 
 typedef struct {
-  UINT8                                    Command;
-  UINT8                                    Reserved:7;
-  UINT8                                    GenerateSci:1;
+  UINT8    Command;
+  UINT8    Reserved    : 7;
+  UINT8    GenerateSci : 1;
 } EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;
 
 typedef struct {
-  UINT8                                    CommandComplete:1;
-  UINT8                                    SciDoorbell:1;
-  UINT8                                    Error:1;
-  UINT8                                    PlatformNotification:1;
-  UINT8                                    Reserved:4;
-  UINT8                                    Reserved1;
+  UINT8    CommandComplete      : 1;
+  UINT8    SciDoorbell          : 1;
+  UINT8    Error                : 1;
+  UINT8    PlatformNotification : 1;
+  UINT8    Reserved             : 4;
+  UINT8    Reserved1;
 } EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;
 
 typedef struct {
@@ -2087,12 +2088,17 @@
 #define EFI_ACPI_5_1_DATA_MANAGEMENT_TABLE_SIGNATURE  SIGNATURE_32('M', 'S', 'D', 'M')
 
 ///
+/// "PCCT" Platform Communications Channel Table
+///
+#define EFI_ACPI_5_1_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE  SIGNATURE_32('P', 'C', 'C', 'T')
+
+///
 /// "SLIC" MS Software Licensing Table Specification
 ///
 #define EFI_ACPI_5_1_SOFTWARE_LICENSING_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'C')
 
 ///
-/// "SPCR" Serial Port Concole Redirection Table
+/// "SPCR" Serial Port Console Redirection Table
 ///
 #define EFI_ACPI_5_1_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
 
diff --git a/src/include/ipxe/efi/IndustryStandard/Acpi60.h b/src/include/ipxe/efi/IndustryStandard/Acpi60.h
index c600735..9bd821c 100644
--- a/src/include/ipxe/efi/IndustryStandard/Acpi60.h
+++ b/src/include/ipxe/efi/IndustryStandard/Acpi60.h
@@ -1,21 +1,16 @@
 /** @file
   ACPI 6.0 definitions from the ACPI Specification Revision 6.0 Errata A January, 2016.
 
-  Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2015 - 2022, Intel Corporation. All rights reserved.<BR>
   (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 **/
 
 #ifndef _ACPI_6_0_H_
 #define _ACPI_6_0_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/Acpi51.h>
 
@@ -28,21 +23,21 @@
 /// ACPI 6.0 Generic Address Space definition
 ///
 typedef struct {
-  UINT8   AddressSpaceId;
-  UINT8   RegisterBitWidth;
-  UINT8   RegisterBitOffset;
-  UINT8   AccessSize;
-  UINT64  Address;
+  UINT8     AddressSpaceId;
+  UINT8     RegisterBitWidth;
+  UINT8     RegisterBitOffset;
+  UINT8     AccessSize;
+  UINT64    Address;
 } EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE;
 
 //
 // Generic Address Space Address IDs
 //
-#define EFI_ACPI_6_0_SYSTEM_MEMORY              0
-#define EFI_ACPI_6_0_SYSTEM_IO                  1
-#define EFI_ACPI_6_0_PCI_CONFIGURATION_SPACE    2
-#define EFI_ACPI_6_0_EMBEDDED_CONTROLLER        3
-#define EFI_ACPI_6_0_SMBUS                      4
+#define EFI_ACPI_6_0_SYSTEM_MEMORY                   0
+#define EFI_ACPI_6_0_SYSTEM_IO                       1
+#define EFI_ACPI_6_0_PCI_CONFIGURATION_SPACE         2
+#define EFI_ACPI_6_0_EMBEDDED_CONTROLLER             3
+#define EFI_ACPI_6_0_SMBUS                           4
 #define EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL  0x0A
 #define EFI_ACPI_6_0_FUNCTIONAL_FIXED_HARDWARE       0x7F
 
@@ -63,29 +58,29 @@
 /// Root System Description Pointer Structure
 ///
 typedef struct {
-  UINT64  Signature;
-  UINT8   Checksum;
-  UINT8   OemId[6];
-  UINT8   Revision;
-  UINT32  RsdtAddress;
-  UINT32  Length;
-  UINT64  XsdtAddress;
-  UINT8   ExtendedChecksum;
-  UINT8   Reserved[3];
+  UINT64    Signature;
+  UINT8     Checksum;
+  UINT8     OemId[6];
+  UINT8     Revision;
+  UINT32    RsdtAddress;
+  UINT32    Length;
+  UINT64    XsdtAddress;
+  UINT8     ExtendedChecksum;
+  UINT8     Reserved[3];
 } EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER;
 
 ///
 /// RSD_PTR Revision (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  ///< ACPISpec (Revision 6.0) says current value is 2
+#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION  0x02 ///< ACPISpec (Revision 6.0) says current value is 2
 
 ///
 /// Common table header, this prefaces all ACPI tables, including FACS, but
 /// excluding the RSD PTR structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
+  UINT32    Signature;
+  UINT32    Length;
 } EFI_ACPI_6_0_COMMON_HEADER;
 
 //
@@ -97,7 +92,7 @@
 ///
 /// RSDT Revision (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 //
 // Extended System Description Table
@@ -108,74 +103,74 @@
 ///
 /// XSDT Revision (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Fixed ACPI Description Table Structure (FADT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  UINT32                                  FirmwareCtrl;
-  UINT32                                  Dsdt;
-  UINT8                                   Reserved0;
-  UINT8                                   PreferredPmProfile;
-  UINT16                                  SciInt;
-  UINT32                                  SmiCmd;
-  UINT8                                   AcpiEnable;
-  UINT8                                   AcpiDisable;
-  UINT8                                   S4BiosReq;
-  UINT8                                   PstateCnt;
-  UINT32                                  Pm1aEvtBlk;
-  UINT32                                  Pm1bEvtBlk;
-  UINT32                                  Pm1aCntBlk;
-  UINT32                                  Pm1bCntBlk;
-  UINT32                                  Pm2CntBlk;
-  UINT32                                  PmTmrBlk;
-  UINT32                                  Gpe0Blk;
-  UINT32                                  Gpe1Blk;
-  UINT8                                   Pm1EvtLen;
-  UINT8                                   Pm1CntLen;
-  UINT8                                   Pm2CntLen;
-  UINT8                                   PmTmrLen;
-  UINT8                                   Gpe0BlkLen;
-  UINT8                                   Gpe1BlkLen;
-  UINT8                                   Gpe1Base;
-  UINT8                                   CstCnt;
-  UINT16                                  PLvl2Lat;
-  UINT16                                  PLvl3Lat;
-  UINT16                                  FlushSize;
-  UINT16                                  FlushStride;
-  UINT8                                   DutyOffset;
-  UINT8                                   DutyWidth;
-  UINT8                                   DayAlrm;
-  UINT8                                   MonAlrm;
-  UINT8                                   Century;
-  UINT16                                  IaPcBootArch;
-  UINT8                                   Reserved1;
-  UINT32                                  Flags;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  ResetReg;
-  UINT8                                   ResetValue;
-  UINT16                                  ArmBootArch;
-  UINT8                                   MinorVersion;
-  UINT64                                  XFirmwareCtrl;
-  UINT64                                  XDsdt;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  SleepControlReg;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  SleepStatusReg;
-  UINT64                                  HypervisorVendorIdentity;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  UINT32                                    FirmwareCtrl;
+  UINT32                                    Dsdt;
+  UINT8                                     Reserved0;
+  UINT8                                     PreferredPmProfile;
+  UINT16                                    SciInt;
+  UINT32                                    SmiCmd;
+  UINT8                                     AcpiEnable;
+  UINT8                                     AcpiDisable;
+  UINT8                                     S4BiosReq;
+  UINT8                                     PstateCnt;
+  UINT32                                    Pm1aEvtBlk;
+  UINT32                                    Pm1bEvtBlk;
+  UINT32                                    Pm1aCntBlk;
+  UINT32                                    Pm1bCntBlk;
+  UINT32                                    Pm2CntBlk;
+  UINT32                                    PmTmrBlk;
+  UINT32                                    Gpe0Blk;
+  UINT32                                    Gpe1Blk;
+  UINT8                                     Pm1EvtLen;
+  UINT8                                     Pm1CntLen;
+  UINT8                                     Pm2CntLen;
+  UINT8                                     PmTmrLen;
+  UINT8                                     Gpe0BlkLen;
+  UINT8                                     Gpe1BlkLen;
+  UINT8                                     Gpe1Base;
+  UINT8                                     CstCnt;
+  UINT16                                    PLvl2Lat;
+  UINT16                                    PLvl3Lat;
+  UINT16                                    FlushSize;
+  UINT16                                    FlushStride;
+  UINT8                                     DutyOffset;
+  UINT8                                     DutyWidth;
+  UINT8                                     DayAlrm;
+  UINT8                                     MonAlrm;
+  UINT8                                     Century;
+  UINT16                                    IaPcBootArch;
+  UINT8                                     Reserved1;
+  UINT32                                    Flags;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    ResetReg;
+  UINT8                                     ResetValue;
+  UINT16                                    ArmBootArch;
+  UINT8                                     MinorVersion;
+  UINT64                                    XFirmwareCtrl;
+  UINT64                                    XDsdt;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    XPm1aEvtBlk;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    XPm1bEvtBlk;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    XPm1aCntBlk;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    XPm1bCntBlk;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    XPm2CntBlk;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    XPmTmrBlk;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    XGpe0Blk;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    XGpe1Blk;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    SleepControlReg;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    SleepStatusReg;
+  UINT64                                    HypervisorVendorIdentity;
 } EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE;
 
 ///
 /// FADT Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x06
+#define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION        0x06
 #define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION  0x00
 
 //
@@ -195,62 +190,62 @@
 // Fixed ACPI Description Table Boot Architecture Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_6_0_LEGACY_DEVICES              BIT0
-#define EFI_ACPI_6_0_8042                        BIT1
-#define EFI_ACPI_6_0_VGA_NOT_PRESENT             BIT2
-#define EFI_ACPI_6_0_MSI_NOT_SUPPORTED           BIT3
-#define EFI_ACPI_6_0_PCIE_ASPM_CONTROLS          BIT4
-#define EFI_ACPI_6_0_CMOS_RTC_NOT_PRESENT        BIT5
+#define EFI_ACPI_6_0_LEGACY_DEVICES        BIT0
+#define EFI_ACPI_6_0_8042                  BIT1
+#define EFI_ACPI_6_0_VGA_NOT_PRESENT       BIT2
+#define EFI_ACPI_6_0_MSI_NOT_SUPPORTED     BIT3
+#define EFI_ACPI_6_0_PCIE_ASPM_CONTROLS    BIT4
+#define EFI_ACPI_6_0_CMOS_RTC_NOT_PRESENT  BIT5
 
 //
 // Fixed ACPI Description Table Arm Boot Architecture Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_6_0_ARM_PSCI_COMPLIANT              BIT0
-#define EFI_ACPI_6_0_ARM_PSCI_USE_HVC                BIT1
+#define EFI_ACPI_6_0_ARM_PSCI_COMPLIANT  BIT0
+#define EFI_ACPI_6_0_ARM_PSCI_USE_HVC    BIT1
 
 //
 // Fixed ACPI Description Table Fixed Feature Flags
 // All other bits are reserved and must be set to 0.
 //
-#define EFI_ACPI_6_0_WBINVD                                 BIT0
-#define EFI_ACPI_6_0_WBINVD_FLUSH                           BIT1
-#define EFI_ACPI_6_0_PROC_C1                                BIT2
-#define EFI_ACPI_6_0_P_LVL2_UP                              BIT3
-#define EFI_ACPI_6_0_PWR_BUTTON                             BIT4
-#define EFI_ACPI_6_0_SLP_BUTTON                             BIT5
-#define EFI_ACPI_6_0_FIX_RTC                                BIT6
-#define EFI_ACPI_6_0_RTC_S4                                 BIT7
-#define EFI_ACPI_6_0_TMR_VAL_EXT                            BIT8
-#define EFI_ACPI_6_0_DCK_CAP                                BIT9
-#define EFI_ACPI_6_0_RESET_REG_SUP                          BIT10
-#define EFI_ACPI_6_0_SEALED_CASE                            BIT11
-#define EFI_ACPI_6_0_HEADLESS                               BIT12
-#define EFI_ACPI_6_0_CPU_SW_SLP                             BIT13
-#define EFI_ACPI_6_0_PCI_EXP_WAK                            BIT14
-#define EFI_ACPI_6_0_USE_PLATFORM_CLOCK                     BIT15
-#define EFI_ACPI_6_0_S4_RTC_STS_VALID                       BIT16
-#define EFI_ACPI_6_0_REMOTE_POWER_ON_CAPABLE                BIT17
-#define EFI_ACPI_6_0_FORCE_APIC_CLUSTER_MODEL               BIT18
-#define EFI_ACPI_6_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE   BIT19
-#define EFI_ACPI_6_0_HW_REDUCED_ACPI                        BIT20
-#define EFI_ACPI_6_0_LOW_POWER_S0_IDLE_CAPABLE              BIT21
+#define EFI_ACPI_6_0_WBINVD                                BIT0
+#define EFI_ACPI_6_0_WBINVD_FLUSH                          BIT1
+#define EFI_ACPI_6_0_PROC_C1                               BIT2
+#define EFI_ACPI_6_0_P_LVL2_UP                             BIT3
+#define EFI_ACPI_6_0_PWR_BUTTON                            BIT4
+#define EFI_ACPI_6_0_SLP_BUTTON                            BIT5
+#define EFI_ACPI_6_0_FIX_RTC                               BIT6
+#define EFI_ACPI_6_0_RTC_S4                                BIT7
+#define EFI_ACPI_6_0_TMR_VAL_EXT                           BIT8
+#define EFI_ACPI_6_0_DCK_CAP                               BIT9
+#define EFI_ACPI_6_0_RESET_REG_SUP                         BIT10
+#define EFI_ACPI_6_0_SEALED_CASE                           BIT11
+#define EFI_ACPI_6_0_HEADLESS                              BIT12
+#define EFI_ACPI_6_0_CPU_SW_SLP                            BIT13
+#define EFI_ACPI_6_0_PCI_EXP_WAK                           BIT14
+#define EFI_ACPI_6_0_USE_PLATFORM_CLOCK                    BIT15
+#define EFI_ACPI_6_0_S4_RTC_STS_VALID                      BIT16
+#define EFI_ACPI_6_0_REMOTE_POWER_ON_CAPABLE               BIT17
+#define EFI_ACPI_6_0_FORCE_APIC_CLUSTER_MODEL              BIT18
+#define EFI_ACPI_6_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE  BIT19
+#define EFI_ACPI_6_0_HW_REDUCED_ACPI                       BIT20
+#define EFI_ACPI_6_0_LOW_POWER_S0_IDLE_CAPABLE             BIT21
 
 ///
 /// Firmware ACPI Control Structure
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
-  UINT32  HardwareSignature;
-  UINT32  FirmwareWakingVector;
-  UINT32  GlobalLock;
-  UINT32  Flags;
-  UINT64  XFirmwareWakingVector;
-  UINT8   Version;
-  UINT8   Reserved0[3];
-  UINT32  OspmFlags;
-  UINT8   Reserved1[24];
+  UINT32    Signature;
+  UINT32    Length;
+  UINT32    HardwareSignature;
+  UINT32    FirmwareWakingVector;
+  UINT32    GlobalLock;
+  UINT32    Flags;
+  UINT64    XFirmwareWakingVector;
+  UINT8     Version;
+  UINT8     Reserved0[3];
+  UINT32    OspmFlags;
+  UINT8     Reserved1[24];
 } EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;
 
 ///
@@ -262,14 +257,14 @@
 /// Firmware Control Structure Feature Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_6_0_S4BIOS_F                     BIT0
-#define EFI_ACPI_6_0_64BIT_WAKE_SUPPORTED_F       BIT1
+#define EFI_ACPI_6_0_S4BIOS_F                BIT0
+#define EFI_ACPI_6_0_64BIT_WAKE_SUPPORTED_F  BIT1
 
 ///
 /// OSPM Enabled Firmware Control Structure Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_6_0_OSPM_64BIT_WAKE_F            BIT0
+#define EFI_ACPI_6_0_OSPM_64BIT_WAKE_F  BIT0
 
 //
 // Differentiated System Description Table,
@@ -278,29 +273,29 @@
 // no definition needed as they are common description table header, the same with
 // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
 //
-#define EFI_ACPI_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02
-#define EFI_ACPI_6_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02
+#define EFI_ACPI_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION  0x02
+#define EFI_ACPI_6_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION       0x02
 
 ///
 /// Multiple APIC Description Table header definition.  The rest of the table
 /// must be defined in a platform specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      LocalApicAddress;
-  UINT32                      Flags;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         LocalApicAddress;
+  UINT32                         Flags;
 } EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
 
 ///
 /// MADT Revision (as defined in ACPI 6.0 Errata A spec.)
 ///
-#define EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x04
+#define EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION  0x04
 
 ///
 /// Multiple APIC Flags
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_6_0_PCAT_COMPAT         BIT0
+#define EFI_ACPI_6_0_PCAT_COMPAT  BIT0
 
 //
 // Multiple APIC Description Table APIC structure types
@@ -332,57 +327,57 @@
 /// Processor Local APIC Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorUid;
-  UINT8   ApicId;
-  UINT32  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorUid;
+  UINT8     ApicId;
+  UINT32    Flags;
 } EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_STRUCTURE;
 
 ///
 /// Local APIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_6_0_LOCAL_APIC_ENABLED        BIT0
+#define EFI_ACPI_6_0_LOCAL_APIC_ENABLED  BIT0
 
 ///
 /// IO APIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  IoApicAddress;
-  UINT32  GlobalSystemInterruptBase;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    IoApicAddress;
+  UINT32    GlobalSystemInterruptBase;
 } EFI_ACPI_6_0_IO_APIC_STRUCTURE;
 
 ///
 /// Interrupt Source Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Bus;
-  UINT8   Source;
-  UINT32  GlobalSystemInterrupt;
-  UINT16  Flags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Bus;
+  UINT8     Source;
+  UINT32    GlobalSystemInterrupt;
+  UINT16    Flags;
 } EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
 
 ///
 /// Platform Interrupt Sources Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT8   InterruptType;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT8   IoSapicVector;
-  UINT32  GlobalSystemInterrupt;
-  UINT32  PlatformInterruptSourceFlags;
-  UINT8   CpeiProcessorOverride;
-  UINT8   Reserved[31];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT8     InterruptType;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT8     IoSapicVector;
+  UINT32    GlobalSystemInterrupt;
+  UINT32    PlatformInterruptSourceFlags;
+  UINT8     CpeiProcessorOverride;
+  UINT8     Reserved[31];
 } EFI_ACPI_6_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;
 
 //
@@ -396,43 +391,43 @@
 /// Non-Maskable Interrupt Source Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT32  GlobalSystemInterrupt;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT32    GlobalSystemInterrupt;
 } EFI_ACPI_6_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
 
 ///
 /// Local APIC NMI Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorUid;
-  UINT16  Flags;
-  UINT8   LocalApicLint;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorUid;
+  UINT16    Flags;
+  UINT8     LocalApicLint;
 } EFI_ACPI_6_0_LOCAL_APIC_NMI_STRUCTURE;
 
 ///
 /// Local APIC Address Override Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT64  LocalApicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT64    LocalApicAddress;
 } EFI_ACPI_6_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
 
 ///
 /// IO SAPIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   IoApicId;
-  UINT8   Reserved;
-  UINT32  GlobalSystemInterruptBase;
-  UINT64  IoSapicAddress;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     IoApicId;
+  UINT8     Reserved;
+  UINT32    GlobalSystemInterruptBase;
+  UINT64    IoSapicAddress;
 } EFI_ACPI_6_0_IO_SAPIC_STRUCTURE;
 
 ///
@@ -440,169 +435,169 @@
 /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   AcpiProcessorId;
-  UINT8   LocalSapicId;
-  UINT8   LocalSapicEid;
-  UINT8   Reserved[3];
-  UINT32  Flags;
-  UINT32  ACPIProcessorUIDValue;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     AcpiProcessorId;
+  UINT8     LocalSapicId;
+  UINT8     LocalSapicEid;
+  UINT8     Reserved[3];
+  UINT32    Flags;
+  UINT32    ACPIProcessorUIDValue;
 } EFI_ACPI_6_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
 
 ///
 /// Platform Interrupt Sources Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT8   InterruptType;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT8   IoSapicVector;
-  UINT32  GlobalSystemInterrupt;
-  UINT32  PlatformInterruptSourceFlags;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT8     InterruptType;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT8     IoSapicVector;
+  UINT32    GlobalSystemInterrupt;
+  UINT32    PlatformInterruptSourceFlags;
 } EFI_ACPI_6_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
 
 ///
 /// Platform Interrupt Source Flags.
 /// All other bits are reserved and must be set to 0.
 ///
-#define EFI_ACPI_6_0_CPEI_PROCESSOR_OVERRIDE          BIT0
+#define EFI_ACPI_6_0_CPEI_PROCESSOR_OVERRIDE  BIT0
 
 ///
 /// Processor Local x2APIC Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Reserved[2];
-  UINT32  X2ApicId;
-  UINT32  Flags;
-  UINT32  AcpiProcessorUid;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Reserved[2];
+  UINT32    X2ApicId;
+  UINT32    Flags;
+  UINT32    AcpiProcessorUid;
 } EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
 
 ///
 /// Local x2APIC NMI Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Flags;
-  UINT32  AcpiProcessorUid;
-  UINT8   LocalX2ApicLint;
-  UINT8   Reserved[3];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Flags;
+  UINT32    AcpiProcessorUid;
+  UINT8     LocalX2ApicLint;
+  UINT8     Reserved[3];
 } EFI_ACPI_6_0_LOCAL_X2APIC_NMI_STRUCTURE;
 
 ///
 /// GIC Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT32  CPUInterfaceNumber;
-  UINT32  AcpiProcessorUid;
-  UINT32  Flags;
-  UINT32  ParkingProtocolVersion;
-  UINT32  PerformanceInterruptGsiv;
-  UINT64  ParkedAddress;
-  UINT64  PhysicalBaseAddress;
-  UINT64  GICV;
-  UINT64  GICH;
-  UINT32  VGICMaintenanceInterrupt;
-  UINT64  GICRBaseAddress;
-  UINT64  MPIDR;
-  UINT8   ProcessorPowerEfficiencyClass;
-  UINT8   Reserved2[3];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT32    CPUInterfaceNumber;
+  UINT32    AcpiProcessorUid;
+  UINT32    Flags;
+  UINT32    ParkingProtocolVersion;
+  UINT32    PerformanceInterruptGsiv;
+  UINT64    ParkedAddress;
+  UINT64    PhysicalBaseAddress;
+  UINT64    GICV;
+  UINT64    GICH;
+  UINT32    VGICMaintenanceInterrupt;
+  UINT64    GICRBaseAddress;
+  UINT64    MPIDR;
+  UINT8     ProcessorPowerEfficiencyClass;
+  UINT8     Reserved2[3];
 } EFI_ACPI_6_0_GIC_STRUCTURE;
 
 ///
 /// GIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_6_0_GIC_ENABLED                              BIT0
-#define EFI_ACPI_6_0_PERFORMANCE_INTERRUPT_MODEL              BIT1
-#define EFI_ACPI_6_0_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS    BIT2
+#define EFI_ACPI_6_0_GIC_ENABLED                            BIT0
+#define EFI_ACPI_6_0_PERFORMANCE_INTERRUPT_MODEL            BIT1
+#define EFI_ACPI_6_0_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS  BIT2
 
 ///
 /// GIC Distributor Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved1;
-  UINT32  GicId;
-  UINT64  PhysicalBaseAddress;
-  UINT32  SystemVectorBase;
-  UINT8   GicVersion;
-  UINT8   Reserved2[3];
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved1;
+  UINT32    GicId;
+  UINT64    PhysicalBaseAddress;
+  UINT32    SystemVectorBase;
+  UINT8     GicVersion;
+  UINT8     Reserved2[3];
 } EFI_ACPI_6_0_GIC_DISTRIBUTOR_STRUCTURE;
 
 ///
 /// GIC Version
 ///
-#define EFI_ACPI_6_0_GIC_V1                                   0x01
-#define EFI_ACPI_6_0_GIC_V2                                   0x02
-#define EFI_ACPI_6_0_GIC_V3                                   0x03
-#define EFI_ACPI_6_0_GIC_V4                                   0x04
+#define EFI_ACPI_6_0_GIC_V1  0x01
+#define EFI_ACPI_6_0_GIC_V2  0x02
+#define EFI_ACPI_6_0_GIC_V3  0x03
+#define EFI_ACPI_6_0_GIC_V4  0x04
 
 ///
 /// GIC MSI Frame Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved1;
-  UINT32  GicMsiFrameId;
-  UINT64  PhysicalBaseAddress;
-  UINT32  Flags;
-  UINT16  SPICount;
-  UINT16  SPIBase;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved1;
+  UINT32    GicMsiFrameId;
+  UINT64    PhysicalBaseAddress;
+  UINT32    Flags;
+  UINT16    SPICount;
+  UINT16    SPIBase;
 } EFI_ACPI_6_0_GIC_MSI_FRAME_STRUCTURE;
 
 ///
 /// GIC MSI Frame Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_6_0_SPI_COUNT_BASE_SELECT                    BIT0
+#define EFI_ACPI_6_0_SPI_COUNT_BASE_SELECT  BIT0
 
 ///
 /// GICR Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT64  DiscoveryRangeBaseAddress;
-  UINT32  DiscoveryRangeLength;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT64    DiscoveryRangeBaseAddress;
+  UINT32    DiscoveryRangeLength;
 } EFI_ACPI_6_0_GICR_STRUCTURE;
 
 ///
 /// GIC Interrupt Translation Service Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT16  Reserved;
-  UINT32  GicItsId;
-  UINT64  PhysicalBaseAddress;
-  UINT32  Reserved2;
+  UINT8     Type;
+  UINT8     Length;
+  UINT16    Reserved;
+  UINT32    GicItsId;
+  UINT64    PhysicalBaseAddress;
+  UINT32    Reserved2;
 } EFI_ACPI_6_0_GIC_ITS_STRUCTURE;
 
 ///
 /// Smart Battery Description Table (SBST)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      WarningEnergyLevel;
-  UINT32                      LowEnergyLevel;
-  UINT32                      CriticalEnergyLevel;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         WarningEnergyLevel;
+  UINT32                         LowEnergyLevel;
+  UINT32                         CriticalEnergyLevel;
 } EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE;
 
 ///
 /// SBST Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION  0x01
 
 ///
 /// Embedded Controller Boot Resources Table (ECDT)
@@ -610,11 +605,11 @@
 /// a fully qualified reference to the name space object.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER             Header;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  EcControl;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE  EcData;
-  UINT32                                  Uid;
-  UINT8                                   GpeBit;
+  EFI_ACPI_DESCRIPTION_HEADER               Header;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    EcControl;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    EcData;
+  UINT32                                    Uid;
+  UINT8                                     GpeBit;
 } EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
 
 ///
@@ -627,9 +622,9 @@
 /// must be defined in a platform specific manner.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      Reserved1;  ///< Must be set to 1
-  UINT64                      Reserved2;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         Reserved1; ///< Must be set to 1
+  UINT64                         Reserved2;
 } EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
 
 ///
@@ -651,83 +646,83 @@
 /// Processor Local APIC/SAPIC Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   ProximityDomain7To0;
-  UINT8   ApicId;
-  UINT32  Flags;
-  UINT8   LocalSapicEid;
-  UINT8   ProximityDomain31To8[3];
-  UINT32  ClockDomain;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     ProximityDomain7To0;
+  UINT8     ApicId;
+  UINT32    Flags;
+  UINT8     LocalSapicEid;
+  UINT8     ProximityDomain31To8[3];
+  UINT32    ClockDomain;
 } EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
 
 ///
 /// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
+#define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED  (1 << 0)
 
 ///
 /// Memory Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT32  ProximityDomain;
-  UINT16  Reserved1;
-  UINT32  AddressBaseLow;
-  UINT32  AddressBaseHigh;
-  UINT32  LengthLow;
-  UINT32  LengthHigh;
-  UINT32  Reserved2;
-  UINT32  Flags;
-  UINT64  Reserved3;
+  UINT8     Type;
+  UINT8     Length;
+  UINT32    ProximityDomain;
+  UINT16    Reserved1;
+  UINT32    AddressBaseLow;
+  UINT32    AddressBaseHigh;
+  UINT32    LengthLow;
+  UINT32    LengthHigh;
+  UINT32    Reserved2;
+  UINT32    Flags;
+  UINT64    Reserved3;
 } EFI_ACPI_6_0_MEMORY_AFFINITY_STRUCTURE;
 
 //
 // Memory Flags.  All other bits are reserved and must be 0.
 //
-#define EFI_ACPI_6_0_MEMORY_ENABLED       (1 << 0)
-#define EFI_ACPI_6_0_MEMORY_HOT_PLUGGABLE (1 << 1)
-#define EFI_ACPI_6_0_MEMORY_NONVOLATILE   (1 << 2)
+#define EFI_ACPI_6_0_MEMORY_ENABLED        (1 << 0)
+#define EFI_ACPI_6_0_MEMORY_HOT_PLUGGABLE  (1 << 1)
+#define EFI_ACPI_6_0_MEMORY_NONVOLATILE    (1 << 2)
 
 ///
 /// Processor Local x2APIC Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   Reserved1[2];
-  UINT32  ProximityDomain;
-  UINT32  X2ApicId;
-  UINT32  Flags;
-  UINT32  ClockDomain;
-  UINT8   Reserved2[4];
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     Reserved1[2];
+  UINT32    ProximityDomain;
+  UINT32    X2ApicId;
+  UINT32    Flags;
+  UINT32    ClockDomain;
+  UINT8     Reserved2[4];
 } EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
 
 ///
 /// GICC Affinity Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT32  ProximityDomain;
-  UINT32  AcpiProcessorUid;
-  UINT32  Flags;
-  UINT32  ClockDomain;
+  UINT8     Type;
+  UINT8     Length;
+  UINT32    ProximityDomain;
+  UINT32    AcpiProcessorUid;
+  UINT32    Flags;
+  UINT32    ClockDomain;
 } EFI_ACPI_6_0_GICC_AFFINITY_STRUCTURE;
 
 ///
 /// GICC Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_6_0_GICC_ENABLED (1 << 0)
+#define EFI_ACPI_6_0_GICC_ENABLED  (1 << 0)
 
 ///
 /// System Locality Distance Information Table (SLIT).
 /// The rest of the table is a matrix.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT64                      NumberOfSystemLocalities;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT64                         NumberOfSystemLocalities;
 } EFI_ACPI_6_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
 
 ///
@@ -739,14 +734,14 @@
 /// Corrected Platform Error Polling Table (CPEP)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT8                       Reserved[8];
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT8                          Reserved[8];
 } EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
 
 ///
 /// CPEP Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION  0x01
 
 //
 // CPEP processor structure types.
@@ -757,66 +752,66 @@
 /// Corrected Platform Error Polling Processor Structure Definition
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Length;
-  UINT8   ProcessorId;
-  UINT8   ProcessorEid;
-  UINT32  PollingInterval;
+  UINT8     Type;
+  UINT8     Length;
+  UINT8     ProcessorId;
+  UINT8     ProcessorEid;
+  UINT32    PollingInterval;
 } EFI_ACPI_6_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
 
 ///
 /// Maximum System Characteristics Table (MSCT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      OffsetProxDomInfo;
-  UINT32                      MaximumNumberOfProximityDomains;
-  UINT32                      MaximumNumberOfClockDomains;
-  UINT64                      MaximumPhysicalAddress;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         OffsetProxDomInfo;
+  UINT32                         MaximumNumberOfProximityDomains;
+  UINT32                         MaximumNumberOfClockDomains;
+  UINT64                         MaximumPhysicalAddress;
 } EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
 
 ///
 /// MSCT Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION  0x01
 
 ///
 /// Maximum Proximity Domain Information Structure Definition
 ///
 typedef struct {
-  UINT8   Revision;
-  UINT8   Length;
-  UINT32  ProximityDomainRangeLow;
-  UINT32  ProximityDomainRangeHigh;
-  UINT32  MaximumProcessorCapacity;
-  UINT64  MaximumMemoryCapacity;
+  UINT8     Revision;
+  UINT8     Length;
+  UINT32    ProximityDomainRangeLow;
+  UINT32    ProximityDomainRangeHigh;
+  UINT32    MaximumProcessorCapacity;
+  UINT64    MaximumMemoryCapacity;
 } EFI_ACPI_6_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
 
 ///
 /// ACPI RAS Feature Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT8                       PlatformCommunicationChannelIdentifier[12];
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT8                          PlatformCommunicationChannelIdentifier[12];
 } EFI_ACPI_6_0_RAS_FEATURE_TABLE;
 
 ///
 /// RASF Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_RAS_FEATURE_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_RAS_FEATURE_TABLE_REVISION  0x01
 
 ///
 /// ACPI RASF Platform Communication Channel Shared Memory Region definition.
 ///
 typedef struct {
-  UINT32                      Signature;
-  UINT16                      Command;
-  UINT16                      Status;
-  UINT16                      Version;
-  UINT8                       RASCapabilities[16];
-  UINT8                       SetRASCapabilities[16];
-  UINT16                      NumberOfRASFParameterBlocks;
-  UINT32                      SetRASCapabilitiesStatus;
+  UINT32    Signature;
+  UINT16    Command;
+  UINT16    Status;
+  UINT16    Version;
+  UINT8     RASCapabilities[16];
+  UINT8     SetRASCapabilities[16];
+  UINT16    NumberOfRASFParameterBlocks;
+  UINT32    SetRASCapabilitiesStatus;
 } EFI_ACPI_6_0_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
 
 ///
@@ -834,52 +829,52 @@
 /// ACPI RASF Parameter Block structure for PATROL_SCRUB
 ///
 typedef struct {
-  UINT16                      Type;
-  UINT16                      Version;
-  UINT16                      Length;
-  UINT16                      PatrolScrubCommand;
-  UINT64                      RequestedAddressRange[2];
-  UINT64                      ActualAddressRange[2];
-  UINT16                      Flags;
-  UINT8                       RequestedSpeed;
+  UINT16    Type;
+  UINT16    Version;
+  UINT16    Length;
+  UINT16    PatrolScrubCommand;
+  UINT64    RequestedAddressRange[2];
+  UINT64    ActualAddressRange[2];
+  UINT16    Flags;
+  UINT8     RequestedSpeed;
 } EFI_ACPI_6_0_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
 
 ///
 /// ACPI RASF Patrol Scrub command
 ///
-#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS   0x01
-#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER   0x02
-#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER    0x03
+#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS  0x01
+#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER  0x02
+#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER   0x03
 
 ///
 /// Memory Power State Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT8                       PlatformCommunicationChannelIdentifier;
-  UINT8                       Reserved[3];
-// Memory Power Node Structure
-// Memory Power State Characteristics
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT8                          PlatformCommunicationChannelIdentifier;
+  UINT8                          Reserved[3];
+  // Memory Power Node Structure
+  // Memory Power State Characteristics
 } EFI_ACPI_6_0_MEMORY_POWER_STATUS_TABLE;
 
 ///
 /// MPST Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_REVISION  0x01
 
 ///
 /// MPST Platform Communication Channel Shared Memory Region definition.
 ///
 typedef struct {
-  UINT32                      Signature;
-  UINT16                      Command;
-  UINT16                      Status;
-  UINT32                      MemoryPowerCommandRegister;
-  UINT32                      MemoryPowerStatusRegister;
-  UINT32                      PowerStateId;
-  UINT32                      MemoryPowerNodeId;
-  UINT64                      MemoryEnergyConsumed;
-  UINT64                      ExpectedAveragePowerComsuned;
+  UINT32    Signature;
+  UINT16    Command;
+  UINT16    Status;
+  UINT32    MemoryPowerCommandRegister;
+  UINT32    MemoryPowerStatusRegister;
+  UINT32    PowerStateId;
+  UINT32    MemoryPowerNodeId;
+  UINT64    MemoryEnergyConsumed;
+  UINT64    ExpectedAveragePowerComsuned;
 } EFI_ACPI_6_0_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
 
 ///
@@ -890,186 +885,186 @@
 ///
 /// ACPI MPST Memory Power command
 ///
-#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE       0x01
-#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE       0x02
-#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED   0x03
-#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED   0x04
+#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE      0x01
+#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE      0x02
+#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED  0x03
+#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED  0x04
 
 ///
 /// MPST Memory Power Node Table
 ///
 typedef struct {
-  UINT8                                             PowerStateValue;
-  UINT8                                             PowerStateInformationIndex;
+  UINT8    PowerStateValue;
+  UINT8    PowerStateInformationIndex;
 } EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE;
 
 typedef struct {
-  UINT8                                             Flag;
-  UINT8                                             Reserved;
-  UINT16                                            MemoryPowerNodeId;
-  UINT32                                            Length;
-  UINT64                                            AddressBase;
-  UINT64                                            AddressLength;
-  UINT32                                            NumberOfPowerStates;
-  UINT32                                            NumberOfPhysicalComponents;
-//EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE              MemoryPowerState[NumberOfPowerStates];
-//UINT16                                            PhysicalComponentIdentifier[NumberOfPhysicalComponents];
+  UINT8     Flag;
+  UINT8     Reserved;
+  UINT16    MemoryPowerNodeId;
+  UINT32    Length;
+  UINT64    AddressBase;
+  UINT64    AddressLength;
+  UINT32    NumberOfPowerStates;
+  UINT32    NumberOfPhysicalComponents;
+  // EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE              MemoryPowerState[NumberOfPowerStates];
+  // UINT16                                            PhysicalComponentIdentifier[NumberOfPhysicalComponents];
 } EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE;
 
-#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE          0x01
-#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED   0x02
-#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE   0x04
+#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE         0x01
+#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED  0x02
+#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE  0x04
 
 typedef struct {
-  UINT16                      MemoryPowerNodeCount;
-  UINT8                       Reserved[2];
+  UINT16    MemoryPowerNodeCount;
+  UINT8     Reserved[2];
 } EFI_ACPI_6_0_MPST_MEMORY_POWER_NODE_TABLE;
 
 ///
 /// MPST Memory Power State Characteristics Table
 ///
 typedef struct {
-  UINT8                                             PowerStateStructureID;
-  UINT8                                             Flag;
-  UINT16                                            Reserved;
-  UINT32                                            AveragePowerConsumedInMPS0;
-  UINT32                                            RelativePowerSavingToMPS0;
-  UINT64                                            ExitLatencyToMPS0;
+  UINT8     PowerStateStructureID;
+  UINT8     Flag;
+  UINT16    Reserved;
+  UINT32    AveragePowerConsumedInMPS0;
+  UINT32    RelativePowerSavingToMPS0;
+  UINT64    ExitLatencyToMPS0;
 } EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
 
-#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED              0x01
-#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY   0x02
-#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT    0x04
+#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED             0x01
+#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY  0x02
+#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT   0x04
 
 typedef struct {
-  UINT16                      MemoryPowerStateCharacteristicsCount;
-  UINT8                       Reserved[2];
+  UINT16    MemoryPowerStateCharacteristicsCount;
+  UINT8     Reserved[2];
 } EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
 
 ///
 /// Memory Topology Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      Reserved;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         Reserved;
 } EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE;
 
 ///
 /// PMTT Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE_REVISION  0x01
 
 ///
 /// Common Memory Aggregator Device Structure.
 ///
 typedef struct {
-  UINT8                       Type;
-  UINT8                       Reserved;
-  UINT16                      Length;
-  UINT16                      Flags;
-  UINT16                      Reserved1;
+  UINT8     Type;
+  UINT8     Reserved;
+  UINT16    Length;
+  UINT16    Flags;
+  UINT16    Reserved1;
 } EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// Memory Aggregator Device Type
 ///
-#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET            0x1
-#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2
-#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM              0x3
+#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET             0x0
+#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER  0x1
+#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM               0x2
 
 ///
 /// Socket Memory Aggregator Device Structure.
 ///
 typedef struct {
-  EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
-  UINT16                                                       SocketIdentifier;
-  UINT16                                                       Reserved;
-//EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  MemoryController[];
+  EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    Header;
+  UINT16                                                         SocketIdentifier;
+  UINT16                                                         Reserved;
+  // EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  MemoryController[];
 } EFI_ACPI_6_0_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// MemoryController Memory Aggregator Device Structure.
 ///
 typedef struct {
-  EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
-  UINT32                                                       ReadLatency;
-  UINT32                                                       WriteLatency;
-  UINT32                                                       ReadBandwidth;
-  UINT32                                                       WriteBandwidth;
-  UINT16                                                       OptimalAccessUnit;
-  UINT16                                                       OptimalAccessAlignment;
-  UINT16                                                       Reserved;
-  UINT16                                                       NumberOfProximityDomains;
-//UINT32                                                       ProximityDomain[NumberOfProximityDomains];
-//EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    PhysicalComponent[];
+  EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    Header;
+  UINT32                                                         ReadLatency;
+  UINT32                                                         WriteLatency;
+  UINT32                                                         ReadBandwidth;
+  UINT32                                                         WriteBandwidth;
+  UINT16                                                         OptimalAccessUnit;
+  UINT16                                                         OptimalAccessAlignment;
+  UINT16                                                         Reserved;
+  UINT16                                                         NumberOfProximityDomains;
+  // UINT32                                                       ProximityDomain[NumberOfProximityDomains];
+  // EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    PhysicalComponent[];
 } EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// DIMM Memory Aggregator Device Structure.
 ///
 typedef struct {
-  EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
-  UINT16                                                       PhysicalComponentIdentifier;
-  UINT16                                                       Reserved;
-  UINT32                                                       SizeOfDimm;
-  UINT32                                                       SmbiosHandle;
+  EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    Header;
+  UINT16                                                         PhysicalComponentIdentifier;
+  UINT16                                                         Reserved;
+  UINT32                                                         SizeOfDimm;
+  UINT32                                                         SmbiosHandle;
 } EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
 
 ///
 /// Boot Graphics Resource Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
   ///
   /// 2-bytes (16 bit) version ID. This value must be 1.
   ///
-  UINT16                      Version;
+  UINT16                         Version;
   ///
   /// 1-byte status field indicating current status about the table.
   ///     Bits[7:1] = Reserved (must be zero)
   ///     Bit [0] = Valid. A one indicates the boot image graphic is valid.
   ///
-  UINT8                       Status;
+  UINT8                          Status;
   ///
   /// 1-byte enumerated type field indicating format of the image.
   ///     0 = Bitmap
   ///     1 - 255  Reserved (for future use)
   ///
-  UINT8                       ImageType;
+  UINT8                          ImageType;
   ///
   /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy
   /// of the image bitmap.
   ///
-  UINT64                      ImageAddress;
+  UINT64                         ImageAddress;
   ///
   /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.
   /// (X, Y) display offset of the top left corner of the boot image.
   /// The top left corner of the display is at offset (0, 0).
   ///
-  UINT32                      ImageOffsetX;
+  UINT32                         ImageOffsetX;
   ///
   /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.
   /// (X, Y) display offset of the top left corner of the boot image.
   /// The top left corner of the display is at offset (0, 0).
   ///
-  UINT32                      ImageOffsetY;
+  UINT32                         ImageOffsetY;
 } EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE;
 
 ///
 /// BGRT Revision
 ///
-#define EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
+#define EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION  1
 
 ///
 /// BGRT Version
 ///
-#define EFI_ACPI_6_0_BGRT_VERSION         0x01
+#define EFI_ACPI_6_0_BGRT_VERSION  0x01
 
 ///
 /// BGRT Status
 ///
-#define EFI_ACPI_6_0_BGRT_STATUS_NOT_DISPLAYED 0x00
-#define EFI_ACPI_6_0_BGRT_STATUS_DISPLAYED     0x01
+#define EFI_ACPI_6_0_BGRT_STATUS_NOT_DISPLAYED  0x00
+#define EFI_ACPI_6_0_BGRT_STATUS_DISPLAYED      0x01
 
 ///
 /// BGRT Image Type
@@ -1079,26 +1074,26 @@
 ///
 /// FPDT Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION  0x01
 
 ///
 /// FPDT Performance Record Types
 ///
-#define EFI_ACPI_6_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER      0x0000
-#define EFI_ACPI_6_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER     0x0001
+#define EFI_ACPI_6_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER   0x0000
+#define EFI_ACPI_6_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER  0x0001
 
 ///
 /// FPDT Performance Record Revision
 ///
-#define EFI_ACPI_6_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER  0x01
-#define EFI_ACPI_6_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
+#define EFI_ACPI_6_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER   0x01
+#define EFI_ACPI_6_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER  0x01
 
 ///
 /// FPDT Runtime Performance Record Types
 ///
-#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME                0x0000
-#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND               0x0001
-#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT      0x0002
+#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME            0x0000
+#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND           0x0001
+#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT  0x0002
 
 ///
 /// FPDT Runtime Performance Record Revision
@@ -1111,77 +1106,77 @@
 /// FPDT Performance Record header
 ///
 typedef struct {
-  UINT16           Type;
-  UINT8            Length;
-  UINT8            Revision;
+  UINT16    Type;
+  UINT8     Length;
+  UINT8     Revision;
 } EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER;
 
 ///
 /// FPDT Performance Table header
 ///
 typedef struct {
-  UINT32  Signature;
-  UINT32  Length;
+  UINT32    Signature;
+  UINT32    Length;
 } EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER;
 
 ///
 /// FPDT Firmware Basic Boot Performance Pointer Record Structure
 ///
 typedef struct {
-  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
-  UINT32                                          Reserved;
+  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER    Header;
+  UINT32                                         Reserved;
   ///
   /// 64-bit processor-relative physical address of the Basic Boot Performance Table.
   ///
-  UINT64                                          BootPerformanceTablePointer;
+  UINT64                                         BootPerformanceTablePointer;
 } EFI_ACPI_6_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;
 
 ///
 /// FPDT S3 Performance Table Pointer Record Structure
 ///
 typedef struct {
-  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
-  UINT32                                          Reserved;
+  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER    Header;
+  UINT32                                         Reserved;
   ///
   /// 64-bit processor-relative physical address of the S3 Performance Table.
   ///
-  UINT64                                          S3PerformanceTablePointer;
+  UINT64                                         S3PerformanceTablePointer;
 } EFI_ACPI_6_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;
 
 ///
 /// FPDT Firmware Basic Boot Performance Record Structure
 ///
 typedef struct {
-  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
-  UINT32                                          Reserved;
+  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER    Header;
+  UINT32                                         Reserved;
   ///
   /// Timer value logged at the beginning of firmware image execution.
   /// This may not always be zero or near zero.
   ///
-  UINT64                                          ResetEnd;
+  UINT64                                         ResetEnd;
   ///
   /// Timer value logged just prior to loading the OS boot loader into memory.
   /// For non-UEFI compatible boots, this field must be zero.
   ///
-  UINT64                                          OsLoaderLoadImageStart;
+  UINT64                                         OsLoaderLoadImageStart;
   ///
   /// Timer value logged just prior to launching the previously loaded OS boot loader image.
   /// For non-UEFI compatible boots, the timer value logged will be just prior
   /// to the INT 19h handler invocation.
   ///
-  UINT64                                          OsLoaderStartImageStart;
+  UINT64                                         OsLoaderStartImageStart;
   ///
   /// Timer value logged at the point when the OS loader calls the
   /// ExitBootServices function for UEFI compatible firmware.
   /// For non-UEFI compatible boots, this field must be zero.
   ///
-  UINT64                                          ExitBootServicesEntry;
+  UINT64                                         ExitBootServicesEntry;
   ///
-  /// Timer value logged at the point just prior towhen the OS loader gaining
+  /// Timer value logged at the point just prior to when the OS loader gaining
   /// control back from calls the ExitBootServices function for UEFI compatible firmware.
   /// For non-UEFI compatible boots, this field must be zero.
   ///
-  UINT64                                          ExitBootServicesExit;
+  UINT64                                         ExitBootServicesExit;
 } EFI_ACPI_6_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD;
 
 ///
@@ -1193,7 +1188,7 @@
 // FPDT Firmware Basic Boot Performance Table
 //
 typedef struct {
-  EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER      Header;
+  EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER    Header;
   //
   // one or more Performance Records.
   //
@@ -1208,7 +1203,7 @@
 // FPDT Firmware S3 Boot Performance Table
 //
 typedef struct {
-  EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER      Header;
+  EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER    Header;
   //
   // one or more Performance Records.
   //
@@ -1218,145 +1213,145 @@
 /// FPDT Basic S3 Resume Performance Record
 ///
 typedef struct {
-  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
+  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER    Header;
   ///
   /// A count of the number of S3 resume cycles since the last full boot sequence.
   ///
-  UINT32                                          ResumeCount;
+  UINT32                                         ResumeCount;
   ///
   /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the
   /// OS waking vector. Only the most recent resume cycle's time is retained.
   ///
-  UINT64                                          FullResume;
+  UINT64                                         FullResume;
   ///
   /// Average timer value of all resume cycles logged since the last full boot
   /// sequence, including the most recent resume.  Note that the entire log of
   /// timer values does not need to be retained in order to calculate this average.
   ///
-  UINT64                                          AverageResume;
+  UINT64                                         AverageResume;
 } EFI_ACPI_6_0_FPDT_S3_RESUME_RECORD;
 
 ///
 /// FPDT Basic S3 Suspend Performance Record
 ///
 typedef struct {
-  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER     Header;
+  EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER    Header;
   ///
   /// Timer value recorded at the OS write to SLP_TYP upon entry to S3.
   /// Only the most recent suspend cycle's timer value is retained.
   ///
-  UINT64                                          SuspendStart;
+  UINT64                                         SuspendStart;
   ///
   /// Timer value recorded at the final firmware write to SLP_TYP (or other
   /// mechanism) used to trigger hardware entry to S3.
   /// Only the most recent suspend cycle's timer value is retained.
   ///
-  UINT64                                          SuspendEnd;
+  UINT64                                         SuspendEnd;
 } EFI_ACPI_6_0_FPDT_S3_SUSPEND_RECORD;
 
 ///
 /// Firmware Performance Record Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
 } EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_RECORD_TABLE;
 
 ///
 /// Generic Timer Description Table definition.
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT64                      CntControlBasePhysicalAddress;
-  UINT32                      Reserved;
-  UINT32                      SecurePL1TimerGSIV;
-  UINT32                      SecurePL1TimerFlags;
-  UINT32                      NonSecurePL1TimerGSIV;
-  UINT32                      NonSecurePL1TimerFlags;
-  UINT32                      VirtualTimerGSIV;
-  UINT32                      VirtualTimerFlags;
-  UINT32                      NonSecurePL2TimerGSIV;
-  UINT32                      NonSecurePL2TimerFlags;
-  UINT64                      CntReadBasePhysicalAddress;
-  UINT32                      PlatformTimerCount;
-  UINT32                      PlatformTimerOffset;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT64                         CntControlBasePhysicalAddress;
+  UINT32                         Reserved;
+  UINT32                         SecurePL1TimerGSIV;
+  UINT32                         SecurePL1TimerFlags;
+  UINT32                         NonSecurePL1TimerGSIV;
+  UINT32                         NonSecurePL1TimerFlags;
+  UINT32                         VirtualTimerGSIV;
+  UINT32                         VirtualTimerFlags;
+  UINT32                         NonSecurePL2TimerGSIV;
+  UINT32                         NonSecurePL2TimerFlags;
+  UINT64                         CntReadBasePhysicalAddress;
+  UINT32                         PlatformTimerCount;
+  UINT32                         PlatformTimerOffset;
 } EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE;
 
 ///
 /// GTDT Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x02
+#define EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION  0x02
 
 ///
 /// Timer Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE          BIT0
-#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
-#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY          BIT2
+#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE      BIT0
+#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY  BIT1
+#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY      BIT2
 
 ///
 /// Platform Timer Type
 ///
-#define EFI_ACPI_6_0_GTDT_GT_BLOCK                       0
-#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG          1
+#define EFI_ACPI_6_0_GTDT_GT_BLOCK               0
+#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG  1
 
 ///
 /// GT Block Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT16  Length;
-  UINT8   Reserved;
-  UINT64  CntCtlBase;
-  UINT32  GTBlockTimerCount;
-  UINT32  GTBlockTimerOffset;
+  UINT8     Type;
+  UINT16    Length;
+  UINT8     Reserved;
+  UINT64    CntCtlBase;
+  UINT32    GTBlockTimerCount;
+  UINT32    GTBlockTimerOffset;
 } EFI_ACPI_6_0_GTDT_GT_BLOCK_STRUCTURE;
 
 ///
 /// GT Block Timer Structure
 ///
 typedef struct {
-  UINT8   GTFrameNumber;
-  UINT8   Reserved[3];
-  UINT64  CntBaseX;
-  UINT64  CntEL0BaseX;
-  UINT32  GTxPhysicalTimerGSIV;
-  UINT32  GTxPhysicalTimerFlags;
-  UINT32  GTxVirtualTimerGSIV;
-  UINT32  GTxVirtualTimerFlags;
-  UINT32  GTxCommonFlags;
+  UINT8     GTFrameNumber;
+  UINT8     Reserved[3];
+  UINT64    CntBaseX;
+  UINT64    CntEL0BaseX;
+  UINT32    GTxPhysicalTimerGSIV;
+  UINT32    GTxPhysicalTimerFlags;
+  UINT32    GTxVirtualTimerGSIV;
+  UINT32    GTxVirtualTimerFlags;
+  UINT32    GTxCommonFlags;
 } EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_STRUCTURE;
 
 ///
 /// GT Block Physical Timers and Virtual Timers Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE          BIT0
-#define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
+#define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE      BIT0
+#define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY  BIT1
 
 ///
 /// Common Flags Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER              BIT0
-#define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY      BIT1
+#define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER          BIT0
+#define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY  BIT1
 
 ///
 /// SBSA Generic Watchdog Structure
 ///
 typedef struct {
-  UINT8   Type;
-  UINT16  Length;
-  UINT8   Reserved;
-  UINT64  RefreshFramePhysicalAddress;
-  UINT64  WatchdogControlFramePhysicalAddress;
-  UINT32  WatchdogTimerGSIV;
-  UINT32  WatchdogTimerFlags;
+  UINT8     Type;
+  UINT16    Length;
+  UINT8     Reserved;
+  UINT64    RefreshFramePhysicalAddress;
+  UINT64    WatchdogControlFramePhysicalAddress;
+  UINT32    WatchdogTimerGSIV;
+  UINT32    WatchdogTimerFlags;
 } EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE;
 
 ///
 /// SBSA Generic Watchdog Timer Flags.  All other bits are reserved and must be 0.
 ///
-#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE          BIT0
-#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
-#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER                  BIT2
+#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE      BIT0
+#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY  BIT1
+#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER              BIT2
 
 //
 // NVDIMM Firmware Interface Table definition.
@@ -1369,7 +1364,7 @@
 //
 // NFIT Version (as defined in ACPI 6.0 spec.)
 //
-#define EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_REVISION 0x1
+#define EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_REVISION  0x1
 
 //
 // Definition for NFIT Table Structure Types
@@ -1386,46 +1381,46 @@
 // Definition for NFIT Structure Header
 //
 typedef struct {
-  UINT16                                      Type;
-  UINT16                                      Length;
+  UINT16    Type;
+  UINT16    Length;
 } EFI_ACPI_6_0_NFIT_STRUCTURE_HEADER;
 
 //
 // Definition for System Physical Address Range Structure
 //
-#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT      BIT0
-#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID             BIT1
-#define EFI_ACPI_6_0_NFIT_GUID_VOLATILE_MEMORY_REGION                             { 0x7305944F, 0xFDDA, 0x44E3, { 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0 }}
-#define EFI_ACPI_6_0_NFIT_GUID_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_REGION          { 0x66F0D379, 0xB4F3, 0x4074, { 0xAC, 0x43, 0x0D, 0x33, 0x18, 0xB7, 0x8C, 0xDB }}
-#define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_CONTROL_REGION                              { 0x92F701F6, 0x13B4, 0x405D, { 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C }}
-#define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_BLOCK_DATA_WINDOW_REGION                    { 0x91AF0530, 0x5D86, 0x470E, { 0xA6, 0xB0, 0x0A, 0x2D, 0xB9, 0x40, 0x82, 0x49 }}
-#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE   { 0x77AB535A, 0x45FC, 0x624B, { 0x55, 0x60, 0xF7, 0xB2, 0x81, 0xD1, 0xF9, 0x6E }}
-#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE     { 0x3D5ABD30, 0x4175, 0x87CE, { 0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB }}
-#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT { 0x5CEA02C9, 0x4D07, 0x69D3, { 0x26, 0x9F ,0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9 }}
-#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT   { 0x08018188, 0x42CD, 0xBB48, { 0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D }}
+#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT  BIT0
+#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID         BIT1
+#define EFI_ACPI_6_0_NFIT_GUID_VOLATILE_MEMORY_REGION                                        { 0x7305944F, 0xFDDA, 0x44E3, { 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0 }}
+#define EFI_ACPI_6_0_NFIT_GUID_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_REGION                     { 0x66F0D379, 0xB4F3, 0x4074, { 0xAC, 0x43, 0x0D, 0x33, 0x18, 0xB7, 0x8C, 0xDB }}
+#define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_CONTROL_REGION                                         { 0x92F701F6, 0x13B4, 0x405D, { 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C }}
+#define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_BLOCK_DATA_WINDOW_REGION                               { 0x91AF0530, 0x5D86, 0x470E, { 0xA6, 0xB0, 0x0A, 0x2D, 0xB9, 0x40, 0x82, 0x49 }}
+#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE              { 0x77AB535A, 0x45FC, 0x624B, { 0x55, 0x60, 0xF7, 0xB2, 0x81, 0xD1, 0xF9, 0x6E }}
+#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE                { 0x3D5ABD30, 0x4175, 0x87CE, { 0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB }}
+#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT            { 0x5CEA02C9, 0x4D07, 0x69D3, { 0x26, 0x9F ,0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9 }}
+#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT              { 0x08018188, 0x42CD, 0xBB48, { 0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D }}
 typedef struct {
-  UINT16                                      Type;
-  UINT16                                      Length;
-  UINT16                                      SPARangeStructureIndex;
-  UINT16                                      Flags;
-  UINT32                                      Reserved_8;
-  UINT32                                      ProximityDomain;
-  GUID                                        AddressRangeTypeGUID;
-  UINT64                                      SystemPhysicalAddressRangeBase;
-  UINT64                                      SystemPhysicalAddressRangeLength;
-  UINT64                                      AddressRangeMemoryMappingAttribute;
+  UINT16    Type;
+  UINT16    Length;
+  UINT16    SPARangeStructureIndex;
+  UINT16    Flags;
+  UINT32    Reserved_8;
+  UINT32    ProximityDomain;
+  GUID      AddressRangeTypeGUID;
+  UINT64    SystemPhysicalAddressRangeBase;
+  UINT64    SystemPhysicalAddressRangeLength;
+  UINT64    AddressRangeMemoryMappingAttribute;
 } EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE;
 
 //
 // Definition for Memory Device to System Physical Address Range Mapping Structure
 //
 typedef struct {
-  UINT32                                      DIMMNumber:4;
-  UINT32                                      MemoryChannelNumber:4;
-  UINT32                                      MemoryControllerID:4;
-  UINT32                                      SocketID:4;
-  UINT32                                      NodeControllerID:12;
-  UINT32                                      Reserved_28:4;
+  UINT32    DIMMNumber          : 4;
+  UINT32    MemoryChannelNumber : 4;
+  UINT32    MemoryControllerID  : 4;
+  UINT32    SocketID            : 4;
+  UINT32    NodeControllerID    : 12;
+  UINT32    Reserved_28         : 4;
 } EFI_ACPI_6_0_NFIT_DEVICE_HANDLE;
 
 #define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_PREVIOUS_SAVE_FAIL                                      BIT0
@@ -1435,155 +1430,161 @@
 #define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_SMART_HEALTH_EVENTS_PRIOR_OSPM_HAND_OFF                 BIT4
 #define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_ENABLED_TO_NOTIFY_OSPM_ON_SMART_HEALTH_EVENTS  BIT5
 typedef struct {
-  UINT16                                      Type;
-  UINT16                                      Length;
-  EFI_ACPI_6_0_NFIT_DEVICE_HANDLE             NFITDeviceHandle;
-  UINT16                                      MemoryDevicePhysicalID;
-  UINT16                                      MemoryDeviceRegionID;
-  UINT16                                      SPARangeStructureIndex ;
-  UINT16                                      NVDIMMControlRegionStructureIndex;
-  UINT64                                      MemoryDeviceRegionSize;
-  UINT64                                      RegionOffset;
-  UINT64                                      MemoryDevicePhysicalAddressRegionBase;
-  UINT16                                      InterleaveStructureIndex;
-  UINT16                                      InterleaveWays;
-  UINT16                                      MemoryDeviceStateFlags;
-  UINT16                                      Reserved_46;
+  UINT16                             Type;
+  UINT16                             Length;
+  EFI_ACPI_6_0_NFIT_DEVICE_HANDLE    NFITDeviceHandle;
+  UINT16                             MemoryDevicePhysicalID;
+  UINT16                             MemoryDeviceRegionID;
+  UINT16                             SPARangeStructureIndex;
+  UINT16                             NVDIMMControlRegionStructureIndex;
+  UINT64                             MemoryDeviceRegionSize;
+  UINT64                             RegionOffset;
+  UINT64                             MemoryDevicePhysicalAddressRegionBase;
+  UINT16                             InterleaveStructureIndex;
+  UINT16                             InterleaveWays;
+  UINT16                             MemoryDeviceStateFlags;
+  UINT16                             Reserved_46;
 } EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_TO_SYSTEM_ADDRESS_RANGE_MAP_STRUCTURE;
 
 //
 // Definition for Interleave Structure
 //
 typedef struct {
-  UINT16                                      Type;
-  UINT16                                      Length;
-  UINT16                                      InterleaveStructureIndex;
-  UINT16                                      Reserved_6;
-  UINT32                                      NumberOfLines;
-  UINT32                                      LineSize;
-//UINT32                                      LineOffset[NumberOfLines];
+  UINT16    Type;
+  UINT16    Length;
+  UINT16    InterleaveStructureIndex;
+  UINT16    Reserved_6;
+  UINT32    NumberOfLines;
+  UINT32    LineSize;
+  // UINT32                                      LineOffset[NumberOfLines];
 } EFI_ACPI_6_0_NFIT_INTERLEAVE_STRUCTURE;
 
 //
 // Definition for SMBIOS Management Information Structure
 //
 typedef struct {
-  UINT16                                      Type;
-  UINT16                                      Length;
-  UINT32                                      Reserved_4;
-//UINT8                                       Data[];
+  UINT16    Type;
+  UINT16    Length;
+  UINT32    Reserved_4;
+  // UINT8                                       Data[];
 } EFI_ACPI_6_0_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE;
 
 //
 // Definition for NVDIMM Control Region Structure
 //
-#define EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED    BIT0
+#define EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED  BIT0
 typedef struct {
-  UINT16                                      Type;
-  UINT16                                      Length;
-  UINT16                                      NVDIMMControlRegionStructureIndex;
-  UINT16                                      VendorID;
-  UINT16                                      DeviceID;
-  UINT16                                      RevisionID;
-  UINT16                                      SubsystemVendorID;
-  UINT16                                      SubsystemDeviceID;
-  UINT16                                      SubsystemRevisionID;
-  UINT8                                       Reserved_18[6];
-  UINT32                                      SerialNumber;
-  UINT16                                      RegionFormatInterfaceCode;
-  UINT16                                      NumberOfBlockControlWindows;
-  UINT64                                      SizeOfBlockControlWindow;
-  UINT64                                      CommandRegisterOffsetInBlockControlWindow;
-  UINT64                                      SizeOfCommandRegisterInBlockControlWindows;
-  UINT64                                      StatusRegisterOffsetInBlockControlWindow;
-  UINT64                                      SizeOfStatusRegisterInBlockControlWindows;
-  UINT16                                      NVDIMMControlRegionFlag;
-  UINT8                                       Reserved_74[6];
+  UINT16    Type;
+  UINT16    Length;
+  UINT16    NVDIMMControlRegionStructureIndex;
+  UINT16    VendorID;
+  UINT16    DeviceID;
+  UINT16    RevisionID;
+  UINT16    SubsystemVendorID;
+  UINT16    SubsystemDeviceID;
+  UINT16    SubsystemRevisionID;
+  UINT8     Reserved_18[6];
+  UINT32    SerialNumber;
+  UINT16    RegionFormatInterfaceCode;
+  UINT16    NumberOfBlockControlWindows;
+  UINT64    SizeOfBlockControlWindow;
+  UINT64    CommandRegisterOffsetInBlockControlWindow;
+  UINT64    SizeOfCommandRegisterInBlockControlWindows;
+  UINT64    StatusRegisterOffsetInBlockControlWindow;
+  UINT64    SizeOfStatusRegisterInBlockControlWindows;
+  UINT16    NVDIMMControlRegionFlag;
+  UINT8     Reserved_74[6];
 } EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE;
 
 //
 // Definition for NVDIMM Block Data Window Region Structure
 //
 typedef struct {
-  UINT16                                      Type;
-  UINT16                                      Length;
-  UINT16                                      NVDIMMControlRegionStructureIndex;
-  UINT16                                      NumberOfBlockDataWindows;
-  UINT64                                      BlockDataWindowStartOffset;
-  UINT64                                      SizeOfBlockDataWindow;
-  UINT64                                      BlockAccessibleMemoryCapacity;
-  UINT64                                      BeginningAddressOfFirstBlockInBlockAccessibleMemory;
+  UINT16    Type;
+  UINT16    Length;
+  UINT16    NVDIMMControlRegionStructureIndex;
+  UINT16    NumberOfBlockDataWindows;
+  UINT64    BlockDataWindowStartOffset;
+  UINT64    SizeOfBlockDataWindow;
+  UINT64    BlockAccessibleMemoryCapacity;
+  UINT64    BeginningAddressOfFirstBlockInBlockAccessibleMemory;
 } EFI_ACPI_6_0_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE;
 
 //
 // Definition for Flush Hint Address Structure
 //
 typedef struct {
-  UINT16                                      Type;
-  UINT16                                      Length;
-  EFI_ACPI_6_0_NFIT_DEVICE_HANDLE             NFITDeviceHandle;
-  UINT16                                      NumberOfFlushHintAddresses;
-  UINT8                                       Reserved_10[6];
-//UINT64                                      FlushHintAddress[NumberOfFlushHintAddresses];
+  UINT16                             Type;
+  UINT16                             Length;
+  EFI_ACPI_6_0_NFIT_DEVICE_HANDLE    NFITDeviceHandle;
+  UINT16                             NumberOfFlushHintAddresses;
+  UINT8                              Reserved_10[6];
+  // UINT64                                      FlushHintAddress[NumberOfFlushHintAddresses];
 } EFI_ACPI_6_0_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE;
 
 ///
 /// Boot Error Record Table (BERT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      BootErrorRegionLength;
-  UINT64                      BootErrorRegion;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         BootErrorRegionLength;
+  UINT64                         BootErrorRegion;
 } EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER;
 
 ///
 /// BERT Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_REVISION  0x01
 
 ///
 /// Boot Error Region Block Status Definition
 ///
 typedef struct {
-  UINT32       UncorrectableErrorValid:1;
-  UINT32       CorrectableErrorValid:1;
-  UINT32       MultipleUncorrectableErrors:1;
-  UINT32       MultipleCorrectableErrors:1;
-  UINT32       ErrorDataEntryCount:10;
-  UINT32       Reserved:18;
+  UINT32    UncorrectableErrorValid     : 1;
+  UINT32    CorrectableErrorValid       : 1;
+  UINT32    MultipleUncorrectableErrors : 1;
+  UINT32    MultipleCorrectableErrors   : 1;
+  UINT32    ErrorDataEntryCount         : 10;
+  UINT32    Reserved                    : 18;
 } EFI_ACPI_6_0_ERROR_BLOCK_STATUS;
 
 ///
 /// Boot Error Region Definition
 ///
 typedef struct {
-  EFI_ACPI_6_0_ERROR_BLOCK_STATUS              BlockStatus;
-  UINT32                                       RawDataOffset;
-  UINT32                                       RawDataLength;
-  UINT32                                       DataLength;
-  UINT32                                       ErrorSeverity;
+  EFI_ACPI_6_0_ERROR_BLOCK_STATUS    BlockStatus;
+  UINT32                             RawDataOffset;
+  UINT32                             RawDataLength;
+  UINT32                             DataLength;
+  UINT32                             ErrorSeverity;
 } EFI_ACPI_6_0_BOOT_ERROR_REGION_STRUCTURE;
 
 //
 // Boot Error Severity types
 //
-#define EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTABLE  0x00
+#define EFI_ACPI_6_0_ERROR_SEVERITY_RECOVERABLE  0x00
 #define EFI_ACPI_6_0_ERROR_SEVERITY_FATAL        0x01
 #define EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTED    0x02
 #define EFI_ACPI_6_0_ERROR_SEVERITY_NONE         0x03
+//
+// The term 'Correctable' is no longer being used as an error severity of the
+// reported error since ACPI Specification Version 5.1 Errata B.
+// The below macro is considered as deprecated and should no longer be used.
+//
+#define EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTABLE  0x00
 
 ///
 /// Generic Error Data Entry Definition
 ///
 typedef struct {
-  UINT8    SectionType[16];
-  UINT32   ErrorSeverity;
-  UINT16   Revision;
-  UINT8    ValidationBits;
-  UINT8    Flags;
-  UINT32   ErrorDataLength;
-  UINT8    FruId[16];
-  UINT8    FruText[20];
+  UINT8     SectionType[16];
+  UINT32    ErrorSeverity;
+  UINT16    Revision;
+  UINT8     ValidationBits;
+  UINT8     Flags;
+  UINT32    ErrorDataLength;
+  UINT8     FruId[16];
+  UINT8     FruText[20];
 } EFI_ACPI_6_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
 
 ///
@@ -1595,14 +1596,14 @@
 /// HEST - Hardware Error Source Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      ErrorSourceCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         ErrorSourceCount;
 } EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
 
 ///
 /// HEST Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION  0x01
 
 //
 // Error Source structure types.
@@ -1618,435 +1619,437 @@
 //
 // Error Source structure flags.
 //
-#define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST       (1 << 0)
-#define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_GLOBAL               (1 << 1)
+#define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST  (1 << 0)
+#define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_GLOBAL          (1 << 1)
 
 ///
 /// IA-32 Architecture Machine Check Exception Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT64  GlobalCapabilityInitData;
-  UINT64  GlobalControlInitData;
-  UINT8   NumberOfHardwareBanks;
-  UINT8   Reserved1[7];
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT64    GlobalCapabilityInitData;
+  UINT64    GlobalControlInitData;
+  UINT8     NumberOfHardwareBanks;
+  UINT8     Reserved1[7];
 } EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
 
 ///
 /// IA-32 Architecture Machine Check Bank Structure Definition
 ///
 typedef struct {
-  UINT8   BankNumber;
-  UINT8   ClearStatusOnInitialization;
-  UINT8   StatusDataFormat;
-  UINT8   Reserved0;
-  UINT32  ControlRegisterMsrAddress;
-  UINT64  ControlInitData;
-  UINT32  StatusRegisterMsrAddress;
-  UINT32  AddressRegisterMsrAddress;
-  UINT32  MiscRegisterMsrAddress;
+  UINT8     BankNumber;
+  UINT8     ClearStatusOnInitialization;
+  UINT8     StatusDataFormat;
+  UINT8     Reserved0;
+  UINT32    ControlRegisterMsrAddress;
+  UINT64    ControlInitData;
+  UINT32    StatusRegisterMsrAddress;
+  UINT32    AddressRegisterMsrAddress;
+  UINT32    MiscRegisterMsrAddress;
 } EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
 
 ///
 /// IA-32 Architecture Machine Check Bank Structure MCA data format
 ///
-#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32      0x00
-#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64   0x01
-#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64     0x02
+#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32     0x00
+#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64  0x01
+#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64    0x02
 
 //
 // Hardware Error Notification types. All other values are reserved
 //
-#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_POLLED                0x00
-#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT    0x01
-#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT       0x02
-#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_SCI                   0x03
-#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_NMI                   0x04
-#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CMCI                  0x05
-#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_MCE                   0x06
-#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_GPIO_SIGNAL           0x07
+#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_POLLED              0x00
+#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT  0x01
+#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT     0x02
+#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_SCI                 0x03
+#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_NMI                 0x04
+#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CMCI                0x05
+#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_MCE                 0x06
+#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_GPIO_SIGNAL         0x07
 
 ///
 /// Hardware Error Notification Configuration Write Enable Structure Definition
 ///
 typedef struct {
-  UINT16    Type:1;
-  UINT16    PollInterval:1;
-  UINT16    SwitchToPollingThresholdValue:1;
-  UINT16    SwitchToPollingThresholdWindow:1;
-  UINT16    ErrorThresholdValue:1;
-  UINT16    ErrorThresholdWindow:1;
-  UINT16    Reserved:10;
+  UINT16    Type                           : 1;
+  UINT16    PollInterval                   : 1;
+  UINT16    SwitchToPollingThresholdValue  : 1;
+  UINT16    SwitchToPollingThresholdWindow : 1;
+  UINT16    ErrorThresholdValue            : 1;
+  UINT16    ErrorThresholdWindow           : 1;
+  UINT16    Reserved                       : 10;
 } EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
 
 ///
 /// Hardware Error Notification Structure Definition
 ///
 typedef struct {
-  UINT8                                                                          Type;
-  UINT8                                                                          Length;
-  EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE  ConfigurationWriteEnable;
-  UINT32                                                                         PollInterval;
-  UINT32                                                                         Vector;
-  UINT32                                                                         SwitchToPollingThresholdValue;
-  UINT32                                                                         SwitchToPollingThresholdWindow;
-  UINT32                                                                         ErrorThresholdValue;
-  UINT32                                                                         ErrorThresholdWindow;
+  UINT8                                                                            Type;
+  UINT8                                                                            Length;
+  EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE    ConfigurationWriteEnable;
+  UINT32                                                                           PollInterval;
+  UINT32                                                                           Vector;
+  UINT32                                                                           SwitchToPollingThresholdValue;
+  UINT32                                                                           SwitchToPollingThresholdWindow;
+  UINT32                                                                           ErrorThresholdValue;
+  UINT32                                                                           ErrorThresholdWindow;
 } EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
 
 ///
 /// IA-32 Architecture Corrected Machine Check Structure Definition
 ///
 typedef struct {
-  UINT16                                                 Type;
-  UINT16                                                 SourceId;
-  UINT8                                                  Reserved0[2];
-  UINT8                                                  Flags;
-  UINT8                                                  Enabled;
-  UINT32                                                 NumberOfRecordsToPreAllocate;
-  UINT32                                                 MaxSectionsPerRecord;
-  EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
-  UINT8                                                  NumberOfHardwareBanks;
-  UINT8                                                  Reserved1[3];
+  UINT16                                                Type;
+  UINT16                                                SourceId;
+  UINT8                                                 Reserved0[2];
+  UINT8                                                 Flags;
+  UINT8                                                 Enabled;
+  UINT32                                                NumberOfRecordsToPreAllocate;
+  UINT32                                                MaxSectionsPerRecord;
+  EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE    NotificationStructure;
+  UINT8                                                 NumberOfHardwareBanks;
+  UINT8                                                 Reserved1[3];
 } EFI_ACPI_6_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
 
 ///
 /// IA-32 Architecture NMI Error Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  MaxRawDataLength;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    MaxRawDataLength;
 } EFI_ACPI_6_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
 
 ///
 /// PCI Express Root Port AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
-  UINT32  RootErrorCommand;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
+  UINT32    RootErrorCommand;
 } EFI_ACPI_6_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
 
 ///
 /// PCI Express Device AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
 } EFI_ACPI_6_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
 
 ///
 /// PCI Express Bridge AER Structure Definition
 ///
 typedef struct {
-  UINT16  Type;
-  UINT16  SourceId;
-  UINT8   Reserved0[2];
-  UINT8   Flags;
-  UINT8   Enabled;
-  UINT32  NumberOfRecordsToPreAllocate;
-  UINT32  MaxSectionsPerRecord;
-  UINT32  Bus;
-  UINT16  Device;
-  UINT16  Function;
-  UINT16  DeviceControl;
-  UINT8   Reserved1[2];
-  UINT32  UncorrectableErrorMask;
-  UINT32  UncorrectableErrorSeverity;
-  UINT32  CorrectableErrorMask;
-  UINT32  AdvancedErrorCapabilitiesAndControl;
-  UINT32  SecondaryUncorrectableErrorMask;
-  UINT32  SecondaryUncorrectableErrorSeverity;
-  UINT32  SecondaryAdvancedErrorCapabilitiesAndControl;
+  UINT16    Type;
+  UINT16    SourceId;
+  UINT8     Reserved0[2];
+  UINT8     Flags;
+  UINT8     Enabled;
+  UINT32    NumberOfRecordsToPreAllocate;
+  UINT32    MaxSectionsPerRecord;
+  UINT32    Bus;
+  UINT16    Device;
+  UINT16    Function;
+  UINT16    DeviceControl;
+  UINT8     Reserved1[2];
+  UINT32    UncorrectableErrorMask;
+  UINT32    UncorrectableErrorSeverity;
+  UINT32    CorrectableErrorMask;
+  UINT32    AdvancedErrorCapabilitiesAndControl;
+  UINT32    SecondaryUncorrectableErrorMask;
+  UINT32    SecondaryUncorrectableErrorSeverity;
+  UINT32    SecondaryAdvancedErrorCapabilitiesAndControl;
 } EFI_ACPI_6_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
 
 ///
 /// Generic Hardware Error Source Structure Definition
 ///
 typedef struct {
-  UINT16                                                 Type;
-  UINT16                                                 SourceId;
-  UINT16                                                 RelatedSourceId;
-  UINT8                                                  Flags;
-  UINT8                                                  Enabled;
-  UINT32                                                 NumberOfRecordsToPreAllocate;
-  UINT32                                                 MaxSectionsPerRecord;
-  UINT32                                                 MaxRawDataLength;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE                 ErrorStatusAddress;
-  EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
-  UINT32                                                 ErrorStatusBlockLength;
+  UINT16                                                Type;
+  UINT16                                                SourceId;
+  UINT16                                                RelatedSourceId;
+  UINT8                                                 Flags;
+  UINT8                                                 Enabled;
+  UINT32                                                NumberOfRecordsToPreAllocate;
+  UINT32                                                MaxSectionsPerRecord;
+  UINT32                                                MaxRawDataLength;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE                ErrorStatusAddress;
+  EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE    NotificationStructure;
+  UINT32                                                ErrorStatusBlockLength;
 } EFI_ACPI_6_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
 
 ///
 /// Generic Error Status Definition
 ///
 typedef struct {
-  EFI_ACPI_6_0_ERROR_BLOCK_STATUS              BlockStatus;
-  UINT32                                       RawDataOffset;
-  UINT32                                       RawDataLength;
-  UINT32                                       DataLength;
-  UINT32                                       ErrorSeverity;
+  EFI_ACPI_6_0_ERROR_BLOCK_STATUS    BlockStatus;
+  UINT32                             RawDataOffset;
+  UINT32                             RawDataLength;
+  UINT32                             DataLength;
+  UINT32                             ErrorSeverity;
 } EFI_ACPI_6_0_GENERIC_ERROR_STATUS_STRUCTURE;
 
 ///
 /// ERST - Error Record Serialization Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      SerializationHeaderSize;
-  UINT8                       Reserved0[4];
-  UINT32                      InstructionEntryCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         SerializationHeaderSize;
+  UINT8                          Reserved0[4];
+  UINT32                         InstructionEntryCount;
 } EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
 
 ///
 /// ERST Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION  0x01
 
 ///
 /// ERST Serialization Actions
 ///
-#define EFI_ACPI_6_0_ERST_BEGIN_WRITE_OPERATION                    0x00
-#define EFI_ACPI_6_0_ERST_BEGIN_READ_OPERATION                     0x01
-#define EFI_ACPI_6_0_ERST_BEGIN_CLEAR_OPERATION                    0x02
-#define EFI_ACPI_6_0_ERST_END_OPERATION                            0x03
-#define EFI_ACPI_6_0_ERST_SET_RECORD_OFFSET                        0x04
-#define EFI_ACPI_6_0_ERST_EXECUTE_OPERATION                        0x05
-#define EFI_ACPI_6_0_ERST_CHECK_BUSY_STATUS                        0x06
-#define EFI_ACPI_6_0_ERST_GET_COMMAND_STATUS                       0x07
-#define EFI_ACPI_6_0_ERST_GET_RECORD_IDENTIFIER                    0x08
-#define EFI_ACPI_6_0_ERST_SET_RECORD_IDENTIFIER                    0x09
-#define EFI_ACPI_6_0_ERST_GET_RECORD_COUNT                         0x0A
-#define EFI_ACPI_6_0_ERST_BEGIN_DUMMY_WRITE_OPERATION              0x0B
-#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE              0x0D
-#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH       0x0E
-#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES   0x0F
+#define EFI_ACPI_6_0_ERST_BEGIN_WRITE_OPERATION                   0x00
+#define EFI_ACPI_6_0_ERST_BEGIN_READ_OPERATION                    0x01
+#define EFI_ACPI_6_0_ERST_BEGIN_CLEAR_OPERATION                   0x02
+#define EFI_ACPI_6_0_ERST_END_OPERATION                           0x03
+#define EFI_ACPI_6_0_ERST_SET_RECORD_OFFSET                       0x04
+#define EFI_ACPI_6_0_ERST_EXECUTE_OPERATION                       0x05
+#define EFI_ACPI_6_0_ERST_CHECK_BUSY_STATUS                       0x06
+#define EFI_ACPI_6_0_ERST_GET_COMMAND_STATUS                      0x07
+#define EFI_ACPI_6_0_ERST_GET_RECORD_IDENTIFIER                   0x08
+#define EFI_ACPI_6_0_ERST_SET_RECORD_IDENTIFIER                   0x09
+#define EFI_ACPI_6_0_ERST_GET_RECORD_COUNT                        0x0A
+#define EFI_ACPI_6_0_ERST_BEGIN_DUMMY_WRITE_OPERATION             0x0B
+#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE             0x0D
+#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH      0x0E
+#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES  0x0F
 
 ///
 /// ERST Action Command Status
 ///
-#define EFI_ACPI_6_0_ERST_STATUS_SUCCESS                           0x00
-#define EFI_ACPI_6_0_ERST_STATUS_NOT_ENOUGH_SPACE                  0x01
-#define EFI_ACPI_6_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE            0x02
-#define EFI_ACPI_6_0_ERST_STATUS_FAILED                            0x03
-#define EFI_ACPI_6_0_ERST_STATUS_RECORD_STORE_EMPTY                0x04
-#define EFI_ACPI_6_0_ERST_STATUS_RECORD_NOT_FOUND                  0x05
+#define EFI_ACPI_6_0_ERST_STATUS_SUCCESS                 0x00
+#define EFI_ACPI_6_0_ERST_STATUS_NOT_ENOUGH_SPACE        0x01
+#define EFI_ACPI_6_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE  0x02
+#define EFI_ACPI_6_0_ERST_STATUS_FAILED                  0x03
+#define EFI_ACPI_6_0_ERST_STATUS_RECORD_STORE_EMPTY      0x04
+#define EFI_ACPI_6_0_ERST_STATUS_RECORD_NOT_FOUND        0x05
 
 ///
 /// ERST Serialization Instructions
 ///
-#define EFI_ACPI_6_0_ERST_READ_REGISTER                            0x00
-#define EFI_ACPI_6_0_ERST_READ_REGISTER_VALUE                      0x01
-#define EFI_ACPI_6_0_ERST_WRITE_REGISTER                           0x02
-#define EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE                     0x03
-#define EFI_ACPI_6_0_ERST_NOOP                                     0x04
-#define EFI_ACPI_6_0_ERST_LOAD_VAR1                                0x05
-#define EFI_ACPI_6_0_ERST_LOAD_VAR2                                0x06
-#define EFI_ACPI_6_0_ERST_STORE_VAR1                               0x07
-#define EFI_ACPI_6_0_ERST_ADD                                      0x08
-#define EFI_ACPI_6_0_ERST_SUBTRACT                                 0x09
-#define EFI_ACPI_6_0_ERST_ADD_VALUE                                0x0A
-#define EFI_ACPI_6_0_ERST_SUBTRACT_VALUE                           0x0B
-#define EFI_ACPI_6_0_ERST_STALL                                    0x0C
-#define EFI_ACPI_6_0_ERST_STALL_WHILE_TRUE                         0x0D
-#define EFI_ACPI_6_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE            0x0E
-#define EFI_ACPI_6_0_ERST_GOTO                                     0x0F
-#define EFI_ACPI_6_0_ERST_SET_SRC_ADDRESS_BASE                     0x10
-#define EFI_ACPI_6_0_ERST_SET_DST_ADDRESS_BASE                     0x11
-#define EFI_ACPI_6_0_ERST_MOVE_DATA                                0x12
+#define EFI_ACPI_6_0_ERST_READ_REGISTER                  0x00
+#define EFI_ACPI_6_0_ERST_READ_REGISTER_VALUE            0x01
+#define EFI_ACPI_6_0_ERST_WRITE_REGISTER                 0x02
+#define EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE           0x03
+#define EFI_ACPI_6_0_ERST_NOOP                           0x04
+#define EFI_ACPI_6_0_ERST_LOAD_VAR1                      0x05
+#define EFI_ACPI_6_0_ERST_LOAD_VAR2                      0x06
+#define EFI_ACPI_6_0_ERST_STORE_VAR1                     0x07
+#define EFI_ACPI_6_0_ERST_ADD                            0x08
+#define EFI_ACPI_6_0_ERST_SUBTRACT                       0x09
+#define EFI_ACPI_6_0_ERST_ADD_VALUE                      0x0A
+#define EFI_ACPI_6_0_ERST_SUBTRACT_VALUE                 0x0B
+#define EFI_ACPI_6_0_ERST_STALL                          0x0C
+#define EFI_ACPI_6_0_ERST_STALL_WHILE_TRUE               0x0D
+#define EFI_ACPI_6_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE  0x0E
+#define EFI_ACPI_6_0_ERST_GOTO                           0x0F
+#define EFI_ACPI_6_0_ERST_SET_SRC_ADDRESS_BASE           0x10
+#define EFI_ACPI_6_0_ERST_SET_DST_ADDRESS_BASE           0x11
+#define EFI_ACPI_6_0_ERST_MOVE_DATA                      0x12
 
 ///
 /// ERST Instruction Flags
 ///
-#define EFI_ACPI_6_0_ERST_PRESERVE_REGISTER                        0x01
+#define EFI_ACPI_6_0_ERST_PRESERVE_REGISTER  0x01
 
 ///
 /// ERST Serialization Instruction Entry
 ///
 typedef struct {
-  UINT8                                    SerializationAction;
-  UINT8                                    Instruction;
-  UINT8                                    Flags;
-  UINT8                                    Reserved0;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
-  UINT64                                   Value;
-  UINT64                                   Mask;
+  UINT8                                     SerializationAction;
+  UINT8                                     Instruction;
+  UINT8                                     Flags;
+  UINT8                                     Reserved0;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    RegisterRegion;
+  UINT64                                    Value;
+  UINT64                                    Mask;
 } EFI_ACPI_6_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
 
 ///
 /// EINJ - Error Injection Table
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      InjectionHeaderSize;
-  UINT8                       InjectionFlags;
-  UINT8                       Reserved0[3];
-  UINT32                      InjectionEntryCount;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         InjectionHeaderSize;
+  UINT8                          InjectionFlags;
+  UINT8                          Reserved0[3];
+  UINT32                         InjectionEntryCount;
 } EFI_ACPI_6_0_ERROR_INJECTION_TABLE_HEADER;
 
 ///
 /// EINJ Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_ERROR_INJECTION_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_ERROR_INJECTION_TABLE_REVISION  0x01
 
 ///
 /// EINJ Error Injection Actions
 ///
-#define EFI_ACPI_6_0_EINJ_BEGIN_INJECTION_OPERATION                0x00
-#define EFI_ACPI_6_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE           0x01
-#define EFI_ACPI_6_0_EINJ_SET_ERROR_TYPE                           0x02
-#define EFI_ACPI_6_0_EINJ_GET_ERROR_TYPE                           0x03
-#define EFI_ACPI_6_0_EINJ_END_OPERATION                            0x04
-#define EFI_ACPI_6_0_EINJ_EXECUTE_OPERATION                        0x05
-#define EFI_ACPI_6_0_EINJ_CHECK_BUSY_STATUS                        0x06
-#define EFI_ACPI_6_0_EINJ_GET_COMMAND_STATUS                       0x07
-#define EFI_ACPI_6_0_EINJ_TRIGGER_ERROR                            0xFF
+#define EFI_ACPI_6_0_EINJ_BEGIN_INJECTION_OPERATION       0x00
+#define EFI_ACPI_6_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE  0x01
+#define EFI_ACPI_6_0_EINJ_SET_ERROR_TYPE                  0x02
+#define EFI_ACPI_6_0_EINJ_GET_ERROR_TYPE                  0x03
+#define EFI_ACPI_6_0_EINJ_END_OPERATION                   0x04
+#define EFI_ACPI_6_0_EINJ_EXECUTE_OPERATION               0x05
+#define EFI_ACPI_6_0_EINJ_CHECK_BUSY_STATUS               0x06
+#define EFI_ACPI_6_0_EINJ_GET_COMMAND_STATUS              0x07
+#define EFI_ACPI_6_0_EINJ_TRIGGER_ERROR                   0xFF
 
 ///
 /// EINJ Action Command Status
 ///
-#define EFI_ACPI_6_0_EINJ_STATUS_SUCCESS                           0x00
-#define EFI_ACPI_6_0_EINJ_STATUS_UNKNOWN_FAILURE                   0x01
-#define EFI_ACPI_6_0_EINJ_STATUS_INVALID_ACCESS                    0x02
+#define EFI_ACPI_6_0_EINJ_STATUS_SUCCESS          0x00
+#define EFI_ACPI_6_0_EINJ_STATUS_UNKNOWN_FAILURE  0x01
+#define EFI_ACPI_6_0_EINJ_STATUS_INVALID_ACCESS   0x02
 
 ///
 /// EINJ Error Type Definition
 ///
-#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_CORRECTABLE                 (1 << 0)
-#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL      (1 << 1)
-#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL         (1 << 2)
-#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_CORRECTABLE                    (1 << 3)
-#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL         (1 << 4)
-#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL            (1 << 5)
-#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE               (1 << 6)
-#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL    (1 << 7)
-#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL       (1 << 8)
-#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_CORRECTABLE                  (1 << 9)
-#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL       (1 << 10)
-#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL          (1 << 11)
+#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_CORRECTABLE               (1 << 0)
+#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL    (1 << 1)
+#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL       (1 << 2)
+#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_CORRECTABLE                  (1 << 3)
+#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL       (1 << 4)
+#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL          (1 << 5)
+#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE             (1 << 6)
+#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL  (1 << 7)
+#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL     (1 << 8)
+#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_CORRECTABLE                (1 << 9)
+#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL     (1 << 10)
+#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL        (1 << 11)
 
 ///
 /// EINJ Injection Instructions
 ///
-#define EFI_ACPI_6_0_EINJ_READ_REGISTER                            0x00
-#define EFI_ACPI_6_0_EINJ_READ_REGISTER_VALUE                      0x01
-#define EFI_ACPI_6_0_EINJ_WRITE_REGISTER                           0x02
-#define EFI_ACPI_6_0_EINJ_WRITE_REGISTER_VALUE                     0x03
-#define EFI_ACPI_6_0_EINJ_NOOP                                     0x04
+#define EFI_ACPI_6_0_EINJ_READ_REGISTER         0x00
+#define EFI_ACPI_6_0_EINJ_READ_REGISTER_VALUE   0x01
+#define EFI_ACPI_6_0_EINJ_WRITE_REGISTER        0x02
+#define EFI_ACPI_6_0_EINJ_WRITE_REGISTER_VALUE  0x03
+#define EFI_ACPI_6_0_EINJ_NOOP                  0x04
 
 ///
 /// EINJ Instruction Flags
 ///
-#define EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER                        0x01
+#define EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER  0x01
 
 ///
 /// EINJ Injection Instruction Entry
 ///
 typedef struct {
-  UINT8                                    InjectionAction;
-  UINT8                                    Instruction;
-  UINT8                                    Flags;
-  UINT8                                    Reserved0;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
-  UINT64                                   Value;
-  UINT64                                   Mask;
+  UINT8                                     InjectionAction;
+  UINT8                                     Instruction;
+  UINT8                                     Flags;
+  UINT8                                     Reserved0;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    RegisterRegion;
+  UINT64                                    Value;
+  UINT64                                    Mask;
 } EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY;
 
 ///
 /// EINJ Trigger Action Table
 ///
 typedef struct {
-  UINT32  HeaderSize;
-  UINT32  Revision;
-  UINT32  TableSize;
-  UINT32  EntryCount;
+  UINT32    HeaderSize;
+  UINT32    Revision;
+  UINT32    TableSize;
+  UINT32    EntryCount;
 } EFI_ACPI_6_0_EINJ_TRIGGER_ACTION_TABLE;
 
 ///
 /// Platform Communications Channel Table (PCCT)
 ///
 typedef struct {
-  EFI_ACPI_DESCRIPTION_HEADER Header;
-  UINT32                      Flags;
-  UINT64                      Reserved;
+  EFI_ACPI_DESCRIPTION_HEADER    Header;
+  UINT32                         Flags;
+  UINT64                         Reserved;
 } EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;
 
 ///
 /// PCCT Version (as defined in ACPI 6.0 spec.)
 ///
-#define EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01
+#define EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION  0x01
 
 ///
 /// PCCT Global Flags
 ///
-#define EFI_ACPI_6_0_PCCT_FLAGS_SCI_DOORBELL                      BIT0
+#define EFI_ACPI_6_0_PCCT_FLAGS_SCI_DOORBELL  BIT0
 
 //
 // PCCT Subspace type
 //
-#define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_GENERIC  0x00
+#define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_GENERIC                      0x00
+#define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_1_HW_REDUCED_COMMUNICATIONS  0x01
+#define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_2_HW_REDUCED_COMMUNICATIONS  0x02
 
 ///
 /// PCC Subspace Structure Header
 ///
 typedef struct {
-  UINT8        Type;
-  UINT8        Length;
+  UINT8    Type;
+  UINT8    Length;
 } EFI_ACPI_6_0_PCCT_SUBSPACE_HEADER;
 
 ///
 /// Generic Communications Subspace Structure
 ///
 typedef struct {
-  UINT8                                    Type;
-  UINT8                                    Length;
-  UINT8                                    Reserved[6];
-  UINT64                                   BaseAddress;
-  UINT64                                   AddressLength;
-  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE   DoorbellRegister;
-  UINT64                                   DoorbellPreserve;
-  UINT64                                   DoorbellWrite;
-  UINT32                                   NominalLatency;
-  UINT32                                   MaximumPeriodicAccessRate;
-  UINT16                                   MinimumRequestTurnaroundTime;
+  UINT8                                     Type;
+  UINT8                                     Length;
+  UINT8                                     Reserved[6];
+  UINT64                                    BaseAddress;
+  UINT64                                    AddressLength;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    DoorbellRegister;
+  UINT64                                    DoorbellPreserve;
+  UINT64                                    DoorbellWrite;
+  UINT32                                    NominalLatency;
+  UINT32                                    MaximumPeriodicAccessRate;
+  UINT16                                    MinimumRequestTurnaroundTime;
 } EFI_ACPI_6_0_PCCT_SUBSPACE_GENERIC;
 
 ///
@@ -2054,18 +2057,18 @@
 ///
 
 typedef struct {
-  UINT8                                    Command;
-  UINT8                                    Reserved:7;
-  UINT8                                    GenerateSci:1;
+  UINT8    Command;
+  UINT8    Reserved    : 7;
+  UINT8    GenerateSci : 1;
 } EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;
 
 typedef struct {
-  UINT8                                    CommandComplete:1;
-  UINT8                                    SciDoorbell:1;
-  UINT8                                    Error:1;
-  UINT8                                    PlatformNotification:1;
-  UINT8                                    Reserved:4;
-  UINT8                                    Reserved1;
+  UINT8    CommandComplete      : 1;
+  UINT8    SciDoorbell          : 1;
+  UINT8    Error                : 1;
+  UINT8    PlatformNotification : 1;
+  UINT8    Reserved             : 4;
+  UINT8    Reserved1;
 } EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;
 
 typedef struct {
@@ -2074,6 +2077,50 @@
   EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS     Status;
 } EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER;
 
+#define EFI_ACPI_6_0_PCCT_SUBSPACE_DOORBELL_INTERRUPT_FLAGS_POLARITY  BIT0
+#define EFI_ACPI_6_0_PCCT_SUBSPACE_DOORBELL_INTERRUPT_FLAGS_MODE      BIT1
+
+///
+/// Type 1 HW-Reduced Communications Subspace Structure
+///
+typedef struct {
+  UINT8                                     Type;
+  UINT8                                     Length;
+  UINT32                                    DoorbellInterrupt;
+  UINT8                                     DoorbellInterruptFlags;
+  UINT8                                     Reserved;
+  UINT64                                    BaseAddress;
+  UINT64                                    AddressLength;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    DoorbellRegister;
+  UINT64                                    DoorbellPreserve;
+  UINT64                                    DoorbellWrite;
+  UINT32                                    NominalLatency;
+  UINT32                                    MaximumPeriodicAccessRate;
+  UINT16                                    MinimumRequestTurnaroundTime;
+} EFI_ACPI_6_0_PCCT_SUBSPACE_1_HW_REDUCED_COMMUNICATIONS;
+
+///
+/// Type 2 HW-Reduced Communications Subspace Structure
+///
+typedef struct {
+  UINT8                                     Type;
+  UINT8                                     Length;
+  UINT32                                    DoorbellInterrupt;
+  UINT8                                     DoorbellInterruptFlags;
+  UINT8                                     Reserved;
+  UINT64                                    BaseAddress;
+  UINT64                                    AddressLength;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    DoorbellRegister;
+  UINT64                                    DoorbellPreserve;
+  UINT64                                    DoorbellWrite;
+  UINT32                                    NominalLatency;
+  UINT32                                    MaximumPeriodicAccessRate;
+  UINT16                                    MinimumRequestTurnaroundTime;
+  EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE    DoorbellAckRegister;
+  UINT64                                    DoorbellAckPreserve;
+  UINT64                                    DoorbellAckWrite;
+} EFI_ACPI_6_0_PCCT_SUBSPACE_2_HW_REDUCED_COMMUNICATIONS;
+
 //
 // Known table signatures
 //
@@ -2284,12 +2331,17 @@
 #define EFI_ACPI_6_0_DATA_MANAGEMENT_TABLE_SIGNATURE  SIGNATURE_32('M', 'S', 'D', 'M')
 
 ///
+/// "PCCT" Platform Communications Channel Table
+///
+#define EFI_ACPI_6_0_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE  SIGNATURE_32('P', 'C', 'C', 'T')
+
+///
 /// "SLIC" MS Software Licensing Table Specification
 ///
 #define EFI_ACPI_6_0_SOFTWARE_LICENSING_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'C')
 
 ///
-/// "SPCR" Serial Port Concole Redirection Table
+/// "SPCR" Serial Port Console Redirection Table
 ///
 #define EFI_ACPI_6_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
 
diff --git a/src/include/ipxe/efi/IndustryStandard/AcpiAml.h b/src/include/ipxe/efi/IndustryStandard/AcpiAml.h
index a9186b4..d7a83f7 100644
--- a/src/include/ipxe/efi/IndustryStandard/AcpiAml.h
+++ b/src/include/ipxe/efi/IndustryStandard/AcpiAml.h
@@ -2,20 +2,15 @@
   This file contains AML code definition in the latest ACPI spec.
 
   Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2019 - 2021, Arm Limited. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef _ACPI_AML_H_
 #define _ACPI_AML_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 //
 // ACPI AML definition
@@ -24,154 +19,168 @@
 //
 // Primary OpCode
 //
-#define AML_ZERO_OP                  0x00
-#define AML_ONE_OP                   0x01
-#define AML_ALIAS_OP                 0x06
-#define AML_NAME_OP                  0x08
-#define AML_BYTE_PREFIX              0x0a
-#define AML_WORD_PREFIX              0x0b
-#define AML_DWORD_PREFIX             0x0c
-#define AML_STRING_PREFIX            0x0d
-#define AML_QWORD_PREFIX             0x0e
-#define AML_SCOPE_OP                 0x10
-#define AML_BUFFER_OP                0x11
-#define AML_PACKAGE_OP               0x12
-#define AML_VAR_PACKAGE_OP           0x13
-#define AML_METHOD_OP                0x14
-#define AML_DUAL_NAME_PREFIX         0x2e
-#define AML_MULTI_NAME_PREFIX        0x2f
-#define AML_NAME_CHAR_A              0x41
-#define AML_NAME_CHAR_B              0x42
-#define AML_NAME_CHAR_C              0x43
-#define AML_NAME_CHAR_D              0x44
-#define AML_NAME_CHAR_E              0x45
-#define AML_NAME_CHAR_F              0x46
-#define AML_NAME_CHAR_G              0x47
-#define AML_NAME_CHAR_H              0x48
-#define AML_NAME_CHAR_I              0x49
-#define AML_NAME_CHAR_J              0x4a
-#define AML_NAME_CHAR_K              0x4b
-#define AML_NAME_CHAR_L              0x4c
-#define AML_NAME_CHAR_M              0x4d
-#define AML_NAME_CHAR_N              0x4e
-#define AML_NAME_CHAR_O              0x4f
-#define AML_NAME_CHAR_P              0x50
-#define AML_NAME_CHAR_Q              0x51
-#define AML_NAME_CHAR_R              0x52
-#define AML_NAME_CHAR_S              0x53
-#define AML_NAME_CHAR_T              0x54
-#define AML_NAME_CHAR_U              0x55
-#define AML_NAME_CHAR_V              0x56
-#define AML_NAME_CHAR_W              0x57
-#define AML_NAME_CHAR_X              0x58
-#define AML_NAME_CHAR_Y              0x59
-#define AML_NAME_CHAR_Z              0x5a
-#define AML_ROOT_CHAR                0x5c
-#define AML_PARENT_PREFIX_CHAR       0x5e
-#define AML_NAME_CHAR__              0x5f
-#define AML_LOCAL0                   0x60
-#define AML_LOCAL1                   0x61
-#define AML_LOCAL2                   0x62
-#define AML_LOCAL3                   0x63
-#define AML_LOCAL4                   0x64
-#define AML_LOCAL5                   0x65
-#define AML_LOCAL6                   0x66
-#define AML_LOCAL7                   0x67
-#define AML_ARG0                     0x68
-#define AML_ARG1                     0x69
-#define AML_ARG2                     0x6a
-#define AML_ARG3                     0x6b
-#define AML_ARG4                     0x6c
-#define AML_ARG5                     0x6d
-#define AML_ARG6                     0x6e
-#define AML_STORE_OP                 0x70
-#define AML_REF_OF_OP                0x71
-#define AML_ADD_OP                   0x72
-#define AML_CONCAT_OP                0x73
-#define AML_SUBTRACT_OP              0x74
-#define AML_INCREMENT_OP             0x75
-#define AML_DECREMENT_OP             0x76
-#define AML_MULTIPLY_OP              0x77
-#define AML_DIVIDE_OP                0x78
-#define AML_SHIFT_LEFT_OP            0x79
-#define AML_SHIFT_RIGHT_OP           0x7a
-#define AML_AND_OP                   0x7b
-#define AML_NAND_OP                  0x7c
-#define AML_OR_OP                    0x7d
-#define AML_NOR_OP                   0x7e
-#define AML_XOR_OP                   0x7f
-#define AML_NOT_OP                   0x80
-#define AML_FIND_SET_LEFT_BIT_OP     0x81
-#define AML_FIND_SET_RIGHT_BIT_OP    0x82
-#define AML_DEREF_OF_OP              0x83
-#define AML_CONCAT_RES_OP            0x84
-#define AML_MOD_OP                   0x85
-#define AML_NOTIFY_OP                0x86
-#define AML_SIZE_OF_OP               0x87
-#define AML_INDEX_OP                 0x88
-#define AML_MATCH_OP                 0x89
-#define AML_CREATE_DWORD_FIELD_OP    0x8a
-#define AML_CREATE_WORD_FIELD_OP     0x8b
-#define AML_CREATE_BYTE_FIELD_OP     0x8c
-#define AML_CREATE_BIT_FIELD_OP      0x8d
-#define AML_OBJECT_TYPE_OP           0x8e
-#define AML_CREATE_QWORD_FIELD_OP    0x8f
-#define AML_LAND_OP                  0x90
-#define AML_LOR_OP                   0x91
-#define AML_LNOT_OP                  0x92
-#define AML_LEQUAL_OP                0x93
-#define AML_LGREATER_OP              0x94
-#define AML_LLESS_OP                 0x95
-#define AML_TO_BUFFER_OP             0x96
-#define AML_TO_DEC_STRING_OP         0x97
-#define AML_TO_HEX_STRING_OP         0x98
-#define AML_TO_INTEGER_OP            0x99
-#define AML_TO_STRING_OP             0x9c
-#define AML_COPY_OBJECT_OP           0x9d
-#define AML_MID_OP                   0x9e
-#define AML_CONTINUE_OP              0x9f
-#define AML_IF_OP                    0xa0
-#define AML_ELSE_OP                  0xa1
-#define AML_WHILE_OP                 0xa2
-#define AML_NOOP_OP                  0xa3
-#define AML_RETURN_OP                0xa4
-#define AML_BREAK_OP                 0xa5
-#define AML_BREAK_POINT_OP           0xcc
-#define AML_ONES_OP                  0xff
+#define AML_ZERO_OP                0x00
+#define AML_ONE_OP                 0x01
+#define AML_ALIAS_OP               0x06
+#define AML_NAME_OP                0x08
+#define AML_BYTE_PREFIX            0x0a
+#define AML_WORD_PREFIX            0x0b
+#define AML_DWORD_PREFIX           0x0c
+#define AML_STRING_PREFIX          0x0d
+#define AML_QWORD_PREFIX           0x0e
+#define AML_SCOPE_OP               0x10
+#define AML_BUFFER_OP              0x11
+#define AML_PACKAGE_OP             0x12
+#define AML_VAR_PACKAGE_OP         0x13
+#define AML_METHOD_OP              0x14
+#define AML_EXTERNAL_OP            0x15
+#define AML_DUAL_NAME_PREFIX       0x2e
+#define AML_MULTI_NAME_PREFIX      0x2f
+#define AML_NAME_CHAR_A            0x41
+#define AML_NAME_CHAR_B            0x42
+#define AML_NAME_CHAR_C            0x43
+#define AML_NAME_CHAR_D            0x44
+#define AML_NAME_CHAR_E            0x45
+#define AML_NAME_CHAR_F            0x46
+#define AML_NAME_CHAR_G            0x47
+#define AML_NAME_CHAR_H            0x48
+#define AML_NAME_CHAR_I            0x49
+#define AML_NAME_CHAR_J            0x4a
+#define AML_NAME_CHAR_K            0x4b
+#define AML_NAME_CHAR_L            0x4c
+#define AML_NAME_CHAR_M            0x4d
+#define AML_NAME_CHAR_N            0x4e
+#define AML_NAME_CHAR_O            0x4f
+#define AML_NAME_CHAR_P            0x50
+#define AML_NAME_CHAR_Q            0x51
+#define AML_NAME_CHAR_R            0x52
+#define AML_NAME_CHAR_S            0x53
+#define AML_NAME_CHAR_T            0x54
+#define AML_NAME_CHAR_U            0x55
+#define AML_NAME_CHAR_V            0x56
+#define AML_NAME_CHAR_W            0x57
+#define AML_NAME_CHAR_X            0x58
+#define AML_NAME_CHAR_Y            0x59
+#define AML_NAME_CHAR_Z            0x5a
+#define AML_ROOT_CHAR              0x5c
+#define AML_PARENT_PREFIX_CHAR     0x5e
+#define AML_NAME_CHAR__            0x5f
+#define AML_LOCAL0                 0x60
+#define AML_LOCAL1                 0x61
+#define AML_LOCAL2                 0x62
+#define AML_LOCAL3                 0x63
+#define AML_LOCAL4                 0x64
+#define AML_LOCAL5                 0x65
+#define AML_LOCAL6                 0x66
+#define AML_LOCAL7                 0x67
+#define AML_ARG0                   0x68
+#define AML_ARG1                   0x69
+#define AML_ARG2                   0x6a
+#define AML_ARG3                   0x6b
+#define AML_ARG4                   0x6c
+#define AML_ARG5                   0x6d
+#define AML_ARG6                   0x6e
+#define AML_STORE_OP               0x70
+#define AML_REF_OF_OP              0x71
+#define AML_ADD_OP                 0x72
+#define AML_CONCAT_OP              0x73
+#define AML_SUBTRACT_OP            0x74
+#define AML_INCREMENT_OP           0x75
+#define AML_DECREMENT_OP           0x76
+#define AML_MULTIPLY_OP            0x77
+#define AML_DIVIDE_OP              0x78
+#define AML_SHIFT_LEFT_OP          0x79
+#define AML_SHIFT_RIGHT_OP         0x7a
+#define AML_AND_OP                 0x7b
+#define AML_NAND_OP                0x7c
+#define AML_OR_OP                  0x7d
+#define AML_NOR_OP                 0x7e
+#define AML_XOR_OP                 0x7f
+#define AML_NOT_OP                 0x80
+#define AML_FIND_SET_LEFT_BIT_OP   0x81
+#define AML_FIND_SET_RIGHT_BIT_OP  0x82
+#define AML_DEREF_OF_OP            0x83
+#define AML_CONCAT_RES_OP          0x84
+#define AML_MOD_OP                 0x85
+#define AML_NOTIFY_OP              0x86
+#define AML_SIZE_OF_OP             0x87
+#define AML_INDEX_OP               0x88
+#define AML_MATCH_OP               0x89
+#define AML_CREATE_DWORD_FIELD_OP  0x8a
+#define AML_CREATE_WORD_FIELD_OP   0x8b
+#define AML_CREATE_BYTE_FIELD_OP   0x8c
+#define AML_CREATE_BIT_FIELD_OP    0x8d
+#define AML_OBJECT_TYPE_OP         0x8e
+#define AML_CREATE_QWORD_FIELD_OP  0x8f
+#define AML_LAND_OP                0x90
+#define AML_LOR_OP                 0x91
+#define AML_LNOT_OP                0x92
+#define AML_LEQUAL_OP              0x93
+#define AML_LGREATER_OP            0x94
+#define AML_LLESS_OP               0x95
+#define AML_TO_BUFFER_OP           0x96
+#define AML_TO_DEC_STRING_OP       0x97
+#define AML_TO_HEX_STRING_OP       0x98
+#define AML_TO_INTEGER_OP          0x99
+#define AML_TO_STRING_OP           0x9c
+#define AML_COPY_OBJECT_OP         0x9d
+#define AML_MID_OP                 0x9e
+#define AML_CONTINUE_OP            0x9f
+#define AML_IF_OP                  0xa0
+#define AML_ELSE_OP                0xa1
+#define AML_WHILE_OP               0xa2
+#define AML_NOOP_OP                0xa3
+#define AML_RETURN_OP              0xa4
+#define AML_BREAK_OP               0xa5
+#define AML_BREAK_POINT_OP         0xcc
+#define AML_ONES_OP                0xff
 
 //
 // Extended OpCode
 //
-#define AML_EXT_OP                   0x5b
+#define AML_EXT_OP  0x5b
 
-#define AML_EXT_MUTEX_OP             0x01
-#define AML_EXT_EVENT_OP             0x02
-#define AML_EXT_COND_REF_OF_OP       0x12
-#define AML_EXT_CREATE_FIELD_OP      0x13
-#define AML_EXT_LOAD_TABLE_OP        0x1f
-#define AML_EXT_LOAD_OP              0x20
-#define AML_EXT_STALL_OP             0x21
-#define AML_EXT_SLEEP_OP             0x22
-#define AML_EXT_ACQUIRE_OP           0x23
-#define AML_EXT_SIGNAL_OP            0x24
-#define AML_EXT_WAIT_OP              0x25
-#define AML_EXT_RESET_OP             0x26
-#define AML_EXT_RELEASE_OP           0x27
-#define AML_EXT_FROM_BCD_OP          0x28
-#define AML_EXT_TO_BCD_OP            0x29
-#define AML_EXT_UNLOAD_OP            0x2a
-#define AML_EXT_REVISION_OP          0x30
-#define AML_EXT_DEBUG_OP             0x31
-#define AML_EXT_FATAL_OP             0x32
-#define AML_EXT_TIMER_OP             0x33
-#define AML_EXT_REGION_OP            0x80
-#define AML_EXT_FIELD_OP             0x81
-#define AML_EXT_DEVICE_OP            0x82
-#define AML_EXT_PROCESSOR_OP         0x83
-#define AML_EXT_POWER_RES_OP         0x84
-#define AML_EXT_THERMAL_ZONE_OP      0x85
-#define AML_EXT_INDEX_FIELD_OP       0x86
-#define AML_EXT_BANK_FIELD_OP        0x87
-#define AML_EXT_DATA_REGION_OP       0x88
+#define AML_EXT_MUTEX_OP         0x01
+#define AML_EXT_EVENT_OP         0x02
+#define AML_EXT_COND_REF_OF_OP   0x12
+#define AML_EXT_CREATE_FIELD_OP  0x13
+#define AML_EXT_LOAD_TABLE_OP    0x1f
+#define AML_EXT_LOAD_OP          0x20
+#define AML_EXT_STALL_OP         0x21
+#define AML_EXT_SLEEP_OP         0x22
+#define AML_EXT_ACQUIRE_OP       0x23
+#define AML_EXT_SIGNAL_OP        0x24
+#define AML_EXT_WAIT_OP          0x25
+#define AML_EXT_RESET_OP         0x26
+#define AML_EXT_RELEASE_OP       0x27
+#define AML_EXT_FROM_BCD_OP      0x28
+#define AML_EXT_TO_BCD_OP        0x29
+#define AML_EXT_UNLOAD_OP        0x2a
+#define AML_EXT_REVISION_OP      0x30
+#define AML_EXT_DEBUG_OP         0x31
+#define AML_EXT_FATAL_OP         0x32
+#define AML_EXT_TIMER_OP         0x33
+#define AML_EXT_REGION_OP        0x80
+#define AML_EXT_FIELD_OP         0x81
+#define AML_EXT_DEVICE_OP        0x82
+#define AML_EXT_PROCESSOR_OP     0x83
+#define AML_EXT_POWER_RES_OP     0x84
+#define AML_EXT_THERMAL_ZONE_OP  0x85
+#define AML_EXT_INDEX_FIELD_OP   0x86
+#define AML_EXT_BANK_FIELD_OP    0x87
+#define AML_EXT_DATA_REGION_OP   0x88
+
+//
+// FieldElement OpCode
+//
+#define AML_FIELD_RESERVED_OP    0x00
+#define AML_FIELD_ACCESS_OP      0x01
+#define AML_FIELD_CONNECTION_OP  0x02
+#define AML_FIELD_EXT_ACCESS_OP  0x03
+
+//
+// AML Name segment definitions
+//
+#define AML_NAME_SEG_SIZE  4
 
 #endif
diff --git a/src/include/ipxe/efi/IndustryStandard/Bluetooth.h b/src/include/ipxe/efi/IndustryStandard/Bluetooth.h
index f63ab89..97b6526 100644
--- a/src/include/ipxe/efi/IndustryStandard/Bluetooth.h
+++ b/src/include/ipxe/efi/IndustryStandard/Bluetooth.h
@@ -2,21 +2,15 @@
   This file contains the Bluetooth definitions that are consumed by drivers.
   These definitions are from Bluetooth Core Specification Version 4.0 June, 2010
 
-  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef _BLUETOOTH_H_
 #define _BLUETOOTH_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #pragma pack(1)
 
@@ -27,23 +21,38 @@
   ///
   /// 48bit Bluetooth device address.
   ///
-  UINT8      Address[6];
+  UINT8    Address[6];
 } BLUETOOTH_ADDRESS;
 
 ///
 /// BLUETOOTH_CLASS_OF_DEVICE. See Bluetooth specification for detail.
 ///
 typedef struct {
-  UINT8      FormatType:2;
-  UINT8      MinorDeviceClass: 6;
-  UINT16     MajorDeviceClass: 5;
-  UINT16     MajorServiceClass:11;
+  UINT8     FormatType        : 2;
+  UINT8     MinorDeviceClass  : 6;
+  UINT16    MajorDeviceClass  : 5;
+  UINT16    MajorServiceClass : 11;
 } BLUETOOTH_CLASS_OF_DEVICE;
 
+///
+/// BLUETOOTH_LE_ADDRESS
+///
+typedef struct {
+  ///
+  /// 48-bit Bluetooth device address
+  ///
+  UINT8    Address[6];
+  ///
+  /// 0x00 - Public Device Address
+  /// 0x01 - Random Device Address
+  ///
+  UINT8    Type;
+} BLUETOOTH_LE_ADDRESS;
+
 #pragma pack()
 
-#define BLUETOOTH_HCI_COMMAND_LOCAL_READABLE_NAME_MAX_SIZE    248
+#define BLUETOOTH_HCI_COMMAND_LOCAL_READABLE_NAME_MAX_SIZE  248
 
-#define BLUETOOTH_HCI_LINK_KEY_SIZE                           16
+#define BLUETOOTH_HCI_LINK_KEY_SIZE  16
 
 #endif
diff --git a/src/include/ipxe/efi/IndustryStandard/Pci22.h b/src/include/ipxe/efi/IndustryStandard/Pci22.h
index c14d4b4..161333d 100644
--- a/src/include/ipxe/efi/IndustryStandard/Pci22.h
+++ b/src/include/ipxe/efi/IndustryStandard/Pci22.h
@@ -5,24 +5,18 @@
     PCI Local Bus Specification, 2.2
     PCI-to-PCI Bridge Architecture Specification, Revision 1.2
     PC Card Standard, 8.0
-    PCI Power Management Interface Specifiction, Revision 1.2
+    PCI Power Management Interface Specification, Revision 1.2
 
-  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
   Copyright (c) 2014 - 2015, Hewlett-Packard Development Company, L.P.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef _PCI22_H_
 #define _PCI22_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define PCI_MAX_BUS     255
 #define PCI_MAX_DEVICE  31
@@ -35,16 +29,16 @@
 /// Section 6.1, PCI Local Bus Specification, 2.2
 ///
 typedef struct {
-  UINT16  VendorId;
-  UINT16  DeviceId;
-  UINT16  Command;
-  UINT16  Status;
-  UINT8   RevisionID;
-  UINT8   ClassCode[3];
-  UINT8   CacheLineSize;
-  UINT8   LatencyTimer;
-  UINT8   HeaderType;
-  UINT8   BIST;
+  UINT16    VendorId;
+  UINT16    DeviceId;
+  UINT16    Command;
+  UINT16    Status;
+  UINT8     RevisionID;
+  UINT8     ClassCode[3];
+  UINT8     CacheLineSize;
+  UINT8     LatencyTimer;
+  UINT8     HeaderType;
+  UINT8     BIST;
 } PCI_DEVICE_INDEPENDENT_REGION;
 
 ///
@@ -52,18 +46,18 @@
 /// Section 6.1, PCI Local Bus Specification, 2.2
 ///
 typedef struct {
-  UINT32  Bar[6];
-  UINT32  CISPtr;
-  UINT16  SubsystemVendorID;
-  UINT16  SubsystemID;
-  UINT32  ExpansionRomBar;
-  UINT8   CapabilityPtr;
-  UINT8   Reserved1[3];
-  UINT32  Reserved2;
-  UINT8   InterruptLine;
-  UINT8   InterruptPin;
-  UINT8   MinGnt;
-  UINT8   MaxLat;
+  UINT32    Bar[6];
+  UINT32    CISPtr;
+  UINT16    SubsystemVendorID;
+  UINT16    SubsystemID;
+  UINT32    ExpansionRomBar;
+  UINT8     CapabilityPtr;
+  UINT8     Reserved1[3];
+  UINT32    Reserved2;
+  UINT8     InterruptLine;
+  UINT8     InterruptPin;
+  UINT8     MinGnt;
+  UINT8     MaxLat;
 } PCI_DEVICE_HEADER_TYPE_REGION;
 
 ///
@@ -71,8 +65,8 @@
 /// Section 6.1, PCI Local Bus Specification, 2.2
 ///
 typedef struct {
-  PCI_DEVICE_INDEPENDENT_REGION Hdr;
-  PCI_DEVICE_HEADER_TYPE_REGION Device;
+  PCI_DEVICE_INDEPENDENT_REGION    Hdr;
+  PCI_DEVICE_HEADER_TYPE_REGION    Device;
 } PCI_TYPE00;
 
 ///
@@ -80,28 +74,28 @@
 /// Section 3.2, PCI-PCI Bridge Architecture, Version 1.2
 ///
 typedef struct {
-  UINT32  Bar[2];
-  UINT8   PrimaryBus;
-  UINT8   SecondaryBus;
-  UINT8   SubordinateBus;
-  UINT8   SecondaryLatencyTimer;
-  UINT8   IoBase;
-  UINT8   IoLimit;
-  UINT16  SecondaryStatus;
-  UINT16  MemoryBase;
-  UINT16  MemoryLimit;
-  UINT16  PrefetchableMemoryBase;
-  UINT16  PrefetchableMemoryLimit;
-  UINT32  PrefetchableBaseUpper32;
-  UINT32  PrefetchableLimitUpper32;
-  UINT16  IoBaseUpper16;
-  UINT16  IoLimitUpper16;
-  UINT8   CapabilityPtr;
-  UINT8   Reserved[3];
-  UINT32  ExpansionRomBAR;
-  UINT8   InterruptLine;
-  UINT8   InterruptPin;
-  UINT16  BridgeControl;
+  UINT32    Bar[2];
+  UINT8     PrimaryBus;
+  UINT8     SecondaryBus;
+  UINT8     SubordinateBus;
+  UINT8     SecondaryLatencyTimer;
+  UINT8     IoBase;
+  UINT8     IoLimit;
+  UINT16    SecondaryStatus;
+  UINT16    MemoryBase;
+  UINT16    MemoryLimit;
+  UINT16    PrefetchableMemoryBase;
+  UINT16    PrefetchableMemoryLimit;
+  UINT32    PrefetchableBaseUpper32;
+  UINT32    PrefetchableLimitUpper32;
+  UINT16    IoBaseUpper16;
+  UINT16    IoLimitUpper16;
+  UINT8     CapabilityPtr;
+  UINT8     Reserved[3];
+  UINT32    ExpansionRomBAR;
+  UINT8     InterruptLine;
+  UINT8     InterruptPin;
+  UINT16    BridgeControl;
 } PCI_BRIDGE_CONTROL_REGISTER;
 
 ///
@@ -109,202 +103,202 @@
 /// Section 3.2, PCI-PCI Bridge Architecture, Version 1.2
 ///
 typedef struct {
-  PCI_DEVICE_INDEPENDENT_REGION Hdr;
-  PCI_BRIDGE_CONTROL_REGISTER   Bridge;
+  PCI_DEVICE_INDEPENDENT_REGION    Hdr;
+  PCI_BRIDGE_CONTROL_REGISTER      Bridge;
 } PCI_TYPE01;
 
 typedef union {
-  PCI_TYPE00  Device;
-  PCI_TYPE01  Bridge;
+  PCI_TYPE00    Device;
+  PCI_TYPE01    Bridge;
 } PCI_TYPE_GENERIC;
 
 ///
-/// CardBus Conroller Configuration Space,
+/// CardBus Controller Configuration Space,
 /// Section 4.5.1, PC Card Standard. 8.0
 ///
 typedef struct {
-  UINT32  CardBusSocketReg;     ///< Cardus Socket/ExCA Base
-  UINT8   Cap_Ptr;
-  UINT8   Reserved;
-  UINT16  SecondaryStatus;      ///< Secondary Status
-  UINT8   PciBusNumber;         ///< PCI Bus Number
-  UINT8   CardBusBusNumber;     ///< CardBus Bus Number
-  UINT8   SubordinateBusNumber; ///< Subordinate Bus Number
-  UINT8   CardBusLatencyTimer;  ///< CardBus Latency Timer
-  UINT32  MemoryBase0;          ///< Memory Base Register 0
-  UINT32  MemoryLimit0;         ///< Memory Limit Register 0
-  UINT32  MemoryBase1;
-  UINT32  MemoryLimit1;
-  UINT32  IoBase0;
-  UINT32  IoLimit0;             ///< I/O Base Register 0
-  UINT32  IoBase1;              ///< I/O Limit Register 0
-  UINT32  IoLimit1;
-  UINT8   InterruptLine;        ///< Interrupt Line
-  UINT8   InterruptPin;         ///< Interrupt Pin
-  UINT16  BridgeControl;        ///< Bridge Control
+  UINT32    CardBusSocketReg;   ///< Cardbus Socket/ExCA Base
+  UINT8     Cap_Ptr;
+  UINT8     Reserved;
+  UINT16    SecondaryStatus;      ///< Secondary Status
+  UINT8     PciBusNumber;         ///< PCI Bus Number
+  UINT8     CardBusBusNumber;     ///< CardBus Bus Number
+  UINT8     SubordinateBusNumber; ///< Subordinate Bus Number
+  UINT8     CardBusLatencyTimer;  ///< CardBus Latency Timer
+  UINT32    MemoryBase0;          ///< Memory Base Register 0
+  UINT32    MemoryLimit0;         ///< Memory Limit Register 0
+  UINT32    MemoryBase1;
+  UINT32    MemoryLimit1;
+  UINT32    IoBase0;
+  UINT32    IoLimit0;           ///< I/O Base Register 0
+  UINT32    IoBase1;            ///< I/O Limit Register 0
+  UINT32    IoLimit1;
+  UINT8     InterruptLine;      ///< Interrupt Line
+  UINT8     InterruptPin;       ///< Interrupt Pin
+  UINT16    BridgeControl;      ///< Bridge Control
 } PCI_CARDBUS_CONTROL_REGISTER;
 
 //
 // Definitions of PCI class bytes and manipulation macros.
 //
-#define PCI_CLASS_OLD                 0x00
-#define   PCI_CLASS_OLD_OTHER           0x00
-#define   PCI_CLASS_OLD_VGA             0x01
+#define PCI_CLASS_OLD          0x00
+#define   PCI_CLASS_OLD_OTHER  0x00
+#define   PCI_CLASS_OLD_VGA    0x01
 
-#define PCI_CLASS_MASS_STORAGE        0x01
-#define   PCI_CLASS_MASS_STORAGE_SCSI   0x00
-#define   PCI_CLASS_MASS_STORAGE_IDE    0x01
-#define   PCI_CLASS_MASS_STORAGE_FLOPPY 0x02
-#define   PCI_CLASS_MASS_STORAGE_IPI    0x03
-#define   PCI_CLASS_MASS_STORAGE_RAID   0x04
-#define   PCI_CLASS_MASS_STORAGE_OTHER  0x80
+#define PCI_CLASS_MASS_STORAGE           0x01
+#define   PCI_CLASS_MASS_STORAGE_SCSI    0x00
+#define   PCI_CLASS_MASS_STORAGE_IDE     0x01
+#define   PCI_CLASS_MASS_STORAGE_FLOPPY  0x02
+#define   PCI_CLASS_MASS_STORAGE_IPI     0x03
+#define   PCI_CLASS_MASS_STORAGE_RAID    0x04
+#define   PCI_CLASS_MASS_STORAGE_OTHER   0x80
 
-#define PCI_CLASS_NETWORK             0x02
-#define   PCI_CLASS_NETWORK_ETHERNET    0x00
-#define   PCI_CLASS_NETWORK_TOKENRING   0x01
-#define   PCI_CLASS_NETWORK_FDDI        0x02
-#define   PCI_CLASS_NETWORK_ATM         0x03
-#define   PCI_CLASS_NETWORK_ISDN        0x04
-#define   PCI_CLASS_NETWORK_OTHER       0x80
+#define PCI_CLASS_NETWORK              0x02
+#define   PCI_CLASS_NETWORK_ETHERNET   0x00
+#define   PCI_CLASS_NETWORK_TOKENRING  0x01
+#define   PCI_CLASS_NETWORK_FDDI       0x02
+#define   PCI_CLASS_NETWORK_ATM        0x03
+#define   PCI_CLASS_NETWORK_ISDN       0x04
+#define   PCI_CLASS_NETWORK_OTHER      0x80
 
-#define PCI_CLASS_DISPLAY             0x03
-#define   PCI_CLASS_DISPLAY_VGA         0x00
-#define     PCI_IF_VGA_VGA                0x00
-#define     PCI_IF_VGA_8514               0x01
-#define   PCI_CLASS_DISPLAY_XGA         0x01
-#define   PCI_CLASS_DISPLAY_3D          0x02
-#define   PCI_CLASS_DISPLAY_OTHER       0x80
+#define PCI_CLASS_DISPLAY          0x03
+#define   PCI_CLASS_DISPLAY_VGA    0x00
+#define     PCI_IF_VGA_VGA         0x00
+#define     PCI_IF_VGA_8514        0x01
+#define   PCI_CLASS_DISPLAY_XGA    0x01
+#define   PCI_CLASS_DISPLAY_3D     0x02
+#define   PCI_CLASS_DISPLAY_OTHER  0x80
 
-#define PCI_CLASS_MEDIA               0x04
-#define   PCI_CLASS_MEDIA_VIDEO         0x00
-#define   PCI_CLASS_MEDIA_AUDIO         0x01
-#define   PCI_CLASS_MEDIA_TELEPHONE     0x02
-#define   PCI_CLASS_MEDIA_OTHER         0x80
+#define PCI_CLASS_MEDIA              0x04
+#define   PCI_CLASS_MEDIA_VIDEO      0x00
+#define   PCI_CLASS_MEDIA_AUDIO      0x01
+#define   PCI_CLASS_MEDIA_TELEPHONE  0x02
+#define   PCI_CLASS_MEDIA_OTHER      0x80
 
-#define PCI_CLASS_MEMORY_CONTROLLER   0x05
-#define   PCI_CLASS_MEMORY_RAM          0x00
-#define   PCI_CLASS_MEMORY_FLASH        0x01
-#define   PCI_CLASS_MEMORY_OTHER        0x80
+#define PCI_CLASS_MEMORY_CONTROLLER  0x05
+#define   PCI_CLASS_MEMORY_RAM       0x00
+#define   PCI_CLASS_MEMORY_FLASH     0x01
+#define   PCI_CLASS_MEMORY_OTHER     0x80
 
-#define PCI_CLASS_BRIDGE              0x06
-#define   PCI_CLASS_BRIDGE_HOST         0x00
-#define   PCI_CLASS_BRIDGE_ISA          0x01
-#define   PCI_CLASS_BRIDGE_EISA         0x02
-#define   PCI_CLASS_BRIDGE_MCA          0x03
-#define   PCI_CLASS_BRIDGE_P2P          0x04
-#define     PCI_IF_BRIDGE_P2P             0x00
-#define     PCI_IF_BRIDGE_P2P_SUBTRACTIVE 0x01
-#define   PCI_CLASS_BRIDGE_PCMCIA       0x05
-#define   PCI_CLASS_BRIDGE_NUBUS        0x06
-#define   PCI_CLASS_BRIDGE_CARDBUS      0x07
-#define   PCI_CLASS_BRIDGE_RACEWAY      0x08
-#define   PCI_CLASS_BRIDGE_OTHER        0x80
-#define   PCI_CLASS_BRIDGE_ISA_PDECODE  0x80
+#define PCI_CLASS_BRIDGE                   0x06
+#define   PCI_CLASS_BRIDGE_HOST            0x00
+#define   PCI_CLASS_BRIDGE_ISA             0x01
+#define   PCI_CLASS_BRIDGE_EISA            0x02
+#define   PCI_CLASS_BRIDGE_MCA             0x03
+#define   PCI_CLASS_BRIDGE_P2P             0x04
+#define     PCI_IF_BRIDGE_P2P              0x00
+#define     PCI_IF_BRIDGE_P2P_SUBTRACTIVE  0x01
+#define   PCI_CLASS_BRIDGE_PCMCIA          0x05
+#define   PCI_CLASS_BRIDGE_NUBUS           0x06
+#define   PCI_CLASS_BRIDGE_CARDBUS         0x07
+#define   PCI_CLASS_BRIDGE_RACEWAY         0x08
+#define   PCI_CLASS_BRIDGE_OTHER           0x80
+#define   PCI_CLASS_BRIDGE_ISA_PDECODE     0x80
 
-#define PCI_CLASS_SCC                 0x07  ///< Simple communications controllers
-#define   PCI_SUBCLASS_SERIAL           0x00
-#define     PCI_IF_GENERIC_XT             0x00
-#define     PCI_IF_16450                  0x01
-#define     PCI_IF_16550                  0x02
-#define     PCI_IF_16650                  0x03
-#define     PCI_IF_16750                  0x04
-#define     PCI_IF_16850                  0x05
-#define     PCI_IF_16950                  0x06
-#define   PCI_SUBCLASS_PARALLEL         0x01
-#define     PCI_IF_PARALLEL_PORT          0x00
-#define     PCI_IF_BI_DIR_PARALLEL_PORT   0x01
-#define     PCI_IF_ECP_PARALLEL_PORT      0x02
-#define     PCI_IF_1284_CONTROLLER        0x03
-#define     PCI_IF_1284_DEVICE            0xFE
-#define   PCI_SUBCLASS_MULTIPORT_SERIAL 0x02
-#define   PCI_SUBCLASS_MODEM            0x03
-#define     PCI_IF_GENERIC_MODEM          0x00
-#define     PCI_IF_16450_MODEM            0x01
-#define     PCI_IF_16550_MODEM            0x02
-#define     PCI_IF_16650_MODEM            0x03
-#define     PCI_IF_16750_MODEM            0x04
-#define   PCI_SUBCLASS_SCC_OTHER        0x80
+#define PCI_CLASS_SCC                    0x07///< Simple communications controllers
+#define   PCI_SUBCLASS_SERIAL            0x00
+#define     PCI_IF_GENERIC_XT            0x00
+#define     PCI_IF_16450                 0x01
+#define     PCI_IF_16550                 0x02
+#define     PCI_IF_16650                 0x03
+#define     PCI_IF_16750                 0x04
+#define     PCI_IF_16850                 0x05
+#define     PCI_IF_16950                 0x06
+#define   PCI_SUBCLASS_PARALLEL          0x01
+#define     PCI_IF_PARALLEL_PORT         0x00
+#define     PCI_IF_BI_DIR_PARALLEL_PORT  0x01
+#define     PCI_IF_ECP_PARALLEL_PORT     0x02
+#define     PCI_IF_1284_CONTROLLER       0x03
+#define     PCI_IF_1284_DEVICE           0xFE
+#define   PCI_SUBCLASS_MULTIPORT_SERIAL  0x02
+#define   PCI_SUBCLASS_MODEM             0x03
+#define     PCI_IF_GENERIC_MODEM         0x00
+#define     PCI_IF_16450_MODEM           0x01
+#define     PCI_IF_16550_MODEM           0x02
+#define     PCI_IF_16650_MODEM           0x03
+#define     PCI_IF_16750_MODEM           0x04
+#define   PCI_SUBCLASS_SCC_OTHER         0x80
 
-#define PCI_CLASS_SYSTEM_PERIPHERAL   0x08
-#define   PCI_SUBCLASS_PIC              0x00
-#define     PCI_IF_8259_PIC               0x00
-#define     PCI_IF_ISA_PIC                0x01
-#define     PCI_IF_EISA_PIC               0x02
-#define     PCI_IF_APIC_CONTROLLER        0x10  ///< I/O APIC interrupt controller , 32 bye none-prefectable memory.
-#define     PCI_IF_APIC_CONTROLLER2       0x20
-#define   PCI_SUBCLASS_DMA              0x01
-#define     PCI_IF_8237_DMA               0x00
-#define     PCI_IF_ISA_DMA                0x01
-#define     PCI_IF_EISA_DMA               0x02
-#define   PCI_SUBCLASS_TIMER            0x02
-#define     PCI_IF_8254_TIMER             0x00
-#define     PCI_IF_ISA_TIMER              0x01
-#define     PCI_IF_EISA_TIMER             0x02
-#define   PCI_SUBCLASS_RTC              0x03
-#define     PCI_IF_GENERIC_RTC            0x00
-#define     PCI_IF_ISA_RTC                0x01
-#define   PCI_SUBCLASS_PNP_CONTROLLER   0x04    ///< HotPlug Controller
-#define   PCI_SUBCLASS_PERIPHERAL_OTHER 0x80
+#define PCI_CLASS_SYSTEM_PERIPHERAL      0x08
+#define   PCI_SUBCLASS_PIC               0x00
+#define     PCI_IF_8259_PIC              0x00
+#define     PCI_IF_ISA_PIC               0x01
+#define     PCI_IF_EISA_PIC              0x02
+#define     PCI_IF_APIC_CONTROLLER       0x10   ///< I/O APIC interrupt controller , 32 byte none-prefetchable memory.
+#define     PCI_IF_APIC_CONTROLLER2      0x20
+#define   PCI_SUBCLASS_DMA               0x01
+#define     PCI_IF_8237_DMA              0x00
+#define     PCI_IF_ISA_DMA               0x01
+#define     PCI_IF_EISA_DMA              0x02
+#define   PCI_SUBCLASS_TIMER             0x02
+#define     PCI_IF_8254_TIMER            0x00
+#define     PCI_IF_ISA_TIMER             0x01
+#define     PCI_IF_EISA_TIMER            0x02
+#define   PCI_SUBCLASS_RTC               0x03
+#define     PCI_IF_GENERIC_RTC           0x00
+#define     PCI_IF_ISA_RTC               0x01
+#define   PCI_SUBCLASS_PNP_CONTROLLER    0x04   ///< HotPlug Controller
+#define   PCI_SUBCLASS_PERIPHERAL_OTHER  0x80
 
-#define PCI_CLASS_INPUT_DEVICE        0x09
-#define   PCI_SUBCLASS_KEYBOARD         0x00
-#define   PCI_SUBCLASS_PEN              0x01
-#define   PCI_SUBCLASS_MOUSE_CONTROLLER 0x02
-#define   PCI_SUBCLASS_SCAN_CONTROLLER  0x03
-#define   PCI_SUBCLASS_GAMEPORT         0x04
-#define     PCI_IF_GAMEPORT               0x00
-#define     PCI_IF_GAMEPORT1              0x10
-#define   PCI_SUBCLASS_INPUT_OTHER      0x80
+#define PCI_CLASS_INPUT_DEVICE           0x09
+#define   PCI_SUBCLASS_KEYBOARD          0x00
+#define   PCI_SUBCLASS_PEN               0x01
+#define   PCI_SUBCLASS_MOUSE_CONTROLLER  0x02
+#define   PCI_SUBCLASS_SCAN_CONTROLLER   0x03
+#define   PCI_SUBCLASS_GAMEPORT          0x04
+#define     PCI_IF_GAMEPORT              0x00
+#define     PCI_IF_GAMEPORT1             0x10
+#define   PCI_SUBCLASS_INPUT_OTHER       0x80
 
-#define PCI_CLASS_DOCKING_STATION     0x0A
+#define PCI_CLASS_DOCKING_STATION       0x0A
 #define   PCI_SUBCLASS_DOCKING_GENERIC  0x00
 #define   PCI_SUBCLASS_DOCKING_OTHER    0x80
 
-#define PCI_CLASS_PROCESSOR           0x0B
-#define   PCI_SUBCLASS_PROC_386         0x00
-#define   PCI_SUBCLASS_PROC_486         0x01
-#define   PCI_SUBCLASS_PROC_PENTIUM     0x02
-#define   PCI_SUBCLASS_PROC_ALPHA       0x10
-#define   PCI_SUBCLASS_PROC_POWERPC     0x20
-#define   PCI_SUBCLASS_PROC_MIPS        0x30
-#define   PCI_SUBCLASS_PROC_CO_PORC     0x40 ///< Co-Processor
+#define PCI_CLASS_PROCESSOR          0x0B
+#define   PCI_SUBCLASS_PROC_386      0x00
+#define   PCI_SUBCLASS_PROC_486      0x01
+#define   PCI_SUBCLASS_PROC_PENTIUM  0x02
+#define   PCI_SUBCLASS_PROC_ALPHA    0x10
+#define   PCI_SUBCLASS_PROC_POWERPC  0x20
+#define   PCI_SUBCLASS_PROC_MIPS     0x30
+#define   PCI_SUBCLASS_PROC_CO_PORC  0x40    ///< Co-Processor
 
-#define PCI_CLASS_SERIAL              0x0C
-#define   PCI_CLASS_SERIAL_FIREWIRE     0x00
-#define     PCI_IF_1394                   0x00
-#define     PCI_IF_1394_OPEN_HCI          0x10
-#define   PCI_CLASS_SERIAL_ACCESS_BUS   0x01
-#define   PCI_CLASS_SERIAL_SSA          0x02
-#define   PCI_CLASS_SERIAL_USB          0x03
-#define     PCI_IF_UHCI                   0x00
-#define     PCI_IF_OHCI                   0x10
-#define     PCI_IF_USB_OTHER              0x80
-#define     PCI_IF_USB_DEVICE             0xFE
-#define   PCI_CLASS_SERIAL_FIBRECHANNEL 0x04
-#define   PCI_CLASS_SERIAL_SMB          0x05
+#define PCI_CLASS_SERIAL                 0x0C
+#define   PCI_CLASS_SERIAL_FIREWIRE      0x00
+#define     PCI_IF_1394                  0x00
+#define     PCI_IF_1394_OPEN_HCI         0x10
+#define   PCI_CLASS_SERIAL_ACCESS_BUS    0x01
+#define   PCI_CLASS_SERIAL_SSA           0x02
+#define   PCI_CLASS_SERIAL_USB           0x03
+#define     PCI_IF_UHCI                  0x00
+#define     PCI_IF_OHCI                  0x10
+#define     PCI_IF_USB_OTHER             0x80
+#define     PCI_IF_USB_DEVICE            0xFE
+#define   PCI_CLASS_SERIAL_FIBRECHANNEL  0x04
+#define   PCI_CLASS_SERIAL_SMB           0x05
 
-#define PCI_CLASS_WIRELESS            0x0D
-#define   PCI_SUBCLASS_IRDA             0x00
-#define   PCI_SUBCLASS_IR               0x01
-#define   PCI_SUBCLASS_RF               0x10
-#define   PCI_SUBCLASS_WIRELESS_OTHER   0x80
+#define PCI_CLASS_WIRELESS             0x0D
+#define   PCI_SUBCLASS_IRDA            0x00
+#define   PCI_SUBCLASS_IR              0x01
+#define   PCI_SUBCLASS_RF              0x10
+#define   PCI_SUBCLASS_WIRELESS_OTHER  0x80
 
-#define PCI_CLASS_INTELLIGENT_IO      0x0E
+#define PCI_CLASS_INTELLIGENT_IO  0x0E
 
-#define PCI_CLASS_SATELLITE           0x0F
-#define   PCI_SUBCLASS_TV               0x01
-#define   PCI_SUBCLASS_AUDIO            0x02
-#define   PCI_SUBCLASS_VOICE            0x03
-#define   PCI_SUBCLASS_DATA             0x04
+#define PCI_CLASS_SATELLITE   0x0F
+#define   PCI_SUBCLASS_TV     0x01
+#define   PCI_SUBCLASS_AUDIO  0x02
+#define   PCI_SUBCLASS_VOICE  0x03
+#define   PCI_SUBCLASS_DATA   0x04
 
-#define PCI_SECURITY_CONTROLLER       0x10   ///< Encryption and decryption controller
-#define   PCI_SUBCLASS_NET_COMPUT       0x00
-#define   PCI_SUBCLASS_ENTERTAINMENT    0x10
-#define   PCI_SUBCLASS_SECURITY_OTHER   0x80
+#define PCI_SECURITY_CONTROLLER        0x10  ///< Encryption and decryption controller
+#define   PCI_SUBCLASS_NET_COMPUT      0x00
+#define   PCI_SUBCLASS_ENTERTAINMENT   0x10
+#define   PCI_SUBCLASS_SECURITY_OTHER  0x80
 
-#define PCI_CLASS_DPIO                0x11
-#define   PCI_SUBCLASS_DPIO             0x00
-#define   PCI_SUBCLASS_DPIO_OTHER       0x80
+#define PCI_CLASS_DPIO             0x11
+#define   PCI_SUBCLASS_DPIO        0x00
+#define   PCI_SUBCLASS_DPIO_OTHER  0x80
 
 /**
   Macro that checks whether the Base Class code of device matched.
@@ -316,7 +310,8 @@
   @retval FALSE   Base Class code doesn't match the specified device.
 
 **/
-#define IS_CLASS1(_p, c)              ((_p)->Hdr.ClassCode[2] == (c))
+#define IS_CLASS1(_p, c)  ((_p)->Hdr.ClassCode[2] == (c))
+
 /**
   Macro that checks whether the Base Class code and Sub-Class code of device matched.
 
@@ -328,7 +323,8 @@
   @retval FALSE   Base Class code and Sub-Class code don't match the specified device.
 
 **/
-#define IS_CLASS2(_p, c, s)           (IS_CLASS1 (_p, c) && ((_p)->Hdr.ClassCode[1] == (s)))
+#define IS_CLASS2(_p, c, s)  (IS_CLASS1 (_p, c) && ((_p)->Hdr.ClassCode[1] == (s)))
+
 /**
   Macro that checks whether the Base Class code, Sub-Class code and Interface code of device matched.
 
@@ -341,7 +337,7 @@
   @retval FALSE   Base Class code, Sub-Class code and Interface code don't match the specified device.
 
 **/
-#define IS_CLASS3(_p, c, s, p)        (IS_CLASS2 (_p, c, s) && ((_p)->Hdr.ClassCode[0] == (p)))
+#define IS_CLASS3(_p, c, s, p)  (IS_CLASS2 (_p, c, s) && ((_p)->Hdr.ClassCode[0] == (p)))
 
 /**
   Macro that checks whether device is a display controller.
@@ -352,7 +348,8 @@
   @retval FALSE   Device is not a display controller.
 
 **/
-#define IS_PCI_DISPLAY(_p)            IS_CLASS1 (_p, PCI_CLASS_DISPLAY)
+#define IS_PCI_DISPLAY(_p)  IS_CLASS1 (_p, PCI_CLASS_DISPLAY)
+
 /**
   Macro that checks whether device is a VGA-compatible controller.
 
@@ -362,7 +359,8 @@
   @retval FALSE   Device is not a VGA-compatible controller.
 
 **/
-#define IS_PCI_VGA(_p)                IS_CLASS3 (_p, PCI_CLASS_DISPLAY, PCI_CLASS_DISPLAY_VGA, PCI_IF_VGA_VGA)
+#define IS_PCI_VGA(_p)  IS_CLASS3 (_p, PCI_CLASS_DISPLAY, PCI_CLASS_DISPLAY_VGA, PCI_IF_VGA_VGA)
+
 /**
   Macro that checks whether device is an 8514-compatible controller.
 
@@ -372,7 +370,8 @@
   @retval FALSE   Device is not an 8514-compatible controller.
 
 **/
-#define IS_PCI_8514(_p)               IS_CLASS3 (_p, PCI_CLASS_DISPLAY, PCI_CLASS_DISPLAY_VGA, PCI_IF_VGA_8514)
+#define IS_PCI_8514(_p)  IS_CLASS3 (_p, PCI_CLASS_DISPLAY, PCI_CLASS_DISPLAY_VGA, PCI_IF_VGA_8514)
+
 /**
   Macro that checks whether device is built before the Class Code field was defined.
 
@@ -382,7 +381,8 @@
   @retval FALSE   Device is not an old device.
 
 **/
-#define IS_PCI_OLD(_p)                IS_CLASS1 (_p, PCI_CLASS_OLD)
+#define IS_PCI_OLD(_p)  IS_CLASS1 (_p, PCI_CLASS_OLD)
+
 /**
   Macro that checks whether device is a VGA-compatible device built before the Class Code field was defined.
 
@@ -392,7 +392,8 @@
   @retval FALSE   Device is not an old VGA-compatible device.
 
 **/
-#define IS_PCI_OLD_VGA(_p)            IS_CLASS2 (_p, PCI_CLASS_OLD, PCI_CLASS_OLD_VGA)
+#define IS_PCI_OLD_VGA(_p)  IS_CLASS2 (_p, PCI_CLASS_OLD, PCI_CLASS_OLD_VGA)
+
 /**
   Macro that checks whether device is an IDE controller.
 
@@ -402,7 +403,8 @@
   @retval FALSE   Device is not an IDE controller.
 
 **/
-#define IS_PCI_IDE(_p)                IS_CLASS2 (_p, PCI_CLASS_MASS_STORAGE, PCI_CLASS_MASS_STORAGE_IDE)
+#define IS_PCI_IDE(_p)  IS_CLASS2 (_p, PCI_CLASS_MASS_STORAGE, PCI_CLASS_MASS_STORAGE_IDE)
+
 /**
   Macro that checks whether device is a SCSI bus controller.
 
@@ -412,7 +414,8 @@
   @retval FALSE   Device is not a SCSI bus controller.
 
 **/
-#define IS_PCI_SCSI(_p)               IS_CLASS2 (_p, PCI_CLASS_MASS_STORAGE, PCI_CLASS_MASS_STORAGE_SCSI)
+#define IS_PCI_SCSI(_p)  IS_CLASS2 (_p, PCI_CLASS_MASS_STORAGE, PCI_CLASS_MASS_STORAGE_SCSI)
+
 /**
   Macro that checks whether device is a RAID controller.
 
@@ -422,7 +425,8 @@
   @retval FALSE   Device is not a RAID controller.
 
 **/
-#define IS_PCI_RAID(_p)               IS_CLASS2 (_p, PCI_CLASS_MASS_STORAGE, PCI_CLASS_MASS_STORAGE_RAID)
+#define IS_PCI_RAID(_p)  IS_CLASS2 (_p, PCI_CLASS_MASS_STORAGE, PCI_CLASS_MASS_STORAGE_RAID)
+
 /**
   Macro that checks whether device is an ISA bridge.
 
@@ -432,7 +436,8 @@
   @retval FALSE   Device is not an ISA bridge.
 
 **/
-#define IS_PCI_LPC(_p)                IS_CLASS2 (_p, PCI_CLASS_BRIDGE, PCI_CLASS_BRIDGE_ISA)
+#define IS_PCI_LPC(_p)  IS_CLASS2 (_p, PCI_CLASS_BRIDGE, PCI_CLASS_BRIDGE_ISA)
+
 /**
   Macro that checks whether device is a PCI-to-PCI bridge.
 
@@ -442,7 +447,8 @@
   @retval FALSE   Device is not a PCI-to-PCI bridge.
 
 **/
-#define IS_PCI_P2P(_p)                IS_CLASS3 (_p, PCI_CLASS_BRIDGE, PCI_CLASS_BRIDGE_P2P, PCI_IF_BRIDGE_P2P)
+#define IS_PCI_P2P(_p)  IS_CLASS3 (_p, PCI_CLASS_BRIDGE, PCI_CLASS_BRIDGE_P2P, PCI_IF_BRIDGE_P2P)
+
 /**
   Macro that checks whether device is a Subtractive Decode PCI-to-PCI bridge.
 
@@ -452,7 +458,8 @@
   @retval FALSE   Device is not a Subtractive Decode PCI-to-PCI bridge.
 
 **/
-#define IS_PCI_P2P_SUB(_p)            IS_CLASS3 (_p, PCI_CLASS_BRIDGE, PCI_CLASS_BRIDGE_P2P, PCI_IF_BRIDGE_P2P_SUBTRACTIVE)
+#define IS_PCI_P2P_SUB(_p)  IS_CLASS3 (_p, PCI_CLASS_BRIDGE, PCI_CLASS_BRIDGE_P2P, PCI_IF_BRIDGE_P2P_SUBTRACTIVE)
+
 /**
   Macro that checks whether device is a 16550-compatible serial controller.
 
@@ -462,7 +469,8 @@
   @retval FALSE   Device is not a 16550-compatible serial controller.
 
 **/
-#define IS_PCI_16550_SERIAL(_p)       IS_CLASS3 (_p, PCI_CLASS_SCC, PCI_SUBCLASS_SERIAL, PCI_IF_16550)
+#define IS_PCI_16550_SERIAL(_p)  IS_CLASS3 (_p, PCI_CLASS_SCC, PCI_SUBCLASS_SERIAL, PCI_IF_16550)
+
 /**
   Macro that checks whether device is a Universal Serial Bus controller.
 
@@ -472,19 +480,20 @@
   @retval FALSE   Device is not a Universal Serial Bus controller.
 
 **/
-#define IS_PCI_USB(_p)                IS_CLASS2 (_p, PCI_CLASS_SERIAL, PCI_CLASS_SERIAL_USB)
+#define IS_PCI_USB(_p)  IS_CLASS2 (_p, PCI_CLASS_SERIAL, PCI_CLASS_SERIAL_USB)
 
 //
 // the definition of Header Type
 //
-#define HEADER_TYPE_DEVICE            0x00
-#define HEADER_TYPE_PCI_TO_PCI_BRIDGE 0x01
-#define HEADER_TYPE_CARDBUS_BRIDGE    0x02
-#define HEADER_TYPE_MULTI_FUNCTION    0x80
+#define HEADER_TYPE_DEVICE             0x00
+#define HEADER_TYPE_PCI_TO_PCI_BRIDGE  0x01
+#define HEADER_TYPE_CARDBUS_BRIDGE     0x02
+#define HEADER_TYPE_MULTI_FUNCTION     0x80
 //
 // Mask of Header type
 //
-#define HEADER_LAYOUT_CODE            0x7f
+#define HEADER_LAYOUT_CODE  0x7f
+
 /**
   Macro that checks whether device is a PCI-PCI bridge.
 
@@ -494,7 +503,8 @@
   @retval FALSE   Device is not a PCI-PCI bridge.
 
 **/
-#define IS_PCI_BRIDGE(_p)             (((_p)->Hdr.HeaderType & HEADER_LAYOUT_CODE) == (HEADER_TYPE_PCI_TO_PCI_BRIDGE))
+#define IS_PCI_BRIDGE(_p)  (((_p)->Hdr.HeaderType & HEADER_LAYOUT_CODE) == (HEADER_TYPE_PCI_TO_PCI_BRIDGE))
+
 /**
   Macro that checks whether device is a CardBus bridge.
 
@@ -504,7 +514,8 @@
   @retval FALSE   Device is not a CardBus bridge.
 
 **/
-#define IS_CARDBUS_BRIDGE(_p)         (((_p)->Hdr.HeaderType & HEADER_LAYOUT_CODE) == (HEADER_TYPE_CARDBUS_BRIDGE))
+#define IS_CARDBUS_BRIDGE(_p)  (((_p)->Hdr.HeaderType & HEADER_LAYOUT_CODE) == (HEADER_TYPE_CARDBUS_BRIDGE))
+
 /**
   Macro that checks whether device is a multiple functions device.
 
@@ -514,38 +525,38 @@
   @retval FALSE   Device is not a multiple functions device.
 
 **/
-#define IS_PCI_MULTI_FUNC(_p)         ((_p)->Hdr.HeaderType & HEADER_TYPE_MULTI_FUNCTION)
+#define IS_PCI_MULTI_FUNC(_p)  ((_p)->Hdr.HeaderType & HEADER_TYPE_MULTI_FUNCTION)
 
 ///
-/// Rom Base Address in Bridge, defined in PCI-to-PCI Bridge Architecure Specification,
+/// Rom Base Address in Bridge, defined in PCI-to-PCI Bridge Architecture Specification,
 ///
-#define PCI_BRIDGE_ROMBAR             0x38
+#define PCI_BRIDGE_ROMBAR  0x38
 
-#define PCI_MAX_BAR                   0x0006
-#define PCI_MAX_CONFIG_OFFSET         0x0100
+#define PCI_MAX_BAR            0x0006
+#define PCI_MAX_CONFIG_OFFSET  0x0100
 
-#define PCI_VENDOR_ID_OFFSET                        0x00
-#define PCI_DEVICE_ID_OFFSET                        0x02
-#define PCI_COMMAND_OFFSET                          0x04
-#define PCI_PRIMARY_STATUS_OFFSET                   0x06
-#define PCI_REVISION_ID_OFFSET                      0x08
-#define PCI_CLASSCODE_OFFSET                        0x09
-#define PCI_CACHELINE_SIZE_OFFSET                   0x0C
-#define PCI_LATENCY_TIMER_OFFSET                    0x0D
-#define PCI_HEADER_TYPE_OFFSET                      0x0E
-#define PCI_BIST_OFFSET                             0x0F
-#define PCI_BASE_ADDRESSREG_OFFSET                  0x10
-#define PCI_CARDBUS_CIS_OFFSET                      0x28
-#define PCI_SVID_OFFSET                             0x2C ///< SubSystem Vendor id
-#define PCI_SUBSYSTEM_VENDOR_ID_OFFSET              0x2C
-#define PCI_SID_OFFSET                              0x2E ///< SubSystem ID
-#define PCI_SUBSYSTEM_ID_OFFSET                     0x2E
-#define PCI_EXPANSION_ROM_BASE                      0x30
-#define PCI_CAPBILITY_POINTER_OFFSET                0x34
-#define PCI_INT_LINE_OFFSET                         0x3C ///< Interrupt Line Register
-#define PCI_INT_PIN_OFFSET                          0x3D ///< Interrupt Pin Register
-#define PCI_MAXGNT_OFFSET                           0x3E ///< Max Grant Register
-#define PCI_MAXLAT_OFFSET                           0x3F ///< Max Latency Register
+#define PCI_VENDOR_ID_OFFSET            0x00
+#define PCI_DEVICE_ID_OFFSET            0x02
+#define PCI_COMMAND_OFFSET              0x04
+#define PCI_PRIMARY_STATUS_OFFSET       0x06
+#define PCI_REVISION_ID_OFFSET          0x08
+#define PCI_CLASSCODE_OFFSET            0x09
+#define PCI_CACHELINE_SIZE_OFFSET       0x0C
+#define PCI_LATENCY_TIMER_OFFSET        0x0D
+#define PCI_HEADER_TYPE_OFFSET          0x0E
+#define PCI_BIST_OFFSET                 0x0F
+#define PCI_BASE_ADDRESSREG_OFFSET      0x10
+#define PCI_CARDBUS_CIS_OFFSET          0x28
+#define PCI_SVID_OFFSET                 0x2C             ///< SubSystem Vendor id
+#define PCI_SUBSYSTEM_VENDOR_ID_OFFSET  0x2C
+#define PCI_SID_OFFSET                  0x2E             ///< SubSystem ID
+#define PCI_SUBSYSTEM_ID_OFFSET         0x2E
+#define PCI_EXPANSION_ROM_BASE          0x30
+#define PCI_CAPBILITY_POINTER_OFFSET    0x34
+#define PCI_INT_LINE_OFFSET             0x3C             ///< Interrupt Line Register
+#define PCI_INT_PIN_OFFSET              0x3D             ///< Interrupt Pin Register
+#define PCI_MAXGNT_OFFSET               0x3E             ///< Max Grant Register
+#define PCI_MAXLAT_OFFSET               0x3F             ///< Max Latency Register
 
 //
 // defined in PCI-to-PCI Bridge Architecture Specification
@@ -560,35 +571,35 @@
 ///
 /// Interrupt Line "Unknown" or "No connection" value defined for x86 based system
 ///
-#define PCI_INT_LINE_UNKNOWN                        0xFF
+#define PCI_INT_LINE_UNKNOWN  0xFF
 
 ///
 /// PCI Access Data Format
 ///
 typedef union {
   struct {
-    UINT32  Reg : 8;
-    UINT32  Func : 3;
-    UINT32  Dev : 5;
-    UINT32  Bus : 8;
-    UINT32  Reserved : 7;
-    UINT32  Enable : 1;
+    UINT32    Reg      : 8;
+    UINT32    Func     : 3;
+    UINT32    Dev      : 5;
+    UINT32    Bus      : 8;
+    UINT32    Reserved : 7;
+    UINT32    Enable   : 1;
   } Bits;
-  UINT32  Uint32;
+  UINT32    Uint32;
 } PCI_CONFIG_ACCESS_CF8;
 
 #pragma pack()
 
-#define EFI_PCI_COMMAND_IO_SPACE                        BIT0   ///< 0x0001
-#define EFI_PCI_COMMAND_MEMORY_SPACE                    BIT1   ///< 0x0002
-#define EFI_PCI_COMMAND_BUS_MASTER                      BIT2   ///< 0x0004
-#define EFI_PCI_COMMAND_SPECIAL_CYCLE                   BIT3   ///< 0x0008
-#define EFI_PCI_COMMAND_MEMORY_WRITE_AND_INVALIDATE     BIT4   ///< 0x0010
-#define EFI_PCI_COMMAND_VGA_PALETTE_SNOOP               BIT5   ///< 0x0020
-#define EFI_PCI_COMMAND_PARITY_ERROR_RESPOND            BIT6   ///< 0x0040
-#define EFI_PCI_COMMAND_STEPPING_CONTROL                BIT7   ///< 0x0080
-#define EFI_PCI_COMMAND_SERR                            BIT8   ///< 0x0100
-#define EFI_PCI_COMMAND_FAST_BACK_TO_BACK               BIT9   ///< 0x0200
+#define EFI_PCI_COMMAND_IO_SPACE                     BIT0      ///< 0x0001
+#define EFI_PCI_COMMAND_MEMORY_SPACE                 BIT1      ///< 0x0002
+#define EFI_PCI_COMMAND_BUS_MASTER                   BIT2      ///< 0x0004
+#define EFI_PCI_COMMAND_SPECIAL_CYCLE                BIT3      ///< 0x0008
+#define EFI_PCI_COMMAND_MEMORY_WRITE_AND_INVALIDATE  BIT4      ///< 0x0010
+#define EFI_PCI_COMMAND_VGA_PALETTE_SNOOP            BIT5      ///< 0x0020
+#define EFI_PCI_COMMAND_PARITY_ERROR_RESPOND         BIT6      ///< 0x0040
+#define EFI_PCI_COMMAND_STEPPING_CONTROL             BIT7      ///< 0x0080
+#define EFI_PCI_COMMAND_SERR                         BIT8      ///< 0x0100
+#define EFI_PCI_COMMAND_FAST_BACK_TO_BACK            BIT9      ///< 0x0200
 
 //
 // defined in PCI-to-PCI Bridge Architecture Specification
@@ -609,111 +620,111 @@
 //
 // Following are the PCI-CARDBUS bridge control bit, defined in PC Card Standard
 //
-#define EFI_PCI_BRIDGE_CONTROL_IREQINT_ENABLE           BIT7   ///< 0x0080
-#define EFI_PCI_BRIDGE_CONTROL_RANGE0_MEMORY_TYPE       BIT8   ///< 0x0100
-#define EFI_PCI_BRIDGE_CONTROL_RANGE1_MEMORY_TYPE       BIT9   ///< 0x0200
-#define EFI_PCI_BRIDGE_CONTROL_WRITE_POSTING_ENABLE     BIT10  ///< 0x0400
+#define EFI_PCI_BRIDGE_CONTROL_IREQINT_ENABLE        BIT7      ///< 0x0080
+#define EFI_PCI_BRIDGE_CONTROL_RANGE0_MEMORY_TYPE    BIT8      ///< 0x0100
+#define EFI_PCI_BRIDGE_CONTROL_RANGE1_MEMORY_TYPE    BIT9      ///< 0x0200
+#define EFI_PCI_BRIDGE_CONTROL_WRITE_POSTING_ENABLE  BIT10     ///< 0x0400
 
 //
 // Following are the PCI status control bit
 //
-#define EFI_PCI_STATUS_CAPABILITY                       BIT4   ///< 0x0010
-#define EFI_PCI_STATUS_66MZ_CAPABLE                     BIT5   ///< 0x0020
-#define EFI_PCI_FAST_BACK_TO_BACK_CAPABLE               BIT7   ///< 0x0080
-#define EFI_PCI_MASTER_DATA_PARITY_ERROR                BIT8   ///< 0x0100
+#define EFI_PCI_STATUS_CAPABILITY          BIT4                ///< 0x0010
+#define EFI_PCI_STATUS_66MZ_CAPABLE        BIT5                ///< 0x0020
+#define EFI_PCI_FAST_BACK_TO_BACK_CAPABLE  BIT7                ///< 0x0080
+#define EFI_PCI_MASTER_DATA_PARITY_ERROR   BIT8                ///< 0x0100
 
 ///
 /// defined in PC Card Standard
 ///
-#define EFI_PCI_CARDBUS_BRIDGE_CAPABILITY_PTR 0x14
+#define EFI_PCI_CARDBUS_BRIDGE_CAPABILITY_PTR  0x14
 
 #pragma pack(1)
 //
 // PCI Capability List IDs and records
 //
-#define EFI_PCI_CAPABILITY_ID_PMI     0x01
-#define EFI_PCI_CAPABILITY_ID_AGP     0x02
-#define EFI_PCI_CAPABILITY_ID_VPD     0x03
-#define EFI_PCI_CAPABILITY_ID_SLOTID  0x04
-#define EFI_PCI_CAPABILITY_ID_MSI     0x05
-#define EFI_PCI_CAPABILITY_ID_HOTPLUG 0x06
-#define EFI_PCI_CAPABILITY_ID_SHPC    0x0C
+#define EFI_PCI_CAPABILITY_ID_PMI      0x01
+#define EFI_PCI_CAPABILITY_ID_AGP      0x02
+#define EFI_PCI_CAPABILITY_ID_VPD      0x03
+#define EFI_PCI_CAPABILITY_ID_SLOTID   0x04
+#define EFI_PCI_CAPABILITY_ID_MSI      0x05
+#define EFI_PCI_CAPABILITY_ID_HOTPLUG  0x06
+#define EFI_PCI_CAPABILITY_ID_SHPC     0x0C
 
 ///
 /// Capabilities List Header
 /// Section 6.7, PCI Local Bus Specification, 2.2
 ///
 typedef struct {
-  UINT8 CapabilityID;
-  UINT8 NextItemPtr;
+  UINT8    CapabilityID;
+  UINT8    NextItemPtr;
 } EFI_PCI_CAPABILITY_HDR;
 
 ///
 /// PMC - Power Management Capabilities
-/// Section 3.2.3, PCI Power Management Interface Specifiction, Revision 1.2
+/// Section 3.2.3, PCI Power Management Interface Specification, Revision 1.2
 ///
 typedef union {
   struct {
-    UINT16 Version : 3;
-    UINT16 PmeClock : 1;
-    UINT16 Reserved : 1;
-    UINT16 DeviceSpecificInitialization : 1;
-    UINT16 AuxCurrent : 3;
-    UINT16 D1Support : 1;
-    UINT16 D2Support : 1;
-    UINT16 PmeSupport : 5;
+    UINT16    Version                      : 3;
+    UINT16    PmeClock                     : 1;
+    UINT16    Reserved                     : 1;
+    UINT16    DeviceSpecificInitialization : 1;
+    UINT16    AuxCurrent                   : 3;
+    UINT16    D1Support                    : 1;
+    UINT16    D2Support                    : 1;
+    UINT16    PmeSupport                   : 5;
   } Bits;
-  UINT16 Data;
+  UINT16    Data;
 } EFI_PCI_PMC;
 
-#define EFI_PCI_PMC_D3_COLD_MASK    (BIT15)
+#define EFI_PCI_PMC_D3_COLD_MASK  (BIT15)
 
 ///
 /// PMCSR - Power Management Control/Status
-/// Section 3.2.4, PCI Power Management Interface Specifiction, Revision 1.2
+/// Section 3.2.4, PCI Power Management Interface Specification, Revision 1.2
 ///
 typedef union {
   struct {
-    UINT16 PowerState : 2;
-    UINT16 ReservedForPciExpress : 1;
-    UINT16 NoSoftReset : 1;
-    UINT16 Reserved : 4;
-    UINT16 PmeEnable : 1;
-    UINT16 DataSelect : 4;
-    UINT16 DataScale : 2;
-    UINT16 PmeStatus : 1;
+    UINT16    PowerState            : 2;
+    UINT16    ReservedForPciExpress : 1;
+    UINT16    NoSoftReset           : 1;
+    UINT16    Reserved              : 4;
+    UINT16    PmeEnable             : 1;
+    UINT16    DataSelect            : 4;
+    UINT16    DataScale             : 2;
+    UINT16    PmeStatus             : 1;
   } Bits;
-  UINT16 Data;
+  UINT16    Data;
 } EFI_PCI_PMCSR;
 
-#define PCI_POWER_STATE_D0     0
-#define PCI_POWER_STATE_D1     1
-#define PCI_POWER_STATE_D2     2
-#define PCI_POWER_STATE_D3_HOT 3
+#define PCI_POWER_STATE_D0      0
+#define PCI_POWER_STATE_D1      1
+#define PCI_POWER_STATE_D2      2
+#define PCI_POWER_STATE_D3_HOT  3
 
 ///
 /// PMCSR_BSE - PMCSR PCI-to-PCI Bridge Support Extensions
-/// Section 3.2.5, PCI Power Management Interface Specifiction, Revision 1.2
+/// Section 3.2.5, PCI Power Management Interface Specification, Revision 1.2
 ///
 typedef union {
   struct {
-    UINT8 Reserved : 6;
-    UINT8 B2B3 : 1;
-    UINT8 BusPowerClockControl : 1;
+    UINT8    Reserved             : 6;
+    UINT8    B2B3                 : 1;
+    UINT8    BusPowerClockControl : 1;
   } Bits;
-  UINT8   Uint8;
+  UINT8    Uint8;
 } EFI_PCI_PMCSR_BSE;
 
 ///
 /// Power Management Register Block Definition
-/// Section 3.2, PCI Power Management Interface Specifiction, Revision 1.2
+/// Section 3.2, PCI Power Management Interface Specification, Revision 1.2
 ///
 typedef struct {
-  EFI_PCI_CAPABILITY_HDR  Hdr;
-  EFI_PCI_PMC             PMC;
-  EFI_PCI_PMCSR           PMCSR;
-  EFI_PCI_PMCSR_BSE       BridgeExtention;
-  UINT8                   Data;
+  EFI_PCI_CAPABILITY_HDR    Hdr;
+  EFI_PCI_PMC               PMC;
+  EFI_PCI_PMCSR             PMCSR;
+  EFI_PCI_PMCSR_BSE         BridgeExtention;
+  UINT8                     Data;
 } EFI_PCI_CAPABILITY_PMI;
 
 ///
@@ -721,11 +732,11 @@
 /// Section 6.1.4, Accelerated Graphics Port Interface Specification, Revision 1.0
 ///
 typedef struct {
-  EFI_PCI_CAPABILITY_HDR  Hdr;
-  UINT8                   Rev;
-  UINT8                   Reserved;
-  UINT32                  Status;
-  UINT32                  Command;
+  EFI_PCI_CAPABILITY_HDR    Hdr;
+  UINT8                     Rev;
+  UINT8                     Reserved;
+  UINT32                    Status;
+  UINT32                    Command;
 } EFI_PCI_CAPABILITY_AGP;
 
 ///
@@ -733,19 +744,19 @@
 /// Appendix I, PCI Local Bus Specification, 2.2
 ///
 typedef struct {
-  EFI_PCI_CAPABILITY_HDR  Hdr;
-  UINT16                  AddrReg;
-  UINT32                  DataReg;
+  EFI_PCI_CAPABILITY_HDR    Hdr;
+  UINT16                    AddrReg;
+  UINT32                    DataReg;
 } EFI_PCI_CAPABILITY_VPD;
 
 ///
 /// Slot Numbering Capabilities Register
-/// Section 3.2.6, PCI-to-PCI Bridge Architeture Specification, Revision 1.2
+/// Section 3.2.6, PCI-to-PCI Bridge Architecture Specification, Revision 1.2
 ///
 typedef struct {
-  EFI_PCI_CAPABILITY_HDR  Hdr;
-  UINT8                   ExpnsSlotReg;
-  UINT8                   ChassisNo;
+  EFI_PCI_CAPABILITY_HDR    Hdr;
+  UINT8                     ExpnsSlotReg;
+  UINT8                     ChassisNo;
 } EFI_PCI_CAPABILITY_SLOTID;
 
 ///
@@ -753,10 +764,10 @@
 /// Section 6.8.1, PCI Local Bus Specification, 2.2
 ///
 typedef struct {
-  EFI_PCI_CAPABILITY_HDR  Hdr;
-  UINT16                  MsgCtrlReg;
-  UINT32                  MsgAddrReg;
-  UINT16                  MsgDataReg;
+  EFI_PCI_CAPABILITY_HDR    Hdr;
+  UINT16                    MsgCtrlReg;
+  UINT32                    MsgAddrReg;
+  UINT16                    MsgDataReg;
 } EFI_PCI_CAPABILITY_MSI32;
 
 ///
@@ -764,11 +775,11 @@
 /// Section 6.8.1, PCI Local Bus Specification, 2.2
 ///
 typedef struct {
-  EFI_PCI_CAPABILITY_HDR  Hdr;
-  UINT16                  MsgCtrlReg;
-  UINT32                  MsgAddrRegLsdw;
-  UINT32                  MsgAddrRegMsdw;
-  UINT16                  MsgDataReg;
+  EFI_PCI_CAPABILITY_HDR    Hdr;
+  UINT16                    MsgCtrlReg;
+  UINT32                    MsgAddrRegLsdw;
+  UINT32                    MsgAddrRegMsdw;
+  UINT16                    MsgDataReg;
 } EFI_PCI_CAPABILITY_MSI64;
 
 ///
@@ -776,38 +787,38 @@
 /// CompactPCI Hot Swap Specification PICMG 2.1, R1.0
 ///
 typedef struct {
-  EFI_PCI_CAPABILITY_HDR  Hdr;
+  EFI_PCI_CAPABILITY_HDR    Hdr;
   ///
   /// not finished - fields need to go here
   ///
 } EFI_PCI_CAPABILITY_HOTPLUG;
 
-#define PCI_BAR_IDX0        0x00
-#define PCI_BAR_IDX1        0x01
-#define PCI_BAR_IDX2        0x02
-#define PCI_BAR_IDX3        0x03
-#define PCI_BAR_IDX4        0x04
-#define PCI_BAR_IDX5        0x05
+#define PCI_BAR_IDX0  0x00
+#define PCI_BAR_IDX1  0x01
+#define PCI_BAR_IDX2  0x02
+#define PCI_BAR_IDX3  0x03
+#define PCI_BAR_IDX4  0x04
+#define PCI_BAR_IDX5  0x05
 
 ///
 /// EFI PCI Option ROM definitions
 ///
-#define EFI_ROOT_BRIDGE_LIST                            'eprb'
-#define EFI_PCI_EXPANSION_ROM_HEADER_EFISIGNATURE       0x0EF1  ///< defined in UEFI Spec.
+#define EFI_ROOT_BRIDGE_LIST                       'eprb'
+#define EFI_PCI_EXPANSION_ROM_HEADER_EFISIGNATURE  0x0EF1       ///< defined in UEFI Spec.
 
-#define PCI_EXPANSION_ROM_HEADER_SIGNATURE              0xaa55
-#define PCI_DATA_STRUCTURE_SIGNATURE                    SIGNATURE_32 ('P', 'C', 'I', 'R')
-#define PCI_CODE_TYPE_PCAT_IMAGE                        0x00
-#define EFI_PCI_EXPANSION_ROM_HEADER_COMPRESSED         0x0001  ///< defined in UEFI spec.
+#define PCI_EXPANSION_ROM_HEADER_SIGNATURE       0xaa55
+#define PCI_DATA_STRUCTURE_SIGNATURE             SIGNATURE_32 ('P', 'C', 'I', 'R')
+#define PCI_CODE_TYPE_PCAT_IMAGE                 0x00
+#define EFI_PCI_EXPANSION_ROM_HEADER_COMPRESSED  0x0001         ///< defined in UEFI spec.
 
 ///
 /// Standard PCI Expansion ROM Header
 /// Section 13.4.2, Unified Extensible Firmware Interface Specification, Version 2.1
 ///
 typedef struct {
-  UINT16  Signature;    ///< 0xaa55
-  UINT8   Reserved[0x16];
-  UINT16  PcirOffset;
+  UINT16    Signature;  ///< 0xaa55
+  UINT8     Reserved[0x16];
+  UINT16    PcirOffset;
 } PCI_EXPANSION_ROM_HEADER;
 
 ///
@@ -815,11 +826,11 @@
 /// Section 6.3.3.1, PCI Local Bus Specification, 2.2
 ///
 typedef struct {
-  UINT16  Signature;    ///< 0xaa55
-  UINT8   Size512;
-  UINT8   InitEntryPoint[3];
-  UINT8   Reserved[0x12];
-  UINT16  PcirOffset;
+  UINT16    Signature;  ///< 0xaa55
+  UINT8     Size512;
+  UINT8     InitEntryPoint[3];
+  UINT8     Reserved[0x12];
+  UINT16    PcirOffset;
 } EFI_LEGACY_EXPANSION_ROM_HEADER;
 
 ///
@@ -827,18 +838,18 @@
 /// Section 6.3.1.2, PCI Local Bus Specification, 2.2
 ///
 typedef struct {
-  UINT32  Signature;    ///< "PCIR"
-  UINT16  VendorId;
-  UINT16  DeviceId;
-  UINT16  Reserved0;
-  UINT16  Length;
-  UINT8   Revision;
-  UINT8   ClassCode[3];
-  UINT16  ImageLength;
-  UINT16  CodeRevision;
-  UINT8   CodeType;
-  UINT8   Indicator;
-  UINT16  Reserved1;
+  UINT32    Signature;  ///< "PCIR"
+  UINT16    VendorId;
+  UINT16    DeviceId;
+  UINT16    Reserved0;
+  UINT16    Length;
+  UINT8     Revision;
+  UINT8     ClassCode[3];
+  UINT16    ImageLength;
+  UINT16    CodeRevision;
+  UINT8     CodeType;
+  UINT8     Indicator;
+  UINT16    Reserved1;
 } PCI_DATA_STRUCTURE;
 
 ///
@@ -846,22 +857,22 @@
 /// Section 13.4.2, Unified Extensible Firmware Interface Specification, Version 2.1
 ///
 typedef struct {
-  UINT16  Signature;    ///< 0xaa55
-  UINT16  InitializationSize;
-  UINT32  EfiSignature; ///< 0x0EF1
-  UINT16  EfiSubsystem;
-  UINT16  EfiMachineType;
-  UINT16  CompressionType;
-  UINT8   Reserved[8];
-  UINT16  EfiImageHeaderOffset;
-  UINT16  PcirOffset;
+  UINT16    Signature;  ///< 0xaa55
+  UINT16    InitializationSize;
+  UINT32    EfiSignature; ///< 0x0EF1
+  UINT16    EfiSubsystem;
+  UINT16    EfiMachineType;
+  UINT16    CompressionType;
+  UINT8     Reserved[8];
+  UINT16    EfiImageHeaderOffset;
+  UINT16    PcirOffset;
 } EFI_PCI_EXPANSION_ROM_HEADER;
 
 typedef union {
-  UINT8                           *Raw;
-  PCI_EXPANSION_ROM_HEADER        *Generic;
-  EFI_PCI_EXPANSION_ROM_HEADER    *Efi;
-  EFI_LEGACY_EXPANSION_ROM_HEADER *PcAt;
+  UINT8                              *Raw;
+  PCI_EXPANSION_ROM_HEADER           *Generic;
+  EFI_PCI_EXPANSION_ROM_HEADER       *Efi;
+  EFI_LEGACY_EXPANSION_ROM_HEADER    *PcAt;
 } EFI_PCI_ROM_HEADER;
 
 #pragma pack()
diff --git a/src/include/ipxe/efi/IndustryStandard/PeImage.h b/src/include/ipxe/efi/IndustryStandard/PeImage.h
index 9499bb7..0e0f54f 100644
--- a/src/include/ipxe/efi/IndustryStandard/PeImage.h
+++ b/src/include/ipxe/efi/IndustryStandard/PeImage.h
@@ -7,31 +7,27 @@
   Common Object File Format Specification, Revision 8.3 - February 6, 2013.
   This file also includes some definitions in PI Specification, Revision 1.0.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
+Portions Copyright (c) 2016 - 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
+Portions Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>
 
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __PE_IMAGE_H__
 #define __PE_IMAGE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 //
 // PE32+ Subsystem type for EFI images
 //
-#define EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION         10
-#define EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
-#define EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER      12
-#define EFI_IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER      13 ///< defined PI Specification, 1.0
-
+#define EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION          10
+#define EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER  11
+#define EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER       12
+#define EFI_IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER       13///< defined PI Specification, 1.0
 
 //
 // PE32+ Machine type for EFI images
@@ -42,6 +38,11 @@
 #define IMAGE_FILE_MACHINE_X64             0x8664
 #define IMAGE_FILE_MACHINE_ARMTHUMB_MIXED  0x01c2
 #define IMAGE_FILE_MACHINE_ARM64           0xAA64
+#define IMAGE_FILE_MACHINE_RISCV32         0x5032
+#define IMAGE_FILE_MACHINE_RISCV64         0x5064
+#define IMAGE_FILE_MACHINE_RISCV128        0x5128
+#define IMAGE_FILE_MACHINE_LOONGARCH32     0x6232
+#define IMAGE_FILE_MACHINE_LOONGARCH64     0x6264
 
 //
 // EXE file formats
@@ -56,51 +57,51 @@
 /// under DOS it can print an error message.
 ///
 typedef struct {
-  UINT16  e_magic;    ///< Magic number.
-  UINT16  e_cblp;     ///< Bytes on last page of file.
-  UINT16  e_cp;       ///< Pages in file.
-  UINT16  e_crlc;     ///< Relocations.
-  UINT16  e_cparhdr;  ///< Size of header in paragraphs.
-  UINT16  e_minalloc; ///< Minimum extra paragraphs needed.
-  UINT16  e_maxalloc; ///< Maximum extra paragraphs needed.
-  UINT16  e_ss;       ///< Initial (relative) SS value.
-  UINT16  e_sp;       ///< Initial SP value.
-  UINT16  e_csum;     ///< Checksum.
-  UINT16  e_ip;       ///< Initial IP value.
-  UINT16  e_cs;       ///< Initial (relative) CS value.
-  UINT16  e_lfarlc;   ///< File address of relocation table.
-  UINT16  e_ovno;     ///< Overlay number.
-  UINT16  e_res[4];   ///< Reserved words.
-  UINT16  e_oemid;    ///< OEM identifier (for e_oeminfo).
-  UINT16  e_oeminfo;  ///< OEM information; e_oemid specific.
-  UINT16  e_res2[10]; ///< Reserved words.
-  UINT32  e_lfanew;   ///< File address of new exe header.
+  UINT16    e_magic;    ///< Magic number.
+  UINT16    e_cblp;     ///< Bytes on last page of file.
+  UINT16    e_cp;       ///< Pages in file.
+  UINT16    e_crlc;     ///< Relocations.
+  UINT16    e_cparhdr;  ///< Size of header in paragraphs.
+  UINT16    e_minalloc; ///< Minimum extra paragraphs needed.
+  UINT16    e_maxalloc; ///< Maximum extra paragraphs needed.
+  UINT16    e_ss;       ///< Initial (relative) SS value.
+  UINT16    e_sp;       ///< Initial SP value.
+  UINT16    e_csum;     ///< Checksum.
+  UINT16    e_ip;       ///< Initial IP value.
+  UINT16    e_cs;       ///< Initial (relative) CS value.
+  UINT16    e_lfarlc;   ///< File address of relocation table.
+  UINT16    e_ovno;     ///< Overlay number.
+  UINT16    e_res[4];   ///< Reserved words.
+  UINT16    e_oemid;    ///< OEM identifier (for e_oeminfo).
+  UINT16    e_oeminfo;  ///< OEM information; e_oemid specific.
+  UINT16    e_res2[10]; ///< Reserved words.
+  UINT32    e_lfanew;   ///< File address of new exe header.
 } EFI_IMAGE_DOS_HEADER;
 
 ///
 /// COFF File Header (Object and Image).
 ///
 typedef struct {
-  UINT16  Machine;
-  UINT16  NumberOfSections;
-  UINT32  TimeDateStamp;
-  UINT32  PointerToSymbolTable;
-  UINT32  NumberOfSymbols;
-  UINT16  SizeOfOptionalHeader;
-  UINT16  Characteristics;
+  UINT16    Machine;
+  UINT16    NumberOfSections;
+  UINT32    TimeDateStamp;
+  UINT32    PointerToSymbolTable;
+  UINT32    NumberOfSymbols;
+  UINT16    SizeOfOptionalHeader;
+  UINT16    Characteristics;
 } EFI_IMAGE_FILE_HEADER;
 
 ///
 /// Size of EFI_IMAGE_FILE_HEADER.
 ///
-#define EFI_IMAGE_SIZEOF_FILE_HEADER        20
+#define EFI_IMAGE_SIZEOF_FILE_HEADER  20
 
 //
 // Characteristics
 //
 #define EFI_IMAGE_FILE_RELOCS_STRIPPED      BIT0     ///< 0x0001  Relocation info stripped from file.
 #define EFI_IMAGE_FILE_EXECUTABLE_IMAGE     BIT1     ///< 0x0002  File is executable  (i.e. no unresolved externel references).
-#define EFI_IMAGE_FILE_LINE_NUMS_STRIPPED   BIT2     ///< 0x0004  Line nunbers stripped from file.
+#define EFI_IMAGE_FILE_LINE_NUMS_STRIPPED   BIT2     ///< 0x0004  Line numbers stripped from file.
 #define EFI_IMAGE_FILE_LOCAL_SYMS_STRIPPED  BIT3     ///< 0x0008  Local symbols stripped from file.
 #define EFI_IMAGE_FILE_BYTES_REVERSED_LO    BIT7     ///< 0x0080  Bytes of machine word are reversed.
 #define EFI_IMAGE_FILE_32BIT_MACHINE        BIT8     ///< 0x0100  32 bit word machine.
@@ -113,26 +114,26 @@
 /// Header Data Directories.
 ///
 typedef struct {
-  UINT32  VirtualAddress;
-  UINT32  Size;
+  UINT32    VirtualAddress;
+  UINT32    Size;
 } EFI_IMAGE_DATA_DIRECTORY;
 
 //
 // Directory Entries
 //
-#define EFI_IMAGE_DIRECTORY_ENTRY_EXPORT      0
-#define EFI_IMAGE_DIRECTORY_ENTRY_IMPORT      1
-#define EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE    2
-#define EFI_IMAGE_DIRECTORY_ENTRY_EXCEPTION   3
-#define EFI_IMAGE_DIRECTORY_ENTRY_SECURITY    4
-#define EFI_IMAGE_DIRECTORY_ENTRY_BASERELOC   5
-#define EFI_IMAGE_DIRECTORY_ENTRY_DEBUG       6
-#define EFI_IMAGE_DIRECTORY_ENTRY_COPYRIGHT   7
-#define EFI_IMAGE_DIRECTORY_ENTRY_GLOBALPTR   8
-#define EFI_IMAGE_DIRECTORY_ENTRY_TLS         9
-#define EFI_IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10
+#define EFI_IMAGE_DIRECTORY_ENTRY_EXPORT       0
+#define EFI_IMAGE_DIRECTORY_ENTRY_IMPORT       1
+#define EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE     2
+#define EFI_IMAGE_DIRECTORY_ENTRY_EXCEPTION    3
+#define EFI_IMAGE_DIRECTORY_ENTRY_SECURITY     4
+#define EFI_IMAGE_DIRECTORY_ENTRY_BASERELOC    5
+#define EFI_IMAGE_DIRECTORY_ENTRY_DEBUG        6
+#define EFI_IMAGE_DIRECTORY_ENTRY_COPYRIGHT    7
+#define EFI_IMAGE_DIRECTORY_ENTRY_GLOBALPTR    8
+#define EFI_IMAGE_DIRECTORY_ENTRY_TLS          9
+#define EFI_IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG  10
 
-#define EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES 16
+#define EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES  16
 
 ///
 /// @attention
@@ -140,7 +141,7 @@
 /// EFI_IMAGE_OPTIONAL_HEADER32 must be used. The data structures only vary
 /// after NT additional fields.
 ///
-#define EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b
+#define EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC  0x10b
 
 ///
 /// Optional Header Standard Fields for PE32.
@@ -149,40 +150,40 @@
   ///
   /// Standard fields.
   ///
-  UINT16                    Magic;
-  UINT8                     MajorLinkerVersion;
-  UINT8                     MinorLinkerVersion;
-  UINT32                    SizeOfCode;
-  UINT32                    SizeOfInitializedData;
-  UINT32                    SizeOfUninitializedData;
-  UINT32                    AddressOfEntryPoint;
-  UINT32                    BaseOfCode;
-  UINT32                    BaseOfData;  ///< PE32 contains this additional field, which is absent in PE32+.
+  UINT16                      Magic;
+  UINT8                       MajorLinkerVersion;
+  UINT8                       MinorLinkerVersion;
+  UINT32                      SizeOfCode;
+  UINT32                      SizeOfInitializedData;
+  UINT32                      SizeOfUninitializedData;
+  UINT32                      AddressOfEntryPoint;
+  UINT32                      BaseOfCode;
+  UINT32                      BaseOfData; ///< PE32 contains this additional field, which is absent in PE32+.
   ///
   /// Optional Header Windows-Specific Fields.
   ///
-  UINT32                    ImageBase;
-  UINT32                    SectionAlignment;
-  UINT32                    FileAlignment;
-  UINT16                    MajorOperatingSystemVersion;
-  UINT16                    MinorOperatingSystemVersion;
-  UINT16                    MajorImageVersion;
-  UINT16                    MinorImageVersion;
-  UINT16                    MajorSubsystemVersion;
-  UINT16                    MinorSubsystemVersion;
-  UINT32                    Win32VersionValue;
-  UINT32                    SizeOfImage;
-  UINT32                    SizeOfHeaders;
-  UINT32                    CheckSum;
-  UINT16                    Subsystem;
-  UINT16                    DllCharacteristics;
-  UINT32                    SizeOfStackReserve;
-  UINT32                    SizeOfStackCommit;
-  UINT32                    SizeOfHeapReserve;
-  UINT32                    SizeOfHeapCommit;
-  UINT32                    LoaderFlags;
-  UINT32                    NumberOfRvaAndSizes;
-  EFI_IMAGE_DATA_DIRECTORY  DataDirectory[EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES];
+  UINT32                      ImageBase;
+  UINT32                      SectionAlignment;
+  UINT32                      FileAlignment;
+  UINT16                      MajorOperatingSystemVersion;
+  UINT16                      MinorOperatingSystemVersion;
+  UINT16                      MajorImageVersion;
+  UINT16                      MinorImageVersion;
+  UINT16                      MajorSubsystemVersion;
+  UINT16                      MinorSubsystemVersion;
+  UINT32                      Win32VersionValue;
+  UINT32                      SizeOfImage;
+  UINT32                      SizeOfHeaders;
+  UINT32                      CheckSum;
+  UINT16                      Subsystem;
+  UINT16                      DllCharacteristics;
+  UINT32                      SizeOfStackReserve;
+  UINT32                      SizeOfStackCommit;
+  UINT32                      SizeOfHeapReserve;
+  UINT32                      SizeOfHeapCommit;
+  UINT32                      LoaderFlags;
+  UINT32                      NumberOfRvaAndSizes;
+  EFI_IMAGE_DATA_DIRECTORY    DataDirectory[EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES];
 } EFI_IMAGE_OPTIONAL_HEADER32;
 
 ///
@@ -191,7 +192,7 @@
 /// EFI_IMAGE_OPTIONAL_HEADER64 must be used. The data structures only vary
 /// after NT additional fields.
 ///
-#define EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
+#define EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC  0x20b
 
 ///
 /// Optional Header Standard Fields for PE32+.
@@ -200,166 +201,165 @@
   ///
   /// Standard fields.
   ///
-  UINT16                    Magic;
-  UINT8                     MajorLinkerVersion;
-  UINT8                     MinorLinkerVersion;
-  UINT32                    SizeOfCode;
-  UINT32                    SizeOfInitializedData;
-  UINT32                    SizeOfUninitializedData;
-  UINT32                    AddressOfEntryPoint;
-  UINT32                    BaseOfCode;
+  UINT16                      Magic;
+  UINT8                       MajorLinkerVersion;
+  UINT8                       MinorLinkerVersion;
+  UINT32                      SizeOfCode;
+  UINT32                      SizeOfInitializedData;
+  UINT32                      SizeOfUninitializedData;
+  UINT32                      AddressOfEntryPoint;
+  UINT32                      BaseOfCode;
   ///
   /// Optional Header Windows-Specific Fields.
   ///
-  UINT64                    ImageBase;
-  UINT32                    SectionAlignment;
-  UINT32                    FileAlignment;
-  UINT16                    MajorOperatingSystemVersion;
-  UINT16                    MinorOperatingSystemVersion;
-  UINT16                    MajorImageVersion;
-  UINT16                    MinorImageVersion;
-  UINT16                    MajorSubsystemVersion;
-  UINT16                    MinorSubsystemVersion;
-  UINT32                    Win32VersionValue;
-  UINT32                    SizeOfImage;
-  UINT32                    SizeOfHeaders;
-  UINT32                    CheckSum;
-  UINT16                    Subsystem;
-  UINT16                    DllCharacteristics;
-  UINT64                    SizeOfStackReserve;
-  UINT64                    SizeOfStackCommit;
-  UINT64                    SizeOfHeapReserve;
-  UINT64                    SizeOfHeapCommit;
-  UINT32                    LoaderFlags;
-  UINT32                    NumberOfRvaAndSizes;
-  EFI_IMAGE_DATA_DIRECTORY  DataDirectory[EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES];
+  UINT64                      ImageBase;
+  UINT32                      SectionAlignment;
+  UINT32                      FileAlignment;
+  UINT16                      MajorOperatingSystemVersion;
+  UINT16                      MinorOperatingSystemVersion;
+  UINT16                      MajorImageVersion;
+  UINT16                      MinorImageVersion;
+  UINT16                      MajorSubsystemVersion;
+  UINT16                      MinorSubsystemVersion;
+  UINT32                      Win32VersionValue;
+  UINT32                      SizeOfImage;
+  UINT32                      SizeOfHeaders;
+  UINT32                      CheckSum;
+  UINT16                      Subsystem;
+  UINT16                      DllCharacteristics;
+  UINT64                      SizeOfStackReserve;
+  UINT64                      SizeOfStackCommit;
+  UINT64                      SizeOfHeapReserve;
+  UINT64                      SizeOfHeapCommit;
+  UINT32                      LoaderFlags;
+  UINT32                      NumberOfRvaAndSizes;
+  EFI_IMAGE_DATA_DIRECTORY    DataDirectory[EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES];
 } EFI_IMAGE_OPTIONAL_HEADER64;
 
-
 ///
 /// @attention
 /// EFI_IMAGE_NT_HEADERS32 is for use ONLY by tools.
 ///
 typedef struct {
-  UINT32                      Signature;
-  EFI_IMAGE_FILE_HEADER       FileHeader;
-  EFI_IMAGE_OPTIONAL_HEADER32 OptionalHeader;
+  UINT32                         Signature;
+  EFI_IMAGE_FILE_HEADER          FileHeader;
+  EFI_IMAGE_OPTIONAL_HEADER32    OptionalHeader;
 } EFI_IMAGE_NT_HEADERS32;
 
-#define EFI_IMAGE_SIZEOF_NT_OPTIONAL32_HEADER sizeof (EFI_IMAGE_NT_HEADERS32)
+#define EFI_IMAGE_SIZEOF_NT_OPTIONAL32_HEADER  sizeof (EFI_IMAGE_NT_HEADERS32)
 
 ///
 /// @attention
 /// EFI_IMAGE_HEADERS64 is for use ONLY by tools.
 ///
 typedef struct {
-  UINT32                      Signature;
-  EFI_IMAGE_FILE_HEADER       FileHeader;
-  EFI_IMAGE_OPTIONAL_HEADER64 OptionalHeader;
+  UINT32                         Signature;
+  EFI_IMAGE_FILE_HEADER          FileHeader;
+  EFI_IMAGE_OPTIONAL_HEADER64    OptionalHeader;
 } EFI_IMAGE_NT_HEADERS64;
 
-#define EFI_IMAGE_SIZEOF_NT_OPTIONAL64_HEADER sizeof (EFI_IMAGE_NT_HEADERS64)
+#define EFI_IMAGE_SIZEOF_NT_OPTIONAL64_HEADER  sizeof (EFI_IMAGE_NT_HEADERS64)
 
 //
 // Other Windows Subsystem Values
 //
-#define EFI_IMAGE_SUBSYSTEM_UNKNOWN     0
-#define EFI_IMAGE_SUBSYSTEM_NATIVE      1
-#define EFI_IMAGE_SUBSYSTEM_WINDOWS_GUI 2
-#define EFI_IMAGE_SUBSYSTEM_WINDOWS_CUI 3
-#define EFI_IMAGE_SUBSYSTEM_OS2_CUI     5
-#define EFI_IMAGE_SUBSYSTEM_POSIX_CUI   7
+#define EFI_IMAGE_SUBSYSTEM_UNKNOWN      0
+#define EFI_IMAGE_SUBSYSTEM_NATIVE       1
+#define EFI_IMAGE_SUBSYSTEM_WINDOWS_GUI  2
+#define EFI_IMAGE_SUBSYSTEM_WINDOWS_CUI  3
+#define EFI_IMAGE_SUBSYSTEM_OS2_CUI      5
+#define EFI_IMAGE_SUBSYSTEM_POSIX_CUI    7
 
 ///
 /// Length of ShortName.
 ///
-#define EFI_IMAGE_SIZEOF_SHORT_NAME 8
+#define EFI_IMAGE_SIZEOF_SHORT_NAME  8
 
 ///
 /// Section Table. This table immediately follows the optional header.
 ///
 typedef struct {
-  UINT8 Name[EFI_IMAGE_SIZEOF_SHORT_NAME];
+  UINT8     Name[EFI_IMAGE_SIZEOF_SHORT_NAME];
   union {
-    UINT32  PhysicalAddress;
-    UINT32  VirtualSize;
+    UINT32    PhysicalAddress;
+    UINT32    VirtualSize;
   } Misc;
-  UINT32  VirtualAddress;
-  UINT32  SizeOfRawData;
-  UINT32  PointerToRawData;
-  UINT32  PointerToRelocations;
-  UINT32  PointerToLinenumbers;
-  UINT16  NumberOfRelocations;
-  UINT16  NumberOfLinenumbers;
-  UINT32  Characteristics;
+  UINT32    VirtualAddress;
+  UINT32    SizeOfRawData;
+  UINT32    PointerToRawData;
+  UINT32    PointerToRelocations;
+  UINT32    PointerToLinenumbers;
+  UINT16    NumberOfRelocations;
+  UINT16    NumberOfLinenumbers;
+  UINT32    Characteristics;
 } EFI_IMAGE_SECTION_HEADER;
 
 ///
 /// Size of EFI_IMAGE_SECTION_HEADER.
 ///
-#define EFI_IMAGE_SIZEOF_SECTION_HEADER       40
+#define EFI_IMAGE_SIZEOF_SECTION_HEADER  40
 
 //
 // Section Flags Values
 //
-#define EFI_IMAGE_SCN_TYPE_NO_PAD                  BIT3   ///< 0x00000008  ///< Reserved.
-#define EFI_IMAGE_SCN_CNT_CODE                     BIT5   ///< 0x00000020
-#define EFI_IMAGE_SCN_CNT_INITIALIZED_DATA         BIT6   ///< 0x00000040
-#define EFI_IMAGE_SCN_CNT_UNINITIALIZED_DATA       BIT7   ///< 0x00000080
+#define EFI_IMAGE_SCN_TYPE_NO_PAD             BIT3        ///< 0x00000008  ///< Reserved.
+#define EFI_IMAGE_SCN_CNT_CODE                BIT5        ///< 0x00000020
+#define EFI_IMAGE_SCN_CNT_INITIALIZED_DATA    BIT6        ///< 0x00000040
+#define EFI_IMAGE_SCN_CNT_UNINITIALIZED_DATA  BIT7        ///< 0x00000080
 
-#define EFI_IMAGE_SCN_LNK_OTHER                    BIT8   ///< 0x00000100  ///< Reserved.
-#define EFI_IMAGE_SCN_LNK_INFO                     BIT9   ///< 0x00000200  ///< Section contains comments or some other type of information.
-#define EFI_IMAGE_SCN_LNK_REMOVE                   BIT11  ///< 0x00000800  ///< Section contents will not become part of image.
-#define EFI_IMAGE_SCN_LNK_COMDAT                   BIT12  ///< 0x00001000
+#define EFI_IMAGE_SCN_LNK_OTHER   BIT8                    ///< 0x00000100  ///< Reserved.
+#define EFI_IMAGE_SCN_LNK_INFO    BIT9                    ///< 0x00000200  ///< Section contains comments or some other type of information.
+#define EFI_IMAGE_SCN_LNK_REMOVE  BIT11                   ///< 0x00000800  ///< Section contents will not become part of image.
+#define EFI_IMAGE_SCN_LNK_COMDAT  BIT12                   ///< 0x00001000
 
-#define EFI_IMAGE_SCN_ALIGN_1BYTES                 BIT20  ///< 0x00100000
-#define EFI_IMAGE_SCN_ALIGN_2BYTES                 BIT21  ///< 0x00200000
-#define EFI_IMAGE_SCN_ALIGN_4BYTES          (BIT20|BIT21) ///< 0x00300000
-#define EFI_IMAGE_SCN_ALIGN_8BYTES                 BIT22  ///< 0x00400000
-#define EFI_IMAGE_SCN_ALIGN_16BYTES         (BIT20|BIT22) ///< 0x00500000
-#define EFI_IMAGE_SCN_ALIGN_32BYTES         (BIT21|BIT22) ///< 0x00600000
-#define EFI_IMAGE_SCN_ALIGN_64BYTES   (BIT20|BIT21|BIT22) ///< 0x00700000
+#define EFI_IMAGE_SCN_ALIGN_1BYTES   BIT20                ///< 0x00100000
+#define EFI_IMAGE_SCN_ALIGN_2BYTES   BIT21                ///< 0x00200000
+#define EFI_IMAGE_SCN_ALIGN_4BYTES   (BIT20|BIT21)        ///< 0x00300000
+#define EFI_IMAGE_SCN_ALIGN_8BYTES   BIT22                ///< 0x00400000
+#define EFI_IMAGE_SCN_ALIGN_16BYTES  (BIT20|BIT22)        ///< 0x00500000
+#define EFI_IMAGE_SCN_ALIGN_32BYTES  (BIT21|BIT22)        ///< 0x00600000
+#define EFI_IMAGE_SCN_ALIGN_64BYTES  (BIT20|BIT21|BIT22)  ///< 0x00700000
 
-#define EFI_IMAGE_SCN_MEM_DISCARDABLE              BIT25  ///< 0x02000000
-#define EFI_IMAGE_SCN_MEM_NOT_CACHED               BIT26  ///< 0x04000000
-#define EFI_IMAGE_SCN_MEM_NOT_PAGED                BIT27  ///< 0x08000000
-#define EFI_IMAGE_SCN_MEM_SHARED                   BIT28  ///< 0x10000000
-#define EFI_IMAGE_SCN_MEM_EXECUTE                  BIT29  ///< 0x20000000
-#define EFI_IMAGE_SCN_MEM_READ                     BIT30  ///< 0x40000000
-#define EFI_IMAGE_SCN_MEM_WRITE                    BIT31  ///< 0x80000000
+#define EFI_IMAGE_SCN_MEM_DISCARDABLE  BIT25              ///< 0x02000000
+#define EFI_IMAGE_SCN_MEM_NOT_CACHED   BIT26              ///< 0x04000000
+#define EFI_IMAGE_SCN_MEM_NOT_PAGED    BIT27              ///< 0x08000000
+#define EFI_IMAGE_SCN_MEM_SHARED       BIT28              ///< 0x10000000
+#define EFI_IMAGE_SCN_MEM_EXECUTE      BIT29              ///< 0x20000000
+#define EFI_IMAGE_SCN_MEM_READ         BIT30              ///< 0x40000000
+#define EFI_IMAGE_SCN_MEM_WRITE        BIT31              ///< 0x80000000
 
 ///
 /// Size of a Symbol Table Record.
 ///
-#define EFI_IMAGE_SIZEOF_SYMBOL 18
+#define EFI_IMAGE_SIZEOF_SYMBOL  18
 
 //
 // Symbols have a section number of the section in which they are
 // defined. Otherwise, section numbers have the following meanings:
 //
-#define EFI_IMAGE_SYM_UNDEFINED (UINT16) 0  ///< Symbol is undefined or is common.
-#define EFI_IMAGE_SYM_ABSOLUTE  (UINT16) -1 ///< Symbol is an absolute value.
-#define EFI_IMAGE_SYM_DEBUG     (UINT16) -2 ///< Symbol is a special debug item.
+#define EFI_IMAGE_SYM_UNDEFINED  (UINT16) 0  ///< Symbol is undefined or is common.
+#define EFI_IMAGE_SYM_ABSOLUTE   (UINT16) -1 ///< Symbol is an absolute value.
+#define EFI_IMAGE_SYM_DEBUG      (UINT16) -2 ///< Symbol is a special debug item.
 
 //
 // Symbol Type (fundamental) values.
 //
-#define EFI_IMAGE_SYM_TYPE_NULL   0   ///< no type.
-#define EFI_IMAGE_SYM_TYPE_VOID   1   ///< no valid type.
-#define EFI_IMAGE_SYM_TYPE_CHAR   2   ///< type character.
-#define EFI_IMAGE_SYM_TYPE_SHORT  3   ///< type short integer.
-#define EFI_IMAGE_SYM_TYPE_INT    4
-#define EFI_IMAGE_SYM_TYPE_LONG   5
-#define EFI_IMAGE_SYM_TYPE_FLOAT  6
-#define EFI_IMAGE_SYM_TYPE_DOUBLE 7
-#define EFI_IMAGE_SYM_TYPE_STRUCT 8
-#define EFI_IMAGE_SYM_TYPE_UNION  9
-#define EFI_IMAGE_SYM_TYPE_ENUM   10  ///< enumeration.
-#define EFI_IMAGE_SYM_TYPE_MOE    11  ///< member of enumeration.
-#define EFI_IMAGE_SYM_TYPE_BYTE   12
-#define EFI_IMAGE_SYM_TYPE_WORD   13
-#define EFI_IMAGE_SYM_TYPE_UINT   14
-#define EFI_IMAGE_SYM_TYPE_DWORD  15
+#define EFI_IMAGE_SYM_TYPE_NULL    0  ///< no type.
+#define EFI_IMAGE_SYM_TYPE_VOID    1  ///< no valid type.
+#define EFI_IMAGE_SYM_TYPE_CHAR    2  ///< type character.
+#define EFI_IMAGE_SYM_TYPE_SHORT   3  ///< type short integer.
+#define EFI_IMAGE_SYM_TYPE_INT     4
+#define EFI_IMAGE_SYM_TYPE_LONG    5
+#define EFI_IMAGE_SYM_TYPE_FLOAT   6
+#define EFI_IMAGE_SYM_TYPE_DOUBLE  7
+#define EFI_IMAGE_SYM_TYPE_STRUCT  8
+#define EFI_IMAGE_SYM_TYPE_UNION   9
+#define EFI_IMAGE_SYM_TYPE_ENUM    10 ///< enumeration.
+#define EFI_IMAGE_SYM_TYPE_MOE     11 ///< member of enumeration.
+#define EFI_IMAGE_SYM_TYPE_BYTE    12
+#define EFI_IMAGE_SYM_TYPE_WORD    13
+#define EFI_IMAGE_SYM_TYPE_UINT    14
+#define EFI_IMAGE_SYM_TYPE_DWORD   15
 
 //
 // Symbol Type (derived) values.
@@ -412,11 +412,11 @@
 //
 // Communal selection types.
 //
-#define EFI_IMAGE_COMDAT_SELECT_NODUPLICATES    1
-#define EFI_IMAGE_COMDAT_SELECT_ANY             2
-#define EFI_IMAGE_COMDAT_SELECT_SAME_SIZE       3
-#define EFI_IMAGE_COMDAT_SELECT_EXACT_MATCH     4
-#define EFI_IMAGE_COMDAT_SELECT_ASSOCIATIVE     5
+#define EFI_IMAGE_COMDAT_SELECT_NODUPLICATES  1
+#define EFI_IMAGE_COMDAT_SELECT_ANY           2
+#define EFI_IMAGE_COMDAT_SELECT_SAME_SIZE     3
+#define EFI_IMAGE_COMDAT_SELECT_EXACT_MATCH   4
+#define EFI_IMAGE_COMDAT_SELECT_ASSOCIATIVE   5
 
 //
 // the following values only be referred in PeCoff, not defined in PECOFF.
@@ -429,28 +429,28 @@
 /// Relocation format.
 ///
 typedef struct {
-  UINT32  VirtualAddress;
-  UINT32  SymbolTableIndex;
-  UINT16  Type;
+  UINT32    VirtualAddress;
+  UINT32    SymbolTableIndex;
+  UINT16    Type;
 } EFI_IMAGE_RELOCATION;
 
 ///
 /// Size of EFI_IMAGE_RELOCATION
 ///
-#define EFI_IMAGE_SIZEOF_RELOCATION 10
+#define EFI_IMAGE_SIZEOF_RELOCATION  10
 
 //
 // I386 relocation types.
 //
-#define EFI_IMAGE_REL_I386_ABSOLUTE 0x0000  ///< Reference is absolute, no relocation is necessary.
-#define EFI_IMAGE_REL_I386_DIR16    0x0001  ///< Direct 16-bit reference to the symbols virtual address.
-#define EFI_IMAGE_REL_I386_REL16    0x0002  ///< PC-relative 16-bit reference to the symbols virtual address.
-#define EFI_IMAGE_REL_I386_DIR32    0x0006  ///< Direct 32-bit reference to the symbols virtual address.
-#define EFI_IMAGE_REL_I386_DIR32NB  0x0007  ///< Direct 32-bit reference to the symbols virtual address, base not included.
-#define EFI_IMAGE_REL_I386_SEG12    0x0009  ///< Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address.
-#define EFI_IMAGE_REL_I386_SECTION  0x000A
-#define EFI_IMAGE_REL_I386_SECREL   0x000B
-#define EFI_IMAGE_REL_I386_REL32    0x0014  ///< PC-relative 32-bit reference to the symbols virtual address.
+#define EFI_IMAGE_REL_I386_ABSOLUTE  0x0000 ///< Reference is absolute, no relocation is necessary.
+#define EFI_IMAGE_REL_I386_DIR16     0x0001 ///< Direct 16-bit reference to the symbols virtual address.
+#define EFI_IMAGE_REL_I386_REL16     0x0002 ///< PC-relative 16-bit reference to the symbols virtual address.
+#define EFI_IMAGE_REL_I386_DIR32     0x0006 ///< Direct 32-bit reference to the symbols virtual address.
+#define EFI_IMAGE_REL_I386_DIR32NB   0x0007 ///< Direct 32-bit reference to the symbols virtual address, base not included.
+#define EFI_IMAGE_REL_I386_SEG12     0x0009 ///< Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address.
+#define EFI_IMAGE_REL_I386_SECTION   0x000A
+#define EFI_IMAGE_REL_I386_SECREL    0x000B
+#define EFI_IMAGE_REL_I386_REL32     0x0014 ///< PC-relative 32-bit reference to the symbols virtual address.
 
 //
 // x64 processor relocation types.
@@ -477,8 +477,8 @@
 /// Based relocation format.
 ///
 typedef struct {
-  UINT32  VirtualAddress;
-  UINT32  SizeOfBlock;
+  UINT32    VirtualAddress;
+  UINT32    SizeOfBlock;
 } EFI_IMAGE_BASE_RELOCATION;
 
 ///
@@ -502,20 +502,33 @@
 #define EFI_IMAGE_REL_BASED_DIR64           10
 
 ///
+/// Relocation types of RISC-V processor.
+///
+#define EFI_IMAGE_REL_BASED_RISCV_HI20    5
+#define EFI_IMAGE_REL_BASED_RISCV_LOW12I  7
+#define EFI_IMAGE_REL_BASED_RISCV_LOW12S  8
+
+//
+// Relocation types of LoongArch processor.
+//
+#define EFI_IMAGE_REL_BASED_LOONGARCH32_MARK_LA  8
+#define EFI_IMAGE_REL_BASED_LOONGARCH64_MARK_LA  8
+
+///
 /// Line number format.
 ///
 typedef struct {
   union {
-    UINT32  SymbolTableIndex; ///< Symbol table index of function name if Linenumber is 0.
-    UINT32  VirtualAddress;   ///< Virtual address of line number.
+    UINT32    SymbolTableIndex; ///< Symbol table index of function name if Linenumber is 0.
+    UINT32    VirtualAddress;   ///< Virtual address of line number.
   } Type;
-  UINT16  Linenumber;         ///< Line number.
+  UINT16    Linenumber;       ///< Line number.
 } EFI_IMAGE_LINENUMBER;
 
 ///
 /// Size of EFI_IMAGE_LINENUMBER.
 ///
-#define EFI_IMAGE_SIZEOF_LINENUMBER 6
+#define EFI_IMAGE_SIZEOF_LINENUMBER  6
 
 //
 // Archive format.
@@ -531,20 +544,19 @@
 /// Archive Member Headers
 ///
 typedef struct {
-  UINT8 Name[16];     ///< File member name - `/' terminated.
-  UINT8 Date[12];     ///< File member date - decimal.
-  UINT8 UserID[6];    ///< File member user id - decimal.
-  UINT8 GroupID[6];   ///< File member group id - decimal.
-  UINT8 Mode[8];      ///< File member mode - octal.
-  UINT8 Size[10];     ///< File member size - decimal.
-  UINT8 EndHeader[2]; ///< String to end header. (0x60 0x0A).
+  UINT8    Name[16];     ///< File member name - `/' terminated.
+  UINT8    Date[12];     ///< File member date - decimal.
+  UINT8    UserID[6];    ///< File member user id - decimal.
+  UINT8    GroupID[6];   ///< File member group id - decimal.
+  UINT8    Mode[8];      ///< File member mode - octal.
+  UINT8    Size[10];     ///< File member size - decimal.
+  UINT8    EndHeader[2]; ///< String to end header. (0x60 0x0A).
 } EFI_IMAGE_ARCHIVE_MEMBER_HEADER;
 
 ///
 /// Size of EFI_IMAGE_ARCHIVE_MEMBER_HEADER.
 ///
-#define EFI_IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
-
+#define EFI_IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR  60
 
 //
 // DLL Support
@@ -554,25 +566,25 @@
 /// Export Directory Table.
 ///
 typedef struct {
-  UINT32  Characteristics;
-  UINT32  TimeDateStamp;
-  UINT16  MajorVersion;
-  UINT16  MinorVersion;
-  UINT32  Name;
-  UINT32  Base;
-  UINT32  NumberOfFunctions;
-  UINT32  NumberOfNames;
-  UINT32  AddressOfFunctions;
-  UINT32  AddressOfNames;
-  UINT32  AddressOfNameOrdinals;
+  UINT32    Characteristics;
+  UINT32    TimeDateStamp;
+  UINT16    MajorVersion;
+  UINT16    MinorVersion;
+  UINT32    Name;
+  UINT32    Base;
+  UINT32    NumberOfFunctions;
+  UINT32    NumberOfNames;
+  UINT32    AddressOfFunctions;
+  UINT32    AddressOfNames;
+  UINT32    AddressOfNameOrdinals;
 } EFI_IMAGE_EXPORT_DIRECTORY;
 
 ///
 /// Hint/Name Table.
 ///
 typedef struct {
-  UINT16  Hint;
-  UINT8   Name[1];
+  UINT16    Hint;
+  UINT8     Name[1];
 } EFI_IMAGE_IMPORT_BY_NAME;
 
 ///
@@ -580,13 +592,13 @@
 ///
 typedef struct {
   union {
-    UINT32                    Function;
-    UINT32                    Ordinal;
-    EFI_IMAGE_IMPORT_BY_NAME  *AddressOfData;
+    UINT32                      Function;
+    UINT32                      Ordinal;
+    EFI_IMAGE_IMPORT_BY_NAME    *AddressOfData;
   } u1;
 } EFI_IMAGE_THUNK_DATA;
 
-#define EFI_IMAGE_ORDINAL_FLAG              BIT31    ///< Flag for PE32.
+#define EFI_IMAGE_ORDINAL_FLAG  BIT31                ///< Flag for PE32.
 #define EFI_IMAGE_SNAP_BY_ORDINAL(Ordinal)  ((Ordinal & EFI_IMAGE_ORDINAL_FLAG) != 0)
 #define EFI_IMAGE_ORDINAL(Ordinal)          (Ordinal & 0xffff)
 
@@ -594,39 +606,38 @@
 /// Import Directory Table
 ///
 typedef struct {
-  UINT32                Characteristics;
-  UINT32                TimeDateStamp;
-  UINT32                ForwarderChain;
-  UINT32                Name;
-  EFI_IMAGE_THUNK_DATA  *FirstThunk;
+  UINT32                  Characteristics;
+  UINT32                  TimeDateStamp;
+  UINT32                  ForwarderChain;
+  UINT32                  Name;
+  EFI_IMAGE_THUNK_DATA    *FirstThunk;
 } EFI_IMAGE_IMPORT_DESCRIPTOR;
 
-
 ///
 /// Debug Directory Format.
 ///
 typedef struct {
-  UINT32  Characteristics;
-  UINT32  TimeDateStamp;
-  UINT16  MajorVersion;
-  UINT16  MinorVersion;
-  UINT32  Type;
-  UINT32  SizeOfData;
-  UINT32  RVA;           ///< The address of the debug data when loaded, relative to the image base.
-  UINT32  FileOffset;    ///< The file pointer to the debug data.
+  UINT32    Characteristics;
+  UINT32    TimeDateStamp;
+  UINT16    MajorVersion;
+  UINT16    MinorVersion;
+  UINT32    Type;
+  UINT32    SizeOfData;
+  UINT32    RVA;         ///< The address of the debug data when loaded, relative to the image base.
+  UINT32    FileOffset;  ///< The file pointer to the debug data.
 } EFI_IMAGE_DEBUG_DIRECTORY_ENTRY;
 
-#define EFI_IMAGE_DEBUG_TYPE_CODEVIEW 2     ///< The Visual C++ debug information.
+#define EFI_IMAGE_DEBUG_TYPE_CODEVIEW  2    ///< The Visual C++ debug information.
 
 ///
 /// Debug Data Structure defined in Microsoft C++.
 ///
 #define CODEVIEW_SIGNATURE_NB10  SIGNATURE_32('N', 'B', '1', '0')
 typedef struct {
-  UINT32  Signature;                        ///< "NB10"
-  UINT32  Unknown;
-  UINT32  Unknown2;
-  UINT32  Unknown3;
+  UINT32    Signature;                      ///< "NB10"
+  UINT32    Unknown;
+  UINT32    Unknown2;
+  UINT32    Unknown3;
   //
   // Filename of .PDB goes here
   //
@@ -637,18 +648,17 @@
 ///
 #define CODEVIEW_SIGNATURE_RSDS  SIGNATURE_32('R', 'S', 'D', 'S')
 typedef struct {
-  UINT32  Signature;                        ///< "RSDS".
-  UINT32  Unknown;
-  UINT32  Unknown2;
-  UINT32  Unknown3;
-  UINT32  Unknown4;
-  UINT32  Unknown5;
+  UINT32    Signature;                      ///< "RSDS".
+  UINT32    Unknown;
+  UINT32    Unknown2;
+  UINT32    Unknown3;
+  UINT32    Unknown4;
+  UINT32    Unknown5;
   //
   // Filename of .PDB goes here
   //
 } EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY;
 
-
 ///
 /// Debug Data Structure defined by Apple Mach-O to Coff utility.
 ///
@@ -665,12 +675,12 @@
 /// Resource format.
 ///
 typedef struct {
-  UINT32  Characteristics;
-  UINT32  TimeDateStamp;
-  UINT16  MajorVersion;
-  UINT16  MinorVersion;
-  UINT16  NumberOfNamedEntries;
-  UINT16  NumberOfIdEntries;
+  UINT32    Characteristics;
+  UINT32    TimeDateStamp;
+  UINT16    MajorVersion;
+  UINT16    MinorVersion;
+  UINT16    NumberOfNamedEntries;
+  UINT16    NumberOfIdEntries;
   //
   // Array of EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY entries goes here.
   //
@@ -682,16 +692,16 @@
 typedef struct {
   union {
     struct {
-      UINT32  NameOffset:31;
-      UINT32  NameIsString:1;
+      UINT32    NameOffset   : 31;
+      UINT32    NameIsString : 1;
     } s;
-    UINT32  Id;
+    UINT32    Id;
   } u1;
   union {
-    UINT32  OffsetToData;
+    UINT32    OffsetToData;
     struct {
-      UINT32  OffsetToDirectory:31;
-      UINT32  DataIsDirectory:1;
+      UINT32    OffsetToDirectory : 31;
+      UINT32    DataIsDirectory   : 1;
     } s;
   } u2;
 } EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY;
@@ -700,36 +710,35 @@
 /// Resource directory entry for string.
 ///
 typedef struct {
-  UINT16  Length;
-  CHAR16  String[1];
+  UINT16    Length;
+  CHAR16    String[1];
 } EFI_IMAGE_RESOURCE_DIRECTORY_STRING;
 
 ///
 /// Resource directory entry for data array.
 ///
 typedef struct {
-  UINT32  OffsetToData;
-  UINT32  Size;
-  UINT32  CodePage;
-  UINT32  Reserved;
+  UINT32    OffsetToData;
+  UINT32    Size;
+  UINT32    CodePage;
+  UINT32    Reserved;
 } EFI_IMAGE_RESOURCE_DATA_ENTRY;
 
 ///
 /// Header format for TE images, defined in the PI Specification, 1.0.
 ///
 typedef struct {
-  UINT16                    Signature;            ///< The signature for TE format = "VZ".
-  UINT16                    Machine;              ///< From the original file header.
-  UINT8                     NumberOfSections;     ///< From the original file header.
-  UINT8                     Subsystem;            ///< From original optional header.
-  UINT16                    StrippedSize;         ///< Number of bytes we removed from the header.
-  UINT32                    AddressOfEntryPoint;  ///< Offset to entry point -- from original optional header.
-  UINT32                    BaseOfCode;           ///< From original image -- required for ITP debug.
-  UINT64                    ImageBase;            ///< From original file header.
-  EFI_IMAGE_DATA_DIRECTORY  DataDirectory[2];     ///< Only base relocation and debug directory.
+  UINT16                      Signature;           ///< The signature for TE format = "VZ".
+  UINT16                      Machine;             ///< From the original file header.
+  UINT8                       NumberOfSections;    ///< From the original file header.
+  UINT8                       Subsystem;           ///< From original optional header.
+  UINT16                      StrippedSize;        ///< Number of bytes we removed from the header.
+  UINT32                      AddressOfEntryPoint; ///< Offset to entry point -- from original optional header.
+  UINT32                      BaseOfCode;          ///< From original image -- required for ITP debug.
+  UINT64                      ImageBase;           ///< From original file header.
+  EFI_IMAGE_DATA_DIRECTORY    DataDirectory[2];    ///< Only base relocation and debug directory.
 } EFI_TE_IMAGE_HEADER;
 
-
 #define EFI_TE_IMAGE_HEADER_SIGNATURE  SIGNATURE_16('V', 'Z')
 
 //
@@ -738,21 +747,20 @@
 #define EFI_TE_IMAGE_DIRECTORY_ENTRY_BASERELOC  0
 #define EFI_TE_IMAGE_DIRECTORY_ENTRY_DEBUG      1
 
-
 ///
 /// Union of PE32, PE32+, and TE headers.
 ///
 typedef union {
-  EFI_IMAGE_NT_HEADERS32   Pe32;
-  EFI_IMAGE_NT_HEADERS64   Pe32Plus;
-  EFI_TE_IMAGE_HEADER      Te;
+  EFI_IMAGE_NT_HEADERS32    Pe32;
+  EFI_IMAGE_NT_HEADERS64    Pe32Plus;
+  EFI_TE_IMAGE_HEADER       Te;
 } EFI_IMAGE_OPTIONAL_HEADER_UNION;
 
 typedef union {
-  EFI_IMAGE_NT_HEADERS32            *Pe32;
-  EFI_IMAGE_NT_HEADERS64            *Pe32Plus;
-  EFI_TE_IMAGE_HEADER               *Te;
-  EFI_IMAGE_OPTIONAL_HEADER_UNION   *Union;
+  EFI_IMAGE_NT_HEADERS32             *Pe32;
+  EFI_IMAGE_NT_HEADERS64             *Pe32Plus;
+  EFI_TE_IMAGE_HEADER                *Te;
+  EFI_IMAGE_OPTIONAL_HEADER_UNION    *Union;
 } EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION;
 
 #endif
diff --git a/src/include/ipxe/efi/IndustryStandard/Tpm12.h b/src/include/ipxe/efi/IndustryStandard/Tpm12.h
index 509425c..6bebcb7 100644
--- a/src/include/ipxe/efi/IndustryStandard/Tpm12.h
+++ b/src/include/ipxe/efi/IndustryStandard/Tpm12.h
@@ -2,26 +2,19 @@
   TPM Specification data structures (TCG TPM Specification Version 1.2 Revision 103)
   See http://trustedcomputinggroup.org for latest specification updates
 
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 **/
 
-
 #ifndef _TPM12_H_
 #define _TPM12_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// The start of TPM return codes
 ///
-#define TPM_BASE                    0
+#define TPM_BASE  0
 
 //
 // All structures MUST be packed on a byte boundary.
@@ -35,246 +28,246 @@
 ///
 /// Indicates the conditions where it is required that authorization be presented
 ///
-typedef UINT8                       TPM_AUTH_DATA_USAGE;
+typedef UINT8 TPM_AUTH_DATA_USAGE;
 ///
 /// The information as to what the payload is in an encrypted structure
 ///
-typedef UINT8                       TPM_PAYLOAD_TYPE;
+typedef UINT8 TPM_PAYLOAD_TYPE;
 ///
 /// The version info breakdown
 ///
-typedef UINT8                       TPM_VERSION_BYTE;
+typedef UINT8 TPM_VERSION_BYTE;
 ///
 /// The state of the dictionary attack mitigation logic
 ///
-typedef UINT8                       TPM_DA_STATE;
+typedef UINT8 TPM_DA_STATE;
 ///
 /// The request or response authorization type
 ///
-typedef UINT16                      TPM_TAG;
+typedef UINT16 TPM_TAG;
 ///
 /// The protocol in use
 ///
-typedef UINT16                      TPM_PROTOCOL_ID;
+typedef UINT16 TPM_PROTOCOL_ID;
 ///
 /// Indicates the start state
 ///
-typedef UINT16                      TPM_STARTUP_TYPE;
+typedef UINT16 TPM_STARTUP_TYPE;
 ///
 /// The definition of the encryption scheme
 ///
-typedef UINT16                      TPM_ENC_SCHEME;
+typedef UINT16 TPM_ENC_SCHEME;
 ///
 /// The definition of the signature scheme
 ///
-typedef UINT16                      TPM_SIG_SCHEME;
+typedef UINT16 TPM_SIG_SCHEME;
 ///
 /// The definition of the migration scheme
 ///
-typedef UINT16                      TPM_MIGRATE_SCHEME;
+typedef UINT16 TPM_MIGRATE_SCHEME;
 ///
 /// Sets the state of the physical presence mechanism
 ///
-typedef UINT16                      TPM_PHYSICAL_PRESENCE;
+typedef UINT16 TPM_PHYSICAL_PRESENCE;
 ///
 /// Indicates the types of entity that are supported by the TPM
 ///
-typedef UINT16                      TPM_ENTITY_TYPE;
+typedef UINT16 TPM_ENTITY_TYPE;
 ///
 /// Indicates the permitted usage of the key
 ///
-typedef UINT16                      TPM_KEY_USAGE;
+typedef UINT16 TPM_KEY_USAGE;
 ///
 /// The type of asymmetric encrypted structure in use by the endorsement key
 ///
-typedef UINT16                      TPM_EK_TYPE;
+typedef UINT16 TPM_EK_TYPE;
 ///
 /// The tag for the structure
 ///
-typedef UINT16                      TPM_STRUCTURE_TAG;
+typedef UINT16 TPM_STRUCTURE_TAG;
 ///
 /// The platform specific spec to which the information relates to
 ///
-typedef UINT16                      TPM_PLATFORM_SPECIFIC;
+typedef UINT16 TPM_PLATFORM_SPECIFIC;
 ///
 /// The command ordinal
 ///
-typedef UINT32                      TPM_COMMAND_CODE;
+typedef UINT32 TPM_COMMAND_CODE;
 ///
 /// Identifies a TPM capability area
 ///
-typedef UINT32                      TPM_CAPABILITY_AREA;
+typedef UINT32 TPM_CAPABILITY_AREA;
 ///
 /// Indicates information regarding a key
 ///
-typedef UINT32                      TPM_KEY_FLAGS;
+typedef UINT32 TPM_KEY_FLAGS;
 ///
 /// Indicates the type of algorithm
 ///
-typedef UINT32                      TPM_ALGORITHM_ID;
+typedef UINT32 TPM_ALGORITHM_ID;
 ///
 /// The locality modifier
 ///
-typedef UINT32                      TPM_MODIFIER_INDICATOR;
+typedef UINT32 TPM_MODIFIER_INDICATOR;
 ///
 /// The actual number of a counter
 ///
-typedef UINT32                      TPM_ACTUAL_COUNT;
+typedef UINT32 TPM_ACTUAL_COUNT;
 ///
 /// Attributes that define what options are in use for a transport session
 ///
-typedef UINT32                      TPM_TRANSPORT_ATTRIBUTES;
+typedef UINT32 TPM_TRANSPORT_ATTRIBUTES;
 ///
 /// Handle to an authorization session
 ///
-typedef UINT32                      TPM_AUTHHANDLE;
+typedef UINT32 TPM_AUTHHANDLE;
 ///
 /// Index to a DIR register
 ///
-typedef UINT32                      TPM_DIRINDEX;
+typedef UINT32 TPM_DIRINDEX;
 ///
 /// The area where a key is held assigned by the TPM
 ///
-typedef UINT32                      TPM_KEY_HANDLE;
+typedef UINT32 TPM_KEY_HANDLE;
 ///
 /// Index to a PCR register
 ///
-typedef UINT32                      TPM_PCRINDEX;
+typedef UINT32 TPM_PCRINDEX;
 ///
 /// The return code from a function
 ///
-typedef UINT32                      TPM_RESULT;
+typedef UINT32 TPM_RESULT;
 ///
 /// The types of resources that a TPM may have using internal resources
 ///
-typedef UINT32                      TPM_RESOURCE_TYPE;
+typedef UINT32 TPM_RESOURCE_TYPE;
 ///
 /// Allows for controlling of the key when loaded and how to handle TPM_Startup issues
 ///
-typedef UINT32                      TPM_KEY_CONTROL;
+typedef UINT32 TPM_KEY_CONTROL;
 ///
 /// The index into the NV storage area
 ///
-typedef UINT32                      TPM_NV_INDEX;
+typedef UINT32 TPM_NV_INDEX;
 ///
 /// The family ID. Family IDs are automatically assigned a sequence number by the TPM.
 /// A trusted process can set the FamilyID value in an individual row to NULL, which
 /// invalidates that row. The family ID resets to NULL on each change of TPM Owner.
 ///
-typedef UINT32                      TPM_FAMILY_ID;
+typedef UINT32 TPM_FAMILY_ID;
 ///
 /// IA value used as a label for the most recent verification of this family. Set to zero when not in use.
 ///
-typedef UINT32                      TPM_FAMILY_VERIFICATION;
+typedef UINT32 TPM_FAMILY_VERIFICATION;
 ///
 /// How the TPM handles var
 ///
-typedef UINT32                      TPM_STARTUP_EFFECTS;
+typedef UINT32 TPM_STARTUP_EFFECTS;
 ///
 /// The mode of a symmetric encryption
 ///
-typedef UINT32                      TPM_SYM_MODE;
+typedef UINT32 TPM_SYM_MODE;
 ///
 /// The family flags
 ///
-typedef UINT32                      TPM_FAMILY_FLAGS;
+typedef UINT32 TPM_FAMILY_FLAGS;
 ///
 /// The index value for the delegate NV table
 ///
-typedef UINT32                      TPM_DELEGATE_INDEX;
+typedef UINT32 TPM_DELEGATE_INDEX;
 ///
 /// The restrictions placed on delegation of CMK commands
 ///
-typedef UINT32                      TPM_CMK_DELEGATE;
+typedef UINT32 TPM_CMK_DELEGATE;
 ///
 /// The ID value of a monotonic counter
 ///
-typedef UINT32                      TPM_COUNT_ID;
+typedef UINT32 TPM_COUNT_ID;
 ///
 /// A command to execute
 ///
-typedef UINT32                      TPM_REDIT_COMMAND;
+typedef UINT32 TPM_REDIT_COMMAND;
 ///
 /// A transport session handle
 ///
-typedef UINT32                      TPM_TRANSHANDLE;
+typedef UINT32 TPM_TRANSHANDLE;
 ///
 /// A generic handle could be key, transport etc
 ///
-typedef UINT32                      TPM_HANDLE;
+typedef UINT32 TPM_HANDLE;
 ///
 /// What operation is happening
 ///
-typedef UINT32                      TPM_FAMILY_OPERATION;
+typedef UINT32 TPM_FAMILY_OPERATION;
 
 //
 // Part 2, section 2.2.4: Vendor specific
 // The following defines allow for the quick specification of a
 // vendor specific item.
 //
-#define TPM_Vendor_Specific32       ((UINT32) 0x00000400)
-#define TPM_Vendor_Specific8        ((UINT8) 0x80)
+#define TPM_Vendor_Specific32  ((UINT32) 0x00000400)
+#define TPM_Vendor_Specific8   ((UINT8) 0x80)
 
 //
 // Part 2, section 3.1: TPM_STRUCTURE_TAG
 //
-#define TPM_TAG_CONTEXTBLOB         ((TPM_STRUCTURE_TAG) 0x0001)
-#define TPM_TAG_CONTEXT_SENSITIVE   ((TPM_STRUCTURE_TAG) 0x0002)
-#define TPM_TAG_CONTEXTPOINTER      ((TPM_STRUCTURE_TAG) 0x0003)
-#define TPM_TAG_CONTEXTLIST         ((TPM_STRUCTURE_TAG) 0x0004)
-#define TPM_TAG_SIGNINFO            ((TPM_STRUCTURE_TAG) 0x0005)
-#define TPM_TAG_PCR_INFO_LONG       ((TPM_STRUCTURE_TAG) 0x0006)
-#define TPM_TAG_PERSISTENT_FLAGS    ((TPM_STRUCTURE_TAG) 0x0007)
-#define TPM_TAG_VOLATILE_FLAGS      ((TPM_STRUCTURE_TAG) 0x0008)
-#define TPM_TAG_PERSISTENT_DATA     ((TPM_STRUCTURE_TAG) 0x0009)
-#define TPM_TAG_VOLATILE_DATA       ((TPM_STRUCTURE_TAG) 0x000A)
-#define TPM_TAG_SV_DATA             ((TPM_STRUCTURE_TAG) 0x000B)
-#define TPM_TAG_EK_BLOB             ((TPM_STRUCTURE_TAG) 0x000C)
-#define TPM_TAG_EK_BLOB_AUTH        ((TPM_STRUCTURE_TAG) 0x000D)
-#define TPM_TAG_COUNTER_VALUE       ((TPM_STRUCTURE_TAG) 0x000E)
-#define TPM_TAG_TRANSPORT_INTERNAL  ((TPM_STRUCTURE_TAG) 0x000F)
-#define TPM_TAG_TRANSPORT_LOG_IN    ((TPM_STRUCTURE_TAG) 0x0010)
-#define TPM_TAG_TRANSPORT_LOG_OUT   ((TPM_STRUCTURE_TAG) 0x0011)
-#define TPM_TAG_AUDIT_EVENT_IN      ((TPM_STRUCTURE_TAG) 0x0012)
-#define TPM_TAG_AUDIT_EVENT_OUT     ((TPM_STRUCTURE_TAG) 0x0013)
-#define TPM_TAG_CURRENT_TICKS       ((TPM_STRUCTURE_TAG) 0x0014)
-#define TPM_TAG_KEY                 ((TPM_STRUCTURE_TAG) 0x0015)
-#define TPM_TAG_STORED_DATA12       ((TPM_STRUCTURE_TAG) 0x0016)
-#define TPM_TAG_NV_ATTRIBUTES       ((TPM_STRUCTURE_TAG) 0x0017)
-#define TPM_TAG_NV_DATA_PUBLIC      ((TPM_STRUCTURE_TAG) 0x0018)
-#define TPM_TAG_NV_DATA_SENSITIVE   ((TPM_STRUCTURE_TAG) 0x0019)
-#define TPM_TAG_DELEGATIONS         ((TPM_STRUCTURE_TAG) 0x001A)
-#define TPM_TAG_DELEGATE_PUBLIC     ((TPM_STRUCTURE_TAG) 0x001B)
-#define TPM_TAG_DELEGATE_TABLE_ROW  ((TPM_STRUCTURE_TAG) 0x001C)
-#define TPM_TAG_TRANSPORT_AUTH      ((TPM_STRUCTURE_TAG) 0x001D)
-#define TPM_TAG_TRANSPORT_PUBLIC    ((TPM_STRUCTURE_TAG) 0x001E)
-#define TPM_TAG_PERMANENT_FLAGS     ((TPM_STRUCTURE_TAG) 0x001F)
-#define TPM_TAG_STCLEAR_FLAGS       ((TPM_STRUCTURE_TAG) 0x0020)
-#define TPM_TAG_STANY_FLAGS         ((TPM_STRUCTURE_TAG) 0x0021)
-#define TPM_TAG_PERMANENT_DATA      ((TPM_STRUCTURE_TAG) 0x0022)
-#define TPM_TAG_STCLEAR_DATA        ((TPM_STRUCTURE_TAG) 0x0023)
-#define TPM_TAG_STANY_DATA          ((TPM_STRUCTURE_TAG) 0x0024)
-#define TPM_TAG_FAMILY_TABLE_ENTRY  ((TPM_STRUCTURE_TAG) 0x0025)
-#define TPM_TAG_DELEGATE_SENSITIVE  ((TPM_STRUCTURE_TAG) 0x0026)
-#define TPM_TAG_DELG_KEY_BLOB       ((TPM_STRUCTURE_TAG) 0x0027)
-#define TPM_TAG_KEY12               ((TPM_STRUCTURE_TAG) 0x0028)
-#define TPM_TAG_CERTIFY_INFO2       ((TPM_STRUCTURE_TAG) 0x0029)
-#define TPM_TAG_DELEGATE_OWNER_BLOB ((TPM_STRUCTURE_TAG) 0x002A)
-#define TPM_TAG_EK_BLOB_ACTIVATE    ((TPM_STRUCTURE_TAG) 0x002B)
-#define TPM_TAG_DAA_BLOB            ((TPM_STRUCTURE_TAG) 0x002C)
-#define TPM_TAG_DAA_CONTEXT         ((TPM_STRUCTURE_TAG) 0x002D)
-#define TPM_TAG_DAA_ENFORCE         ((TPM_STRUCTURE_TAG) 0x002E)
-#define TPM_TAG_DAA_ISSUER          ((TPM_STRUCTURE_TAG) 0x002F)
-#define TPM_TAG_CAP_VERSION_INFO    ((TPM_STRUCTURE_TAG) 0x0030)
-#define TPM_TAG_DAA_SENSITIVE       ((TPM_STRUCTURE_TAG) 0x0031)
-#define TPM_TAG_DAA_TPM             ((TPM_STRUCTURE_TAG) 0x0032)
-#define TPM_TAG_CMK_MIGAUTH         ((TPM_STRUCTURE_TAG) 0x0033)
-#define TPM_TAG_CMK_SIGTICKET       ((TPM_STRUCTURE_TAG) 0x0034)
-#define TPM_TAG_CMK_MA_APPROVAL     ((TPM_STRUCTURE_TAG) 0x0035)
-#define TPM_TAG_QUOTE_INFO2         ((TPM_STRUCTURE_TAG) 0x0036)
-#define TPM_TAG_DA_INFO             ((TPM_STRUCTURE_TAG) 0x0037)
-#define TPM_TAG_DA_LIMITED          ((TPM_STRUCTURE_TAG) 0x0038)
-#define TPM_TAG_DA_ACTION_TYPE      ((TPM_STRUCTURE_TAG) 0x0039)
+#define TPM_TAG_CONTEXTBLOB          ((TPM_STRUCTURE_TAG) 0x0001)
+#define TPM_TAG_CONTEXT_SENSITIVE    ((TPM_STRUCTURE_TAG) 0x0002)
+#define TPM_TAG_CONTEXTPOINTER       ((TPM_STRUCTURE_TAG) 0x0003)
+#define TPM_TAG_CONTEXTLIST          ((TPM_STRUCTURE_TAG) 0x0004)
+#define TPM_TAG_SIGNINFO             ((TPM_STRUCTURE_TAG) 0x0005)
+#define TPM_TAG_PCR_INFO_LONG        ((TPM_STRUCTURE_TAG) 0x0006)
+#define TPM_TAG_PERSISTENT_FLAGS     ((TPM_STRUCTURE_TAG) 0x0007)
+#define TPM_TAG_VOLATILE_FLAGS       ((TPM_STRUCTURE_TAG) 0x0008)
+#define TPM_TAG_PERSISTENT_DATA      ((TPM_STRUCTURE_TAG) 0x0009)
+#define TPM_TAG_VOLATILE_DATA        ((TPM_STRUCTURE_TAG) 0x000A)
+#define TPM_TAG_SV_DATA              ((TPM_STRUCTURE_TAG) 0x000B)
+#define TPM_TAG_EK_BLOB              ((TPM_STRUCTURE_TAG) 0x000C)
+#define TPM_TAG_EK_BLOB_AUTH         ((TPM_STRUCTURE_TAG) 0x000D)
+#define TPM_TAG_COUNTER_VALUE        ((TPM_STRUCTURE_TAG) 0x000E)
+#define TPM_TAG_TRANSPORT_INTERNAL   ((TPM_STRUCTURE_TAG) 0x000F)
+#define TPM_TAG_TRANSPORT_LOG_IN     ((TPM_STRUCTURE_TAG) 0x0010)
+#define TPM_TAG_TRANSPORT_LOG_OUT    ((TPM_STRUCTURE_TAG) 0x0011)
+#define TPM_TAG_AUDIT_EVENT_IN       ((TPM_STRUCTURE_TAG) 0x0012)
+#define TPM_TAG_AUDIT_EVENT_OUT      ((TPM_STRUCTURE_TAG) 0x0013)
+#define TPM_TAG_CURRENT_TICKS        ((TPM_STRUCTURE_TAG) 0x0014)
+#define TPM_TAG_KEY                  ((TPM_STRUCTURE_TAG) 0x0015)
+#define TPM_TAG_STORED_DATA12        ((TPM_STRUCTURE_TAG) 0x0016)
+#define TPM_TAG_NV_ATTRIBUTES        ((TPM_STRUCTURE_TAG) 0x0017)
+#define TPM_TAG_NV_DATA_PUBLIC       ((TPM_STRUCTURE_TAG) 0x0018)
+#define TPM_TAG_NV_DATA_SENSITIVE    ((TPM_STRUCTURE_TAG) 0x0019)
+#define TPM_TAG_DELEGATIONS          ((TPM_STRUCTURE_TAG) 0x001A)
+#define TPM_TAG_DELEGATE_PUBLIC      ((TPM_STRUCTURE_TAG) 0x001B)
+#define TPM_TAG_DELEGATE_TABLE_ROW   ((TPM_STRUCTURE_TAG) 0x001C)
+#define TPM_TAG_TRANSPORT_AUTH       ((TPM_STRUCTURE_TAG) 0x001D)
+#define TPM_TAG_TRANSPORT_PUBLIC     ((TPM_STRUCTURE_TAG) 0x001E)
+#define TPM_TAG_PERMANENT_FLAGS      ((TPM_STRUCTURE_TAG) 0x001F)
+#define TPM_TAG_STCLEAR_FLAGS        ((TPM_STRUCTURE_TAG) 0x0020)
+#define TPM_TAG_STANY_FLAGS          ((TPM_STRUCTURE_TAG) 0x0021)
+#define TPM_TAG_PERMANENT_DATA       ((TPM_STRUCTURE_TAG) 0x0022)
+#define TPM_TAG_STCLEAR_DATA         ((TPM_STRUCTURE_TAG) 0x0023)
+#define TPM_TAG_STANY_DATA           ((TPM_STRUCTURE_TAG) 0x0024)
+#define TPM_TAG_FAMILY_TABLE_ENTRY   ((TPM_STRUCTURE_TAG) 0x0025)
+#define TPM_TAG_DELEGATE_SENSITIVE   ((TPM_STRUCTURE_TAG) 0x0026)
+#define TPM_TAG_DELG_KEY_BLOB        ((TPM_STRUCTURE_TAG) 0x0027)
+#define TPM_TAG_KEY12                ((TPM_STRUCTURE_TAG) 0x0028)
+#define TPM_TAG_CERTIFY_INFO2        ((TPM_STRUCTURE_TAG) 0x0029)
+#define TPM_TAG_DELEGATE_OWNER_BLOB  ((TPM_STRUCTURE_TAG) 0x002A)
+#define TPM_TAG_EK_BLOB_ACTIVATE     ((TPM_STRUCTURE_TAG) 0x002B)
+#define TPM_TAG_DAA_BLOB             ((TPM_STRUCTURE_TAG) 0x002C)
+#define TPM_TAG_DAA_CONTEXT          ((TPM_STRUCTURE_TAG) 0x002D)
+#define TPM_TAG_DAA_ENFORCE          ((TPM_STRUCTURE_TAG) 0x002E)
+#define TPM_TAG_DAA_ISSUER           ((TPM_STRUCTURE_TAG) 0x002F)
+#define TPM_TAG_CAP_VERSION_INFO     ((TPM_STRUCTURE_TAG) 0x0030)
+#define TPM_TAG_DAA_SENSITIVE        ((TPM_STRUCTURE_TAG) 0x0031)
+#define TPM_TAG_DAA_TPM              ((TPM_STRUCTURE_TAG) 0x0032)
+#define TPM_TAG_CMK_MIGAUTH          ((TPM_STRUCTURE_TAG) 0x0033)
+#define TPM_TAG_CMK_SIGTICKET        ((TPM_STRUCTURE_TAG) 0x0034)
+#define TPM_TAG_CMK_MA_APPROVAL      ((TPM_STRUCTURE_TAG) 0x0035)
+#define TPM_TAG_QUOTE_INFO2          ((TPM_STRUCTURE_TAG) 0x0036)
+#define TPM_TAG_DA_INFO              ((TPM_STRUCTURE_TAG) 0x0037)
+#define TPM_TAG_DA_LIMITED           ((TPM_STRUCTURE_TAG) 0x0038)
+#define TPM_TAG_DA_ACTION_TYPE       ((TPM_STRUCTURE_TAG) 0x0039)
 
 //
 // Part 2, section 4: TPM Types
@@ -283,69 +276,69 @@
 //
 // Part 2, section 4.1: TPM_RESOURCE_TYPE
 //
-#define TPM_RT_KEY                  ((TPM_RESOURCE_TYPE) 0x00000001) ///< The handle is a key handle and is the result of a LoadKey type operation
-#define TPM_RT_AUTH                 ((TPM_RESOURCE_TYPE) 0x00000002) ///< The handle is an authorization handle. Auth handles come from TPM_OIAP, TPM_OSAP and TPM_DSAP
-#define TPM_RT_HASH                 ((TPM_RESOURCE_TYPE) 0x00000003) ///< Reserved for hashes
-#define TPM_RT_TRANS                ((TPM_RESOURCE_TYPE) 0x00000004) ///< The handle is for a transport session. Transport handles come from TPM_EstablishTransport
-#define TPM_RT_CONTEXT              ((TPM_RESOURCE_TYPE) 0x00000005) ///< Resource wrapped and held outside the TPM using the context save/restore commands
-#define TPM_RT_COUNTER              ((TPM_RESOURCE_TYPE) 0x00000006) ///< Reserved for counters
-#define TPM_RT_DELEGATE             ((TPM_RESOURCE_TYPE) 0x00000007) ///< The handle is for a delegate row. These are the internal rows held in NV storage by the TPM
-#define TPM_RT_DAA_TPM              ((TPM_RESOURCE_TYPE) 0x00000008) ///< The value is a DAA TPM specific blob
-#define TPM_RT_DAA_V0               ((TPM_RESOURCE_TYPE) 0x00000009) ///< The value is a DAA V0 parameter
-#define TPM_RT_DAA_V1               ((TPM_RESOURCE_TYPE) 0x0000000A) ///< The value is a DAA V1 parameter
+#define TPM_RT_KEY       ((TPM_RESOURCE_TYPE) 0x00000001)            ///< The handle is a key handle and is the result of a LoadKey type operation
+#define TPM_RT_AUTH      ((TPM_RESOURCE_TYPE) 0x00000002)            ///< The handle is an authorization handle. Auth handles come from TPM_OIAP, TPM_OSAP and TPM_DSAP
+#define TPM_RT_HASH      ((TPM_RESOURCE_TYPE) 0x00000003)            ///< Reserved for hashes
+#define TPM_RT_TRANS     ((TPM_RESOURCE_TYPE) 0x00000004)            ///< The handle is for a transport session. Transport handles come from TPM_EstablishTransport
+#define TPM_RT_CONTEXT   ((TPM_RESOURCE_TYPE) 0x00000005)            ///< Resource wrapped and held outside the TPM using the context save/restore commands
+#define TPM_RT_COUNTER   ((TPM_RESOURCE_TYPE) 0x00000006)            ///< Reserved for counters
+#define TPM_RT_DELEGATE  ((TPM_RESOURCE_TYPE) 0x00000007)            ///< The handle is for a delegate row. These are the internal rows held in NV storage by the TPM
+#define TPM_RT_DAA_TPM   ((TPM_RESOURCE_TYPE) 0x00000008)            ///< The value is a DAA TPM specific blob
+#define TPM_RT_DAA_V0    ((TPM_RESOURCE_TYPE) 0x00000009)            ///< The value is a DAA V0 parameter
+#define TPM_RT_DAA_V1    ((TPM_RESOURCE_TYPE) 0x0000000A)            ///< The value is a DAA V1 parameter
 
 //
 // Part 2, section 4.2: TPM_PAYLOAD_TYPE
 //
-#define TPM_PT_ASYM                 ((TPM_PAYLOAD_TYPE) 0x01) ///< The entity is an asymmetric key
-#define TPM_PT_BIND                 ((TPM_PAYLOAD_TYPE) 0x02) ///< The entity is bound data
-#define TPM_PT_MIGRATE              ((TPM_PAYLOAD_TYPE) 0x03) ///< The entity is a migration blob
-#define TPM_PT_MAINT                ((TPM_PAYLOAD_TYPE) 0x04) ///< The entity is a maintenance blob
-#define TPM_PT_SEAL                 ((TPM_PAYLOAD_TYPE) 0x05) ///< The entity is sealed data
-#define TPM_PT_MIGRATE_RESTRICTED   ((TPM_PAYLOAD_TYPE) 0x06) ///< The entity is a restricted-migration asymmetric key
-#define TPM_PT_MIGRATE_EXTERNAL     ((TPM_PAYLOAD_TYPE) 0x07) ///< The entity is a external migratable key
-#define TPM_PT_CMK_MIGRATE          ((TPM_PAYLOAD_TYPE) 0x08) ///< The entity is a CMK migratable blob
-#define TPM_PT_VENDOR_SPECIFIC      ((TPM_PAYLOAD_TYPE) 0x80) ///< 0x80 - 0xFF Vendor specific payloads
+#define TPM_PT_ASYM                ((TPM_PAYLOAD_TYPE) 0x01)  ///< The entity is an asymmetric key
+#define TPM_PT_BIND                ((TPM_PAYLOAD_TYPE) 0x02)  ///< The entity is bound data
+#define TPM_PT_MIGRATE             ((TPM_PAYLOAD_TYPE) 0x03)  ///< The entity is a migration blob
+#define TPM_PT_MAINT               ((TPM_PAYLOAD_TYPE) 0x04)  ///< The entity is a maintenance blob
+#define TPM_PT_SEAL                ((TPM_PAYLOAD_TYPE) 0x05)  ///< The entity is sealed data
+#define TPM_PT_MIGRATE_RESTRICTED  ((TPM_PAYLOAD_TYPE) 0x06)  ///< The entity is a restricted-migration asymmetric key
+#define TPM_PT_MIGRATE_EXTERNAL    ((TPM_PAYLOAD_TYPE) 0x07)  ///< The entity is a external migratable key
+#define TPM_PT_CMK_MIGRATE         ((TPM_PAYLOAD_TYPE) 0x08)  ///< The entity is a CMK migratable blob
+#define TPM_PT_VENDOR_SPECIFIC     ((TPM_PAYLOAD_TYPE) 0x80)  ///< 0x80 - 0xFF Vendor specific payloads
 
 //
 // Part 2, section 4.3: TPM_ENTITY_TYPE
 //
-#define TPM_ET_KEYHANDLE            ((UINT16) 0x0001) ///< The entity is a keyHandle or key
-#define TPM_ET_OWNER                ((UINT16) 0x0002) ///< The entity is the TPM Owner
-#define TPM_ET_DATA                 ((UINT16) 0x0003) ///< The entity is some data
-#define TPM_ET_SRK                  ((UINT16) 0x0004) ///< The entity is the SRK
-#define TPM_ET_KEY                  ((UINT16) 0x0005) ///< The entity is a key or keyHandle
-#define TPM_ET_REVOKE               ((UINT16) 0x0006) ///< The entity is the RevokeTrust value
-#define TPM_ET_DEL_OWNER_BLOB       ((UINT16) 0x0007) ///< The entity is a delegate owner blob
-#define TPM_ET_DEL_ROW              ((UINT16) 0x0008) ///< The entity is a delegate row
-#define TPM_ET_DEL_KEY_BLOB         ((UINT16) 0x0009) ///< The entity is a delegate key blob
-#define TPM_ET_COUNTER              ((UINT16) 0x000A) ///< The entity is a counter
-#define TPM_ET_NV                   ((UINT16) 0x000B) ///< The entity is a NV index
-#define TPM_ET_OPERATOR             ((UINT16) 0x000C) ///< The entity is the operator
-#define TPM_ET_RESERVED_HANDLE      ((UINT16) 0x0040) ///< Reserved. This value avoids collisions with the handle MSB setting.
+#define TPM_ET_KEYHANDLE        ((UINT16) 0x0001)     ///< The entity is a keyHandle or key
+#define TPM_ET_OWNER            ((UINT16) 0x0002)     ///< The entity is the TPM Owner
+#define TPM_ET_DATA             ((UINT16) 0x0003)     ///< The entity is some data
+#define TPM_ET_SRK              ((UINT16) 0x0004)     ///< The entity is the SRK
+#define TPM_ET_KEY              ((UINT16) 0x0005)     ///< The entity is a key or keyHandle
+#define TPM_ET_REVOKE           ((UINT16) 0x0006)     ///< The entity is the RevokeTrust value
+#define TPM_ET_DEL_OWNER_BLOB   ((UINT16) 0x0007)     ///< The entity is a delegate owner blob
+#define TPM_ET_DEL_ROW          ((UINT16) 0x0008)     ///< The entity is a delegate row
+#define TPM_ET_DEL_KEY_BLOB     ((UINT16) 0x0009)     ///< The entity is a delegate key blob
+#define TPM_ET_COUNTER          ((UINT16) 0x000A)     ///< The entity is a counter
+#define TPM_ET_NV               ((UINT16) 0x000B)     ///< The entity is a NV index
+#define TPM_ET_OPERATOR         ((UINT16) 0x000C)     ///< The entity is the operator
+#define TPM_ET_RESERVED_HANDLE  ((UINT16) 0x0040)     ///< Reserved. This value avoids collisions with the handle MSB setting.
 //
 // TPM_ENTITY_TYPE MSB Values: The MSB is used to indicate the ADIP encryption sheme when applicable
 //
-#define TPM_ET_XOR                  ((UINT16) 0x0000) ///< ADIP encryption scheme: XOR
-#define TPM_ET_AES128               ((UINT16) 0x0006) ///< ADIP encryption scheme: AES 128 bits
+#define TPM_ET_XOR     ((UINT16) 0x0000)              ///< ADIP encryption scheme: XOR
+#define TPM_ET_AES128  ((UINT16) 0x0006)              ///< ADIP encryption scheme: AES 128 bits
 
 //
 // Part 2, section 4.4.1: Reserved Key Handles
 //
-#define TPM_KH_SRK                  ((TPM_KEY_HANDLE) 0x40000000) ///< The handle points to the SRK
-#define TPM_KH_OWNER                ((TPM_KEY_HANDLE) 0x40000001) ///< The handle points to the TPM Owner
-#define TPM_KH_REVOKE               ((TPM_KEY_HANDLE) 0x40000002) ///< The handle points to the RevokeTrust value
-#define TPM_KH_TRANSPORT            ((TPM_KEY_HANDLE) 0x40000003) ///< The handle points to the EstablishTransport static authorization
-#define TPM_KH_OPERATOR             ((TPM_KEY_HANDLE) 0x40000004) ///< The handle points to the Operator auth
-#define TPM_KH_ADMIN                ((TPM_KEY_HANDLE) 0x40000005) ///< The handle points to the delegation administration auth
-#define TPM_KH_EK                   ((TPM_KEY_HANDLE) 0x40000006) ///< The handle points to the PUBEK, only usable with TPM_OwnerReadInternalPub
+#define TPM_KH_SRK        ((TPM_KEY_HANDLE) 0x40000000)           ///< The handle points to the SRK
+#define TPM_KH_OWNER      ((TPM_KEY_HANDLE) 0x40000001)           ///< The handle points to the TPM Owner
+#define TPM_KH_REVOKE     ((TPM_KEY_HANDLE) 0x40000002)           ///< The handle points to the RevokeTrust value
+#define TPM_KH_TRANSPORT  ((TPM_KEY_HANDLE) 0x40000003)           ///< The handle points to the EstablishTransport static authorization
+#define TPM_KH_OPERATOR   ((TPM_KEY_HANDLE) 0x40000004)           ///< The handle points to the Operator auth
+#define TPM_KH_ADMIN      ((TPM_KEY_HANDLE) 0x40000005)           ///< The handle points to the delegation administration auth
+#define TPM_KH_EK         ((TPM_KEY_HANDLE) 0x40000006)           ///< The handle points to the PUBEK, only usable with TPM_OwnerReadInternalPub
 
 //
 // Part 2, section 4.5: TPM_STARTUP_TYPE
 //
-#define TPM_ST_CLEAR                ((TPM_STARTUP_TYPE) 0x0001) ///< The TPM is starting up from a clean state
-#define TPM_ST_STATE                ((TPM_STARTUP_TYPE) 0x0002) ///< The TPM is starting up from a saved state
-#define TPM_ST_DEACTIVATED          ((TPM_STARTUP_TYPE) 0x0003) ///< The TPM is to startup and set the deactivated flag to TRUE
+#define TPM_ST_CLEAR        ((TPM_STARTUP_TYPE) 0x0001)         ///< The TPM is starting up from a clean state
+#define TPM_ST_STATE        ((TPM_STARTUP_TYPE) 0x0002)         ///< The TPM is starting up from a saved state
+#define TPM_ST_DEACTIVATED  ((TPM_STARTUP_TYPE) 0x0003)         ///< The TPM is to startup and set the deactivated flag to TRUE
 
 //
 // Part 2, section 4.6: TPM_STATUP_EFFECTS
@@ -355,65 +348,65 @@
 //
 // Part 2, section 4.7: TPM_PROTOCOL_ID
 //
-#define TPM_PID_OIAP                ((TPM_PROTOCOL_ID) 0x0001) ///< The OIAP protocol.
-#define TPM_PID_OSAP                ((TPM_PROTOCOL_ID) 0x0002) ///< The OSAP protocol.
-#define TPM_PID_ADIP                ((TPM_PROTOCOL_ID) 0x0003) ///< The ADIP protocol.
-#define TPM_PID_ADCP                ((TPM_PROTOCOL_ID) 0x0004) ///< The ADCP protocol.
-#define TPM_PID_OWNER               ((TPM_PROTOCOL_ID) 0x0005) ///< The protocol for taking ownership of a TPM.
-#define TPM_PID_DSAP                ((TPM_PROTOCOL_ID) 0x0006) ///< The DSAP protocol
-#define TPM_PID_TRANSPORT           ((TPM_PROTOCOL_ID) 0x0007) ///< The transport protocol
+#define TPM_PID_OIAP       ((TPM_PROTOCOL_ID) 0x0001)          ///< The OIAP protocol.
+#define TPM_PID_OSAP       ((TPM_PROTOCOL_ID) 0x0002)          ///< The OSAP protocol.
+#define TPM_PID_ADIP       ((TPM_PROTOCOL_ID) 0x0003)          ///< The ADIP protocol.
+#define TPM_PID_ADCP       ((TPM_PROTOCOL_ID) 0x0004)          ///< The ADCP protocol.
+#define TPM_PID_OWNER      ((TPM_PROTOCOL_ID) 0x0005)          ///< The protocol for taking ownership of a TPM.
+#define TPM_PID_DSAP       ((TPM_PROTOCOL_ID) 0x0006)          ///< The DSAP protocol
+#define TPM_PID_TRANSPORT  ((TPM_PROTOCOL_ID) 0x0007)          ///< The transport protocol
 
 //
 // Part 2, section 4.8: TPM_ALGORITHM_ID
 //   The TPM MUST support the algorithms TPM_ALG_RSA, TPM_ALG_SHA, TPM_ALG_HMAC,
 //   TPM_ALG_MGF1
 //
-#define TPM_ALG_RSA                 ((TPM_ALGORITHM_ID) 0x00000001) ///< The RSA algorithm.
-#define TPM_ALG_DES                 ((TPM_ALGORITHM_ID) 0x00000002) ///< The DES algorithm
-#define TPM_ALG_3DES                ((TPM_ALGORITHM_ID) 0x00000003) ///< The 3DES algorithm in EDE mode
-#define TPM_ALG_SHA                 ((TPM_ALGORITHM_ID) 0x00000004) ///< The SHA1 algorithm
-#define TPM_ALG_HMAC                ((TPM_ALGORITHM_ID) 0x00000005) ///< The RFC 2104 HMAC algorithm
-#define TPM_ALG_AES128              ((TPM_ALGORITHM_ID) 0x00000006) ///< The AES algorithm, key size 128
-#define TPM_ALG_MGF1                ((TPM_ALGORITHM_ID) 0x00000007) ///< The XOR algorithm using MGF1 to create a string the size of the encrypted block
-#define TPM_ALG_AES192              ((TPM_ALGORITHM_ID) 0x00000008) ///< AES, key size 192
-#define TPM_ALG_AES256              ((TPM_ALGORITHM_ID) 0x00000009) ///< AES, key size 256
-#define TPM_ALG_XOR                 ((TPM_ALGORITHM_ID) 0x0000000A) ///< XOR using the rolling nonces
+#define TPM_ALG_RSA     ((TPM_ALGORITHM_ID) 0x00000001)             ///< The RSA algorithm.
+#define TPM_ALG_DES     ((TPM_ALGORITHM_ID) 0x00000002)             ///< The DES algorithm
+#define TPM_ALG_3DES    ((TPM_ALGORITHM_ID) 0x00000003)             ///< The 3DES algorithm in EDE mode
+#define TPM_ALG_SHA     ((TPM_ALGORITHM_ID) 0x00000004)             ///< The SHA1 algorithm
+#define TPM_ALG_HMAC    ((TPM_ALGORITHM_ID) 0x00000005)             ///< The RFC 2104 HMAC algorithm
+#define TPM_ALG_AES128  ((TPM_ALGORITHM_ID) 0x00000006)             ///< The AES algorithm, key size 128
+#define TPM_ALG_MGF1    ((TPM_ALGORITHM_ID) 0x00000007)             ///< The XOR algorithm using MGF1 to create a string the size of the encrypted block
+#define TPM_ALG_AES192  ((TPM_ALGORITHM_ID) 0x00000008)             ///< AES, key size 192
+#define TPM_ALG_AES256  ((TPM_ALGORITHM_ID) 0x00000009)             ///< AES, key size 256
+#define TPM_ALG_XOR     ((TPM_ALGORITHM_ID) 0x0000000A)             ///< XOR using the rolling nonces
 
 //
 // Part 2, section 4.9: TPM_PHYSICAL_PRESENCE
 //
-#define TPM_PHYSICAL_PRESENCE_HW_DISABLE    ((TPM_PHYSICAL_PRESENCE) 0x0200) ///< Sets the physicalPresenceHWEnable to FALSE
-#define TPM_PHYSICAL_PRESENCE_CMD_DISABLE   ((TPM_PHYSICAL_PRESENCE) 0x0100) ///< Sets the physicalPresenceCMDEnable to FALSE
-#define TPM_PHYSICAL_PRESENCE_LIFETIME_LOCK ((TPM_PHYSICAL_PRESENCE) 0x0080) ///< Sets the physicalPresenceLifetimeLock to TRUE
-#define TPM_PHYSICAL_PRESENCE_HW_ENABLE     ((TPM_PHYSICAL_PRESENCE) 0x0040) ///< Sets the physicalPresenceHWEnable to TRUE
-#define TPM_PHYSICAL_PRESENCE_CMD_ENABLE    ((TPM_PHYSICAL_PRESENCE) 0x0020) ///< Sets the physicalPresenceCMDEnable to TRUE
-#define TPM_PHYSICAL_PRESENCE_NOTPRESENT    ((TPM_PHYSICAL_PRESENCE) 0x0010) ///< Sets PhysicalPresence = FALSE
-#define TPM_PHYSICAL_PRESENCE_PRESENT       ((TPM_PHYSICAL_PRESENCE) 0x0008) ///< Sets PhysicalPresence = TRUE
-#define TPM_PHYSICAL_PRESENCE_LOCK          ((TPM_PHYSICAL_PRESENCE) 0x0004) ///< Sets PhysicalPresenceLock = TRUE
+#define TPM_PHYSICAL_PRESENCE_HW_DISABLE     ((TPM_PHYSICAL_PRESENCE) 0x0200) ///< Sets the physicalPresenceHWEnable to FALSE
+#define TPM_PHYSICAL_PRESENCE_CMD_DISABLE    ((TPM_PHYSICAL_PRESENCE) 0x0100) ///< Sets the physicalPresenceCMDEnable to FALSE
+#define TPM_PHYSICAL_PRESENCE_LIFETIME_LOCK  ((TPM_PHYSICAL_PRESENCE) 0x0080) ///< Sets the physicalPresenceLifetimeLock to TRUE
+#define TPM_PHYSICAL_PRESENCE_HW_ENABLE      ((TPM_PHYSICAL_PRESENCE) 0x0040) ///< Sets the physicalPresenceHWEnable to TRUE
+#define TPM_PHYSICAL_PRESENCE_CMD_ENABLE     ((TPM_PHYSICAL_PRESENCE) 0x0020) ///< Sets the physicalPresenceCMDEnable to TRUE
+#define TPM_PHYSICAL_PRESENCE_NOTPRESENT     ((TPM_PHYSICAL_PRESENCE) 0x0010) ///< Sets PhysicalPresence = FALSE
+#define TPM_PHYSICAL_PRESENCE_PRESENT        ((TPM_PHYSICAL_PRESENCE) 0x0008) ///< Sets PhysicalPresence = TRUE
+#define TPM_PHYSICAL_PRESENCE_LOCK           ((TPM_PHYSICAL_PRESENCE) 0x0004) ///< Sets PhysicalPresenceLock = TRUE
 
 //
 // Part 2, section 4.10: TPM_MIGRATE_SCHEME
 //
-#define TPM_MS_MIGRATE                      ((TPM_MIGRATE_SCHEME) 0x0001) ///< A public key that can be used with all TPM migration commands other than 'ReWrap' mode.
-#define TPM_MS_REWRAP                       ((TPM_MIGRATE_SCHEME) 0x0002) ///< A public key that can be used for the ReWrap mode of TPM_CreateMigrationBlob.
-#define TPM_MS_MAINT                        ((TPM_MIGRATE_SCHEME) 0x0003) ///< A public key that can be used for the Maintenance commands
-#define TPM_MS_RESTRICT_MIGRATE             ((TPM_MIGRATE_SCHEME) 0x0004) ///< The key is to be migrated to a Migration Authority.
-#define TPM_MS_RESTRICT_APPROVE_DOUBLE      ((TPM_MIGRATE_SCHEME) 0x0005) ///< The key is to be migrated to an entity approved by a Migration Authority using double wrapping
+#define TPM_MS_MIGRATE                  ((TPM_MIGRATE_SCHEME) 0x0001)     ///< A public key that can be used with all TPM migration commands other than 'ReWrap' mode.
+#define TPM_MS_REWRAP                   ((TPM_MIGRATE_SCHEME) 0x0002)     ///< A public key that can be used for the ReWrap mode of TPM_CreateMigrationBlob.
+#define TPM_MS_MAINT                    ((TPM_MIGRATE_SCHEME) 0x0003)     ///< A public key that can be used for the Maintenance commands
+#define TPM_MS_RESTRICT_MIGRATE         ((TPM_MIGRATE_SCHEME) 0x0004)     ///< The key is to be migrated to a Migration Authority.
+#define TPM_MS_RESTRICT_APPROVE_DOUBLE  ((TPM_MIGRATE_SCHEME) 0x0005)     ///< The key is to be migrated to an entity approved by a Migration Authority using double wrapping
 
 //
 // Part 2, section 4.11: TPM_EK_TYPE
 //
-#define TPM_EK_TYPE_ACTIVATE        ((TPM_EK_TYPE) 0x0001) ///< The blob MUST be TPM_EK_BLOB_ACTIVATE
-#define TPM_EK_TYPE_AUTH            ((TPM_EK_TYPE) 0x0002) ///< The blob MUST be TPM_EK_BLOB_AUTH
+#define TPM_EK_TYPE_ACTIVATE  ((TPM_EK_TYPE) 0x0001)       ///< The blob MUST be TPM_EK_BLOB_ACTIVATE
+#define TPM_EK_TYPE_AUTH      ((TPM_EK_TYPE) 0x0002)       ///< The blob MUST be TPM_EK_BLOB_AUTH
 
 //
 // Part 2, section 4.12: TPM_PLATFORM_SPECIFIC
 //
-#define TPM_PS_PC_11                ((TPM_PLATFORM_SPECIFIC) 0x0001) ///< PC Specific version 1.1
-#define TPM_PS_PC_12                ((TPM_PLATFORM_SPECIFIC) 0x0002) ///< PC Specific version 1.2
-#define TPM_PS_PDA_12               ((TPM_PLATFORM_SPECIFIC) 0x0003) ///< PDA Specific version 1.2
-#define TPM_PS_Server_12            ((TPM_PLATFORM_SPECIFIC) 0x0004) ///< Server Specific version 1.2
-#define TPM_PS_Mobile_12            ((TPM_PLATFORM_SPECIFIC) 0x0005) ///< Mobil Specific version 1.2
+#define TPM_PS_PC_11      ((TPM_PLATFORM_SPECIFIC) 0x0001)           ///< PC Specific version 1.1
+#define TPM_PS_PC_12      ((TPM_PLATFORM_SPECIFIC) 0x0002)           ///< PC Specific version 1.2
+#define TPM_PS_PDA_12     ((TPM_PLATFORM_SPECIFIC) 0x0003)           ///< PDA Specific version 1.2
+#define TPM_PS_Server_12  ((TPM_PLATFORM_SPECIFIC) 0x0004)           ///< Server Specific version 1.2
+#define TPM_PS_Mobile_12  ((TPM_PLATFORM_SPECIFIC) 0x0005)           ///< Mobil Specific version 1.2
 
 //
 // Part 2, section 5: Basic Structures
@@ -423,72 +416,71 @@
 /// Part 2, section 5.1: TPM_STRUCT_VER
 ///
 typedef struct tdTPM_STRUCT_VER {
-  UINT8                             major;
-  UINT8                             minor;
-  UINT8                             revMajor;
-  UINT8                             revMinor;
+  UINT8    major;
+  UINT8    minor;
+  UINT8    revMajor;
+  UINT8    revMinor;
 } TPM_STRUCT_VER;
 
 ///
 /// Part 2, section 5.3: TPM_VERSION
 ///
 typedef struct tdTPM_VERSION {
-  TPM_VERSION_BYTE                  major;
-  TPM_VERSION_BYTE                  minor;
-  UINT8                             revMajor;
-  UINT8                             revMinor;
+  TPM_VERSION_BYTE    major;
+  TPM_VERSION_BYTE    minor;
+  UINT8               revMajor;
+  UINT8               revMinor;
 } TPM_VERSION;
 
-
-#define TPM_SHA1_160_HASH_LEN       0x14
-#define TPM_SHA1BASED_NONCE_LEN     TPM_SHA1_160_HASH_LEN
+#define TPM_SHA1_160_HASH_LEN    0x14
+#define TPM_SHA1BASED_NONCE_LEN  TPM_SHA1_160_HASH_LEN
 
 ///
 /// Part 2, section 5.4: TPM_DIGEST
 ///
-typedef struct tdTPM_DIGEST{
-  UINT8                             digest[TPM_SHA1_160_HASH_LEN];
+typedef struct tdTPM_DIGEST {
+  UINT8    digest[TPM_SHA1_160_HASH_LEN];
 } TPM_DIGEST;
 
 ///
 /// This SHALL be the digest of the chosen identityLabel and privacyCA for a new TPM identity
 ///
-typedef TPM_DIGEST                  TPM_CHOSENID_HASH;
+typedef TPM_DIGEST TPM_CHOSENID_HASH;
 ///
 /// This SHALL be the hash of a list of PCR indexes and PCR values that a key or data is bound to
 ///
-typedef TPM_DIGEST                  TPM_COMPOSITE_HASH;
+typedef TPM_DIGEST TPM_COMPOSITE_HASH;
 ///
 /// This SHALL be the value of a DIR register
 ///
-typedef TPM_DIGEST                  TPM_DIRVALUE;
+typedef TPM_DIGEST TPM_DIRVALUE;
 
-typedef TPM_DIGEST                  TPM_HMAC;
+typedef TPM_DIGEST TPM_HMAC;
 ///
 /// The value inside of the PCR
 ///
-typedef TPM_DIGEST                  TPM_PCRVALUE;
+typedef TPM_DIGEST TPM_PCRVALUE;
 ///
 /// This SHALL be the value of the current internal audit state
 ///
-typedef TPM_DIGEST                  TPM_AUDITDIGEST;
+typedef TPM_DIGEST TPM_AUDITDIGEST;
 
 ///
 /// Part 2, section 5.5: TPM_NONCE
 ///
-typedef struct tdTPM_NONCE{
-  UINT8                             nonce[20];
+typedef struct tdTPM_NONCE {
+  UINT8    nonce[20];
 } TPM_NONCE;
 
 ///
 /// This SHALL be a random value generated by a TPM immediately after the EK is installed
 /// in that TPM, whenever an EK is installed in that TPM
 ///
-typedef TPM_NONCE                  TPM_DAA_TPM_SEED;
+typedef TPM_NONCE TPM_DAA_TPM_SEED;
 ///
 /// This SHALL be a random value
 ///
-typedef TPM_NONCE                  TPM_DAA_CONTEXT_SEED;
+typedef TPM_NONCE TPM_DAA_CONTEXT_SEED;
 
 //
 // Part 2, section 5.6: TPM_AUTHDATA
@@ -497,25 +489,25 @@
 /// The AuthData data is the information that is saved or passed to provide proof of ownership
 /// 296 of an entity
 ///
-typedef UINT8                       tdTPM_AUTHDATA[20];
+typedef UINT8 tdTPM_AUTHDATA[20];
 
-typedef tdTPM_AUTHDATA              TPM_AUTHDATA;
+typedef tdTPM_AUTHDATA TPM_AUTHDATA;
 ///
 /// A secret plaintext value used in the authorization process
 ///
-typedef TPM_AUTHDATA                TPM_SECRET;
+typedef TPM_AUTHDATA TPM_SECRET;
 ///
 /// A ciphertext (encrypted) version of AuthData data. The encryption mechanism depends on the context
 ///
-typedef TPM_AUTHDATA                TPM_ENCAUTH;
+typedef TPM_AUTHDATA TPM_ENCAUTH;
 
 ///
 /// Part 2, section 5.7: TPM_KEY_HANDLE_LIST
 /// Size of handle is loaded * sizeof(TPM_KEY_HANDLE)
 ///
 typedef struct tdTPM_KEY_HANDLE_LIST {
-  UINT16                            loaded;
-  TPM_KEY_HANDLE                    handle[1];
+  UINT16            loaded;
+  TPM_KEY_HANDLE    handle[1];
 } TPM_KEY_HANDLE_LIST;
 
 //
@@ -526,27 +518,27 @@
 /// used for signing operations, only. This means that it MUST be a leaf of the
 /// Protected Storage key hierarchy.
 ///
-#define TPM_KEY_SIGNING             ((UINT16) 0x0010)
+#define TPM_KEY_SIGNING  ((UINT16) 0x0010)
 ///
 /// TPM_KEY_STORAGE SHALL indicate a storage key. The key SHALL be used to wrap
 /// and unwrap other keys in the Protected Storage hierarchy
 ///
-#define TPM_KEY_STORAGE             ((UINT16) 0x0011)
+#define TPM_KEY_STORAGE  ((UINT16) 0x0011)
 ///
 /// TPM_KEY_IDENTITY SHALL indicate an identity key. The key SHALL be used for
 /// operations that require a TPM identity, only.
 ///
-#define TPM_KEY_IDENTITY            ((UINT16) 0x0012)
+#define TPM_KEY_IDENTITY  ((UINT16) 0x0012)
 ///
 /// TPM_KEY_AUTHCHANGE SHALL indicate an ephemeral key that is in use during
 /// the ChangeAuthAsym process, only.
 ///
-#define TPM_KEY_AUTHCHANGE          ((UINT16) 0x0013)
+#define TPM_KEY_AUTHCHANGE  ((UINT16) 0x0013)
 ///
 /// TPM_KEY_BIND SHALL indicate a key that can be used for TPM_Bind and
 /// TPM_Unbind operations only.
 ///
-#define TPM_KEY_BIND                ((UINT16) 0x0014)
+#define TPM_KEY_BIND  ((UINT16) 0x0014)
 ///
 /// TPM_KEY_LEGACY SHALL indicate a key that can perform signing and binding
 /// operations. The key MAY be used for both signing and binding operations.
@@ -555,11 +547,11 @@
 /// key type is not recommended TPM_KEY_MIGRATE 0x0016 This SHALL indicate a
 /// key in use for TPM_MigrateKey
 ///
-#define TPM_KEY_LEGACY              ((UINT16) 0x0015)
+#define TPM_KEY_LEGACY  ((UINT16) 0x0015)
 ///
 /// TPM_KEY_MIGRAGE SHALL indicate a key in use for TPM_MigrateKey
 ///
-#define TPM_KEY_MIGRATE             ((UINT16) 0x0016)
+#define TPM_KEY_MIGRATE  ((UINT16) 0x0016)
 
 //
 // Part 2, section 5.8.1: Mandatory Key Usage Schemes
@@ -580,76 +572,76 @@
 //
 // Part 2, section 5.9: TPM_AUTH_DATA_USAGE values
 //
-#define TPM_AUTH_NEVER              ((TPM_AUTH_DATA_USAGE) 0x00)
-#define TPM_AUTH_ALWAYS             ((TPM_AUTH_DATA_USAGE) 0x01)
-#define TPM_AUTH_PRIV_USE_ONLY      ((TPM_AUTH_DATA_USAGE) 0x03)
+#define TPM_AUTH_NEVER          ((TPM_AUTH_DATA_USAGE) 0x00)
+#define TPM_AUTH_ALWAYS         ((TPM_AUTH_DATA_USAGE) 0x01)
+#define TPM_AUTH_PRIV_USE_ONLY  ((TPM_AUTH_DATA_USAGE) 0x03)
 
 ///
 /// Part 2, section 5.10: TPM_KEY_FLAGS
 ///
 typedef enum tdTPM_KEY_FLAGS {
-  redirection                       = 0x00000001,
-  migratable                        = 0x00000002,
-  isVolatile                        = 0x00000004,
-  pcrIgnoredOnRead                  = 0x00000008,
-  migrateAuthority                  = 0x00000010
+  redirection      = 0x00000001,
+  migratable       = 0x00000002,
+  isVolatile       = 0x00000004,
+  pcrIgnoredOnRead = 0x00000008,
+  migrateAuthority = 0x00000010
 } TPM_KEY_FLAGS_BITS;
 
 ///
 /// Part 2, section 5.11: TPM_CHANGEAUTH_VALIDATE
 ///
 typedef struct tdTPM_CHANGEAUTH_VALIDATE {
-  TPM_SECRET                        newAuthSecret;
-  TPM_NONCE                         n1;
+  TPM_SECRET    newAuthSecret;
+  TPM_NONCE     n1;
 } TPM_CHANGEAUTH_VALIDATE;
 
 ///
 /// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH
-///   decalared after section 10 to catch declaration of TPM_PUBKEY
+///   declared after section 10 to catch declaration of TPM_PUBKEY
 ///
 /// Part 2 section 10.1: TPM_KEY_PARMS
 ///   [size_is(parmSize)] BYTE* parms;
 ///
 typedef struct tdTPM_KEY_PARMS {
-  TPM_ALGORITHM_ID                  algorithmID;
-  TPM_ENC_SCHEME                    encScheme;
-  TPM_SIG_SCHEME                    sigScheme;
-  UINT32                            parmSize;
-  UINT8                             *parms;
+  TPM_ALGORITHM_ID    algorithmID;
+  TPM_ENC_SCHEME      encScheme;
+  TPM_SIG_SCHEME      sigScheme;
+  UINT32              parmSize;
+  UINT8               *parms;
 } TPM_KEY_PARMS;
 
 ///
 /// Part 2, section 10.4: TPM_STORE_PUBKEY
 ///
 typedef struct tdTPM_STORE_PUBKEY {
-  UINT32                            keyLength;
-  UINT8                             key[1];
+  UINT32    keyLength;
+  UINT8     key[1];
 } TPM_STORE_PUBKEY;
 
 ///
 /// Part 2, section 10.5: TPM_PUBKEY
 ///
-typedef struct tdTPM_PUBKEY{
-  TPM_KEY_PARMS                     algorithmParms;
-  TPM_STORE_PUBKEY                  pubKey;
+typedef struct tdTPM_PUBKEY {
+  TPM_KEY_PARMS       algorithmParms;
+  TPM_STORE_PUBKEY    pubKey;
 } TPM_PUBKEY;
 
 ///
 /// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH
 ///
-typedef struct tdTPM_MIGRATIONKEYAUTH{
-  TPM_PUBKEY                        migrationKey;
-  TPM_MIGRATE_SCHEME                migrationScheme;
-  TPM_DIGEST                        digest;
+typedef struct tdTPM_MIGRATIONKEYAUTH {
+  TPM_PUBKEY            migrationKey;
+  TPM_MIGRATE_SCHEME    migrationScheme;
+  TPM_DIGEST            digest;
 } TPM_MIGRATIONKEYAUTH;
 
 ///
 /// Part 2, section 5.13: TPM_COUNTER_VALUE
 ///
-typedef struct tdTPM_COUNTER_VALUE{
-  TPM_STRUCTURE_TAG                 tag;
-  UINT8                             label[4];
-  TPM_ACTUAL_COUNT                  counter;
+typedef struct tdTPM_COUNTER_VALUE {
+  TPM_STRUCTURE_TAG    tag;
+  UINT8                label[4];
+  TPM_ACTUAL_COUNT     counter;
 } TPM_COUNTER_VALUE;
 
 ///
@@ -657,11 +649,11 @@
 ///   Size of data indicated by dataLen
 ///
 typedef struct tdTPM_SIGN_INFO {
-  TPM_STRUCTURE_TAG                 tag;
-  UINT8                             fixed[4];
-  TPM_NONCE                         replay;
-  UINT32                            dataLen;
-  UINT8                             *data;
+  TPM_STRUCTURE_TAG    tag;
+  UINT8                fixed[4];
+  TPM_NONCE            replay;
+  UINT32               dataLen;
+  UINT8                *data;
 } TPM_SIGN_INFO;
 
 ///
@@ -669,163 +661,163 @@
 ///   Number of migAuthDigest indicated by MSAlist
 ///
 typedef struct tdTPM_MSA_COMPOSITE {
-  UINT32                            MSAlist;
-  TPM_DIGEST                        migAuthDigest[1];
+  UINT32        MSAlist;
+  TPM_DIGEST    migAuthDigest[1];
 } TPM_MSA_COMPOSITE;
 
 ///
 /// Part 2, section 5.16: TPM_CMK_AUTH
 ///
-typedef struct tdTPM_CMK_AUTH{
-  TPM_DIGEST                        migrationAuthorityDigest;
-  TPM_DIGEST                        destinationKeyDigest;
-  TPM_DIGEST                        sourceKeyDigest;
+typedef struct tdTPM_CMK_AUTH {
+  TPM_DIGEST    migrationAuthorityDigest;
+  TPM_DIGEST    destinationKeyDigest;
+  TPM_DIGEST    sourceKeyDigest;
 } TPM_CMK_AUTH;
 
 //
 // Part 2, section 5.17: TPM_CMK_DELEGATE
 //
-#define TPM_CMK_DELEGATE_SIGNING    ((TPM_CMK_DELEGATE) BIT31)
-#define TPM_CMK_DELEGATE_STORAGE    ((TPM_CMK_DELEGATE) BIT30)
-#define TPM_CMK_DELEGATE_BIND       ((TPM_CMK_DELEGATE) BIT29)
-#define TPM_CMK_DELEGATE_LEGACY     ((TPM_CMK_DELEGATE) BIT28)
-#define TPM_CMK_DELEGATE_MIGRATE    ((TPM_CMK_DELEGATE) BIT27)
+#define TPM_CMK_DELEGATE_SIGNING  ((TPM_CMK_DELEGATE) BIT31)
+#define TPM_CMK_DELEGATE_STORAGE  ((TPM_CMK_DELEGATE) BIT30)
+#define TPM_CMK_DELEGATE_BIND     ((TPM_CMK_DELEGATE) BIT29)
+#define TPM_CMK_DELEGATE_LEGACY   ((TPM_CMK_DELEGATE) BIT28)
+#define TPM_CMK_DELEGATE_MIGRATE  ((TPM_CMK_DELEGATE) BIT27)
 
 ///
 /// Part 2, section 5.18: TPM_SELECT_SIZE
 ///
 typedef struct tdTPM_SELECT_SIZE {
-  UINT8                             major;
-  UINT8                             minor;
-  UINT16                            reqSize;
+  UINT8     major;
+  UINT8     minor;
+  UINT16    reqSize;
 } TPM_SELECT_SIZE;
 
 ///
 /// Part 2, section 5,19: TPM_CMK_MIGAUTH
 ///
-typedef struct tdTPM_CMK_MIGAUTH{
-  TPM_STRUCTURE_TAG                 tag;
-  TPM_DIGEST                        msaDigest;
-  TPM_DIGEST                        pubKeyDigest;
+typedef struct tdTPM_CMK_MIGAUTH {
+  TPM_STRUCTURE_TAG    tag;
+  TPM_DIGEST           msaDigest;
+  TPM_DIGEST           pubKeyDigest;
 } TPM_CMK_MIGAUTH;
 
 ///
 /// Part 2, section 5.20: TPM_CMK_SIGTICKET
 ///
-typedef struct tdTPM_CMK_SIGTICKET{
-  TPM_STRUCTURE_TAG                 tag;
-  TPM_DIGEST                        verKeyDigest;
-  TPM_DIGEST                        signedData;
+typedef struct tdTPM_CMK_SIGTICKET {
+  TPM_STRUCTURE_TAG    tag;
+  TPM_DIGEST           verKeyDigest;
+  TPM_DIGEST           signedData;
 } TPM_CMK_SIGTICKET;
 
 ///
 /// Part 2, section 5.21: TPM_CMK_MA_APPROVAL
 ///
-typedef struct tdTPM_CMK_MA_APPROVAL{
-  TPM_STRUCTURE_TAG                 tag;
-  TPM_DIGEST                        migrationAuthorityDigest;
+typedef struct tdTPM_CMK_MA_APPROVAL {
+  TPM_STRUCTURE_TAG    tag;
+  TPM_DIGEST           migrationAuthorityDigest;
 } TPM_CMK_MA_APPROVAL;
 
 //
 // Part 2, section 6: Command Tags
 //
-#define TPM_TAG_RQU_COMMAND         ((TPM_STRUCTURE_TAG) 0x00C1)
-#define TPM_TAG_RQU_AUTH1_COMMAND   ((TPM_STRUCTURE_TAG) 0x00C2)
-#define TPM_TAG_RQU_AUTH2_COMMAND   ((TPM_STRUCTURE_TAG) 0x00C3)
-#define TPM_TAG_RSP_COMMAND         ((TPM_STRUCTURE_TAG) 0x00C4)
-#define TPM_TAG_RSP_AUTH1_COMMAND   ((TPM_STRUCTURE_TAG) 0x00C5)
-#define TPM_TAG_RSP_AUTH2_COMMAND   ((TPM_STRUCTURE_TAG) 0x00C6)
+#define TPM_TAG_RQU_COMMAND        ((TPM_STRUCTURE_TAG) 0x00C1)
+#define TPM_TAG_RQU_AUTH1_COMMAND  ((TPM_STRUCTURE_TAG) 0x00C2)
+#define TPM_TAG_RQU_AUTH2_COMMAND  ((TPM_STRUCTURE_TAG) 0x00C3)
+#define TPM_TAG_RSP_COMMAND        ((TPM_STRUCTURE_TAG) 0x00C4)
+#define TPM_TAG_RSP_AUTH1_COMMAND  ((TPM_STRUCTURE_TAG) 0x00C5)
+#define TPM_TAG_RSP_AUTH2_COMMAND  ((TPM_STRUCTURE_TAG) 0x00C6)
 
 ///
 /// Part 2, section 7.1: TPM_PERMANENT_FLAGS
 ///
-typedef struct tdTPM_PERMANENT_FLAGS{
-  TPM_STRUCTURE_TAG                 tag;
-  BOOLEAN                           disable;
-  BOOLEAN                           ownership;
-  BOOLEAN                           deactivated;
-  BOOLEAN                           readPubek;
-  BOOLEAN                           disableOwnerClear;
-  BOOLEAN                           allowMaintenance;
-  BOOLEAN                           physicalPresenceLifetimeLock;
-  BOOLEAN                           physicalPresenceHWEnable;
-  BOOLEAN                           physicalPresenceCMDEnable;
-  BOOLEAN                           CEKPUsed;
-  BOOLEAN                           TPMpost;
-  BOOLEAN                           TPMpostLock;
-  BOOLEAN                           FIPS;
+typedef struct tdTPM_PERMANENT_FLAGS {
+  TPM_STRUCTURE_TAG    tag;
+  BOOLEAN              disable;
+  BOOLEAN              ownership;
+  BOOLEAN              deactivated;
+  BOOLEAN              readPubek;
+  BOOLEAN              disableOwnerClear;
+  BOOLEAN              allowMaintenance;
+  BOOLEAN              physicalPresenceLifetimeLock;
+  BOOLEAN              physicalPresenceHWEnable;
+  BOOLEAN              physicalPresenceCMDEnable;
+  BOOLEAN              CEKPUsed;
+  BOOLEAN              TPMpost;
+  BOOLEAN              TPMpostLock;
+  BOOLEAN              FIPS;
   BOOLEAN                           operator;
   BOOLEAN                           enableRevokeEK;
-  BOOLEAN                           nvLocked;
-  BOOLEAN                           readSRKPub;
-  BOOLEAN                           tpmEstablished;
-  BOOLEAN                           maintenanceDone;
-  BOOLEAN                           disableFullDALogicInfo;
+  BOOLEAN              nvLocked;
+  BOOLEAN              readSRKPub;
+  BOOLEAN              tpmEstablished;
+  BOOLEAN              maintenanceDone;
+  BOOLEAN              disableFullDALogicInfo;
 } TPM_PERMANENT_FLAGS;
 
 //
 // Part 2, section 7.1.1: Flag Restrictions (of TPM_PERMANENT_FLAGS)
 //
-#define TPM_PF_DISABLE                      ((TPM_CAPABILITY_AREA) 1)
-#define TPM_PF_OWNERSHIP                    ((TPM_CAPABILITY_AREA) 2)
-#define TPM_PF_DEACTIVATED                  ((TPM_CAPABILITY_AREA) 3)
-#define TPM_PF_READPUBEK                    ((TPM_CAPABILITY_AREA) 4)
-#define TPM_PF_DISABLEOWNERCLEAR            ((TPM_CAPABILITY_AREA) 5)
-#define TPM_PF_ALLOWMAINTENANCE             ((TPM_CAPABILITY_AREA) 6)
-#define TPM_PF_PHYSICALPRESENCELIFETIMELOCK ((TPM_CAPABILITY_AREA) 7)
-#define TPM_PF_PHYSICALPRESENCEHWENABLE     ((TPM_CAPABILITY_AREA) 8)
-#define TPM_PF_PHYSICALPRESENCECMDENABLE    ((TPM_CAPABILITY_AREA) 9)
-#define TPM_PF_CEKPUSED                     ((TPM_CAPABILITY_AREA) 10)
-#define TPM_PF_TPMPOST                      ((TPM_CAPABILITY_AREA) 11)
-#define TPM_PF_TPMPOSTLOCK                  ((TPM_CAPABILITY_AREA) 12)
-#define TPM_PF_FIPS                         ((TPM_CAPABILITY_AREA) 13)
-#define TPM_PF_OPERATOR                     ((TPM_CAPABILITY_AREA) 14)
-#define TPM_PF_ENABLEREVOKEEK               ((TPM_CAPABILITY_AREA) 15)
-#define TPM_PF_NV_LOCKED                    ((TPM_CAPABILITY_AREA) 16)
-#define TPM_PF_READSRKPUB                   ((TPM_CAPABILITY_AREA) 17)
-#define TPM_PF_TPMESTABLISHED               ((TPM_CAPABILITY_AREA) 18)
-#define TPM_PF_MAINTENANCEDONE              ((TPM_CAPABILITY_AREA) 19)
-#define TPM_PF_DISABLEFULLDALOGICINFO       ((TPM_CAPABILITY_AREA) 20)
+#define TPM_PF_DISABLE                       ((TPM_CAPABILITY_AREA) 1)
+#define TPM_PF_OWNERSHIP                     ((TPM_CAPABILITY_AREA) 2)
+#define TPM_PF_DEACTIVATED                   ((TPM_CAPABILITY_AREA) 3)
+#define TPM_PF_READPUBEK                     ((TPM_CAPABILITY_AREA) 4)
+#define TPM_PF_DISABLEOWNERCLEAR             ((TPM_CAPABILITY_AREA) 5)
+#define TPM_PF_ALLOWMAINTENANCE              ((TPM_CAPABILITY_AREA) 6)
+#define TPM_PF_PHYSICALPRESENCELIFETIMELOCK  ((TPM_CAPABILITY_AREA) 7)
+#define TPM_PF_PHYSICALPRESENCEHWENABLE      ((TPM_CAPABILITY_AREA) 8)
+#define TPM_PF_PHYSICALPRESENCECMDENABLE     ((TPM_CAPABILITY_AREA) 9)
+#define TPM_PF_CEKPUSED                      ((TPM_CAPABILITY_AREA) 10)
+#define TPM_PF_TPMPOST                       ((TPM_CAPABILITY_AREA) 11)
+#define TPM_PF_TPMPOSTLOCK                   ((TPM_CAPABILITY_AREA) 12)
+#define TPM_PF_FIPS                          ((TPM_CAPABILITY_AREA) 13)
+#define TPM_PF_OPERATOR                      ((TPM_CAPABILITY_AREA) 14)
+#define TPM_PF_ENABLEREVOKEEK                ((TPM_CAPABILITY_AREA) 15)
+#define TPM_PF_NV_LOCKED                     ((TPM_CAPABILITY_AREA) 16)
+#define TPM_PF_READSRKPUB                    ((TPM_CAPABILITY_AREA) 17)
+#define TPM_PF_TPMESTABLISHED                ((TPM_CAPABILITY_AREA) 18)
+#define TPM_PF_MAINTENANCEDONE               ((TPM_CAPABILITY_AREA) 19)
+#define TPM_PF_DISABLEFULLDALOGICINFO        ((TPM_CAPABILITY_AREA) 20)
 
 ///
 /// Part 2, section 7.2: TPM_STCLEAR_FLAGS
 ///
-typedef struct tdTPM_STCLEAR_FLAGS{
-  TPM_STRUCTURE_TAG                 tag;
-  BOOLEAN                           deactivated;
-  BOOLEAN                           disableForceClear;
-  BOOLEAN                           physicalPresence;
-  BOOLEAN                           physicalPresenceLock;
-  BOOLEAN                           bGlobalLock;
+typedef struct tdTPM_STCLEAR_FLAGS {
+  TPM_STRUCTURE_TAG    tag;
+  BOOLEAN              deactivated;
+  BOOLEAN              disableForceClear;
+  BOOLEAN              physicalPresence;
+  BOOLEAN              physicalPresenceLock;
+  BOOLEAN              bGlobalLock;
 } TPM_STCLEAR_FLAGS;
 
 //
 // Part 2, section 7.2.1: Flag Restrictions (of TPM_STCLEAR_FLAGS)
 //
-#define TPM_SF_DEACTIVATED          ((TPM_CAPABILITY_AREA) 1)
-#define TPM_SF_DISABLEFORCECLEAR    ((TPM_CAPABILITY_AREA) 2)
-#define TPM_SF_PHYSICALPRESENCE     ((TPM_CAPABILITY_AREA) 3)
-#define TPM_SF_PHYSICALPRESENCELOCK ((TPM_CAPABILITY_AREA) 4)
-#define TPM_SF_BGLOBALLOCK          ((TPM_CAPABILITY_AREA) 5)
+#define TPM_SF_DEACTIVATED           ((TPM_CAPABILITY_AREA) 1)
+#define TPM_SF_DISABLEFORCECLEAR     ((TPM_CAPABILITY_AREA) 2)
+#define TPM_SF_PHYSICALPRESENCE      ((TPM_CAPABILITY_AREA) 3)
+#define TPM_SF_PHYSICALPRESENCELOCK  ((TPM_CAPABILITY_AREA) 4)
+#define TPM_SF_BGLOBALLOCK           ((TPM_CAPABILITY_AREA) 5)
 
 ///
 /// Part 2, section 7.3: TPM_STANY_FLAGS
 ///
-typedef struct tdTPM_STANY_FLAGS{
-  TPM_STRUCTURE_TAG                 tag;
-  BOOLEAN                           postInitialise;
-  TPM_MODIFIER_INDICATOR            localityModifier;
-  BOOLEAN                           transportExclusive;
-  BOOLEAN                           TOSPresent;
+typedef struct tdTPM_STANY_FLAGS {
+  TPM_STRUCTURE_TAG         tag;
+  BOOLEAN                   postInitialise;
+  TPM_MODIFIER_INDICATOR    localityModifier;
+  BOOLEAN                   transportExclusive;
+  BOOLEAN                   TOSPresent;
 } TPM_STANY_FLAGS;
 
 //
 // Part 2, section 7.3.1: Flag Restrictions (of TPM_STANY_FLAGS)
 //
-#define TPM_AF_POSTINITIALISE       ((TPM_CAPABILITY_AREA) 1)
-#define TPM_AF_LOCALITYMODIFIER     ((TPM_CAPABILITY_AREA) 2)
-#define TPM_AF_TRANSPORTEXCLUSIVE   ((TPM_CAPABILITY_AREA) 3)
-#define TPM_AF_TOSPRESENT           ((TPM_CAPABILITY_AREA) 4)
+#define TPM_AF_POSTINITIALISE      ((TPM_CAPABILITY_AREA) 1)
+#define TPM_AF_LOCALITYMODIFIER    ((TPM_CAPABILITY_AREA) 2)
+#define TPM_AF_TRANSPORTEXCLUSIVE  ((TPM_CAPABILITY_AREA) 3)
+#define TPM_AF_TOSPRESENT          ((TPM_CAPABILITY_AREA) 4)
 
 //
 // All those structures defined in section 7.4, 7.5, 7.6 are not normative and
@@ -833,10 +825,10 @@
 //
 // Part 2, section 7.4: TPM_PERMANENT_DATA
 //
-#define TPM_MIN_COUNTERS            4   ///< the minimum number of counters is 4
-#define TPM_DELEGATE_KEY            TPM_KEY
-#define TPM_NUM_PCR                 16
-#define TPM_MAX_NV_WRITE_NOOWNER    64
+#define TPM_MIN_COUNTERS          4     ///< the minimum number of counters is 4
+#define TPM_DELEGATE_KEY          TPM_KEY
+#define TPM_NUM_PCR               16
+#define TPM_MAX_NV_WRITE_NOOWNER  64
 
 //
 // Part 2, section 7.4.1: PERMANENT_DATA Subcap for SetCapability
@@ -871,35 +863,35 @@
 /// Part 2, section 7.5: TPM_STCLEAR_DATA
 ///   available inside TPM only
 ///
- typedef struct tdTPM_STCLEAR_DATA{
-   TPM_STRUCTURE_TAG                  tag;
-   TPM_NONCE                          contextNonceKey;
-   TPM_COUNT_ID                       countID;
-   UINT32                             ownerReference;
-   BOOLEAN                            disableResetLock;
-   TPM_PCRVALUE                       PCR[TPM_NUM_PCR];
-   UINT32                             deferredPhysicalPresence;
- }TPM_STCLEAR_DATA;
+typedef struct tdTPM_STCLEAR_DATA {
+  TPM_STRUCTURE_TAG    tag;
+  TPM_NONCE            contextNonceKey;
+  TPM_COUNT_ID         countID;
+  UINT32               ownerReference;
+  BOOLEAN              disableResetLock;
+  TPM_PCRVALUE         PCR[TPM_NUM_PCR];
+  UINT32               deferredPhysicalPresence;
+} TPM_STCLEAR_DATA;
 
 //
 // Part 2, section 7.5.1: STCLEAR_DATA Subcap for SetCapability
 //
-#define TPM_SD_CONTEXTNONCEKEY            ((TPM_CAPABILITY_AREA)0x00000001)
-#define TPM_SD_COUNTID                    ((TPM_CAPABILITY_AREA)0x00000002)
-#define TPM_SD_OWNERREFERENCE             ((TPM_CAPABILITY_AREA)0x00000003)
-#define TPM_SD_DISABLERESETLOCK           ((TPM_CAPABILITY_AREA)0x00000004)
-#define TPM_SD_PCR                        ((TPM_CAPABILITY_AREA)0x00000005)
-#define TPM_SD_DEFERREDPHYSICALPRESENCE   ((TPM_CAPABILITY_AREA)0x00000006)
+#define TPM_SD_CONTEXTNONCEKEY           ((TPM_CAPABILITY_AREA)0x00000001)
+#define TPM_SD_COUNTID                   ((TPM_CAPABILITY_AREA)0x00000002)
+#define TPM_SD_OWNERREFERENCE            ((TPM_CAPABILITY_AREA)0x00000003)
+#define TPM_SD_DISABLERESETLOCK          ((TPM_CAPABILITY_AREA)0x00000004)
+#define TPM_SD_PCR                       ((TPM_CAPABILITY_AREA)0x00000005)
+#define TPM_SD_DEFERREDPHYSICALPRESENCE  ((TPM_CAPABILITY_AREA)0x00000006)
 
 //
 // Part 2, section 7.6.1: STANY_DATA Subcap for SetCapability
 //
-#define TPM_AD_CONTEXTNONCESESSION        ((TPM_CAPABILITY_AREA) 1)
-#define TPM_AD_AUDITDIGEST                ((TPM_CAPABILITY_AREA) 2)
-#define TPM_AD_CURRENTTICKS               ((TPM_CAPABILITY_AREA) 3)
-#define TPM_AD_CONTEXTCOUNT               ((TPM_CAPABILITY_AREA) 4)
-#define TPM_AD_CONTEXTLIST                ((TPM_CAPABILITY_AREA) 5)
-#define TPM_AD_SESSIONS                   ((TPM_CAPABILITY_AREA) 6)
+#define TPM_AD_CONTEXTNONCESESSION  ((TPM_CAPABILITY_AREA) 1)
+#define TPM_AD_AUDITDIGEST          ((TPM_CAPABILITY_AREA) 2)
+#define TPM_AD_CURRENTTICKS         ((TPM_CAPABILITY_AREA) 3)
+#define TPM_AD_CONTEXTCOUNT         ((TPM_CAPABILITY_AREA) 4)
+#define TPM_AD_CONTEXTLIST          ((TPM_CAPABILITY_AREA) 5)
+#define TPM_AD_SESSIONS             ((TPM_CAPABILITY_AREA) 6)
 
 //
 // Part 2, section 8: PCR Structures
@@ -910,8 +902,8 @@
 ///   Size of pcrSelect[] indicated by sizeOfSelect
 ///
 typedef struct tdTPM_PCR_SELECTION {
-  UINT16                            sizeOfSelect;
-  UINT8                             pcrSelect[1];
+  UINT16    sizeOfSelect;
+  UINT8     pcrSelect[1];
 } TPM_PCR_SELECTION;
 
 ///
@@ -919,60 +911,60 @@
 ///   Size of pcrValue[] indicated by valueSize
 ///
 typedef struct tdTPM_PCR_COMPOSITE {
-  TPM_PCR_SELECTION                 select;
-  UINT32                            valueSize;
-  TPM_PCRVALUE                      pcrValue[1];
+  TPM_PCR_SELECTION    select;
+  UINT32               valueSize;
+  TPM_PCRVALUE         pcrValue[1];
 } TPM_PCR_COMPOSITE;
 
 ///
 /// Part 2, section 8.3: TPM_PCR_INFO
 ///
 typedef struct tdTPM_PCR_INFO {
-  TPM_PCR_SELECTION                 pcrSelection;
-  TPM_COMPOSITE_HASH                digestAtRelease;
-  TPM_COMPOSITE_HASH                digestAtCreation;
+  TPM_PCR_SELECTION     pcrSelection;
+  TPM_COMPOSITE_HASH    digestAtRelease;
+  TPM_COMPOSITE_HASH    digestAtCreation;
 } TPM_PCR_INFO;
 
 ///
 /// Part 2, section 8.6: TPM_LOCALITY_SELECTION
 ///
-typedef UINT8                       TPM_LOCALITY_SELECTION;
+typedef UINT8 TPM_LOCALITY_SELECTION;
 
-#define TPM_LOC_FOUR                ((UINT8) 0x10)
-#define TPM_LOC_THREE               ((UINT8) 0x08)
-#define TPM_LOC_TWO                 ((UINT8) 0x04)
-#define TPM_LOC_ONE                 ((UINT8) 0x02)
-#define TPM_LOC_ZERO                ((UINT8) 0x01)
+#define TPM_LOC_FOUR   ((UINT8) 0x10)
+#define TPM_LOC_THREE  ((UINT8) 0x08)
+#define TPM_LOC_TWO    ((UINT8) 0x04)
+#define TPM_LOC_ONE    ((UINT8) 0x02)
+#define TPM_LOC_ZERO   ((UINT8) 0x01)
 
 ///
 /// Part 2, section 8.4: TPM_PCR_INFO_LONG
 ///
 typedef struct tdTPM_PCR_INFO_LONG {
-  TPM_STRUCTURE_TAG                 tag;
-  TPM_LOCALITY_SELECTION            localityAtCreation;
-  TPM_LOCALITY_SELECTION            localityAtRelease;
-  TPM_PCR_SELECTION                 creationPCRSelection;
-  TPM_PCR_SELECTION                 releasePCRSelection;
-  TPM_COMPOSITE_HASH                digestAtCreation;
-  TPM_COMPOSITE_HASH                digestAtRelease;
+  TPM_STRUCTURE_TAG         tag;
+  TPM_LOCALITY_SELECTION    localityAtCreation;
+  TPM_LOCALITY_SELECTION    localityAtRelease;
+  TPM_PCR_SELECTION         creationPCRSelection;
+  TPM_PCR_SELECTION         releasePCRSelection;
+  TPM_COMPOSITE_HASH        digestAtCreation;
+  TPM_COMPOSITE_HASH        digestAtRelease;
 } TPM_PCR_INFO_LONG;
 
 ///
 /// Part 2, section 8.5: TPM_PCR_INFO_SHORT
 ///
-typedef struct tdTPM_PCR_INFO_SHORT{
-  TPM_PCR_SELECTION                 pcrSelection;
-  TPM_LOCALITY_SELECTION            localityAtRelease;
-  TPM_COMPOSITE_HASH                digestAtRelease;
+typedef struct tdTPM_PCR_INFO_SHORT {
+  TPM_PCR_SELECTION         pcrSelection;
+  TPM_LOCALITY_SELECTION    localityAtRelease;
+  TPM_COMPOSITE_HASH        digestAtRelease;
 } TPM_PCR_INFO_SHORT;
 
 ///
 /// Part 2, section 8.8: TPM_PCR_ATTRIBUTES
 ///
-typedef struct tdTPM_PCR_ATTRIBUTES{
-  BOOLEAN                           pcrReset;
-  TPM_LOCALITY_SELECTION            pcrExtendLocal;
-  TPM_LOCALITY_SELECTION            pcrResetLocal;
+typedef struct tdTPM_PCR_ATTRIBUTES {
+  BOOLEAN                   pcrReset;
+  TPM_LOCALITY_SELECTION    pcrExtendLocal;
+  TPM_LOCALITY_SELECTION    pcrResetLocal;
 } TPM_PCR_ATTRIBUTES;
 
 //
@@ -985,11 +977,11 @@
 ///   [size_is(encDataSize)] BYTE* encData;
 ///
 typedef struct tdTPM_STORED_DATA {
-  TPM_STRUCT_VER                    ver;
-  UINT32                            sealInfoSize;
-  UINT8                             *sealInfo;
-  UINT32                            encDataSize;
-  UINT8                             *encData;
+  TPM_STRUCT_VER    ver;
+  UINT32            sealInfoSize;
+  UINT8             *sealInfo;
+  UINT32            encDataSize;
+  UINT8             *encData;
 } TPM_STORED_DATA;
 
 ///
@@ -998,12 +990,12 @@
 ///   [size_is(encDataSize)] BYTE* encData;
 ///
 typedef struct tdTPM_STORED_DATA12 {
-  TPM_STRUCTURE_TAG                 tag;
-  TPM_ENTITY_TYPE                   et;
-  UINT32                            sealInfoSize;
-  UINT8                             *sealInfo;
-  UINT32                            encDataSize;
-  UINT8                             *encData;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_ENTITY_TYPE      et;
+  UINT32               sealInfoSize;
+  UINT8                *sealInfo;
+  UINT32               encDataSize;
+  UINT8                *encData;
 } TPM_STORED_DATA12;
 
 ///
@@ -1011,12 +1003,12 @@
 ///   [size_is(dataSize)] BYTE* data;
 ///
 typedef struct tdTPM_SEALED_DATA {
-  TPM_PAYLOAD_TYPE                  payload;
-  TPM_SECRET                        authData;
-  TPM_NONCE                         tpmProof;
-  TPM_DIGEST                        storedDigest;
-  UINT32                            dataSize;
-  UINT8                             *data;
+  TPM_PAYLOAD_TYPE    payload;
+  TPM_SECRET          authData;
+  TPM_NONCE           tpmProof;
+  TPM_DIGEST          storedDigest;
+  UINT32              dataSize;
+  UINT8               *data;
 } TPM_SEALED_DATA;
 
 ///
@@ -1024,19 +1016,19 @@
 ///   [size_is(size)] BYTE* data;
 ///
 typedef struct tdTPM_SYMMETRIC_KEY {
-  TPM_ALGORITHM_ID                  algId;
-  TPM_ENC_SCHEME                    encScheme;
-  UINT16                            dataSize;
-  UINT8                             *data;
+  TPM_ALGORITHM_ID    algId;
+  TPM_ENC_SCHEME      encScheme;
+  UINT16              dataSize;
+  UINT8               *data;
 } TPM_SYMMETRIC_KEY;
 
 ///
 /// Part 2, section 9.5: TPM_BOUND_DATA
 ///
 typedef struct tdTPM_BOUND_DATA {
-  TPM_STRUCT_VER                    ver;
-  TPM_PAYLOAD_TYPE                  payload;
-  UINT8                             payloadData[1];
+  TPM_STRUCT_VER      ver;
+  TPM_PAYLOAD_TYPE    payload;
+  UINT8               payloadData[1];
 } TPM_BOUND_DATA;
 
 //
@@ -1051,35 +1043,35 @@
 /// Part 2, section 10.2: TPM_KEY
 ///   [size_is(encDataSize)] BYTE* encData;
 ///
-typedef struct tdTPM_KEY{
-  TPM_STRUCT_VER                    ver;
-  TPM_KEY_USAGE                     keyUsage;
-  TPM_KEY_FLAGS                     keyFlags;
-  TPM_AUTH_DATA_USAGE               authDataUsage;
-  TPM_KEY_PARMS                     algorithmParms;
-  UINT32                            PCRInfoSize;
-  UINT8                             *PCRInfo;
-  TPM_STORE_PUBKEY                  pubKey;
-  UINT32                            encDataSize;
-  UINT8                             *encData;
+typedef struct tdTPM_KEY {
+  TPM_STRUCT_VER         ver;
+  TPM_KEY_USAGE          keyUsage;
+  TPM_KEY_FLAGS          keyFlags;
+  TPM_AUTH_DATA_USAGE    authDataUsage;
+  TPM_KEY_PARMS          algorithmParms;
+  UINT32                 PCRInfoSize;
+  UINT8                  *PCRInfo;
+  TPM_STORE_PUBKEY       pubKey;
+  UINT32                 encDataSize;
+  UINT8                  *encData;
 } TPM_KEY;
 
 ///
 /// Part 2, section 10.3: TPM_KEY12
 ///   [size_is(encDataSize)] BYTE* encData;
 ///
-typedef struct tdTPM_KEY12{
-  TPM_STRUCTURE_TAG                 tag;
-  UINT16                            fill;
-  TPM_KEY_USAGE                     keyUsage;
-  TPM_KEY_FLAGS                     keyFlags;
-  TPM_AUTH_DATA_USAGE               authDataUsage;
-  TPM_KEY_PARMS                     algorithmParms;
-  UINT32                            PCRInfoSize;
-  UINT8                             *PCRInfo;
-  TPM_STORE_PUBKEY                  pubKey;
-  UINT32                            encDataSize;
-  UINT8                             *encData;
+typedef struct tdTPM_KEY12 {
+  TPM_STRUCTURE_TAG      tag;
+  UINT16                 fill;
+  TPM_KEY_USAGE          keyUsage;
+  TPM_KEY_FLAGS          keyFlags;
+  TPM_AUTH_DATA_USAGE    authDataUsage;
+  TPM_KEY_PARMS          algorithmParms;
+  UINT32                 PCRInfoSize;
+  UINT8                  *PCRInfo;
+  TPM_STORE_PUBKEY       pubKey;
+  UINT32                 encDataSize;
+  UINT8                  *encData;
 } TPM_KEY12;
 
 ///
@@ -1087,37 +1079,39 @@
 ///   [size_is(keyLength)] BYTE* key;
 ///
 typedef struct tdTPM_STORE_PRIVKEY {
-  UINT32                            keyLength;
-  UINT8                             *key;
+  UINT32    keyLength;
+  UINT8     *key;
 } TPM_STORE_PRIVKEY;
 
 ///
 /// Part 2, section 10.6: TPM_STORE_ASYMKEY
 ///
-typedef struct tdTPM_STORE_ASYMKEY {                // pos len total
-  TPM_PAYLOAD_TYPE                  payload;        // 0    1   1
-  TPM_SECRET                        usageAuth;      // 1    20  21
-  TPM_SECRET                        migrationAuth;  // 21   20  41
-  TPM_DIGEST                        pubDataDigest;  // 41   20  61
-  TPM_STORE_PRIVKEY                 privKey;        // 61 132-151 193-214
+typedef struct tdTPM_STORE_ASYMKEY {
+  // pos len total
+  TPM_PAYLOAD_TYPE     payload;                     // 0    1   1
+  TPM_SECRET           usageAuth;                   // 1    20  21
+  TPM_SECRET           migrationAuth;               // 21   20  41
+  TPM_DIGEST           pubDataDigest;               // 41   20  61
+  TPM_STORE_PRIVKEY    privKey;                     // 61 132-151 193-214
 } TPM_STORE_ASYMKEY;
 
 ///
 /// Part 2, section 10.8: TPM_MIGRATE_ASYMKEY
 ///   [size_is(partPrivKeyLen)] BYTE* partPrivKey;
 ///
-typedef struct tdTPM_MIGRATE_ASYMKEY {              // pos  len  total
-  TPM_PAYLOAD_TYPE                  payload;        //   0    1       1
-  TPM_SECRET                        usageAuth;      //   1   20      21
-  TPM_DIGEST                        pubDataDigest;  //  21   20      41
-  UINT32                            partPrivKeyLen; //  41    4      45
-  UINT8                             *partPrivKey;   //  45 112-127 157-172
+typedef struct tdTPM_MIGRATE_ASYMKEY {
+  // pos  len  total
+  TPM_PAYLOAD_TYPE    payload;                      //   0    1       1
+  TPM_SECRET          usageAuth;                    //   1   20      21
+  TPM_DIGEST          pubDataDigest;                //  21   20      41
+  UINT32              partPrivKeyLen;               //  41    4      45
+  UINT8               *partPrivKey;                 //  45 112-127 157-172
 } TPM_MIGRATE_ASYMKEY;
 
 ///
 /// Part 2, section 10.9: TPM_KEY_CONTROL
 ///
-#define TPM_KEY_CONTROL_OWNER_EVICT ((UINT32) 0x00000001)
+#define TPM_KEY_CONTROL_OWNER_EVICT  ((UINT32) 0x00000001)
 
 //
 // Part 2, section 11: Signed Structures
@@ -1127,56 +1121,56 @@
 /// Part 2, section 11.1: TPM_CERTIFY_INFO Structure
 ///
 typedef struct tdTPM_CERTIFY_INFO {
-  TPM_STRUCT_VER                  version;
-  TPM_KEY_USAGE                   keyUsage;
-  TPM_KEY_FLAGS                   keyFlags;
-  TPM_AUTH_DATA_USAGE             authDataUsage;
-  TPM_KEY_PARMS                   algorithmParms;
-  TPM_DIGEST                      pubkeyDigest;
-  TPM_NONCE                       data;
-  BOOLEAN                         parentPCRStatus;
-  UINT32                          PCRInfoSize;
-  UINT8                           *PCRInfo;
+  TPM_STRUCT_VER         version;
+  TPM_KEY_USAGE          keyUsage;
+  TPM_KEY_FLAGS          keyFlags;
+  TPM_AUTH_DATA_USAGE    authDataUsage;
+  TPM_KEY_PARMS          algorithmParms;
+  TPM_DIGEST             pubkeyDigest;
+  TPM_NONCE              data;
+  BOOLEAN                parentPCRStatus;
+  UINT32                 PCRInfoSize;
+  UINT8                  *PCRInfo;
 } TPM_CERTIFY_INFO;
 
 ///
 /// Part 2, section 11.2: TPM_CERTIFY_INFO2 Structure
 ///
 typedef struct tdTPM_CERTIFY_INFO2 {
-  TPM_STRUCTURE_TAG               tag;
-  UINT8                           fill;
-  TPM_PAYLOAD_TYPE                payloadType;
-  TPM_KEY_USAGE                   keyUsage;
-  TPM_KEY_FLAGS                   keyFlags;
-  TPM_AUTH_DATA_USAGE             authDataUsage;
-  TPM_KEY_PARMS                   algorithmParms;
-  TPM_DIGEST                      pubkeyDigest;
-  TPM_NONCE                       data;
-  BOOLEAN                         parentPCRStatus;
-  UINT32                          PCRInfoSize;
-  UINT8                           *PCRInfo;
-  UINT32                          migrationAuthoritySize;
-  UINT8                           *migrationAuthority;
+  TPM_STRUCTURE_TAG      tag;
+  UINT8                  fill;
+  TPM_PAYLOAD_TYPE       payloadType;
+  TPM_KEY_USAGE          keyUsage;
+  TPM_KEY_FLAGS          keyFlags;
+  TPM_AUTH_DATA_USAGE    authDataUsage;
+  TPM_KEY_PARMS          algorithmParms;
+  TPM_DIGEST             pubkeyDigest;
+  TPM_NONCE              data;
+  BOOLEAN                parentPCRStatus;
+  UINT32                 PCRInfoSize;
+  UINT8                  *PCRInfo;
+  UINT32                 migrationAuthoritySize;
+  UINT8                  *migrationAuthority;
 } TPM_CERTIFY_INFO2;
 
 ///
 /// Part 2, section 11.3 TPM_QUOTE_INFO Structure
 ///
 typedef struct tdTPM_QUOTE_INFO {
-  TPM_STRUCT_VER                  version;
-  UINT8                           fixed[4];
-  TPM_COMPOSITE_HASH              digestValue;
-  TPM_NONCE                       externalData;
+  TPM_STRUCT_VER        version;
+  UINT8                 fixed[4];
+  TPM_COMPOSITE_HASH    digestValue;
+  TPM_NONCE             externalData;
 } TPM_QUOTE_INFO;
 
 ///
 /// Part 2, section 11.4 TPM_QUOTE_INFO2 Structure
 ///
 typedef struct tdTPM_QUOTE_INFO2 {
-  TPM_STRUCTURE_TAG               tag;
-  UINT8                           fixed[4];
-  TPM_NONCE                       externalData;
-  TPM_PCR_INFO_SHORT              infoShort;
+  TPM_STRUCTURE_TAG     tag;
+  UINT8                 fixed[4];
+  TPM_NONCE             externalData;
+  TPM_PCR_INFO_SHORT    infoShort;
 } TPM_QUOTE_INFO2;
 
 //
@@ -1187,86 +1181,85 @@
 /// Part 2, section 12.1 TPM_EK_BLOB
 ///
 typedef struct tdTPM_EK_BLOB {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_EK_TYPE                     ekType;
-  UINT32                          blobSize;
-  UINT8                           *blob;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_EK_TYPE          ekType;
+  UINT32               blobSize;
+  UINT8                *blob;
 } TPM_EK_BLOB;
 
 ///
 /// Part 2, section 12.2 TPM_EK_BLOB_ACTIVATE
 ///
 typedef struct tdTPM_EK_BLOB_ACTIVATE {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_SYMMETRIC_KEY               sessionKey;
-  TPM_DIGEST                      idDigest;
-  TPM_PCR_INFO_SHORT              pcrInfo;
+  TPM_STRUCTURE_TAG     tag;
+  TPM_SYMMETRIC_KEY     sessionKey;
+  TPM_DIGEST            idDigest;
+  TPM_PCR_INFO_SHORT    pcrInfo;
 } TPM_EK_BLOB_ACTIVATE;
 
 ///
 /// Part 2, section 12.3 TPM_EK_BLOB_AUTH
 ///
 typedef struct tdTPM_EK_BLOB_AUTH {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_SECRET                      authValue;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_SECRET           authValue;
 } TPM_EK_BLOB_AUTH;
 
-
 ///
 /// Part 2, section 12.5 TPM_IDENTITY_CONTENTS
 ///
 typedef struct tdTPM_IDENTITY_CONTENTS {
-  TPM_STRUCT_VER                  ver;
-  UINT32                          ordinal;
-  TPM_CHOSENID_HASH               labelPrivCADigest;
-  TPM_PUBKEY                      identityPubKey;
+  TPM_STRUCT_VER       ver;
+  UINT32               ordinal;
+  TPM_CHOSENID_HASH    labelPrivCADigest;
+  TPM_PUBKEY           identityPubKey;
 } TPM_IDENTITY_CONTENTS;
 
 ///
 /// Part 2, section 12.6 TPM_IDENTITY_REQ
 ///
 typedef struct tdTPM_IDENTITY_REQ {
-  UINT32                          asymSize;
-  UINT32                          symSize;
-  TPM_KEY_PARMS                   asymAlgorithm;
-  TPM_KEY_PARMS                   symAlgorithm;
-  UINT8                           *asymBlob;
-  UINT8                           *symBlob;
+  UINT32           asymSize;
+  UINT32           symSize;
+  TPM_KEY_PARMS    asymAlgorithm;
+  TPM_KEY_PARMS    symAlgorithm;
+  UINT8            *asymBlob;
+  UINT8            *symBlob;
 } TPM_IDENTITY_REQ;
 
 ///
 /// Part 2, section 12.7 TPM_IDENTITY_PROOF
 ///
 typedef struct tdTPM_IDENTITY_PROOF {
-  TPM_STRUCT_VER                  ver;
-  UINT32                          labelSize;
-  UINT32                          identityBindingSize;
-  UINT32                          endorsementSize;
-  UINT32                          platformSize;
-  UINT32                          conformanceSize;
-  TPM_PUBKEY                      identityKey;
-  UINT8                           *labelArea;
-  UINT8                           *identityBinding;
-  UINT8                           *endorsementCredential;
-  UINT8                           *platformCredential;
-  UINT8                           *conformanceCredential;
+  TPM_STRUCT_VER    ver;
+  UINT32            labelSize;
+  UINT32            identityBindingSize;
+  UINT32            endorsementSize;
+  UINT32            platformSize;
+  UINT32            conformanceSize;
+  TPM_PUBKEY        identityKey;
+  UINT8             *labelArea;
+  UINT8             *identityBinding;
+  UINT8             *endorsementCredential;
+  UINT8             *platformCredential;
+  UINT8             *conformanceCredential;
 } TPM_IDENTITY_PROOF;
 
 ///
 /// Part 2, section 12.8 TPM_ASYM_CA_CONTENTS
 ///
 typedef struct tdTPM_ASYM_CA_CONTENTS {
-  TPM_SYMMETRIC_KEY               sessionKey;
-  TPM_DIGEST                      idDigest;
+  TPM_SYMMETRIC_KEY    sessionKey;
+  TPM_DIGEST           idDigest;
 } TPM_ASYM_CA_CONTENTS;
 
 ///
 /// Part 2, section 12.9 TPM_SYM_CA_ATTESTATION
 ///
 typedef struct tdTPM_SYM_CA_ATTESTATION {
-  UINT32                          credSize;
-  TPM_KEY_PARMS                   algorithm;
-  UINT8                           *credential;
+  UINT32           credSize;
+  TPM_KEY_PARMS    algorithm;
+  UINT8            *credential;
 } TPM_SYM_CA_ATTESTATION;
 
 ///
@@ -1274,10 +1267,10 @@
 ///   Placed here out of order because definitions are used in section 13.
 ///
 typedef struct tdTPM_CURRENT_TICKS {
-  TPM_STRUCTURE_TAG                 tag;
-  UINT64                            currentTicks;
-  UINT16                            tickRate;
-  TPM_NONCE                         tickNonce;
+  TPM_STRUCTURE_TAG    tag;
+  UINT64               currentTicks;
+  UINT16               tickRate;
+  TPM_NONCE            tickNonce;
 } TPM_CURRENT_TICKS;
 
 ///
@@ -1288,56 +1281,56 @@
 /// Part 2, section 13.1: TPM _TRANSPORT_PUBLIC
 ///
 typedef struct tdTPM_TRANSPORT_PUBLIC {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_TRANSPORT_ATTRIBUTES        transAttributes;
-  TPM_ALGORITHM_ID                algId;
-  TPM_ENC_SCHEME                  encScheme;
+  TPM_STRUCTURE_TAG           tag;
+  TPM_TRANSPORT_ATTRIBUTES    transAttributes;
+  TPM_ALGORITHM_ID            algId;
+  TPM_ENC_SCHEME              encScheme;
 } TPM_TRANSPORT_PUBLIC;
 
 //
 // Part 2, section 13.1.1 TPM_TRANSPORT_ATTRIBUTES Definitions
 //
-#define TPM_TRANSPORT_ENCRYPT       ((UINT32)BIT0)
-#define TPM_TRANSPORT_LOG           ((UINT32)BIT1)
-#define TPM_TRANSPORT_EXCLUSIVE     ((UINT32)BIT2)
+#define TPM_TRANSPORT_ENCRYPT    ((UINT32)BIT0)
+#define TPM_TRANSPORT_LOG        ((UINT32)BIT1)
+#define TPM_TRANSPORT_EXCLUSIVE  ((UINT32)BIT2)
 
 ///
 /// Part 2, section 13.2 TPM_TRANSPORT_INTERNAL
 ///
 typedef struct tdTPM_TRANSPORT_INTERNAL {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_AUTHDATA                    authData;
-  TPM_TRANSPORT_PUBLIC            transPublic;
-  TPM_TRANSHANDLE                 transHandle;
-  TPM_NONCE                       transNonceEven;
-  TPM_DIGEST                      transDigest;
+  TPM_STRUCTURE_TAG       tag;
+  TPM_AUTHDATA            authData;
+  TPM_TRANSPORT_PUBLIC    transPublic;
+  TPM_TRANSHANDLE         transHandle;
+  TPM_NONCE               transNonceEven;
+  TPM_DIGEST              transDigest;
 } TPM_TRANSPORT_INTERNAL;
 
 ///
 /// Part 2, section 13.3 TPM_TRANSPORT_LOG_IN structure
 ///
 typedef struct tdTPM_TRANSPORT_LOG_IN {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_DIGEST                      parameters;
-  TPM_DIGEST                      pubKeyHash;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_DIGEST           parameters;
+  TPM_DIGEST           pubKeyHash;
 } TPM_TRANSPORT_LOG_IN;
 
 ///
 /// Part 2, section 13.4 TPM_TRANSPORT_LOG_OUT structure
 ///
 typedef struct tdTPM_TRANSPORT_LOG_OUT {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_CURRENT_TICKS               currentTicks;
-  TPM_DIGEST                      parameters;
-  TPM_MODIFIER_INDICATOR          locality;
+  TPM_STRUCTURE_TAG         tag;
+  TPM_CURRENT_TICKS         currentTicks;
+  TPM_DIGEST                parameters;
+  TPM_MODIFIER_INDICATOR    locality;
 } TPM_TRANSPORT_LOG_OUT;
 
 ///
 /// Part 2, section 13.5 TPM_TRANSPORT_AUTH structure
 ///
 typedef struct tdTPM_TRANSPORT_AUTH {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_AUTHDATA                    authData;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_AUTHDATA         authData;
 } TPM_TRANSPORT_AUTH;
 
 //
@@ -1348,28 +1341,28 @@
 /// Part 2, section 14.1 TPM_AUDIT_EVENT_IN structure
 ///
 typedef struct tdTPM_AUDIT_EVENT_IN {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_DIGEST                      inputParms;
-  TPM_COUNTER_VALUE               auditCount;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_DIGEST           inputParms;
+  TPM_COUNTER_VALUE    auditCount;
 } TPM_AUDIT_EVENT_IN;
 
 ///
 /// Part 2, section 14.2 TPM_AUDIT_EVENT_OUT structure
 ///
 typedef struct tdTPM_AUDIT_EVENT_OUT {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_COMMAND_CODE                ordinal;
-  TPM_DIGEST                      outputParms;
-  TPM_COUNTER_VALUE               auditCount;
-  TPM_RESULT                      returnCode;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_COMMAND_CODE     ordinal;
+  TPM_DIGEST           outputParms;
+  TPM_COUNTER_VALUE    auditCount;
+  TPM_RESULT           returnCode;
 } TPM_AUDIT_EVENT_OUT;
 
 //
 // Part 2, section 16: Return Codes
 //
 
-#define TPM_VENDOR_ERROR            TPM_Vendor_Specific32
-#define TPM_NON_FATAL               0x00000800
+#define TPM_VENDOR_ERROR  TPM_Vendor_Specific32
+#define TPM_NON_FATAL     0x00000800
 
 #define TPM_SUCCESS                 ((TPM_RESULT) TPM_BASE)
 #define TPM_AUTHFAIL                ((TPM_RESULT) (TPM_BASE + 1))
@@ -1471,10 +1464,10 @@
 #define TPM_BAD_SIGNATURE           ((TPM_RESULT) (TPM_BASE + 98))
 #define TPM_NOCONTEXTSPACE          ((TPM_RESULT) (TPM_BASE + 99))
 
-#define TPM_RETRY                   ((TPM_RESULT) (TPM_BASE + TPM_NON_FATAL))
-#define TPM_NEEDS_SELFTEST          ((TPM_RESULT) (TPM_BASE + TPM_NON_FATAL + 1))
-#define TPM_DOING_SELFTEST          ((TPM_RESULT) (TPM_BASE + TPM_NON_FATAL + 2))
-#define TPM_DEFEND_LOCK_RUNNING     ((TPM_RESULT) (TPM_BASE + TPM_NON_FATAL + 3))
+#define TPM_RETRY                ((TPM_RESULT) (TPM_BASE + TPM_NON_FATAL))
+#define TPM_NEEDS_SELFTEST       ((TPM_RESULT) (TPM_BASE + TPM_NON_FATAL + 1))
+#define TPM_DOING_SELFTEST       ((TPM_RESULT) (TPM_BASE + TPM_NON_FATAL + 2))
+#define TPM_DEFEND_LOCK_RUNNING  ((TPM_RESULT) (TPM_BASE + TPM_NON_FATAL + 3))
 
 //
 // Part 2, section 17: Ordinals
@@ -1504,131 +1497,131 @@
 //    * All reserved area bits are set to 0.
 //
 
-#define TPM_ORD_ActivateIdentity                  ((TPM_COMMAND_CODE) 0x0000007A)
-#define TPM_ORD_AuthorizeMigrationKey             ((TPM_COMMAND_CODE) 0x0000002B)
-#define TPM_ORD_CertifyKey                        ((TPM_COMMAND_CODE) 0x00000032)
-#define TPM_ORD_CertifyKey2                       ((TPM_COMMAND_CODE) 0x00000033)
-#define TPM_ORD_CertifySelfTest                   ((TPM_COMMAND_CODE) 0x00000052)
-#define TPM_ORD_ChangeAuth                        ((TPM_COMMAND_CODE) 0x0000000C)
-#define TPM_ORD_ChangeAuthAsymFinish              ((TPM_COMMAND_CODE) 0x0000000F)
-#define TPM_ORD_ChangeAuthAsymStart               ((TPM_COMMAND_CODE) 0x0000000E)
-#define TPM_ORD_ChangeAuthOwner                   ((TPM_COMMAND_CODE) 0x00000010)
-#define TPM_ORD_CMK_ApproveMA                     ((TPM_COMMAND_CODE) 0x0000001D)
-#define TPM_ORD_CMK_ConvertMigration              ((TPM_COMMAND_CODE) 0x00000024)
-#define TPM_ORD_CMK_CreateBlob                    ((TPM_COMMAND_CODE) 0x0000001B)
-#define TPM_ORD_CMK_CreateKey                     ((TPM_COMMAND_CODE) 0x00000013)
-#define TPM_ORD_CMK_CreateTicket                  ((TPM_COMMAND_CODE) 0x00000012)
-#define TPM_ORD_CMK_SetRestrictions               ((TPM_COMMAND_CODE) 0x0000001C)
-#define TPM_ORD_ContinueSelfTest                  ((TPM_COMMAND_CODE) 0x00000053)
-#define TPM_ORD_ConvertMigrationBlob              ((TPM_COMMAND_CODE) 0x0000002A)
-#define TPM_ORD_CreateCounter                     ((TPM_COMMAND_CODE) 0x000000DC)
-#define TPM_ORD_CreateEndorsementKeyPair          ((TPM_COMMAND_CODE) 0x00000078)
-#define TPM_ORD_CreateMaintenanceArchive          ((TPM_COMMAND_CODE) 0x0000002C)
-#define TPM_ORD_CreateMigrationBlob               ((TPM_COMMAND_CODE) 0x00000028)
-#define TPM_ORD_CreateRevocableEK                 ((TPM_COMMAND_CODE) 0x0000007F)
-#define TPM_ORD_CreateWrapKey                     ((TPM_COMMAND_CODE) 0x0000001F)
-#define TPM_ORD_DAA_JOIN                          ((TPM_COMMAND_CODE) 0x00000029)
-#define TPM_ORD_DAA_SIGN                          ((TPM_COMMAND_CODE) 0x00000031)
-#define TPM_ORD_Delegate_CreateKeyDelegation      ((TPM_COMMAND_CODE) 0x000000D4)
-#define TPM_ORD_Delegate_CreateOwnerDelegation    ((TPM_COMMAND_CODE) 0x000000D5)
-#define TPM_ORD_Delegate_LoadOwnerDelegation      ((TPM_COMMAND_CODE) 0x000000D8)
-#define TPM_ORD_Delegate_Manage                   ((TPM_COMMAND_CODE) 0x000000D2)
-#define TPM_ORD_Delegate_ReadTable                ((TPM_COMMAND_CODE) 0x000000DB)
-#define TPM_ORD_Delegate_UpdateVerification       ((TPM_COMMAND_CODE) 0x000000D1)
-#define TPM_ORD_Delegate_VerifyDelegation         ((TPM_COMMAND_CODE) 0x000000D6)
-#define TPM_ORD_DirRead                           ((TPM_COMMAND_CODE) 0x0000001A)
-#define TPM_ORD_DirWriteAuth                      ((TPM_COMMAND_CODE) 0x00000019)
-#define TPM_ORD_DisableForceClear                 ((TPM_COMMAND_CODE) 0x0000005E)
-#define TPM_ORD_DisableOwnerClear                 ((TPM_COMMAND_CODE) 0x0000005C)
-#define TPM_ORD_DisablePubekRead                  ((TPM_COMMAND_CODE) 0x0000007E)
-#define TPM_ORD_DSAP                              ((TPM_COMMAND_CODE) 0x00000011)
-#define TPM_ORD_EstablishTransport                ((TPM_COMMAND_CODE) 0x000000E6)
-#define TPM_ORD_EvictKey                          ((TPM_COMMAND_CODE) 0x00000022)
-#define TPM_ORD_ExecuteTransport                  ((TPM_COMMAND_CODE) 0x000000E7)
-#define TPM_ORD_Extend                            ((TPM_COMMAND_CODE) 0x00000014)
-#define TPM_ORD_FieldUpgrade                      ((TPM_COMMAND_CODE) 0x000000AA)
-#define TPM_ORD_FlushSpecific                     ((TPM_COMMAND_CODE) 0x000000BA)
-#define TPM_ORD_ForceClear                        ((TPM_COMMAND_CODE) 0x0000005D)
-#define TPM_ORD_GetAuditDigest                    ((TPM_COMMAND_CODE) 0x00000085)
-#define TPM_ORD_GetAuditDigestSigned              ((TPM_COMMAND_CODE) 0x00000086)
-#define TPM_ORD_GetAuditEvent                     ((TPM_COMMAND_CODE) 0x00000082)
-#define TPM_ORD_GetAuditEventSigned               ((TPM_COMMAND_CODE) 0x00000083)
-#define TPM_ORD_GetCapability                     ((TPM_COMMAND_CODE) 0x00000065)
-#define TPM_ORD_GetCapabilityOwner                ((TPM_COMMAND_CODE) 0x00000066)
-#define TPM_ORD_GetCapabilitySigned               ((TPM_COMMAND_CODE) 0x00000064)
-#define TPM_ORD_GetOrdinalAuditStatus             ((TPM_COMMAND_CODE) 0x0000008C)
-#define TPM_ORD_GetPubKey                         ((TPM_COMMAND_CODE) 0x00000021)
-#define TPM_ORD_GetRandom                         ((TPM_COMMAND_CODE) 0x00000046)
-#define TPM_ORD_GetTestResult                     ((TPM_COMMAND_CODE) 0x00000054)
-#define TPM_ORD_GetTicks                          ((TPM_COMMAND_CODE) 0x000000F1)
-#define TPM_ORD_IncrementCounter                  ((TPM_COMMAND_CODE) 0x000000DD)
-#define TPM_ORD_Init                              ((TPM_COMMAND_CODE) 0x00000097)
-#define TPM_ORD_KeyControlOwner                   ((TPM_COMMAND_CODE) 0x00000023)
-#define TPM_ORD_KillMaintenanceFeature            ((TPM_COMMAND_CODE) 0x0000002E)
-#define TPM_ORD_LoadAuthContext                   ((TPM_COMMAND_CODE) 0x000000B7)
-#define TPM_ORD_LoadContext                       ((TPM_COMMAND_CODE) 0x000000B9)
-#define TPM_ORD_LoadKey                           ((TPM_COMMAND_CODE) 0x00000020)
-#define TPM_ORD_LoadKey2                          ((TPM_COMMAND_CODE) 0x00000041)
-#define TPM_ORD_LoadKeyContext                    ((TPM_COMMAND_CODE) 0x000000B5)
-#define TPM_ORD_LoadMaintenanceArchive            ((TPM_COMMAND_CODE) 0x0000002D)
-#define TPM_ORD_LoadManuMaintPub                  ((TPM_COMMAND_CODE) 0x0000002F)
-#define TPM_ORD_MakeIdentity                      ((TPM_COMMAND_CODE) 0x00000079)
-#define TPM_ORD_MigrateKey                        ((TPM_COMMAND_CODE) 0x00000025)
-#define TPM_ORD_NV_DefineSpace                    ((TPM_COMMAND_CODE) 0x000000CC)
-#define TPM_ORD_NV_ReadValue                      ((TPM_COMMAND_CODE) 0x000000CF)
-#define TPM_ORD_NV_ReadValueAuth                  ((TPM_COMMAND_CODE) 0x000000D0)
-#define TPM_ORD_NV_WriteValue                     ((TPM_COMMAND_CODE) 0x000000CD)
-#define TPM_ORD_NV_WriteValueAuth                 ((TPM_COMMAND_CODE) 0x000000CE)
-#define TPM_ORD_OIAP                              ((TPM_COMMAND_CODE) 0x0000000A)
-#define TPM_ORD_OSAP                              ((TPM_COMMAND_CODE) 0x0000000B)
-#define TPM_ORD_OwnerClear                        ((TPM_COMMAND_CODE) 0x0000005B)
-#define TPM_ORD_OwnerReadInternalPub              ((TPM_COMMAND_CODE) 0x00000081)
-#define TPM_ORD_OwnerReadPubek                    ((TPM_COMMAND_CODE) 0x0000007D)
-#define TPM_ORD_OwnerSetDisable                   ((TPM_COMMAND_CODE) 0x0000006E)
-#define TPM_ORD_PCR_Reset                         ((TPM_COMMAND_CODE) 0x000000C8)
-#define TPM_ORD_PcrRead                           ((TPM_COMMAND_CODE) 0x00000015)
-#define TPM_ORD_PhysicalDisable                   ((TPM_COMMAND_CODE) 0x00000070)
-#define TPM_ORD_PhysicalEnable                    ((TPM_COMMAND_CODE) 0x0000006F)
-#define TPM_ORD_PhysicalSetDeactivated            ((TPM_COMMAND_CODE) 0x00000072)
-#define TPM_ORD_Quote                             ((TPM_COMMAND_CODE) 0x00000016)
-#define TPM_ORD_Quote2                            ((TPM_COMMAND_CODE) 0x0000003E)
-#define TPM_ORD_ReadCounter                       ((TPM_COMMAND_CODE) 0x000000DE)
-#define TPM_ORD_ReadManuMaintPub                  ((TPM_COMMAND_CODE) 0x00000030)
-#define TPM_ORD_ReadPubek                         ((TPM_COMMAND_CODE) 0x0000007C)
-#define TPM_ORD_ReleaseCounter                    ((TPM_COMMAND_CODE) 0x000000DF)
-#define TPM_ORD_ReleaseCounterOwner               ((TPM_COMMAND_CODE) 0x000000E0)
-#define TPM_ORD_ReleaseTransportSigned            ((TPM_COMMAND_CODE) 0x000000E8)
-#define TPM_ORD_Reset                             ((TPM_COMMAND_CODE) 0x0000005A)
-#define TPM_ORD_ResetLockValue                    ((TPM_COMMAND_CODE) 0x00000040)
-#define TPM_ORD_RevokeTrust                       ((TPM_COMMAND_CODE) 0x00000080)
-#define TPM_ORD_SaveAuthContext                   ((TPM_COMMAND_CODE) 0x000000B6)
-#define TPM_ORD_SaveContext                       ((TPM_COMMAND_CODE) 0x000000B8)
-#define TPM_ORD_SaveKeyContext                    ((TPM_COMMAND_CODE) 0x000000B4)
-#define TPM_ORD_SaveState                         ((TPM_COMMAND_CODE) 0x00000098)
-#define TPM_ORD_Seal                              ((TPM_COMMAND_CODE) 0x00000017)
-#define TPM_ORD_Sealx                             ((TPM_COMMAND_CODE) 0x0000003D)
-#define TPM_ORD_SelfTestFull                      ((TPM_COMMAND_CODE) 0x00000050)
-#define TPM_ORD_SetCapability                     ((TPM_COMMAND_CODE) 0x0000003F)
-#define TPM_ORD_SetOperatorAuth                   ((TPM_COMMAND_CODE) 0x00000074)
-#define TPM_ORD_SetOrdinalAuditStatus             ((TPM_COMMAND_CODE) 0x0000008D)
-#define TPM_ORD_SetOwnerInstall                   ((TPM_COMMAND_CODE) 0x00000071)
-#define TPM_ORD_SetOwnerPointer                   ((TPM_COMMAND_CODE) 0x00000075)
-#define TPM_ORD_SetRedirection                    ((TPM_COMMAND_CODE) 0x0000009A)
-#define TPM_ORD_SetTempDeactivated                ((TPM_COMMAND_CODE) 0x00000073)
-#define TPM_ORD_SHA1Complete                      ((TPM_COMMAND_CODE) 0x000000A2)
-#define TPM_ORD_SHA1CompleteExtend                ((TPM_COMMAND_CODE) 0x000000A3)
-#define TPM_ORD_SHA1Start                         ((TPM_COMMAND_CODE) 0x000000A0)
-#define TPM_ORD_SHA1Update                        ((TPM_COMMAND_CODE) 0x000000A1)
-#define TPM_ORD_Sign                              ((TPM_COMMAND_CODE) 0x0000003C)
-#define TPM_ORD_Startup                           ((TPM_COMMAND_CODE) 0x00000099)
-#define TPM_ORD_StirRandom                        ((TPM_COMMAND_CODE) 0x00000047)
-#define TPM_ORD_TakeOwnership                     ((TPM_COMMAND_CODE) 0x0000000D)
-#define TPM_ORD_Terminate_Handle                  ((TPM_COMMAND_CODE) 0x00000096)
-#define TPM_ORD_TickStampBlob                     ((TPM_COMMAND_CODE) 0x000000F2)
-#define TPM_ORD_UnBind                            ((TPM_COMMAND_CODE) 0x0000001E)
-#define TPM_ORD_Unseal                            ((TPM_COMMAND_CODE) 0x00000018)
-#define TSC_ORD_PhysicalPresence                  ((TPM_COMMAND_CODE) 0x4000000A)
-#define TSC_ORD_ResetEstablishmentBit             ((TPM_COMMAND_CODE) 0x4000000B)
+#define TPM_ORD_ActivateIdentity                ((TPM_COMMAND_CODE) 0x0000007A)
+#define TPM_ORD_AuthorizeMigrationKey           ((TPM_COMMAND_CODE) 0x0000002B)
+#define TPM_ORD_CertifyKey                      ((TPM_COMMAND_CODE) 0x00000032)
+#define TPM_ORD_CertifyKey2                     ((TPM_COMMAND_CODE) 0x00000033)
+#define TPM_ORD_CertifySelfTest                 ((TPM_COMMAND_CODE) 0x00000052)
+#define TPM_ORD_ChangeAuth                      ((TPM_COMMAND_CODE) 0x0000000C)
+#define TPM_ORD_ChangeAuthAsymFinish            ((TPM_COMMAND_CODE) 0x0000000F)
+#define TPM_ORD_ChangeAuthAsymStart             ((TPM_COMMAND_CODE) 0x0000000E)
+#define TPM_ORD_ChangeAuthOwner                 ((TPM_COMMAND_CODE) 0x00000010)
+#define TPM_ORD_CMK_ApproveMA                   ((TPM_COMMAND_CODE) 0x0000001D)
+#define TPM_ORD_CMK_ConvertMigration            ((TPM_COMMAND_CODE) 0x00000024)
+#define TPM_ORD_CMK_CreateBlob                  ((TPM_COMMAND_CODE) 0x0000001B)
+#define TPM_ORD_CMK_CreateKey                   ((TPM_COMMAND_CODE) 0x00000013)
+#define TPM_ORD_CMK_CreateTicket                ((TPM_COMMAND_CODE) 0x00000012)
+#define TPM_ORD_CMK_SetRestrictions             ((TPM_COMMAND_CODE) 0x0000001C)
+#define TPM_ORD_ContinueSelfTest                ((TPM_COMMAND_CODE) 0x00000053)
+#define TPM_ORD_ConvertMigrationBlob            ((TPM_COMMAND_CODE) 0x0000002A)
+#define TPM_ORD_CreateCounter                   ((TPM_COMMAND_CODE) 0x000000DC)
+#define TPM_ORD_CreateEndorsementKeyPair        ((TPM_COMMAND_CODE) 0x00000078)
+#define TPM_ORD_CreateMaintenanceArchive        ((TPM_COMMAND_CODE) 0x0000002C)
+#define TPM_ORD_CreateMigrationBlob             ((TPM_COMMAND_CODE) 0x00000028)
+#define TPM_ORD_CreateRevocableEK               ((TPM_COMMAND_CODE) 0x0000007F)
+#define TPM_ORD_CreateWrapKey                   ((TPM_COMMAND_CODE) 0x0000001F)
+#define TPM_ORD_DAA_JOIN                        ((TPM_COMMAND_CODE) 0x00000029)
+#define TPM_ORD_DAA_SIGN                        ((TPM_COMMAND_CODE) 0x00000031)
+#define TPM_ORD_Delegate_CreateKeyDelegation    ((TPM_COMMAND_CODE) 0x000000D4)
+#define TPM_ORD_Delegate_CreateOwnerDelegation  ((TPM_COMMAND_CODE) 0x000000D5)
+#define TPM_ORD_Delegate_LoadOwnerDelegation    ((TPM_COMMAND_CODE) 0x000000D8)
+#define TPM_ORD_Delegate_Manage                 ((TPM_COMMAND_CODE) 0x000000D2)
+#define TPM_ORD_Delegate_ReadTable              ((TPM_COMMAND_CODE) 0x000000DB)
+#define TPM_ORD_Delegate_UpdateVerification     ((TPM_COMMAND_CODE) 0x000000D1)
+#define TPM_ORD_Delegate_VerifyDelegation       ((TPM_COMMAND_CODE) 0x000000D6)
+#define TPM_ORD_DirRead                         ((TPM_COMMAND_CODE) 0x0000001A)
+#define TPM_ORD_DirWriteAuth                    ((TPM_COMMAND_CODE) 0x00000019)
+#define TPM_ORD_DisableForceClear               ((TPM_COMMAND_CODE) 0x0000005E)
+#define TPM_ORD_DisableOwnerClear               ((TPM_COMMAND_CODE) 0x0000005C)
+#define TPM_ORD_DisablePubekRead                ((TPM_COMMAND_CODE) 0x0000007E)
+#define TPM_ORD_DSAP                            ((TPM_COMMAND_CODE) 0x00000011)
+#define TPM_ORD_EstablishTransport              ((TPM_COMMAND_CODE) 0x000000E6)
+#define TPM_ORD_EvictKey                        ((TPM_COMMAND_CODE) 0x00000022)
+#define TPM_ORD_ExecuteTransport                ((TPM_COMMAND_CODE) 0x000000E7)
+#define TPM_ORD_Extend                          ((TPM_COMMAND_CODE) 0x00000014)
+#define TPM_ORD_FieldUpgrade                    ((TPM_COMMAND_CODE) 0x000000AA)
+#define TPM_ORD_FlushSpecific                   ((TPM_COMMAND_CODE) 0x000000BA)
+#define TPM_ORD_ForceClear                      ((TPM_COMMAND_CODE) 0x0000005D)
+#define TPM_ORD_GetAuditDigest                  ((TPM_COMMAND_CODE) 0x00000085)
+#define TPM_ORD_GetAuditDigestSigned            ((TPM_COMMAND_CODE) 0x00000086)
+#define TPM_ORD_GetAuditEvent                   ((TPM_COMMAND_CODE) 0x00000082)
+#define TPM_ORD_GetAuditEventSigned             ((TPM_COMMAND_CODE) 0x00000083)
+#define TPM_ORD_GetCapability                   ((TPM_COMMAND_CODE) 0x00000065)
+#define TPM_ORD_GetCapabilityOwner              ((TPM_COMMAND_CODE) 0x00000066)
+#define TPM_ORD_GetCapabilitySigned             ((TPM_COMMAND_CODE) 0x00000064)
+#define TPM_ORD_GetOrdinalAuditStatus           ((TPM_COMMAND_CODE) 0x0000008C)
+#define TPM_ORD_GetPubKey                       ((TPM_COMMAND_CODE) 0x00000021)
+#define TPM_ORD_GetRandom                       ((TPM_COMMAND_CODE) 0x00000046)
+#define TPM_ORD_GetTestResult                   ((TPM_COMMAND_CODE) 0x00000054)
+#define TPM_ORD_GetTicks                        ((TPM_COMMAND_CODE) 0x000000F1)
+#define TPM_ORD_IncrementCounter                ((TPM_COMMAND_CODE) 0x000000DD)
+#define TPM_ORD_Init                            ((TPM_COMMAND_CODE) 0x00000097)
+#define TPM_ORD_KeyControlOwner                 ((TPM_COMMAND_CODE) 0x00000023)
+#define TPM_ORD_KillMaintenanceFeature          ((TPM_COMMAND_CODE) 0x0000002E)
+#define TPM_ORD_LoadAuthContext                 ((TPM_COMMAND_CODE) 0x000000B7)
+#define TPM_ORD_LoadContext                     ((TPM_COMMAND_CODE) 0x000000B9)
+#define TPM_ORD_LoadKey                         ((TPM_COMMAND_CODE) 0x00000020)
+#define TPM_ORD_LoadKey2                        ((TPM_COMMAND_CODE) 0x00000041)
+#define TPM_ORD_LoadKeyContext                  ((TPM_COMMAND_CODE) 0x000000B5)
+#define TPM_ORD_LoadMaintenanceArchive          ((TPM_COMMAND_CODE) 0x0000002D)
+#define TPM_ORD_LoadManuMaintPub                ((TPM_COMMAND_CODE) 0x0000002F)
+#define TPM_ORD_MakeIdentity                    ((TPM_COMMAND_CODE) 0x00000079)
+#define TPM_ORD_MigrateKey                      ((TPM_COMMAND_CODE) 0x00000025)
+#define TPM_ORD_NV_DefineSpace                  ((TPM_COMMAND_CODE) 0x000000CC)
+#define TPM_ORD_NV_ReadValue                    ((TPM_COMMAND_CODE) 0x000000CF)
+#define TPM_ORD_NV_ReadValueAuth                ((TPM_COMMAND_CODE) 0x000000D0)
+#define TPM_ORD_NV_WriteValue                   ((TPM_COMMAND_CODE) 0x000000CD)
+#define TPM_ORD_NV_WriteValueAuth               ((TPM_COMMAND_CODE) 0x000000CE)
+#define TPM_ORD_OIAP                            ((TPM_COMMAND_CODE) 0x0000000A)
+#define TPM_ORD_OSAP                            ((TPM_COMMAND_CODE) 0x0000000B)
+#define TPM_ORD_OwnerClear                      ((TPM_COMMAND_CODE) 0x0000005B)
+#define TPM_ORD_OwnerReadInternalPub            ((TPM_COMMAND_CODE) 0x00000081)
+#define TPM_ORD_OwnerReadPubek                  ((TPM_COMMAND_CODE) 0x0000007D)
+#define TPM_ORD_OwnerSetDisable                 ((TPM_COMMAND_CODE) 0x0000006E)
+#define TPM_ORD_PCR_Reset                       ((TPM_COMMAND_CODE) 0x000000C8)
+#define TPM_ORD_PcrRead                         ((TPM_COMMAND_CODE) 0x00000015)
+#define TPM_ORD_PhysicalDisable                 ((TPM_COMMAND_CODE) 0x00000070)
+#define TPM_ORD_PhysicalEnable                  ((TPM_COMMAND_CODE) 0x0000006F)
+#define TPM_ORD_PhysicalSetDeactivated          ((TPM_COMMAND_CODE) 0x00000072)
+#define TPM_ORD_Quote                           ((TPM_COMMAND_CODE) 0x00000016)
+#define TPM_ORD_Quote2                          ((TPM_COMMAND_CODE) 0x0000003E)
+#define TPM_ORD_ReadCounter                     ((TPM_COMMAND_CODE) 0x000000DE)
+#define TPM_ORD_ReadManuMaintPub                ((TPM_COMMAND_CODE) 0x00000030)
+#define TPM_ORD_ReadPubek                       ((TPM_COMMAND_CODE) 0x0000007C)
+#define TPM_ORD_ReleaseCounter                  ((TPM_COMMAND_CODE) 0x000000DF)
+#define TPM_ORD_ReleaseCounterOwner             ((TPM_COMMAND_CODE) 0x000000E0)
+#define TPM_ORD_ReleaseTransportSigned          ((TPM_COMMAND_CODE) 0x000000E8)
+#define TPM_ORD_Reset                           ((TPM_COMMAND_CODE) 0x0000005A)
+#define TPM_ORD_ResetLockValue                  ((TPM_COMMAND_CODE) 0x00000040)
+#define TPM_ORD_RevokeTrust                     ((TPM_COMMAND_CODE) 0x00000080)
+#define TPM_ORD_SaveAuthContext                 ((TPM_COMMAND_CODE) 0x000000B6)
+#define TPM_ORD_SaveContext                     ((TPM_COMMAND_CODE) 0x000000B8)
+#define TPM_ORD_SaveKeyContext                  ((TPM_COMMAND_CODE) 0x000000B4)
+#define TPM_ORD_SaveState                       ((TPM_COMMAND_CODE) 0x00000098)
+#define TPM_ORD_Seal                            ((TPM_COMMAND_CODE) 0x00000017)
+#define TPM_ORD_Sealx                           ((TPM_COMMAND_CODE) 0x0000003D)
+#define TPM_ORD_SelfTestFull                    ((TPM_COMMAND_CODE) 0x00000050)
+#define TPM_ORD_SetCapability                   ((TPM_COMMAND_CODE) 0x0000003F)
+#define TPM_ORD_SetOperatorAuth                 ((TPM_COMMAND_CODE) 0x00000074)
+#define TPM_ORD_SetOrdinalAuditStatus           ((TPM_COMMAND_CODE) 0x0000008D)
+#define TPM_ORD_SetOwnerInstall                 ((TPM_COMMAND_CODE) 0x00000071)
+#define TPM_ORD_SetOwnerPointer                 ((TPM_COMMAND_CODE) 0x00000075)
+#define TPM_ORD_SetRedirection                  ((TPM_COMMAND_CODE) 0x0000009A)
+#define TPM_ORD_SetTempDeactivated              ((TPM_COMMAND_CODE) 0x00000073)
+#define TPM_ORD_SHA1Complete                    ((TPM_COMMAND_CODE) 0x000000A2)
+#define TPM_ORD_SHA1CompleteExtend              ((TPM_COMMAND_CODE) 0x000000A3)
+#define TPM_ORD_SHA1Start                       ((TPM_COMMAND_CODE) 0x000000A0)
+#define TPM_ORD_SHA1Update                      ((TPM_COMMAND_CODE) 0x000000A1)
+#define TPM_ORD_Sign                            ((TPM_COMMAND_CODE) 0x0000003C)
+#define TPM_ORD_Startup                         ((TPM_COMMAND_CODE) 0x00000099)
+#define TPM_ORD_StirRandom                      ((TPM_COMMAND_CODE) 0x00000047)
+#define TPM_ORD_TakeOwnership                   ((TPM_COMMAND_CODE) 0x0000000D)
+#define TPM_ORD_Terminate_Handle                ((TPM_COMMAND_CODE) 0x00000096)
+#define TPM_ORD_TickStampBlob                   ((TPM_COMMAND_CODE) 0x000000F2)
+#define TPM_ORD_UnBind                          ((TPM_COMMAND_CODE) 0x0000001E)
+#define TPM_ORD_Unseal                          ((TPM_COMMAND_CODE) 0x00000018)
+#define TSC_ORD_PhysicalPresence                ((TPM_COMMAND_CODE) 0x4000000A)
+#define TSC_ORD_ResetEstablishmentBit           ((TPM_COMMAND_CODE) 0x4000000B)
 
 //
 // Part 2, section 18: Context structures
@@ -1638,26 +1631,26 @@
 /// Part 2, section 18.1: TPM_CONTEXT_BLOB
 ///
 typedef struct tdTPM_CONTEXT_BLOB {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_RESOURCE_TYPE               resourceType;
-  TPM_HANDLE                      handle;
-  UINT8                           label[16];
-  UINT32                          contextCount;
-  TPM_DIGEST                      integrityDigest;
-  UINT32                          additionalSize;
-  UINT8                           *additionalData;
-  UINT32                          sensitiveSize;
-  UINT8                           *sensitiveData;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_RESOURCE_TYPE    resourceType;
+  TPM_HANDLE           handle;
+  UINT8                label[16];
+  UINT32               contextCount;
+  TPM_DIGEST           integrityDigest;
+  UINT32               additionalSize;
+  UINT8                *additionalData;
+  UINT32               sensitiveSize;
+  UINT8                *sensitiveData;
 } TPM_CONTEXT_BLOB;
 
 ///
 /// Part 2, section 18.2 TPM_CONTEXT_SENSITIVE
 ///
 typedef struct tdTPM_CONTEXT_SENSITIVE {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_NONCE                       contextNonce;
-  UINT32                          internalSize;
-  UINT8                           *internalData;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_NONCE            contextNonce;
+  UINT32               internalSize;
+  UINT8                *internalData;
 } TPM_CONTEXT_SENSITIVE;
 
 //
@@ -1667,382 +1660,382 @@
 //
 // Part 2, section 19.1.1: Required TPM_NV_INDEX values
 //
-#define TPM_NV_INDEX_LOCK              ((UINT32)0xffffffff)
-#define TPM_NV_INDEX0                  ((UINT32)0x00000000)
-#define TPM_NV_INDEX_DIR               ((UINT32)0x10000001)
-#define TPM_NV_INDEX_EKCert            ((UINT32)0x0000f000)
-#define TPM_NV_INDEX_TPM_CC            ((UINT32)0x0000f001)
-#define TPM_NV_INDEX_PlatformCert      ((UINT32)0x0000f002)
-#define TPM_NV_INDEX_Platform_CC       ((UINT32)0x0000f003)
+#define TPM_NV_INDEX_LOCK          ((UINT32)0xffffffff)
+#define TPM_NV_INDEX0              ((UINT32)0x00000000)
+#define TPM_NV_INDEX_DIR           ((UINT32)0x10000001)
+#define TPM_NV_INDEX_EKCert        ((UINT32)0x0000f000)
+#define TPM_NV_INDEX_TPM_CC        ((UINT32)0x0000f001)
+#define TPM_NV_INDEX_PlatformCert  ((UINT32)0x0000f002)
+#define TPM_NV_INDEX_Platform_CC   ((UINT32)0x0000f003)
 //
 // Part 2, section 19.1.2: Reserved Index values
 //
-#define TPM_NV_INDEX_TSS_BASE          ((UINT32)0x00011100)
-#define TPM_NV_INDEX_PC_BASE           ((UINT32)0x00011200)
-#define TPM_NV_INDEX_SERVER_BASE       ((UINT32)0x00011300)
-#define TPM_NV_INDEX_MOBILE_BASE       ((UINT32)0x00011400)
-#define TPM_NV_INDEX_PERIPHERAL_BASE   ((UINT32)0x00011500)
-#define TPM_NV_INDEX_GROUP_RESV_BASE   ((UINT32)0x00010000)
+#define TPM_NV_INDEX_TSS_BASE         ((UINT32)0x00011100)
+#define TPM_NV_INDEX_PC_BASE          ((UINT32)0x00011200)
+#define TPM_NV_INDEX_SERVER_BASE      ((UINT32)0x00011300)
+#define TPM_NV_INDEX_MOBILE_BASE      ((UINT32)0x00011400)
+#define TPM_NV_INDEX_PERIPHERAL_BASE  ((UINT32)0x00011500)
+#define TPM_NV_INDEX_GROUP_RESV_BASE  ((UINT32)0x00010000)
 
 ///
 /// Part 2, section 19.2: TPM_NV_ATTRIBUTES
 ///
 typedef struct tdTPM_NV_ATTRIBUTES {
-  TPM_STRUCTURE_TAG               tag;
-  UINT32                          attributes;
+  TPM_STRUCTURE_TAG    tag;
+  UINT32               attributes;
 } TPM_NV_ATTRIBUTES;
 
-#define TPM_NV_PER_READ_STCLEAR        (BIT31)
-#define TPM_NV_PER_AUTHREAD            (BIT18)
-#define TPM_NV_PER_OWNERREAD           (BIT17)
-#define TPM_NV_PER_PPREAD              (BIT16)
-#define TPM_NV_PER_GLOBALLOCK          (BIT15)
-#define TPM_NV_PER_WRITE_STCLEAR       (BIT14)
-#define TPM_NV_PER_WRITEDEFINE         (BIT13)
-#define TPM_NV_PER_WRITEALL            (BIT12)
-#define TPM_NV_PER_AUTHWRITE           (BIT2)
-#define TPM_NV_PER_OWNERWRITE          (BIT1)
-#define TPM_NV_PER_PPWRITE             (BIT0)
+#define TPM_NV_PER_READ_STCLEAR   (BIT31)
+#define TPM_NV_PER_AUTHREAD       (BIT18)
+#define TPM_NV_PER_OWNERREAD      (BIT17)
+#define TPM_NV_PER_PPREAD         (BIT16)
+#define TPM_NV_PER_GLOBALLOCK     (BIT15)
+#define TPM_NV_PER_WRITE_STCLEAR  (BIT14)
+#define TPM_NV_PER_WRITEDEFINE    (BIT13)
+#define TPM_NV_PER_WRITEALL       (BIT12)
+#define TPM_NV_PER_AUTHWRITE      (BIT2)
+#define TPM_NV_PER_OWNERWRITE     (BIT1)
+#define TPM_NV_PER_PPWRITE        (BIT0)
 
 ///
 /// Part 2, section 19.3: TPM_NV_DATA_PUBLIC
 ///
 typedef struct tdTPM_NV_DATA_PUBLIC {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_NV_INDEX                    nvIndex;
-  TPM_PCR_INFO_SHORT              pcrInfoRead;
-  TPM_PCR_INFO_SHORT              pcrInfoWrite;
-  TPM_NV_ATTRIBUTES               permission;
-  BOOLEAN                         bReadSTClear;
-  BOOLEAN                         bWriteSTClear;
-  BOOLEAN                         bWriteDefine;
-  UINT32                          dataSize;
+  TPM_STRUCTURE_TAG     tag;
+  TPM_NV_INDEX          nvIndex;
+  TPM_PCR_INFO_SHORT    pcrInfoRead;
+  TPM_PCR_INFO_SHORT    pcrInfoWrite;
+  TPM_NV_ATTRIBUTES     permission;
+  BOOLEAN               bReadSTClear;
+  BOOLEAN               bWriteSTClear;
+  BOOLEAN               bWriteDefine;
+  UINT32                dataSize;
 } TPM_NV_DATA_PUBLIC;
 
 //
 // Part 2, section 20: Delegate Structures
 //
 
-#define TPM_DEL_OWNER_BITS          ((UINT32)0x00000001)
-#define TPM_DEL_KEY_BITS            ((UINT32)0x00000002)
+#define TPM_DEL_OWNER_BITS  ((UINT32)0x00000001)
+#define TPM_DEL_KEY_BITS    ((UINT32)0x00000002)
 ///
 /// Part 2, section 20.2: Delegate Definitions
 ///
 typedef struct tdTPM_DELEGATIONS {
-  TPM_STRUCTURE_TAG               tag;
-  UINT32                          delegateType;
-  UINT32                          per1;
-  UINT32                          per2;
+  TPM_STRUCTURE_TAG    tag;
+  UINT32               delegateType;
+  UINT32               per1;
+  UINT32               per2;
 } TPM_DELEGATIONS;
 
 //
 // Part 2, section 20.2.1: Owner Permission Settings
 //
-#define TPM_DELEGATE_SetOrdinalAuditStatus          (BIT30)
-#define TPM_DELEGATE_DirWriteAuth                   (BIT29)
-#define TPM_DELEGATE_CMK_ApproveMA                  (BIT28)
-#define TPM_DELEGATE_NV_WriteValue                  (BIT27)
-#define TPM_DELEGATE_CMK_CreateTicket               (BIT26)
-#define TPM_DELEGATE_NV_ReadValue                   (BIT25)
-#define TPM_DELEGATE_Delegate_LoadOwnerDelegation   (BIT24)
-#define TPM_DELEGATE_DAA_Join                       (BIT23)
-#define TPM_DELEGATE_AuthorizeMigrationKey          (BIT22)
-#define TPM_DELEGATE_CreateMaintenanceArchive       (BIT21)
-#define TPM_DELEGATE_LoadMaintenanceArchive         (BIT20)
-#define TPM_DELEGATE_KillMaintenanceFeature         (BIT19)
-#define TPM_DELEGATE_OwnerReadInteralPub            (BIT18)
-#define TPM_DELEGATE_ResetLockValue                 (BIT17)
-#define TPM_DELEGATE_OwnerClear                     (BIT16)
-#define TPM_DELEGATE_DisableOwnerClear              (BIT15)
-#define TPM_DELEGATE_NV_DefineSpace                 (BIT14)
-#define TPM_DELEGATE_OwnerSetDisable                (BIT13)
-#define TPM_DELEGATE_SetCapability                  (BIT12)
-#define TPM_DELEGATE_MakeIdentity                   (BIT11)
-#define TPM_DELEGATE_ActivateIdentity               (BIT10)
-#define TPM_DELEGATE_OwnerReadPubek                 (BIT9)
-#define TPM_DELEGATE_DisablePubekRead               (BIT8)
-#define TPM_DELEGATE_SetRedirection                 (BIT7)
-#define TPM_DELEGATE_FieldUpgrade                   (BIT6)
-#define TPM_DELEGATE_Delegate_UpdateVerification    (BIT5)
-#define TPM_DELEGATE_CreateCounter                  (BIT4)
-#define TPM_DELEGATE_ReleaseCounterOwner            (BIT3)
-#define TPM_DELEGATE_DelegateManage                 (BIT2)
-#define TPM_DELEGATE_Delegate_CreateOwnerDelegation (BIT1)
-#define TPM_DELEGATE_DAA_Sign                       (BIT0)
+#define TPM_DELEGATE_SetOrdinalAuditStatus           (BIT30)
+#define TPM_DELEGATE_DirWriteAuth                    (BIT29)
+#define TPM_DELEGATE_CMK_ApproveMA                   (BIT28)
+#define TPM_DELEGATE_NV_WriteValue                   (BIT27)
+#define TPM_DELEGATE_CMK_CreateTicket                (BIT26)
+#define TPM_DELEGATE_NV_ReadValue                    (BIT25)
+#define TPM_DELEGATE_Delegate_LoadOwnerDelegation    (BIT24)
+#define TPM_DELEGATE_DAA_Join                        (BIT23)
+#define TPM_DELEGATE_AuthorizeMigrationKey           (BIT22)
+#define TPM_DELEGATE_CreateMaintenanceArchive        (BIT21)
+#define TPM_DELEGATE_LoadMaintenanceArchive          (BIT20)
+#define TPM_DELEGATE_KillMaintenanceFeature          (BIT19)
+#define TPM_DELEGATE_OwnerReadInteralPub             (BIT18)
+#define TPM_DELEGATE_ResetLockValue                  (BIT17)
+#define TPM_DELEGATE_OwnerClear                      (BIT16)
+#define TPM_DELEGATE_DisableOwnerClear               (BIT15)
+#define TPM_DELEGATE_NV_DefineSpace                  (BIT14)
+#define TPM_DELEGATE_OwnerSetDisable                 (BIT13)
+#define TPM_DELEGATE_SetCapability                   (BIT12)
+#define TPM_DELEGATE_MakeIdentity                    (BIT11)
+#define TPM_DELEGATE_ActivateIdentity                (BIT10)
+#define TPM_DELEGATE_OwnerReadPubek                  (BIT9)
+#define TPM_DELEGATE_DisablePubekRead                (BIT8)
+#define TPM_DELEGATE_SetRedirection                  (BIT7)
+#define TPM_DELEGATE_FieldUpgrade                    (BIT6)
+#define TPM_DELEGATE_Delegate_UpdateVerification     (BIT5)
+#define TPM_DELEGATE_CreateCounter                   (BIT4)
+#define TPM_DELEGATE_ReleaseCounterOwner             (BIT3)
+#define TPM_DELEGATE_DelegateManage                  (BIT2)
+#define TPM_DELEGATE_Delegate_CreateOwnerDelegation  (BIT1)
+#define TPM_DELEGATE_DAA_Sign                        (BIT0)
 
 //
 // Part 2, section 20.2.3: Key Permission settings
 //
-#define TPM_KEY_DELEGATE_CMK_ConvertMigration       (BIT28)
-#define TPM_KEY_DELEGATE_TickStampBlob              (BIT27)
-#define TPM_KEY_DELEGATE_ChangeAuthAsymStart        (BIT26)
-#define TPM_KEY_DELEGATE_ChangeAuthAsymFinish       (BIT25)
-#define TPM_KEY_DELEGATE_CMK_CreateKey              (BIT24)
-#define TPM_KEY_DELEGATE_MigrateKey                 (BIT23)
-#define TPM_KEY_DELEGATE_LoadKey2                   (BIT22)
-#define TPM_KEY_DELEGATE_EstablishTransport         (BIT21)
-#define TPM_KEY_DELEGATE_ReleaseTransportSigned     (BIT20)
-#define TPM_KEY_DELEGATE_Quote2                     (BIT19)
-#define TPM_KEY_DELEGATE_Sealx                      (BIT18)
-#define TPM_KEY_DELEGATE_MakeIdentity               (BIT17)
-#define TPM_KEY_DELEGATE_ActivateIdentity           (BIT16)
-#define TPM_KEY_DELEGATE_GetAuditDigestSigned       (BIT15)
-#define TPM_KEY_DELEGATE_Sign                       (BIT14)
-#define TPM_KEY_DELEGATE_CertifyKey2                (BIT13)
-#define TPM_KEY_DELEGATE_CertifyKey                 (BIT12)
-#define TPM_KEY_DELEGATE_CreateWrapKey              (BIT11)
-#define TPM_KEY_DELEGATE_CMK_CreateBlob             (BIT10)
-#define TPM_KEY_DELEGATE_CreateMigrationBlob        (BIT9)
-#define TPM_KEY_DELEGATE_ConvertMigrationBlob       (BIT8)
-#define TPM_KEY_DELEGATE_CreateKeyDelegation        (BIT7)
-#define TPM_KEY_DELEGATE_ChangeAuth                 (BIT6)
-#define TPM_KEY_DELEGATE_GetPubKey                  (BIT5)
-#define TPM_KEY_DELEGATE_UnBind                     (BIT4)
-#define TPM_KEY_DELEGATE_Quote                      (BIT3)
-#define TPM_KEY_DELEGATE_Unseal                     (BIT2)
-#define TPM_KEY_DELEGATE_Seal                       (BIT1)
-#define TPM_KEY_DELEGATE_LoadKey                    (BIT0)
+#define TPM_KEY_DELEGATE_CMK_ConvertMigration    (BIT28)
+#define TPM_KEY_DELEGATE_TickStampBlob           (BIT27)
+#define TPM_KEY_DELEGATE_ChangeAuthAsymStart     (BIT26)
+#define TPM_KEY_DELEGATE_ChangeAuthAsymFinish    (BIT25)
+#define TPM_KEY_DELEGATE_CMK_CreateKey           (BIT24)
+#define TPM_KEY_DELEGATE_MigrateKey              (BIT23)
+#define TPM_KEY_DELEGATE_LoadKey2                (BIT22)
+#define TPM_KEY_DELEGATE_EstablishTransport      (BIT21)
+#define TPM_KEY_DELEGATE_ReleaseTransportSigned  (BIT20)
+#define TPM_KEY_DELEGATE_Quote2                  (BIT19)
+#define TPM_KEY_DELEGATE_Sealx                   (BIT18)
+#define TPM_KEY_DELEGATE_MakeIdentity            (BIT17)
+#define TPM_KEY_DELEGATE_ActivateIdentity        (BIT16)
+#define TPM_KEY_DELEGATE_GetAuditDigestSigned    (BIT15)
+#define TPM_KEY_DELEGATE_Sign                    (BIT14)
+#define TPM_KEY_DELEGATE_CertifyKey2             (BIT13)
+#define TPM_KEY_DELEGATE_CertifyKey              (BIT12)
+#define TPM_KEY_DELEGATE_CreateWrapKey           (BIT11)
+#define TPM_KEY_DELEGATE_CMK_CreateBlob          (BIT10)
+#define TPM_KEY_DELEGATE_CreateMigrationBlob     (BIT9)
+#define TPM_KEY_DELEGATE_ConvertMigrationBlob    (BIT8)
+#define TPM_KEY_DELEGATE_CreateKeyDelegation     (BIT7)
+#define TPM_KEY_DELEGATE_ChangeAuth              (BIT6)
+#define TPM_KEY_DELEGATE_GetPubKey               (BIT5)
+#define TPM_KEY_DELEGATE_UnBind                  (BIT4)
+#define TPM_KEY_DELEGATE_Quote                   (BIT3)
+#define TPM_KEY_DELEGATE_Unseal                  (BIT2)
+#define TPM_KEY_DELEGATE_Seal                    (BIT1)
+#define TPM_KEY_DELEGATE_LoadKey                 (BIT0)
 
 //
 // Part 2, section 20.3: TPM_FAMILY_FLAGS
 //
-#define TPM_DELEGATE_ADMIN_LOCK           (BIT1)
-#define TPM_FAMFLAG_ENABLE                (BIT0)
+#define TPM_DELEGATE_ADMIN_LOCK  (BIT1)
+#define TPM_FAMFLAG_ENABLE       (BIT0)
 
 ///
 /// Part 2, section 20.4: TPM_FAMILY_LABEL
 ///
 typedef struct tdTPM_FAMILY_LABEL {
-  UINT8                           label;
+  UINT8    label;
 } TPM_FAMILY_LABEL;
 
 ///
 /// Part 2, section 20.5: TPM_FAMILY_TABLE_ENTRY
 ///
 typedef struct tdTPM_FAMILY_TABLE_ENTRY {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_FAMILY_LABEL                label;
-  TPM_FAMILY_ID                   familyID;
-  TPM_FAMILY_VERIFICATION         verificationCount;
-  TPM_FAMILY_FLAGS                flags;
+  TPM_STRUCTURE_TAG          tag;
+  TPM_FAMILY_LABEL           label;
+  TPM_FAMILY_ID              familyID;
+  TPM_FAMILY_VERIFICATION    verificationCount;
+  TPM_FAMILY_FLAGS           flags;
 } TPM_FAMILY_TABLE_ENTRY;
 
 //
 // Part 2, section 20.6: TPM_FAMILY_TABLE
 //
-#define TPM_NUM_FAMILY_TABLE_ENTRY_MIN 8
+#define TPM_NUM_FAMILY_TABLE_ENTRY_MIN  8
 
-typedef struct tdTPM_FAMILY_TABLE{
-  TPM_FAMILY_TABLE_ENTRY famTableRow[TPM_NUM_FAMILY_TABLE_ENTRY_MIN];
+typedef struct tdTPM_FAMILY_TABLE {
+  TPM_FAMILY_TABLE_ENTRY    famTableRow[TPM_NUM_FAMILY_TABLE_ENTRY_MIN];
 } TPM_FAMILY_TABLE;
 
 ///
 /// Part 2, section 20.7: TPM_DELEGATE_LABEL
 ///
 typedef struct tdTPM_DELEGATE_LABEL {
-  UINT8                           label;
+  UINT8    label;
 } TPM_DELEGATE_LABEL;
 
 ///
 /// Part 2, section 20.8: TPM_DELEGATE_PUBLIC
 ///
 typedef struct tdTPM_DELEGATE_PUBLIC {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_DELEGATE_LABEL              label;
-  TPM_PCR_INFO_SHORT              pcrInfo;
-  TPM_DELEGATIONS                 permissions;
-  TPM_FAMILY_ID                   familyID;
-  TPM_FAMILY_VERIFICATION         verificationCount;
+  TPM_STRUCTURE_TAG          tag;
+  TPM_DELEGATE_LABEL         label;
+  TPM_PCR_INFO_SHORT         pcrInfo;
+  TPM_DELEGATIONS            permissions;
+  TPM_FAMILY_ID              familyID;
+  TPM_FAMILY_VERIFICATION    verificationCount;
 } TPM_DELEGATE_PUBLIC;
 
 ///
 /// Part 2, section 20.9: TPM_DELEGATE_TABLE_ROW
 ///
 typedef struct tdTPM_DELEGATE_TABLE_ROW {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_DELEGATE_PUBLIC             pub;
-  TPM_SECRET                      authValue;
+  TPM_STRUCTURE_TAG      tag;
+  TPM_DELEGATE_PUBLIC    pub;
+  TPM_SECRET             authValue;
 } TPM_DELEGATE_TABLE_ROW;
 
 //
 // Part 2, section 20.10: TPM_DELEGATE_TABLE
 //
-#define TPM_NUM_DELEGATE_TABLE_ENTRY_MIN 2
+#define TPM_NUM_DELEGATE_TABLE_ENTRY_MIN  2
 
-typedef struct tdTPM_DELEGATE_TABLE{
-  TPM_DELEGATE_TABLE_ROW delRow[TPM_NUM_DELEGATE_TABLE_ENTRY_MIN];
+typedef struct tdTPM_DELEGATE_TABLE {
+  TPM_DELEGATE_TABLE_ROW    delRow[TPM_NUM_DELEGATE_TABLE_ENTRY_MIN];
 } TPM_DELEGATE_TABLE;
 
 ///
 /// Part 2, section 20.11: TPM_DELEGATE_SENSITIVE
 ///
 typedef struct tdTPM_DELEGATE_SENSITIVE {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_SECRET                      authValue;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_SECRET           authValue;
 } TPM_DELEGATE_SENSITIVE;
 
 ///
 /// Part 2, section 20.12: TPM_DELEGATE_OWNER_BLOB
 ///
 typedef struct tdTPM_DELEGATE_OWNER_BLOB {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_DELEGATE_PUBLIC             pub;
-  TPM_DIGEST                      integrityDigest;
-  UINT32                          additionalSize;
-  UINT8                           *additionalArea;
-  UINT32                          sensitiveSize;
-  UINT8                           *sensitiveArea;
+  TPM_STRUCTURE_TAG      tag;
+  TPM_DELEGATE_PUBLIC    pub;
+  TPM_DIGEST             integrityDigest;
+  UINT32                 additionalSize;
+  UINT8                  *additionalArea;
+  UINT32                 sensitiveSize;
+  UINT8                  *sensitiveArea;
 } TPM_DELEGATE_OWNER_BLOB;
 
 ///
 /// Part 2, section 20.13: TTPM_DELEGATE_KEY_BLOB
 ///
 typedef struct tdTPM_DELEGATE_KEY_BLOB {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_DELEGATE_PUBLIC             pub;
-  TPM_DIGEST                      integrityDigest;
-  TPM_DIGEST                      pubKeyDigest;
-  UINT32                          additionalSize;
-  UINT8                           *additionalArea;
-  UINT32                          sensitiveSize;
-  UINT8                           *sensitiveArea;
+  TPM_STRUCTURE_TAG      tag;
+  TPM_DELEGATE_PUBLIC    pub;
+  TPM_DIGEST             integrityDigest;
+  TPM_DIGEST             pubKeyDigest;
+  UINT32                 additionalSize;
+  UINT8                  *additionalArea;
+  UINT32                 sensitiveSize;
+  UINT8                  *sensitiveArea;
 } TPM_DELEGATE_KEY_BLOB;
 
 //
 // Part 2, section 20.14: TPM_FAMILY_OPERATION Values
 //
-#define TPM_FAMILY_CREATE                 ((UINT32)0x00000001)
-#define TPM_FAMILY_ENABLE                 ((UINT32)0x00000002)
-#define TPM_FAMILY_ADMIN                  ((UINT32)0x00000003)
-#define TPM_FAMILY_INVALIDATE             ((UINT32)0x00000004)
+#define TPM_FAMILY_CREATE      ((UINT32)0x00000001)
+#define TPM_FAMILY_ENABLE      ((UINT32)0x00000002)
+#define TPM_FAMILY_ADMIN       ((UINT32)0x00000003)
+#define TPM_FAMILY_INVALIDATE  ((UINT32)0x00000004)
 
 //
 // Part 2, section 21.1: TPM_CAPABILITY_AREA for GetCapability
 //
-#define TPM_CAP_ORD                     ((TPM_CAPABILITY_AREA) 0x00000001)
-#define TPM_CAP_ALG                     ((TPM_CAPABILITY_AREA) 0x00000002)
-#define TPM_CAP_PID                     ((TPM_CAPABILITY_AREA) 0x00000003)
-#define TPM_CAP_FLAG                    ((TPM_CAPABILITY_AREA) 0x00000004)
-#define TPM_CAP_PROPERTY                ((TPM_CAPABILITY_AREA) 0x00000005)
-#define TPM_CAP_VERSION                 ((TPM_CAPABILITY_AREA) 0x00000006)
-#define TPM_CAP_KEY_HANDLE              ((TPM_CAPABILITY_AREA) 0x00000007)
-#define TPM_CAP_CHECK_LOADED            ((TPM_CAPABILITY_AREA) 0x00000008)
-#define TPM_CAP_SYM_MODE                ((TPM_CAPABILITY_AREA) 0x00000009)
-#define TPM_CAP_KEY_STATUS              ((TPM_CAPABILITY_AREA) 0x0000000C)
-#define TPM_CAP_NV_LIST                 ((TPM_CAPABILITY_AREA) 0x0000000D)
-#define TPM_CAP_MFR                     ((TPM_CAPABILITY_AREA) 0x00000010)
-#define TPM_CAP_NV_INDEX                ((TPM_CAPABILITY_AREA) 0x00000011)
-#define TPM_CAP_TRANS_ALG               ((TPM_CAPABILITY_AREA) 0x00000012)
-#define TPM_CAP_HANDLE                  ((TPM_CAPABILITY_AREA) 0x00000014)
-#define TPM_CAP_TRANS_ES                ((TPM_CAPABILITY_AREA) 0x00000015)
-#define TPM_CAP_AUTH_ENCRYPT            ((TPM_CAPABILITY_AREA) 0x00000017)
-#define TPM_CAP_SELECT_SIZE             ((TPM_CAPABILITY_AREA) 0x00000018)
-#define TPM_CAP_VERSION_VAL             ((TPM_CAPABILITY_AREA) 0x0000001A)
+#define TPM_CAP_ORD           ((TPM_CAPABILITY_AREA) 0x00000001)
+#define TPM_CAP_ALG           ((TPM_CAPABILITY_AREA) 0x00000002)
+#define TPM_CAP_PID           ((TPM_CAPABILITY_AREA) 0x00000003)
+#define TPM_CAP_FLAG          ((TPM_CAPABILITY_AREA) 0x00000004)
+#define TPM_CAP_PROPERTY      ((TPM_CAPABILITY_AREA) 0x00000005)
+#define TPM_CAP_VERSION       ((TPM_CAPABILITY_AREA) 0x00000006)
+#define TPM_CAP_KEY_HANDLE    ((TPM_CAPABILITY_AREA) 0x00000007)
+#define TPM_CAP_CHECK_LOADED  ((TPM_CAPABILITY_AREA) 0x00000008)
+#define TPM_CAP_SYM_MODE      ((TPM_CAPABILITY_AREA) 0x00000009)
+#define TPM_CAP_KEY_STATUS    ((TPM_CAPABILITY_AREA) 0x0000000C)
+#define TPM_CAP_NV_LIST       ((TPM_CAPABILITY_AREA) 0x0000000D)
+#define TPM_CAP_MFR           ((TPM_CAPABILITY_AREA) 0x00000010)
+#define TPM_CAP_NV_INDEX      ((TPM_CAPABILITY_AREA) 0x00000011)
+#define TPM_CAP_TRANS_ALG     ((TPM_CAPABILITY_AREA) 0x00000012)
+#define TPM_CAP_HANDLE        ((TPM_CAPABILITY_AREA) 0x00000014)
+#define TPM_CAP_TRANS_ES      ((TPM_CAPABILITY_AREA) 0x00000015)
+#define TPM_CAP_AUTH_ENCRYPT  ((TPM_CAPABILITY_AREA) 0x00000017)
+#define TPM_CAP_SELECT_SIZE   ((TPM_CAPABILITY_AREA) 0x00000018)
+#define TPM_CAP_VERSION_VAL   ((TPM_CAPABILITY_AREA) 0x0000001A)
 
-#define TPM_CAP_FLAG_PERMANENT          ((TPM_CAPABILITY_AREA) 0x00000108)
-#define TPM_CAP_FLAG_VOLATILE           ((TPM_CAPABILITY_AREA) 0x00000109)
+#define TPM_CAP_FLAG_PERMANENT  ((TPM_CAPABILITY_AREA) 0x00000108)
+#define TPM_CAP_FLAG_VOLATILE   ((TPM_CAPABILITY_AREA) 0x00000109)
 
 //
 // Part 2, section 21.2: CAP_PROPERTY Subcap values for GetCapability
 //
-#define TPM_CAP_PROP_PCR                ((TPM_CAPABILITY_AREA) 0x00000101)
-#define TPM_CAP_PROP_DIR                ((TPM_CAPABILITY_AREA) 0x00000102)
-#define TPM_CAP_PROP_MANUFACTURER       ((TPM_CAPABILITY_AREA) 0x00000103)
-#define TPM_CAP_PROP_KEYS               ((TPM_CAPABILITY_AREA) 0x00000104)
-#define TPM_CAP_PROP_MIN_COUNTER        ((TPM_CAPABILITY_AREA) 0x00000107)
-#define TPM_CAP_PROP_AUTHSESS           ((TPM_CAPABILITY_AREA) 0x0000010A)
-#define TPM_CAP_PROP_TRANSESS           ((TPM_CAPABILITY_AREA) 0x0000010B)
-#define TPM_CAP_PROP_COUNTERS           ((TPM_CAPABILITY_AREA) 0x0000010C)
-#define TPM_CAP_PROP_MAX_AUTHSESS       ((TPM_CAPABILITY_AREA) 0x0000010D)
-#define TPM_CAP_PROP_MAX_TRANSESS       ((TPM_CAPABILITY_AREA) 0x0000010E)
-#define TPM_CAP_PROP_MAX_COUNTERS       ((TPM_CAPABILITY_AREA) 0x0000010F)
-#define TPM_CAP_PROP_MAX_KEYS           ((TPM_CAPABILITY_AREA) 0x00000110)
-#define TPM_CAP_PROP_OWNER              ((TPM_CAPABILITY_AREA) 0x00000111)
-#define TPM_CAP_PROP_CONTEXT            ((TPM_CAPABILITY_AREA) 0x00000112)
-#define TPM_CAP_PROP_MAX_CONTEXT        ((TPM_CAPABILITY_AREA) 0x00000113)
-#define TPM_CAP_PROP_FAMILYROWS         ((TPM_CAPABILITY_AREA) 0x00000114)
-#define TPM_CAP_PROP_TIS_TIMEOUT        ((TPM_CAPABILITY_AREA) 0x00000115)
-#define TPM_CAP_PROP_STARTUP_EFFECT     ((TPM_CAPABILITY_AREA) 0x00000116)
-#define TPM_CAP_PROP_DELEGATE_ROW       ((TPM_CAPABILITY_AREA) 0x00000117)
-#define TPM_CAP_PROP_DAA_MAX            ((TPM_CAPABILITY_AREA) 0x00000119)
-#define CAP_PROP_SESSION_DAA            ((TPM_CAPABILITY_AREA) 0x0000011A)
-#define TPM_CAP_PROP_CONTEXT_DIST       ((TPM_CAPABILITY_AREA) 0x0000011B)
-#define TPM_CAP_PROP_DAA_INTERRUPT      ((TPM_CAPABILITY_AREA) 0x0000011C)
-#define TPM_CAP_PROP_SESSIONS           ((TPM_CAPABILITY_AREA) 0x0000011D)
-#define TPM_CAP_PROP_MAX_SESSIONS       ((TPM_CAPABILITY_AREA) 0x0000011E)
-#define TPM_CAP_PROP_CMK_RESTRICTION    ((TPM_CAPABILITY_AREA) 0x0000011F)
-#define TPM_CAP_PROP_DURATION           ((TPM_CAPABILITY_AREA) 0x00000120)
-#define TPM_CAP_PROP_ACTIVE_COUNTER     ((TPM_CAPABILITY_AREA) 0x00000122)
-#define TPM_CAP_PROP_MAX_NV_AVAILABLE   ((TPM_CAPABILITY_AREA) 0x00000123)
-#define TPM_CAP_PROP_INPUT_BUFFER       ((TPM_CAPABILITY_AREA) 0x00000124)
+#define TPM_CAP_PROP_PCR               ((TPM_CAPABILITY_AREA) 0x00000101)
+#define TPM_CAP_PROP_DIR               ((TPM_CAPABILITY_AREA) 0x00000102)
+#define TPM_CAP_PROP_MANUFACTURER      ((TPM_CAPABILITY_AREA) 0x00000103)
+#define TPM_CAP_PROP_KEYS              ((TPM_CAPABILITY_AREA) 0x00000104)
+#define TPM_CAP_PROP_MIN_COUNTER       ((TPM_CAPABILITY_AREA) 0x00000107)
+#define TPM_CAP_PROP_AUTHSESS          ((TPM_CAPABILITY_AREA) 0x0000010A)
+#define TPM_CAP_PROP_TRANSESS          ((TPM_CAPABILITY_AREA) 0x0000010B)
+#define TPM_CAP_PROP_COUNTERS          ((TPM_CAPABILITY_AREA) 0x0000010C)
+#define TPM_CAP_PROP_MAX_AUTHSESS      ((TPM_CAPABILITY_AREA) 0x0000010D)
+#define TPM_CAP_PROP_MAX_TRANSESS      ((TPM_CAPABILITY_AREA) 0x0000010E)
+#define TPM_CAP_PROP_MAX_COUNTERS      ((TPM_CAPABILITY_AREA) 0x0000010F)
+#define TPM_CAP_PROP_MAX_KEYS          ((TPM_CAPABILITY_AREA) 0x00000110)
+#define TPM_CAP_PROP_OWNER             ((TPM_CAPABILITY_AREA) 0x00000111)
+#define TPM_CAP_PROP_CONTEXT           ((TPM_CAPABILITY_AREA) 0x00000112)
+#define TPM_CAP_PROP_MAX_CONTEXT       ((TPM_CAPABILITY_AREA) 0x00000113)
+#define TPM_CAP_PROP_FAMILYROWS        ((TPM_CAPABILITY_AREA) 0x00000114)
+#define TPM_CAP_PROP_TIS_TIMEOUT       ((TPM_CAPABILITY_AREA) 0x00000115)
+#define TPM_CAP_PROP_STARTUP_EFFECT    ((TPM_CAPABILITY_AREA) 0x00000116)
+#define TPM_CAP_PROP_DELEGATE_ROW      ((TPM_CAPABILITY_AREA) 0x00000117)
+#define TPM_CAP_PROP_DAA_MAX           ((TPM_CAPABILITY_AREA) 0x00000119)
+#define CAP_PROP_SESSION_DAA           ((TPM_CAPABILITY_AREA) 0x0000011A)
+#define TPM_CAP_PROP_CONTEXT_DIST      ((TPM_CAPABILITY_AREA) 0x0000011B)
+#define TPM_CAP_PROP_DAA_INTERRUPT     ((TPM_CAPABILITY_AREA) 0x0000011C)
+#define TPM_CAP_PROP_SESSIONS          ((TPM_CAPABILITY_AREA) 0x0000011D)
+#define TPM_CAP_PROP_MAX_SESSIONS      ((TPM_CAPABILITY_AREA) 0x0000011E)
+#define TPM_CAP_PROP_CMK_RESTRICTION   ((TPM_CAPABILITY_AREA) 0x0000011F)
+#define TPM_CAP_PROP_DURATION          ((TPM_CAPABILITY_AREA) 0x00000120)
+#define TPM_CAP_PROP_ACTIVE_COUNTER    ((TPM_CAPABILITY_AREA) 0x00000122)
+#define TPM_CAP_PROP_MAX_NV_AVAILABLE  ((TPM_CAPABILITY_AREA) 0x00000123)
+#define TPM_CAP_PROP_INPUT_BUFFER      ((TPM_CAPABILITY_AREA) 0x00000124)
 
 //
 // Part 2, section 21.4: TPM_CAPABILITY_AREA for SetCapability
 //
-#define TPM_SET_PERM_FLAGS              ((TPM_CAPABILITY_AREA) 0x00000001)
-#define TPM_SET_PERM_DATA               ((TPM_CAPABILITY_AREA) 0x00000002)
-#define TPM_SET_STCLEAR_FLAGS           ((TPM_CAPABILITY_AREA) 0x00000003)
-#define TPM_SET_STCLEAR_DATA            ((TPM_CAPABILITY_AREA) 0x00000004)
-#define TPM_SET_STANY_FLAGS             ((TPM_CAPABILITY_AREA) 0x00000005)
-#define TPM_SET_STANY_DATA              ((TPM_CAPABILITY_AREA) 0x00000006)
+#define TPM_SET_PERM_FLAGS     ((TPM_CAPABILITY_AREA) 0x00000001)
+#define TPM_SET_PERM_DATA      ((TPM_CAPABILITY_AREA) 0x00000002)
+#define TPM_SET_STCLEAR_FLAGS  ((TPM_CAPABILITY_AREA) 0x00000003)
+#define TPM_SET_STCLEAR_DATA   ((TPM_CAPABILITY_AREA) 0x00000004)
+#define TPM_SET_STANY_FLAGS    ((TPM_CAPABILITY_AREA) 0x00000005)
+#define TPM_SET_STANY_DATA     ((TPM_CAPABILITY_AREA) 0x00000006)
 
 ///
 /// Part 2, section 21.6: TPM_CAP_VERSION_INFO
 ///   [size_is(vendorSpecificSize)] BYTE* vendorSpecific;
 ///
 typedef struct tdTPM_CAP_VERSION_INFO {
-  TPM_STRUCTURE_TAG                 tag;
-  TPM_VERSION                       version;
-  UINT16                            specLevel;
-  UINT8                             errataRev;
-  UINT8                             tpmVendorID[4];
-  UINT16                            vendorSpecificSize;
-  UINT8                             *vendorSpecific;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_VERSION          version;
+  UINT16               specLevel;
+  UINT8                errataRev;
+  UINT8                tpmVendorID[4];
+  UINT16               vendorSpecificSize;
+  UINT8                *vendorSpecific;
 } TPM_CAP_VERSION_INFO;
 
 ///
 /// Part 2, section 21.10: TPM_DA_ACTION_TYPE
 ///
 typedef struct tdTPM_DA_ACTION_TYPE {
-  TPM_STRUCTURE_TAG                 tag;
-  UINT32                            actions;
+  TPM_STRUCTURE_TAG    tag;
+  UINT32               actions;
 } TPM_DA_ACTION_TYPE;
 
-#define TPM_DA_ACTION_FAILURE_MODE     (((UINT32)1)<<3)
-#define TPM_DA_ACTION_DEACTIVATE       (((UINT32)1)<<2)
-#define TPM_DA_ACTION_DISABLE          (((UINT32)1)<<1)
-#define TPM_DA_ACTION_TIMEOUT          (((UINT32)1)<<0)
+#define TPM_DA_ACTION_FAILURE_MODE  (((UINT32)1)<<3)
+#define TPM_DA_ACTION_DEACTIVATE    (((UINT32)1)<<2)
+#define TPM_DA_ACTION_DISABLE       (((UINT32)1)<<1)
+#define TPM_DA_ACTION_TIMEOUT       (((UINT32)1)<<0)
 
 ///
 /// Part 2, section 21.7: TPM_DA_INFO
 ///
 typedef struct tdTPM_DA_INFO {
-  TPM_STRUCTURE_TAG                 tag;
-  TPM_DA_STATE                      state;
-  UINT16                            currentCount;
-  UINT16                            thresholdCount;
-  TPM_DA_ACTION_TYPE                actionAtThreshold;
-  UINT32                            actionDependValue;
-  UINT32                            vendorDataSize;
-  UINT8                             *vendorData;
+  TPM_STRUCTURE_TAG     tag;
+  TPM_DA_STATE          state;
+  UINT16                currentCount;
+  UINT16                thresholdCount;
+  TPM_DA_ACTION_TYPE    actionAtThreshold;
+  UINT32                actionDependValue;
+  UINT32                vendorDataSize;
+  UINT8                 *vendorData;
 } TPM_DA_INFO;
 
 ///
 /// Part 2, section 21.8: TPM_DA_INFO_LIMITED
 ///
 typedef struct tdTPM_DA_INFO_LIMITED {
-  TPM_STRUCTURE_TAG                 tag;
-  TPM_DA_STATE                      state;
-  TPM_DA_ACTION_TYPE                actionAtThreshold;
-  UINT32                            vendorDataSize;
-  UINT8                             *vendorData;
+  TPM_STRUCTURE_TAG     tag;
+  TPM_DA_STATE          state;
+  TPM_DA_ACTION_TYPE    actionAtThreshold;
+  UINT32                vendorDataSize;
+  UINT8                 *vendorData;
 } TPM_DA_INFO_LIMITED;
 
 //
 // Part 2, section 21.9: CAP_PROPERTY Subcap values for GetCapability
 //
-#define TPM_DA_STATE_INACTIVE          ((UINT8)0x00)
-#define TPM_DA_STATE_ACTIVE            ((UINT8)0x01)
+#define TPM_DA_STATE_INACTIVE  ((UINT8)0x00)
+#define TPM_DA_STATE_ACTIVE    ((UINT8)0x01)
 
 //
 // Part 2, section 22: DAA Structures
@@ -2051,94 +2044,93 @@
 //
 // Part 2, section 22.1: Size definitions
 //
-#define TPM_DAA_SIZE_r0                (43)
-#define TPM_DAA_SIZE_r1                (43)
-#define TPM_DAA_SIZE_r2                (128)
-#define TPM_DAA_SIZE_r3                (168)
-#define TPM_DAA_SIZE_r4                (219)
-#define TPM_DAA_SIZE_NT                (20)
-#define TPM_DAA_SIZE_v0                (128)
-#define TPM_DAA_SIZE_v1                (192)
-#define TPM_DAA_SIZE_NE                (256)
-#define TPM_DAA_SIZE_w                 (256)
-#define TPM_DAA_SIZE_issuerModulus     (256)
+#define TPM_DAA_SIZE_r0             (43)
+#define TPM_DAA_SIZE_r1             (43)
+#define TPM_DAA_SIZE_r2             (128)
+#define TPM_DAA_SIZE_r3             (168)
+#define TPM_DAA_SIZE_r4             (219)
+#define TPM_DAA_SIZE_NT             (20)
+#define TPM_DAA_SIZE_v0             (128)
+#define TPM_DAA_SIZE_v1             (192)
+#define TPM_DAA_SIZE_NE             (256)
+#define TPM_DAA_SIZE_w              (256)
+#define TPM_DAA_SIZE_issuerModulus  (256)
 //
 // Part 2, section 22.2: Constant definitions
 //
-#define TPM_DAA_power0                 (104)
-#define TPM_DAA_power1                 (1024)
+#define TPM_DAA_power0  (104)
+#define TPM_DAA_power1  (1024)
 
 ///
 /// Part 2, section 22.3: TPM_DAA_ISSUER
 ///
 typedef struct tdTPM_DAA_ISSUER {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_DIGEST                      DAA_digest_R0;
-  TPM_DIGEST                      DAA_digest_R1;
-  TPM_DIGEST                      DAA_digest_S0;
-  TPM_DIGEST                      DAA_digest_S1;
-  TPM_DIGEST                      DAA_digest_n;
-  TPM_DIGEST                      DAA_digest_gamma;
-  UINT8                           DAA_generic_q[26];
+  TPM_STRUCTURE_TAG    tag;
+  TPM_DIGEST           DAA_digest_R0;
+  TPM_DIGEST           DAA_digest_R1;
+  TPM_DIGEST           DAA_digest_S0;
+  TPM_DIGEST           DAA_digest_S1;
+  TPM_DIGEST           DAA_digest_n;
+  TPM_DIGEST           DAA_digest_gamma;
+  UINT8                DAA_generic_q[26];
 } TPM_DAA_ISSUER;
 
 ///
 /// Part 2, section 22.4: TPM_DAA_TPM
 ///
 typedef struct tdTPM_DAA_TPM {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_DIGEST                      DAA_digestIssuer;
-  TPM_DIGEST                      DAA_digest_v0;
-  TPM_DIGEST                      DAA_digest_v1;
-  TPM_DIGEST                      DAA_rekey;
-  UINT32                          DAA_count;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_DIGEST           DAA_digestIssuer;
+  TPM_DIGEST           DAA_digest_v0;
+  TPM_DIGEST           DAA_digest_v1;
+  TPM_DIGEST           DAA_rekey;
+  UINT32               DAA_count;
 } TPM_DAA_TPM;
 
 ///
 /// Part 2, section 22.5: TPM_DAA_CONTEXT
 ///
 typedef struct tdTPM_DAA_CONTEXT {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_DIGEST                      DAA_digestContext;
-  TPM_DIGEST                      DAA_digest;
-  TPM_DAA_CONTEXT_SEED            DAA_contextSeed;
-  UINT8                           DAA_scratch[256];
-  UINT8                           DAA_stage;
+  TPM_STRUCTURE_TAG       tag;
+  TPM_DIGEST              DAA_digestContext;
+  TPM_DIGEST              DAA_digest;
+  TPM_DAA_CONTEXT_SEED    DAA_contextSeed;
+  UINT8                   DAA_scratch[256];
+  UINT8                   DAA_stage;
 } TPM_DAA_CONTEXT;
 
 ///
 /// Part 2, section 22.6: TPM_DAA_JOINDATA
 ///
 typedef struct tdTPM_DAA_JOINDATA {
-  UINT8                           DAA_join_u0[128];
-  UINT8                           DAA_join_u1[138];
-  TPM_DIGEST                      DAA_digest_n0;
+  UINT8         DAA_join_u0[128];
+  UINT8         DAA_join_u1[138];
+  TPM_DIGEST    DAA_digest_n0;
 } TPM_DAA_JOINDATA;
 
 ///
 /// Part 2, section 22.8: TPM_DAA_BLOB
 ///
 typedef struct tdTPM_DAA_BLOB {
-  TPM_STRUCTURE_TAG               tag;
-  TPM_RESOURCE_TYPE               resourceType;
-  UINT8                           label[16];
-  TPM_DIGEST                      blobIntegrity;
-  UINT32                          additionalSize;
-  UINT8                           *additionalData;
-  UINT32                          sensitiveSize;
-  UINT8                           *sensitiveData;
+  TPM_STRUCTURE_TAG    tag;
+  TPM_RESOURCE_TYPE    resourceType;
+  UINT8                label[16];
+  TPM_DIGEST           blobIntegrity;
+  UINT32               additionalSize;
+  UINT8                *additionalData;
+  UINT32               sensitiveSize;
+  UINT8                *sensitiveData;
 } TPM_DAA_BLOB;
 
 ///
 /// Part 2, section 22.9: TPM_DAA_SENSITIVE
 ///
 typedef struct tdTPM_DAA_SENSITIVE {
-  TPM_STRUCTURE_TAG               tag;
-  UINT32                          internalSize;
-  UINT8                           *internalData;
+  TPM_STRUCTURE_TAG    tag;
+  UINT32               internalSize;
+  UINT8                *internalData;
 } TPM_DAA_SENSITIVE;
 
-
 //
 // Part 2, section 23: Redirection
 //
@@ -2150,24 +2142,24 @@
 /// refers to exactly one name but does not give its value. We join
 /// them here.
 ///
-#define TPM_REDIR_GPIO              (0x00000001)
+#define TPM_REDIR_GPIO  (0x00000001)
 
 ///
 /// TPM Command Headers defined in Part 3
 ///
 typedef struct tdTPM_RQU_COMMAND_HDR {
-  TPM_STRUCTURE_TAG                 tag;
-  UINT32                            paramSize;
-  TPM_COMMAND_CODE                  ordinal;
+  TPM_STRUCTURE_TAG    tag;
+  UINT32               paramSize;
+  TPM_COMMAND_CODE     ordinal;
 } TPM_RQU_COMMAND_HDR;
 
 ///
 /// TPM Response Headers defined in Part 3
 ///
 typedef struct tdTPM_RSP_COMMAND_HDR {
-  TPM_STRUCTURE_TAG                 tag;
-  UINT32                            paramSize;
-  TPM_RESULT                        returnCode;
+  TPM_STRUCTURE_TAG    tag;
+  UINT32               paramSize;
+  TPM_RESULT           returnCode;
 } TPM_RSP_COMMAND_HDR;
 
 #pragma pack ()
diff --git a/src/include/ipxe/efi/IndustryStandard/Tpm20.h b/src/include/ipxe/efi/IndustryStandard/Tpm20.h
index 656bf21..b314d6e 100644
--- a/src/include/ipxe/efi/IndustryStandard/Tpm20.h
+++ b/src/include/ipxe/efi/IndustryStandard/Tpm20.h
@@ -6,21 +6,14 @@
   Check http://trustedcomputinggroup.org for latest specification updates.
 
 Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved. <BR>
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
-
 #ifndef _TPM20_H_
 #define _TPM20_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/Tpm12.h>
 
@@ -29,121 +22,121 @@
 // Annex A Algorithm Constants
 
 // Table 205 - Defines for SHA1 Hash Values
-#define SHA1_DIGEST_SIZE 20
-#define SHA1_BLOCK_SIZE  64
+#define SHA1_DIGEST_SIZE  20
+#define SHA1_BLOCK_SIZE   64
 
 // Table 206 - Defines for SHA256 Hash Values
-#define SHA256_DIGEST_SIZE 32
-#define SHA256_BLOCK_SIZE  64
+#define SHA256_DIGEST_SIZE  32
+#define SHA256_BLOCK_SIZE   64
 
 // Table 207 - Defines for SHA384 Hash Values
-#define SHA384_DIGEST_SIZE 48
-#define SHA384_BLOCK_SIZE  128
+#define SHA384_DIGEST_SIZE  48
+#define SHA384_BLOCK_SIZE   128
 
 // Table 208 - Defines for SHA512 Hash Values
-#define SHA512_DIGEST_SIZE 64
-#define SHA512_BLOCK_SIZE  128
+#define SHA512_DIGEST_SIZE  64
+#define SHA512_BLOCK_SIZE   128
 
 // Table 209 - Defines for SM3_256 Hash Values
-#define SM3_256_DIGEST_SIZE 32
-#define SM3_256_BLOCK_SIZE  64
+#define SM3_256_DIGEST_SIZE  32
+#define SM3_256_BLOCK_SIZE   64
 
 // Table 210 - Defines for Architectural Limits Values
-#define MAX_SESSION_NUMBER 3
+#define MAX_SESSION_NUMBER  3
 
 // Annex B Implementation Definitions
 
 // Table 211 - Defines for Logic Values
-#define YES   1
-#define NO    0
-#define SET   1
-#define CLEAR 0
+#define YES    1
+#define NO     0
+#define SET    1
+#define CLEAR  0
 
 // Table 215 - Defines for RSA Algorithm Constants
-#define MAX_RSA_KEY_BITS  2048
-#define MAX_RSA_KEY_BYTES ((MAX_RSA_KEY_BITS + 7) / 8)
+#define MAX_RSA_KEY_BITS   2048
+#define MAX_RSA_KEY_BYTES  ((MAX_RSA_KEY_BITS + 7) / 8)
 
 // Table 216 - Defines for ECC Algorithm Constants
-#define MAX_ECC_KEY_BITS  256
-#define MAX_ECC_KEY_BYTES ((MAX_ECC_KEY_BITS + 7) / 8)
+#define MAX_ECC_KEY_BITS   256
+#define MAX_ECC_KEY_BYTES  ((MAX_ECC_KEY_BITS + 7) / 8)
 
 // Table 217 - Defines for AES Algorithm Constants
-#define MAX_AES_KEY_BITS         128
-#define MAX_AES_BLOCK_SIZE_BYTES 16
-#define MAX_AES_KEY_BYTES        ((MAX_AES_KEY_BITS + 7) / 8)
+#define MAX_AES_KEY_BITS          128
+#define MAX_AES_BLOCK_SIZE_BYTES  16
+#define MAX_AES_KEY_BYTES         ((MAX_AES_KEY_BITS + 7) / 8)
 
 // Table 218 - Defines for SM4 Algorithm Constants
-#define MAX_SM4_KEY_BITS         128
-#define MAX_SM4_BLOCK_SIZE_BYTES 16
-#define MAX_SM4_KEY_BYTES        ((MAX_SM4_KEY_BITS + 7) / 8)
+#define MAX_SM4_KEY_BITS          128
+#define MAX_SM4_BLOCK_SIZE_BYTES  16
+#define MAX_SM4_KEY_BYTES         ((MAX_SM4_KEY_BITS + 7) / 8)
 
 // Table 219 - Defines for Symmetric Algorithm Constants
-#define MAX_SYM_KEY_BITS   MAX_AES_KEY_BITS
-#define MAX_SYM_KEY_BYTES  MAX_AES_KEY_BYTES
-#define MAX_SYM_BLOCK_SIZE MAX_AES_BLOCK_SIZE_BYTES
+#define MAX_SYM_KEY_BITS    MAX_AES_KEY_BITS
+#define MAX_SYM_KEY_BYTES   MAX_AES_KEY_BYTES
+#define MAX_SYM_BLOCK_SIZE  MAX_AES_BLOCK_SIZE_BYTES
 
 // Table 220 - Defines for Implementation Values
-typedef UINT16                        BSIZE;
-#define BUFFER_ALIGNMENT              4
-#define IMPLEMENTATION_PCR            24
-#define PLATFORM_PCR                  24
-#define DRTM_PCR                      17
-#define NUM_LOCALITIES                5
-#define MAX_HANDLE_NUM                3
-#define MAX_ACTIVE_SESSIONS           64
-typedef UINT16                        CONTEXT_SLOT;
-typedef UINT64                        CONTEXT_COUNTER;
-#define MAX_LOADED_SESSIONS           3
-#define MAX_SESSION_NUM               3
-#define MAX_LOADED_OBJECTS            3
-#define MIN_EVICT_OBJECTS             2
-#define PCR_SELECT_MIN                ((PLATFORM_PCR + 7) / 8)
-#define PCR_SELECT_MAX                ((IMPLEMENTATION_PCR + 7) / 8)
-#define NUM_POLICY_PCR_GROUP          1
-#define NUM_AUTHVALUE_PCR_GROUP       1
-#define MAX_CONTEXT_SIZE              4000
-#define MAX_DIGEST_BUFFER             1024
-#define MAX_NV_INDEX_SIZE             1024
-#define MAX_CAP_BUFFER                1024
-#define NV_MEMORY_SIZE                16384
-#define NUM_STATIC_PCR                16
-#define MAX_ALG_LIST_SIZE             64
-#define TIMER_PRESCALE                100000
-#define PRIMARY_SEED_SIZE             32
-#define CONTEXT_ENCRYPT_ALG           TPM_ALG_AES
-#define CONTEXT_ENCRYPT_KEY_BITS      MAX_SYM_KEY_BITS
-#define CONTEXT_ENCRYPT_KEY_BYTES     ((CONTEXT_ENCRYPT_KEY_BITS + 7) / 8)
-#define CONTEXT_INTEGRITY_HASH_ALG    TPM_ALG_SHA256
-#define CONTEXT_INTEGRITY_HASH_SIZE   SHA256_DIGEST_SIZE
-#define PROOF_SIZE                    CONTEXT_INTEGRITY_HASH_SIZE
-#define NV_CLOCK_UPDATE_INTERVAL      12
-#define NUM_POLICY_PCR                1
-#define MAX_COMMAND_SIZE              4096
-#define MAX_RESPONSE_SIZE             4096
-#define ORDERLY_BITS                  8
-#define MAX_ORDERLY_COUNT             ((1 << ORDERLY_BITS) - 1)
-#define ALG_ID_FIRST                  TPM_ALG_FIRST
-#define ALG_ID_LAST                   TPM_ALG_LAST
-#define MAX_SYM_DATA                  128
-#define MAX_RNG_ENTROPY_SIZE          64
-#define RAM_INDEX_SPACE               512
-#define RSA_DEFAULT_PUBLIC_EXPONENT   0x00010001
-#define CRT_FORMAT_RSA                YES
-#define PRIVATE_VENDOR_SPECIFIC_BYTES ((MAX_RSA_KEY_BYTES / 2) * ( 3 + CRT_FORMAT_RSA * 2))
+typedef UINT16 BSIZE;
+#define BUFFER_ALIGNMENT     4
+#define IMPLEMENTATION_PCR   24
+#define PLATFORM_PCR         24
+#define DRTM_PCR             17
+#define NUM_LOCALITIES       5
+#define MAX_HANDLE_NUM       3
+#define MAX_ACTIVE_SESSIONS  64
+typedef UINT16 CONTEXT_SLOT;
+typedef UINT64 CONTEXT_COUNTER;
+#define MAX_LOADED_SESSIONS            3
+#define MAX_SESSION_NUM                3
+#define MAX_LOADED_OBJECTS             3
+#define MIN_EVICT_OBJECTS              2
+#define PCR_SELECT_MIN                 ((PLATFORM_PCR + 7) / 8)
+#define PCR_SELECT_MAX                 ((IMPLEMENTATION_PCR + 7) / 8)
+#define NUM_POLICY_PCR_GROUP           1
+#define NUM_AUTHVALUE_PCR_GROUP        1
+#define MAX_CONTEXT_SIZE               4000
+#define MAX_DIGEST_BUFFER              1024
+#define MAX_NV_INDEX_SIZE              1024
+#define MAX_CAP_BUFFER                 1024
+#define NV_MEMORY_SIZE                 16384
+#define NUM_STATIC_PCR                 16
+#define MAX_ALG_LIST_SIZE              64
+#define TIMER_PRESCALE                 100000
+#define PRIMARY_SEED_SIZE              32
+#define CONTEXT_ENCRYPT_ALG            TPM_ALG_AES
+#define CONTEXT_ENCRYPT_KEY_BITS       MAX_SYM_KEY_BITS
+#define CONTEXT_ENCRYPT_KEY_BYTES      ((CONTEXT_ENCRYPT_KEY_BITS + 7) / 8)
+#define CONTEXT_INTEGRITY_HASH_ALG     TPM_ALG_SHA256
+#define CONTEXT_INTEGRITY_HASH_SIZE    SHA256_DIGEST_SIZE
+#define PROOF_SIZE                     CONTEXT_INTEGRITY_HASH_SIZE
+#define NV_CLOCK_UPDATE_INTERVAL       12
+#define NUM_POLICY_PCR                 1
+#define MAX_COMMAND_SIZE               4096
+#define MAX_RESPONSE_SIZE              4096
+#define ORDERLY_BITS                   8
+#define MAX_ORDERLY_COUNT              ((1 << ORDERLY_BITS) - 1)
+#define ALG_ID_FIRST                   TPM_ALG_FIRST
+#define ALG_ID_LAST                    TPM_ALG_LAST
+#define MAX_SYM_DATA                   128
+#define MAX_RNG_ENTROPY_SIZE           64
+#define RAM_INDEX_SPACE                512
+#define RSA_DEFAULT_PUBLIC_EXPONENT    0x00010001
+#define CRT_FORMAT_RSA                 YES
+#define PRIVATE_VENDOR_SPECIFIC_BYTES  ((MAX_RSA_KEY_BYTES / 2) * ( 3 + CRT_FORMAT_RSA * 2))
 
 // Capability related MAX_ value
-#define MAX_CAP_DATA       (MAX_CAP_BUFFER - sizeof(TPM_CAP) - sizeof(UINT32))
-#define MAX_CAP_ALGS       (MAX_CAP_DATA / sizeof(TPMS_ALG_PROPERTY))
-#define MAX_CAP_HANDLES    (MAX_CAP_DATA / sizeof(TPM_HANDLE))
-#define MAX_CAP_CC         (MAX_CAP_DATA / sizeof(TPM_CC))
-#define MAX_TPM_PROPERTIES (MAX_CAP_DATA / sizeof(TPMS_TAGGED_PROPERTY))
-#define MAX_PCR_PROPERTIES (MAX_CAP_DATA / sizeof(TPMS_TAGGED_PCR_SELECT))
-#define MAX_ECC_CURVES     (MAX_CAP_DATA / sizeof(TPM_ECC_CURVE))
+#define MAX_CAP_DATA        (MAX_CAP_BUFFER - sizeof(TPM_CAP) - sizeof(UINT32))
+#define MAX_CAP_ALGS        (MAX_CAP_DATA / sizeof(TPMS_ALG_PROPERTY))
+#define MAX_CAP_HANDLES     (MAX_CAP_DATA / sizeof(TPM_HANDLE))
+#define MAX_CAP_CC          (MAX_CAP_DATA / sizeof(TPM_CC))
+#define MAX_TPM_PROPERTIES  (MAX_CAP_DATA / sizeof(TPMS_TAGGED_PROPERTY))
+#define MAX_PCR_PROPERTIES  (MAX_CAP_DATA / sizeof(TPMS_TAGGED_PCR_SELECT))
+#define MAX_ECC_CURVES      (MAX_CAP_DATA / sizeof(TPM_ECC_CURVE))
 
 //
 // Always set 5 here, because we want to support all hash algo in BIOS.
 //
-#define HASH_COUNT 5
+#define HASH_COUNT  5
 
 // 5 Base Types
 
@@ -154,8 +147,8 @@
 //
 // NOTE: Comment because it has same name as TPM1.2 (value is same, so not runtime issue)
 //
-//typedef UINT32 TPM_ALGORITHM_ID;
-//typedef UINT32 TPM_MODIFIER_INDICATOR;
+// typedef UINT32 TPM_ALGORITHM_ID;
+// typedef UINT32 TPM_MODIFIER_INDICATOR;
 typedef UINT32 TPM_AUTHORIZATION_SIZE;
 typedef UINT32 TPM_PARAMETER_SIZE;
 typedef UINT16 TPM_KEY_SIZE;
@@ -165,481 +158,481 @@
 
 // Table 6 - TPM_GENERATED Constants
 typedef UINT32 TPM_GENERATED;
-#define TPM_GENERATED_VALUE (TPM_GENERATED)(0xff544347)
+#define TPM_GENERATED_VALUE  (TPM_GENERATED)(0xff544347)
 
 // Table 7 - TPM_ALG_ID Constants
 typedef UINT16 TPM_ALG_ID;
 //
 // NOTE: Comment some algo which has same name as TPM1.2 (value is same, so not runtime issue)
 //
-#define TPM_ALG_ERROR          (TPM_ALG_ID)(0x0000)
-#define TPM_ALG_FIRST          (TPM_ALG_ID)(0x0001)
-//#define TPM_ALG_RSA            (TPM_ALG_ID)(0x0001)
-//#define TPM_ALG_SHA            (TPM_ALG_ID)(0x0004)
-#define TPM_ALG_SHA1           (TPM_ALG_ID)(0x0004)
-//#define TPM_ALG_HMAC           (TPM_ALG_ID)(0x0005)
-#define TPM_ALG_AES            (TPM_ALG_ID)(0x0006)
-//#define TPM_ALG_MGF1           (TPM_ALG_ID)(0x0007)
-#define TPM_ALG_KEYEDHASH      (TPM_ALG_ID)(0x0008)
-//#define TPM_ALG_XOR            (TPM_ALG_ID)(0x000A)
-#define TPM_ALG_SHA256         (TPM_ALG_ID)(0x000B)
-#define TPM_ALG_SHA384         (TPM_ALG_ID)(0x000C)
-#define TPM_ALG_SHA512         (TPM_ALG_ID)(0x000D)
-#define TPM_ALG_NULL           (TPM_ALG_ID)(0x0010)
-#define TPM_ALG_SM3_256        (TPM_ALG_ID)(0x0012)
-#define TPM_ALG_SM4            (TPM_ALG_ID)(0x0013)
-#define TPM_ALG_RSASSA         (TPM_ALG_ID)(0x0014)
-#define TPM_ALG_RSAES          (TPM_ALG_ID)(0x0015)
-#define TPM_ALG_RSAPSS         (TPM_ALG_ID)(0x0016)
-#define TPM_ALG_OAEP           (TPM_ALG_ID)(0x0017)
-#define TPM_ALG_ECDSA          (TPM_ALG_ID)(0x0018)
-#define TPM_ALG_ECDH           (TPM_ALG_ID)(0x0019)
-#define TPM_ALG_ECDAA          (TPM_ALG_ID)(0x001A)
-#define TPM_ALG_SM2            (TPM_ALG_ID)(0x001B)
-#define TPM_ALG_ECSCHNORR      (TPM_ALG_ID)(0x001C)
-#define TPM_ALG_ECMQV          (TPM_ALG_ID)(0x001D)
-#define TPM_ALG_KDF1_SP800_56a (TPM_ALG_ID)(0x0020)
-#define TPM_ALG_KDF2           (TPM_ALG_ID)(0x0021)
-#define TPM_ALG_KDF1_SP800_108 (TPM_ALG_ID)(0x0022)
-#define TPM_ALG_ECC            (TPM_ALG_ID)(0x0023)
-#define TPM_ALG_SYMCIPHER      (TPM_ALG_ID)(0x0025)
-#define TPM_ALG_CTR            (TPM_ALG_ID)(0x0040)
-#define TPM_ALG_OFB            (TPM_ALG_ID)(0x0041)
-#define TPM_ALG_CBC            (TPM_ALG_ID)(0x0042)
-#define TPM_ALG_CFB            (TPM_ALG_ID)(0x0043)
-#define TPM_ALG_ECB            (TPM_ALG_ID)(0x0044)
-#define TPM_ALG_LAST           (TPM_ALG_ID)(0x0044)
+#define TPM_ALG_ERROR  (TPM_ALG_ID)(0x0000)
+#define TPM_ALG_FIRST  (TPM_ALG_ID)(0x0001)
+// #define TPM_ALG_RSA            (TPM_ALG_ID)(0x0001)
+// #define TPM_ALG_SHA            (TPM_ALG_ID)(0x0004)
+#define TPM_ALG_SHA1  (TPM_ALG_ID)(0x0004)
+// #define TPM_ALG_HMAC           (TPM_ALG_ID)(0x0005)
+#define TPM_ALG_AES  (TPM_ALG_ID)(0x0006)
+// #define TPM_ALG_MGF1           (TPM_ALG_ID)(0x0007)
+#define TPM_ALG_KEYEDHASH  (TPM_ALG_ID)(0x0008)
+// #define TPM_ALG_XOR            (TPM_ALG_ID)(0x000A)
+#define TPM_ALG_SHA256          (TPM_ALG_ID)(0x000B)
+#define TPM_ALG_SHA384          (TPM_ALG_ID)(0x000C)
+#define TPM_ALG_SHA512          (TPM_ALG_ID)(0x000D)
+#define TPM_ALG_NULL            (TPM_ALG_ID)(0x0010)
+#define TPM_ALG_SM3_256         (TPM_ALG_ID)(0x0012)
+#define TPM_ALG_SM4             (TPM_ALG_ID)(0x0013)
+#define TPM_ALG_RSASSA          (TPM_ALG_ID)(0x0014)
+#define TPM_ALG_RSAES           (TPM_ALG_ID)(0x0015)
+#define TPM_ALG_RSAPSS          (TPM_ALG_ID)(0x0016)
+#define TPM_ALG_OAEP            (TPM_ALG_ID)(0x0017)
+#define TPM_ALG_ECDSA           (TPM_ALG_ID)(0x0018)
+#define TPM_ALG_ECDH            (TPM_ALG_ID)(0x0019)
+#define TPM_ALG_ECDAA           (TPM_ALG_ID)(0x001A)
+#define TPM_ALG_SM2             (TPM_ALG_ID)(0x001B)
+#define TPM_ALG_ECSCHNORR       (TPM_ALG_ID)(0x001C)
+#define TPM_ALG_ECMQV           (TPM_ALG_ID)(0x001D)
+#define TPM_ALG_KDF1_SP800_56a  (TPM_ALG_ID)(0x0020)
+#define TPM_ALG_KDF2            (TPM_ALG_ID)(0x0021)
+#define TPM_ALG_KDF1_SP800_108  (TPM_ALG_ID)(0x0022)
+#define TPM_ALG_ECC             (TPM_ALG_ID)(0x0023)
+#define TPM_ALG_SYMCIPHER       (TPM_ALG_ID)(0x0025)
+#define TPM_ALG_CTR             (TPM_ALG_ID)(0x0040)
+#define TPM_ALG_OFB             (TPM_ALG_ID)(0x0041)
+#define TPM_ALG_CBC             (TPM_ALG_ID)(0x0042)
+#define TPM_ALG_CFB             (TPM_ALG_ID)(0x0043)
+#define TPM_ALG_ECB             (TPM_ALG_ID)(0x0044)
+#define TPM_ALG_LAST            (TPM_ALG_ID)(0x0044)
 
 // Table 8 - TPM_ECC_CURVE Constants
 typedef UINT16 TPM_ECC_CURVE;
-#define TPM_ECC_NONE      (TPM_ECC_CURVE)(0x0000)
-#define TPM_ECC_NIST_P192 (TPM_ECC_CURVE)(0x0001)
-#define TPM_ECC_NIST_P224 (TPM_ECC_CURVE)(0x0002)
-#define TPM_ECC_NIST_P256 (TPM_ECC_CURVE)(0x0003)
-#define TPM_ECC_NIST_P384 (TPM_ECC_CURVE)(0x0004)
-#define TPM_ECC_NIST_P521 (TPM_ECC_CURVE)(0x0005)
-#define TPM_ECC_BN_P256   (TPM_ECC_CURVE)(0x0010)
-#define TPM_ECC_BN_P638   (TPM_ECC_CURVE)(0x0011)
-#define TPM_ECC_SM2_P256  (TPM_ECC_CURVE)(0x0020)
+#define TPM_ECC_NONE       (TPM_ECC_CURVE)(0x0000)
+#define TPM_ECC_NIST_P192  (TPM_ECC_CURVE)(0x0001)
+#define TPM_ECC_NIST_P224  (TPM_ECC_CURVE)(0x0002)
+#define TPM_ECC_NIST_P256  (TPM_ECC_CURVE)(0x0003)
+#define TPM_ECC_NIST_P384  (TPM_ECC_CURVE)(0x0004)
+#define TPM_ECC_NIST_P521  (TPM_ECC_CURVE)(0x0005)
+#define TPM_ECC_BN_P256    (TPM_ECC_CURVE)(0x0010)
+#define TPM_ECC_BN_P638    (TPM_ECC_CURVE)(0x0011)
+#define TPM_ECC_SM2_P256   (TPM_ECC_CURVE)(0x0020)
 
 // Table 11 - TPM_CC Constants (Numeric Order)
 typedef UINT32 TPM_CC;
-#define TPM_CC_FIRST                      (TPM_CC)(0x0000011F)
-#define TPM_CC_PP_FIRST                   (TPM_CC)(0x0000011F)
-#define TPM_CC_NV_UndefineSpaceSpecial    (TPM_CC)(0x0000011F)
-#define TPM_CC_EvictControl               (TPM_CC)(0x00000120)
-#define TPM_CC_HierarchyControl           (TPM_CC)(0x00000121)
-#define TPM_CC_NV_UndefineSpace           (TPM_CC)(0x00000122)
-#define TPM_CC_ChangeEPS                  (TPM_CC)(0x00000124)
-#define TPM_CC_ChangePPS                  (TPM_CC)(0x00000125)
-#define TPM_CC_Clear                      (TPM_CC)(0x00000126)
-#define TPM_CC_ClearControl               (TPM_CC)(0x00000127)
-#define TPM_CC_ClockSet                   (TPM_CC)(0x00000128)
-#define TPM_CC_HierarchyChangeAuth        (TPM_CC)(0x00000129)
-#define TPM_CC_NV_DefineSpace             (TPM_CC)(0x0000012A)
-#define TPM_CC_PCR_Allocate               (TPM_CC)(0x0000012B)
-#define TPM_CC_PCR_SetAuthPolicy          (TPM_CC)(0x0000012C)
-#define TPM_CC_PP_Commands                (TPM_CC)(0x0000012D)
-#define TPM_CC_SetPrimaryPolicy           (TPM_CC)(0x0000012E)
-#define TPM_CC_FieldUpgradeStart          (TPM_CC)(0x0000012F)
-#define TPM_CC_ClockRateAdjust            (TPM_CC)(0x00000130)
-#define TPM_CC_CreatePrimary              (TPM_CC)(0x00000131)
-#define TPM_CC_NV_GlobalWriteLock         (TPM_CC)(0x00000132)
-#define TPM_CC_PP_LAST                    (TPM_CC)(0x00000132)
-#define TPM_CC_GetCommandAuditDigest      (TPM_CC)(0x00000133)
-#define TPM_CC_NV_Increment               (TPM_CC)(0x00000134)
-#define TPM_CC_NV_SetBits                 (TPM_CC)(0x00000135)
-#define TPM_CC_NV_Extend                  (TPM_CC)(0x00000136)
-#define TPM_CC_NV_Write                   (TPM_CC)(0x00000137)
-#define TPM_CC_NV_WriteLock               (TPM_CC)(0x00000138)
-#define TPM_CC_DictionaryAttackLockReset  (TPM_CC)(0x00000139)
-#define TPM_CC_DictionaryAttackParameters (TPM_CC)(0x0000013A)
-#define TPM_CC_NV_ChangeAuth              (TPM_CC)(0x0000013B)
-#define TPM_CC_PCR_Event                  (TPM_CC)(0x0000013C)
-#define TPM_CC_PCR_Reset                  (TPM_CC)(0x0000013D)
-#define TPM_CC_SequenceComplete           (TPM_CC)(0x0000013E)
-#define TPM_CC_SetAlgorithmSet            (TPM_CC)(0x0000013F)
-#define TPM_CC_SetCommandCodeAuditStatus  (TPM_CC)(0x00000140)
-#define TPM_CC_FieldUpgradeData           (TPM_CC)(0x00000141)
-#define TPM_CC_IncrementalSelfTest        (TPM_CC)(0x00000142)
-#define TPM_CC_SelfTest                   (TPM_CC)(0x00000143)
-#define TPM_CC_Startup                    (TPM_CC)(0x00000144)
-#define TPM_CC_Shutdown                   (TPM_CC)(0x00000145)
-#define TPM_CC_StirRandom                 (TPM_CC)(0x00000146)
-#define TPM_CC_ActivateCredential         (TPM_CC)(0x00000147)
-#define TPM_CC_Certify                    (TPM_CC)(0x00000148)
-#define TPM_CC_PolicyNV                   (TPM_CC)(0x00000149)
-#define TPM_CC_CertifyCreation            (TPM_CC)(0x0000014A)
-#define TPM_CC_Duplicate                  (TPM_CC)(0x0000014B)
-#define TPM_CC_GetTime                    (TPM_CC)(0x0000014C)
-#define TPM_CC_GetSessionAuditDigest      (TPM_CC)(0x0000014D)
-#define TPM_CC_NV_Read                    (TPM_CC)(0x0000014E)
-#define TPM_CC_NV_ReadLock                (TPM_CC)(0x0000014F)
-#define TPM_CC_ObjectChangeAuth           (TPM_CC)(0x00000150)
-#define TPM_CC_PolicySecret               (TPM_CC)(0x00000151)
-#define TPM_CC_Rewrap                     (TPM_CC)(0x00000152)
-#define TPM_CC_Create                     (TPM_CC)(0x00000153)
-#define TPM_CC_ECDH_ZGen                  (TPM_CC)(0x00000154)
-#define TPM_CC_HMAC                       (TPM_CC)(0x00000155)
-#define TPM_CC_Import                     (TPM_CC)(0x00000156)
-#define TPM_CC_Load                       (TPM_CC)(0x00000157)
-#define TPM_CC_Quote                      (TPM_CC)(0x00000158)
-#define TPM_CC_RSA_Decrypt                (TPM_CC)(0x00000159)
-#define TPM_CC_HMAC_Start                 (TPM_CC)(0x0000015B)
-#define TPM_CC_SequenceUpdate             (TPM_CC)(0x0000015C)
-#define TPM_CC_Sign                       (TPM_CC)(0x0000015D)
-#define TPM_CC_Unseal                     (TPM_CC)(0x0000015E)
-#define TPM_CC_PolicySigned               (TPM_CC)(0x00000160)
-#define TPM_CC_ContextLoad                (TPM_CC)(0x00000161)
-#define TPM_CC_ContextSave                (TPM_CC)(0x00000162)
-#define TPM_CC_ECDH_KeyGen                (TPM_CC)(0x00000163)
-#define TPM_CC_EncryptDecrypt             (TPM_CC)(0x00000164)
-#define TPM_CC_FlushContext               (TPM_CC)(0x00000165)
-#define TPM_CC_LoadExternal               (TPM_CC)(0x00000167)
-#define TPM_CC_MakeCredential             (TPM_CC)(0x00000168)
-#define TPM_CC_NV_ReadPublic              (TPM_CC)(0x00000169)
-#define TPM_CC_PolicyAuthorize            (TPM_CC)(0x0000016A)
-#define TPM_CC_PolicyAuthValue            (TPM_CC)(0x0000016B)
-#define TPM_CC_PolicyCommandCode          (TPM_CC)(0x0000016C)
-#define TPM_CC_PolicyCounterTimer         (TPM_CC)(0x0000016D)
-#define TPM_CC_PolicyCpHash               (TPM_CC)(0x0000016E)
-#define TPM_CC_PolicyLocality             (TPM_CC)(0x0000016F)
-#define TPM_CC_PolicyNameHash             (TPM_CC)(0x00000170)
-#define TPM_CC_PolicyOR                   (TPM_CC)(0x00000171)
-#define TPM_CC_PolicyTicket               (TPM_CC)(0x00000172)
-#define TPM_CC_ReadPublic                 (TPM_CC)(0x00000173)
-#define TPM_CC_RSA_Encrypt                (TPM_CC)(0x00000174)
-#define TPM_CC_StartAuthSession           (TPM_CC)(0x00000176)
-#define TPM_CC_VerifySignature            (TPM_CC)(0x00000177)
-#define TPM_CC_ECC_Parameters             (TPM_CC)(0x00000178)
-#define TPM_CC_FirmwareRead               (TPM_CC)(0x00000179)
-#define TPM_CC_GetCapability              (TPM_CC)(0x0000017A)
-#define TPM_CC_GetRandom                  (TPM_CC)(0x0000017B)
-#define TPM_CC_GetTestResult              (TPM_CC)(0x0000017C)
-#define TPM_CC_Hash                       (TPM_CC)(0x0000017D)
-#define TPM_CC_PCR_Read                   (TPM_CC)(0x0000017E)
-#define TPM_CC_PolicyPCR                  (TPM_CC)(0x0000017F)
-#define TPM_CC_PolicyRestart              (TPM_CC)(0x00000180)
-#define TPM_CC_ReadClock                  (TPM_CC)(0x00000181)
-#define TPM_CC_PCR_Extend                 (TPM_CC)(0x00000182)
-#define TPM_CC_PCR_SetAuthValue           (TPM_CC)(0x00000183)
-#define TPM_CC_NV_Certify                 (TPM_CC)(0x00000184)
-#define TPM_CC_EventSequenceComplete      (TPM_CC)(0x00000185)
-#define TPM_CC_HashSequenceStart          (TPM_CC)(0x00000186)
-#define TPM_CC_PolicyPhysicalPresence     (TPM_CC)(0x00000187)
-#define TPM_CC_PolicyDuplicationSelect    (TPM_CC)(0x00000188)
-#define TPM_CC_PolicyGetDigest            (TPM_CC)(0x00000189)
-#define TPM_CC_TestParms                  (TPM_CC)(0x0000018A)
-#define TPM_CC_Commit                     (TPM_CC)(0x0000018B)
-#define TPM_CC_PolicyPassword             (TPM_CC)(0x0000018C)
-#define TPM_CC_ZGen_2Phase                (TPM_CC)(0x0000018D)
-#define TPM_CC_EC_Ephemeral               (TPM_CC)(0x0000018E)
-#define TPM_CC_LAST                       (TPM_CC)(0x0000018E)
+#define TPM_CC_FIRST                       (TPM_CC)(0x0000011F)
+#define TPM_CC_PP_FIRST                    (TPM_CC)(0x0000011F)
+#define TPM_CC_NV_UndefineSpaceSpecial     (TPM_CC)(0x0000011F)
+#define TPM_CC_EvictControl                (TPM_CC)(0x00000120)
+#define TPM_CC_HierarchyControl            (TPM_CC)(0x00000121)
+#define TPM_CC_NV_UndefineSpace            (TPM_CC)(0x00000122)
+#define TPM_CC_ChangeEPS                   (TPM_CC)(0x00000124)
+#define TPM_CC_ChangePPS                   (TPM_CC)(0x00000125)
+#define TPM_CC_Clear                       (TPM_CC)(0x00000126)
+#define TPM_CC_ClearControl                (TPM_CC)(0x00000127)
+#define TPM_CC_ClockSet                    (TPM_CC)(0x00000128)
+#define TPM_CC_HierarchyChangeAuth         (TPM_CC)(0x00000129)
+#define TPM_CC_NV_DefineSpace              (TPM_CC)(0x0000012A)
+#define TPM_CC_PCR_Allocate                (TPM_CC)(0x0000012B)
+#define TPM_CC_PCR_SetAuthPolicy           (TPM_CC)(0x0000012C)
+#define TPM_CC_PP_Commands                 (TPM_CC)(0x0000012D)
+#define TPM_CC_SetPrimaryPolicy            (TPM_CC)(0x0000012E)
+#define TPM_CC_FieldUpgradeStart           (TPM_CC)(0x0000012F)
+#define TPM_CC_ClockRateAdjust             (TPM_CC)(0x00000130)
+#define TPM_CC_CreatePrimary               (TPM_CC)(0x00000131)
+#define TPM_CC_NV_GlobalWriteLock          (TPM_CC)(0x00000132)
+#define TPM_CC_PP_LAST                     (TPM_CC)(0x00000132)
+#define TPM_CC_GetCommandAuditDigest       (TPM_CC)(0x00000133)
+#define TPM_CC_NV_Increment                (TPM_CC)(0x00000134)
+#define TPM_CC_NV_SetBits                  (TPM_CC)(0x00000135)
+#define TPM_CC_NV_Extend                   (TPM_CC)(0x00000136)
+#define TPM_CC_NV_Write                    (TPM_CC)(0x00000137)
+#define TPM_CC_NV_WriteLock                (TPM_CC)(0x00000138)
+#define TPM_CC_DictionaryAttackLockReset   (TPM_CC)(0x00000139)
+#define TPM_CC_DictionaryAttackParameters  (TPM_CC)(0x0000013A)
+#define TPM_CC_NV_ChangeAuth               (TPM_CC)(0x0000013B)
+#define TPM_CC_PCR_Event                   (TPM_CC)(0x0000013C)
+#define TPM_CC_PCR_Reset                   (TPM_CC)(0x0000013D)
+#define TPM_CC_SequenceComplete            (TPM_CC)(0x0000013E)
+#define TPM_CC_SetAlgorithmSet             (TPM_CC)(0x0000013F)
+#define TPM_CC_SetCommandCodeAuditStatus   (TPM_CC)(0x00000140)
+#define TPM_CC_FieldUpgradeData            (TPM_CC)(0x00000141)
+#define TPM_CC_IncrementalSelfTest         (TPM_CC)(0x00000142)
+#define TPM_CC_SelfTest                    (TPM_CC)(0x00000143)
+#define TPM_CC_Startup                     (TPM_CC)(0x00000144)
+#define TPM_CC_Shutdown                    (TPM_CC)(0x00000145)
+#define TPM_CC_StirRandom                  (TPM_CC)(0x00000146)
+#define TPM_CC_ActivateCredential          (TPM_CC)(0x00000147)
+#define TPM_CC_Certify                     (TPM_CC)(0x00000148)
+#define TPM_CC_PolicyNV                    (TPM_CC)(0x00000149)
+#define TPM_CC_CertifyCreation             (TPM_CC)(0x0000014A)
+#define TPM_CC_Duplicate                   (TPM_CC)(0x0000014B)
+#define TPM_CC_GetTime                     (TPM_CC)(0x0000014C)
+#define TPM_CC_GetSessionAuditDigest       (TPM_CC)(0x0000014D)
+#define TPM_CC_NV_Read                     (TPM_CC)(0x0000014E)
+#define TPM_CC_NV_ReadLock                 (TPM_CC)(0x0000014F)
+#define TPM_CC_ObjectChangeAuth            (TPM_CC)(0x00000150)
+#define TPM_CC_PolicySecret                (TPM_CC)(0x00000151)
+#define TPM_CC_Rewrap                      (TPM_CC)(0x00000152)
+#define TPM_CC_Create                      (TPM_CC)(0x00000153)
+#define TPM_CC_ECDH_ZGen                   (TPM_CC)(0x00000154)
+#define TPM_CC_HMAC                        (TPM_CC)(0x00000155)
+#define TPM_CC_Import                      (TPM_CC)(0x00000156)
+#define TPM_CC_Load                        (TPM_CC)(0x00000157)
+#define TPM_CC_Quote                       (TPM_CC)(0x00000158)
+#define TPM_CC_RSA_Decrypt                 (TPM_CC)(0x00000159)
+#define TPM_CC_HMAC_Start                  (TPM_CC)(0x0000015B)
+#define TPM_CC_SequenceUpdate              (TPM_CC)(0x0000015C)
+#define TPM_CC_Sign                        (TPM_CC)(0x0000015D)
+#define TPM_CC_Unseal                      (TPM_CC)(0x0000015E)
+#define TPM_CC_PolicySigned                (TPM_CC)(0x00000160)
+#define TPM_CC_ContextLoad                 (TPM_CC)(0x00000161)
+#define TPM_CC_ContextSave                 (TPM_CC)(0x00000162)
+#define TPM_CC_ECDH_KeyGen                 (TPM_CC)(0x00000163)
+#define TPM_CC_EncryptDecrypt              (TPM_CC)(0x00000164)
+#define TPM_CC_FlushContext                (TPM_CC)(0x00000165)
+#define TPM_CC_LoadExternal                (TPM_CC)(0x00000167)
+#define TPM_CC_MakeCredential              (TPM_CC)(0x00000168)
+#define TPM_CC_NV_ReadPublic               (TPM_CC)(0x00000169)
+#define TPM_CC_PolicyAuthorize             (TPM_CC)(0x0000016A)
+#define TPM_CC_PolicyAuthValue             (TPM_CC)(0x0000016B)
+#define TPM_CC_PolicyCommandCode           (TPM_CC)(0x0000016C)
+#define TPM_CC_PolicyCounterTimer          (TPM_CC)(0x0000016D)
+#define TPM_CC_PolicyCpHash                (TPM_CC)(0x0000016E)
+#define TPM_CC_PolicyLocality              (TPM_CC)(0x0000016F)
+#define TPM_CC_PolicyNameHash              (TPM_CC)(0x00000170)
+#define TPM_CC_PolicyOR                    (TPM_CC)(0x00000171)
+#define TPM_CC_PolicyTicket                (TPM_CC)(0x00000172)
+#define TPM_CC_ReadPublic                  (TPM_CC)(0x00000173)
+#define TPM_CC_RSA_Encrypt                 (TPM_CC)(0x00000174)
+#define TPM_CC_StartAuthSession            (TPM_CC)(0x00000176)
+#define TPM_CC_VerifySignature             (TPM_CC)(0x00000177)
+#define TPM_CC_ECC_Parameters              (TPM_CC)(0x00000178)
+#define TPM_CC_FirmwareRead                (TPM_CC)(0x00000179)
+#define TPM_CC_GetCapability               (TPM_CC)(0x0000017A)
+#define TPM_CC_GetRandom                   (TPM_CC)(0x0000017B)
+#define TPM_CC_GetTestResult               (TPM_CC)(0x0000017C)
+#define TPM_CC_Hash                        (TPM_CC)(0x0000017D)
+#define TPM_CC_PCR_Read                    (TPM_CC)(0x0000017E)
+#define TPM_CC_PolicyPCR                   (TPM_CC)(0x0000017F)
+#define TPM_CC_PolicyRestart               (TPM_CC)(0x00000180)
+#define TPM_CC_ReadClock                   (TPM_CC)(0x00000181)
+#define TPM_CC_PCR_Extend                  (TPM_CC)(0x00000182)
+#define TPM_CC_PCR_SetAuthValue            (TPM_CC)(0x00000183)
+#define TPM_CC_NV_Certify                  (TPM_CC)(0x00000184)
+#define TPM_CC_EventSequenceComplete       (TPM_CC)(0x00000185)
+#define TPM_CC_HashSequenceStart           (TPM_CC)(0x00000186)
+#define TPM_CC_PolicyPhysicalPresence      (TPM_CC)(0x00000187)
+#define TPM_CC_PolicyDuplicationSelect     (TPM_CC)(0x00000188)
+#define TPM_CC_PolicyGetDigest             (TPM_CC)(0x00000189)
+#define TPM_CC_TestParms                   (TPM_CC)(0x0000018A)
+#define TPM_CC_Commit                      (TPM_CC)(0x0000018B)
+#define TPM_CC_PolicyPassword              (TPM_CC)(0x0000018C)
+#define TPM_CC_ZGen_2Phase                 (TPM_CC)(0x0000018D)
+#define TPM_CC_EC_Ephemeral                (TPM_CC)(0x0000018E)
+#define TPM_CC_LAST                        (TPM_CC)(0x0000018E)
 
 // Table 15 - TPM_RC Constants (Actions)
 typedef UINT32 TPM_RC;
-#define TPM_RC_SUCCESS           (TPM_RC)(0x000)
-#define TPM_RC_BAD_TAG           (TPM_RC)(0x030)
-#define RC_VER1                  (TPM_RC)(0x100)
-#define TPM_RC_INITIALIZE        (TPM_RC)(RC_VER1 + 0x000)
-#define TPM_RC_FAILURE           (TPM_RC)(RC_VER1 + 0x001)
-#define TPM_RC_SEQUENCE          (TPM_RC)(RC_VER1 + 0x003)
-#define TPM_RC_PRIVATE           (TPM_RC)(RC_VER1 + 0x00B)
-#define TPM_RC_HMAC              (TPM_RC)(RC_VER1 + 0x019)
-#define TPM_RC_DISABLED          (TPM_RC)(RC_VER1 + 0x020)
-#define TPM_RC_EXCLUSIVE         (TPM_RC)(RC_VER1 + 0x021)
-#define TPM_RC_AUTH_TYPE         (TPM_RC)(RC_VER1 + 0x024)
-#define TPM_RC_AUTH_MISSING      (TPM_RC)(RC_VER1 + 0x025)
-#define TPM_RC_POLICY            (TPM_RC)(RC_VER1 + 0x026)
-#define TPM_RC_PCR               (TPM_RC)(RC_VER1 + 0x027)
-#define TPM_RC_PCR_CHANGED       (TPM_RC)(RC_VER1 + 0x028)
-#define TPM_RC_UPGRADE           (TPM_RC)(RC_VER1 + 0x02D)
-#define TPM_RC_TOO_MANY_CONTEXTS (TPM_RC)(RC_VER1 + 0x02E)
-#define TPM_RC_AUTH_UNAVAILABLE  (TPM_RC)(RC_VER1 + 0x02F)
-#define TPM_RC_REBOOT            (TPM_RC)(RC_VER1 + 0x030)
-#define TPM_RC_UNBALANCED        (TPM_RC)(RC_VER1 + 0x031)
-#define TPM_RC_COMMAND_SIZE      (TPM_RC)(RC_VER1 + 0x042)
-#define TPM_RC_COMMAND_CODE      (TPM_RC)(RC_VER1 + 0x043)
-#define TPM_RC_AUTHSIZE          (TPM_RC)(RC_VER1 + 0x044)
-#define TPM_RC_AUTH_CONTEXT      (TPM_RC)(RC_VER1 + 0x045)
-#define TPM_RC_NV_RANGE          (TPM_RC)(RC_VER1 + 0x046)
-#define TPM_RC_NV_SIZE           (TPM_RC)(RC_VER1 + 0x047)
-#define TPM_RC_NV_LOCKED         (TPM_RC)(RC_VER1 + 0x048)
-#define TPM_RC_NV_AUTHORIZATION  (TPM_RC)(RC_VER1 + 0x049)
-#define TPM_RC_NV_UNINITIALIZED  (TPM_RC)(RC_VER1 + 0x04A)
-#define TPM_RC_NV_SPACE          (TPM_RC)(RC_VER1 + 0x04B)
-#define TPM_RC_NV_DEFINED        (TPM_RC)(RC_VER1 + 0x04C)
-#define TPM_RC_BAD_CONTEXT       (TPM_RC)(RC_VER1 + 0x050)
-#define TPM_RC_CPHASH            (TPM_RC)(RC_VER1 + 0x051)
-#define TPM_RC_PARENT            (TPM_RC)(RC_VER1 + 0x052)
-#define TPM_RC_NEEDS_TEST        (TPM_RC)(RC_VER1 + 0x053)
-#define TPM_RC_NO_RESULT         (TPM_RC)(RC_VER1 + 0x054)
-#define TPM_RC_SENSITIVE         (TPM_RC)(RC_VER1 + 0x055)
-#define RC_MAX_FM0               (TPM_RC)(RC_VER1 + 0x07F)
-#define RC_FMT1                  (TPM_RC)(0x080)
-#define TPM_RC_ASYMMETRIC        (TPM_RC)(RC_FMT1 + 0x001)
-#define TPM_RC_ATTRIBUTES        (TPM_RC)(RC_FMT1 + 0x002)
-#define TPM_RC_HASH              (TPM_RC)(RC_FMT1 + 0x003)
-#define TPM_RC_VALUE             (TPM_RC)(RC_FMT1 + 0x004)
-#define TPM_RC_HIERARCHY         (TPM_RC)(RC_FMT1 + 0x005)
-#define TPM_RC_KEY_SIZE          (TPM_RC)(RC_FMT1 + 0x007)
-#define TPM_RC_MGF               (TPM_RC)(RC_FMT1 + 0x008)
-#define TPM_RC_MODE              (TPM_RC)(RC_FMT1 + 0x009)
-#define TPM_RC_TYPE              (TPM_RC)(RC_FMT1 + 0x00A)
-#define TPM_RC_HANDLE            (TPM_RC)(RC_FMT1 + 0x00B)
-#define TPM_RC_KDF               (TPM_RC)(RC_FMT1 + 0x00C)
-#define TPM_RC_RANGE             (TPM_RC)(RC_FMT1 + 0x00D)
-#define TPM_RC_AUTH_FAIL         (TPM_RC)(RC_FMT1 + 0x00E)
-#define TPM_RC_NONCE             (TPM_RC)(RC_FMT1 + 0x00F)
-#define TPM_RC_PP                (TPM_RC)(RC_FMT1 + 0x010)
-#define TPM_RC_SCHEME            (TPM_RC)(RC_FMT1 + 0x012)
-#define TPM_RC_SIZE              (TPM_RC)(RC_FMT1 + 0x015)
-#define TPM_RC_SYMMETRIC         (TPM_RC)(RC_FMT1 + 0x016)
-#define TPM_RC_TAG               (TPM_RC)(RC_FMT1 + 0x017)
-#define TPM_RC_SELECTOR          (TPM_RC)(RC_FMT1 + 0x018)
-#define TPM_RC_INSUFFICIENT      (TPM_RC)(RC_FMT1 + 0x01A)
-#define TPM_RC_SIGNATURE         (TPM_RC)(RC_FMT1 + 0x01B)
-#define TPM_RC_KEY               (TPM_RC)(RC_FMT1 + 0x01C)
-#define TPM_RC_POLICY_FAIL       (TPM_RC)(RC_FMT1 + 0x01D)
-#define TPM_RC_INTEGRITY         (TPM_RC)(RC_FMT1 + 0x01F)
-#define TPM_RC_TICKET            (TPM_RC)(RC_FMT1 + 0x020)
-#define TPM_RC_RESERVED_BITS     (TPM_RC)(RC_FMT1 + 0x021)
-#define TPM_RC_BAD_AUTH          (TPM_RC)(RC_FMT1 + 0x022)
-#define TPM_RC_EXPIRED           (TPM_RC)(RC_FMT1 + 0x023)
-#define TPM_RC_POLICY_CC         (TPM_RC)(RC_FMT1 + 0x024 )
-#define TPM_RC_BINDING           (TPM_RC)(RC_FMT1 + 0x025)
-#define TPM_RC_CURVE             (TPM_RC)(RC_FMT1 + 0x026)
-#define TPM_RC_ECC_POINT         (TPM_RC)(RC_FMT1 + 0x027)
-#define RC_WARN                  (TPM_RC)(0x900)
-#define TPM_RC_CONTEXT_GAP       (TPM_RC)(RC_WARN + 0x001)
-#define TPM_RC_OBJECT_MEMORY     (TPM_RC)(RC_WARN + 0x002)
-#define TPM_RC_SESSION_MEMORY    (TPM_RC)(RC_WARN + 0x003)
-#define TPM_RC_MEMORY            (TPM_RC)(RC_WARN + 0x004)
-#define TPM_RC_SESSION_HANDLES   (TPM_RC)(RC_WARN + 0x005)
-#define TPM_RC_OBJECT_HANDLES    (TPM_RC)(RC_WARN + 0x006)
-#define TPM_RC_LOCALITY          (TPM_RC)(RC_WARN + 0x007)
-#define TPM_RC_YIELDED           (TPM_RC)(RC_WARN + 0x008)
-#define TPM_RC_CANCELED          (TPM_RC)(RC_WARN + 0x009)
-#define TPM_RC_TESTING           (TPM_RC)(RC_WARN + 0x00A)
-#define TPM_RC_REFERENCE_H0      (TPM_RC)(RC_WARN + 0x010)
-#define TPM_RC_REFERENCE_H1      (TPM_RC)(RC_WARN + 0x011)
-#define TPM_RC_REFERENCE_H2      (TPM_RC)(RC_WARN + 0x012)
-#define TPM_RC_REFERENCE_H3      (TPM_RC)(RC_WARN + 0x013)
-#define TPM_RC_REFERENCE_H4      (TPM_RC)(RC_WARN + 0x014)
-#define TPM_RC_REFERENCE_H5      (TPM_RC)(RC_WARN + 0x015)
-#define TPM_RC_REFERENCE_H6      (TPM_RC)(RC_WARN + 0x016)
-#define TPM_RC_REFERENCE_S0      (TPM_RC)(RC_WARN + 0x018)
-#define TPM_RC_REFERENCE_S1      (TPM_RC)(RC_WARN + 0x019)
-#define TPM_RC_REFERENCE_S2      (TPM_RC)(RC_WARN + 0x01A)
-#define TPM_RC_REFERENCE_S3      (TPM_RC)(RC_WARN + 0x01B)
-#define TPM_RC_REFERENCE_S4      (TPM_RC)(RC_WARN + 0x01C)
-#define TPM_RC_REFERENCE_S5      (TPM_RC)(RC_WARN + 0x01D)
-#define TPM_RC_REFERENCE_S6      (TPM_RC)(RC_WARN + 0x01E)
-#define TPM_RC_NV_RATE           (TPM_RC)(RC_WARN + 0x020)
-#define TPM_RC_LOCKOUT           (TPM_RC)(RC_WARN + 0x021)
-#define TPM_RC_RETRY             (TPM_RC)(RC_WARN + 0x022)
-#define TPM_RC_NV_UNAVAILABLE    (TPM_RC)(RC_WARN + 0x023)
-#define TPM_RC_NOT_USED          (TPM_RC)(RC_WARN + 0x7F)
-#define TPM_RC_H                 (TPM_RC)(0x000)
-#define TPM_RC_P                 (TPM_RC)(0x040)
-#define TPM_RC_S                 (TPM_RC)(0x800)
-#define TPM_RC_1                 (TPM_RC)(0x100)
-#define TPM_RC_2                 (TPM_RC)(0x200)
-#define TPM_RC_3                 (TPM_RC)(0x300)
-#define TPM_RC_4                 (TPM_RC)(0x400)
-#define TPM_RC_5                 (TPM_RC)(0x500)
-#define TPM_RC_6                 (TPM_RC)(0x600)
-#define TPM_RC_7                 (TPM_RC)(0x700)
-#define TPM_RC_8                 (TPM_RC)(0x800)
-#define TPM_RC_9                 (TPM_RC)(0x900)
-#define TPM_RC_A                 (TPM_RC)(0xA00)
-#define TPM_RC_B                 (TPM_RC)(0xB00)
-#define TPM_RC_C                 (TPM_RC)(0xC00)
-#define TPM_RC_D                 (TPM_RC)(0xD00)
-#define TPM_RC_E                 (TPM_RC)(0xE00)
-#define TPM_RC_F                 (TPM_RC)(0xF00)
-#define TPM_RC_N_MASK            (TPM_RC)(0xF00)
+#define TPM_RC_SUCCESS            (TPM_RC)(0x000)
+#define TPM_RC_BAD_TAG            (TPM_RC)(0x030)
+#define RC_VER1                   (TPM_RC)(0x100)
+#define TPM_RC_INITIALIZE         (TPM_RC)(RC_VER1 + 0x000)
+#define TPM_RC_FAILURE            (TPM_RC)(RC_VER1 + 0x001)
+#define TPM_RC_SEQUENCE           (TPM_RC)(RC_VER1 + 0x003)
+#define TPM_RC_PRIVATE            (TPM_RC)(RC_VER1 + 0x00B)
+#define TPM_RC_HMAC               (TPM_RC)(RC_VER1 + 0x019)
+#define TPM_RC_DISABLED           (TPM_RC)(RC_VER1 + 0x020)
+#define TPM_RC_EXCLUSIVE          (TPM_RC)(RC_VER1 + 0x021)
+#define TPM_RC_AUTH_TYPE          (TPM_RC)(RC_VER1 + 0x024)
+#define TPM_RC_AUTH_MISSING       (TPM_RC)(RC_VER1 + 0x025)
+#define TPM_RC_POLICY             (TPM_RC)(RC_VER1 + 0x026)
+#define TPM_RC_PCR                (TPM_RC)(RC_VER1 + 0x027)
+#define TPM_RC_PCR_CHANGED        (TPM_RC)(RC_VER1 + 0x028)
+#define TPM_RC_UPGRADE            (TPM_RC)(RC_VER1 + 0x02D)
+#define TPM_RC_TOO_MANY_CONTEXTS  (TPM_RC)(RC_VER1 + 0x02E)
+#define TPM_RC_AUTH_UNAVAILABLE   (TPM_RC)(RC_VER1 + 0x02F)
+#define TPM_RC_REBOOT             (TPM_RC)(RC_VER1 + 0x030)
+#define TPM_RC_UNBALANCED         (TPM_RC)(RC_VER1 + 0x031)
+#define TPM_RC_COMMAND_SIZE       (TPM_RC)(RC_VER1 + 0x042)
+#define TPM_RC_COMMAND_CODE       (TPM_RC)(RC_VER1 + 0x043)
+#define TPM_RC_AUTHSIZE           (TPM_RC)(RC_VER1 + 0x044)
+#define TPM_RC_AUTH_CONTEXT       (TPM_RC)(RC_VER1 + 0x045)
+#define TPM_RC_NV_RANGE           (TPM_RC)(RC_VER1 + 0x046)
+#define TPM_RC_NV_SIZE            (TPM_RC)(RC_VER1 + 0x047)
+#define TPM_RC_NV_LOCKED          (TPM_RC)(RC_VER1 + 0x048)
+#define TPM_RC_NV_AUTHORIZATION   (TPM_RC)(RC_VER1 + 0x049)
+#define TPM_RC_NV_UNINITIALIZED   (TPM_RC)(RC_VER1 + 0x04A)
+#define TPM_RC_NV_SPACE           (TPM_RC)(RC_VER1 + 0x04B)
+#define TPM_RC_NV_DEFINED         (TPM_RC)(RC_VER1 + 0x04C)
+#define TPM_RC_BAD_CONTEXT        (TPM_RC)(RC_VER1 + 0x050)
+#define TPM_RC_CPHASH             (TPM_RC)(RC_VER1 + 0x051)
+#define TPM_RC_PARENT             (TPM_RC)(RC_VER1 + 0x052)
+#define TPM_RC_NEEDS_TEST         (TPM_RC)(RC_VER1 + 0x053)
+#define TPM_RC_NO_RESULT          (TPM_RC)(RC_VER1 + 0x054)
+#define TPM_RC_SENSITIVE          (TPM_RC)(RC_VER1 + 0x055)
+#define RC_MAX_FM0                (TPM_RC)(RC_VER1 + 0x07F)
+#define RC_FMT1                   (TPM_RC)(0x080)
+#define TPM_RC_ASYMMETRIC         (TPM_RC)(RC_FMT1 + 0x001)
+#define TPM_RC_ATTRIBUTES         (TPM_RC)(RC_FMT1 + 0x002)
+#define TPM_RC_HASH               (TPM_RC)(RC_FMT1 + 0x003)
+#define TPM_RC_VALUE              (TPM_RC)(RC_FMT1 + 0x004)
+#define TPM_RC_HIERARCHY          (TPM_RC)(RC_FMT1 + 0x005)
+#define TPM_RC_KEY_SIZE           (TPM_RC)(RC_FMT1 + 0x007)
+#define TPM_RC_MGF                (TPM_RC)(RC_FMT1 + 0x008)
+#define TPM_RC_MODE               (TPM_RC)(RC_FMT1 + 0x009)
+#define TPM_RC_TYPE               (TPM_RC)(RC_FMT1 + 0x00A)
+#define TPM_RC_HANDLE             (TPM_RC)(RC_FMT1 + 0x00B)
+#define TPM_RC_KDF                (TPM_RC)(RC_FMT1 + 0x00C)
+#define TPM_RC_RANGE              (TPM_RC)(RC_FMT1 + 0x00D)
+#define TPM_RC_AUTH_FAIL          (TPM_RC)(RC_FMT1 + 0x00E)
+#define TPM_RC_NONCE              (TPM_RC)(RC_FMT1 + 0x00F)
+#define TPM_RC_PP                 (TPM_RC)(RC_FMT1 + 0x010)
+#define TPM_RC_SCHEME             (TPM_RC)(RC_FMT1 + 0x012)
+#define TPM_RC_SIZE               (TPM_RC)(RC_FMT1 + 0x015)
+#define TPM_RC_SYMMETRIC          (TPM_RC)(RC_FMT1 + 0x016)
+#define TPM_RC_TAG                (TPM_RC)(RC_FMT1 + 0x017)
+#define TPM_RC_SELECTOR           (TPM_RC)(RC_FMT1 + 0x018)
+#define TPM_RC_INSUFFICIENT       (TPM_RC)(RC_FMT1 + 0x01A)
+#define TPM_RC_SIGNATURE          (TPM_RC)(RC_FMT1 + 0x01B)
+#define TPM_RC_KEY                (TPM_RC)(RC_FMT1 + 0x01C)
+#define TPM_RC_POLICY_FAIL        (TPM_RC)(RC_FMT1 + 0x01D)
+#define TPM_RC_INTEGRITY          (TPM_RC)(RC_FMT1 + 0x01F)
+#define TPM_RC_TICKET             (TPM_RC)(RC_FMT1 + 0x020)
+#define TPM_RC_RESERVED_BITS      (TPM_RC)(RC_FMT1 + 0x021)
+#define TPM_RC_BAD_AUTH           (TPM_RC)(RC_FMT1 + 0x022)
+#define TPM_RC_EXPIRED            (TPM_RC)(RC_FMT1 + 0x023)
+#define TPM_RC_POLICY_CC          (TPM_RC)(RC_FMT1 + 0x024 )
+#define TPM_RC_BINDING            (TPM_RC)(RC_FMT1 + 0x025)
+#define TPM_RC_CURVE              (TPM_RC)(RC_FMT1 + 0x026)
+#define TPM_RC_ECC_POINT          (TPM_RC)(RC_FMT1 + 0x027)
+#define RC_WARN                   (TPM_RC)(0x900)
+#define TPM_RC_CONTEXT_GAP        (TPM_RC)(RC_WARN + 0x001)
+#define TPM_RC_OBJECT_MEMORY      (TPM_RC)(RC_WARN + 0x002)
+#define TPM_RC_SESSION_MEMORY     (TPM_RC)(RC_WARN + 0x003)
+#define TPM_RC_MEMORY             (TPM_RC)(RC_WARN + 0x004)
+#define TPM_RC_SESSION_HANDLES    (TPM_RC)(RC_WARN + 0x005)
+#define TPM_RC_OBJECT_HANDLES     (TPM_RC)(RC_WARN + 0x006)
+#define TPM_RC_LOCALITY           (TPM_RC)(RC_WARN + 0x007)
+#define TPM_RC_YIELDED            (TPM_RC)(RC_WARN + 0x008)
+#define TPM_RC_CANCELED           (TPM_RC)(RC_WARN + 0x009)
+#define TPM_RC_TESTING            (TPM_RC)(RC_WARN + 0x00A)
+#define TPM_RC_REFERENCE_H0       (TPM_RC)(RC_WARN + 0x010)
+#define TPM_RC_REFERENCE_H1       (TPM_RC)(RC_WARN + 0x011)
+#define TPM_RC_REFERENCE_H2       (TPM_RC)(RC_WARN + 0x012)
+#define TPM_RC_REFERENCE_H3       (TPM_RC)(RC_WARN + 0x013)
+#define TPM_RC_REFERENCE_H4       (TPM_RC)(RC_WARN + 0x014)
+#define TPM_RC_REFERENCE_H5       (TPM_RC)(RC_WARN + 0x015)
+#define TPM_RC_REFERENCE_H6       (TPM_RC)(RC_WARN + 0x016)
+#define TPM_RC_REFERENCE_S0       (TPM_RC)(RC_WARN + 0x018)
+#define TPM_RC_REFERENCE_S1       (TPM_RC)(RC_WARN + 0x019)
+#define TPM_RC_REFERENCE_S2       (TPM_RC)(RC_WARN + 0x01A)
+#define TPM_RC_REFERENCE_S3       (TPM_RC)(RC_WARN + 0x01B)
+#define TPM_RC_REFERENCE_S4       (TPM_RC)(RC_WARN + 0x01C)
+#define TPM_RC_REFERENCE_S5       (TPM_RC)(RC_WARN + 0x01D)
+#define TPM_RC_REFERENCE_S6       (TPM_RC)(RC_WARN + 0x01E)
+#define TPM_RC_NV_RATE            (TPM_RC)(RC_WARN + 0x020)
+#define TPM_RC_LOCKOUT            (TPM_RC)(RC_WARN + 0x021)
+#define TPM_RC_RETRY              (TPM_RC)(RC_WARN + 0x022)
+#define TPM_RC_NV_UNAVAILABLE     (TPM_RC)(RC_WARN + 0x023)
+#define TPM_RC_NOT_USED           (TPM_RC)(RC_WARN + 0x7F)
+#define TPM_RC_H                  (TPM_RC)(0x000)
+#define TPM_RC_P                  (TPM_RC)(0x040)
+#define TPM_RC_S                  (TPM_RC)(0x800)
+#define TPM_RC_1                  (TPM_RC)(0x100)
+#define TPM_RC_2                  (TPM_RC)(0x200)
+#define TPM_RC_3                  (TPM_RC)(0x300)
+#define TPM_RC_4                  (TPM_RC)(0x400)
+#define TPM_RC_5                  (TPM_RC)(0x500)
+#define TPM_RC_6                  (TPM_RC)(0x600)
+#define TPM_RC_7                  (TPM_RC)(0x700)
+#define TPM_RC_8                  (TPM_RC)(0x800)
+#define TPM_RC_9                  (TPM_RC)(0x900)
+#define TPM_RC_A                  (TPM_RC)(0xA00)
+#define TPM_RC_B                  (TPM_RC)(0xB00)
+#define TPM_RC_C                  (TPM_RC)(0xC00)
+#define TPM_RC_D                  (TPM_RC)(0xD00)
+#define TPM_RC_E                  (TPM_RC)(0xE00)
+#define TPM_RC_F                  (TPM_RC)(0xF00)
+#define TPM_RC_N_MASK             (TPM_RC)(0xF00)
 
 // Table 16 - TPM_CLOCK_ADJUST Constants
 typedef INT8 TPM_CLOCK_ADJUST;
-#define TPM_CLOCK_COARSE_SLOWER (TPM_CLOCK_ADJUST)(-3)
-#define TPM_CLOCK_MEDIUM_SLOWER (TPM_CLOCK_ADJUST)(-2)
-#define TPM_CLOCK_FINE_SLOWER   (TPM_CLOCK_ADJUST)(-1)
-#define TPM_CLOCK_NO_CHANGE     (TPM_CLOCK_ADJUST)(0)
-#define TPM_CLOCK_FINE_FASTER   (TPM_CLOCK_ADJUST)(1)
-#define TPM_CLOCK_MEDIUM_FASTER (TPM_CLOCK_ADJUST)(2)
-#define TPM_CLOCK_COARSE_FASTER (TPM_CLOCK_ADJUST)(3)
+#define TPM_CLOCK_COARSE_SLOWER  (TPM_CLOCK_ADJUST)(-3)
+#define TPM_CLOCK_MEDIUM_SLOWER  (TPM_CLOCK_ADJUST)(-2)
+#define TPM_CLOCK_FINE_SLOWER    (TPM_CLOCK_ADJUST)(-1)
+#define TPM_CLOCK_NO_CHANGE      (TPM_CLOCK_ADJUST)(0)
+#define TPM_CLOCK_FINE_FASTER    (TPM_CLOCK_ADJUST)(1)
+#define TPM_CLOCK_MEDIUM_FASTER  (TPM_CLOCK_ADJUST)(2)
+#define TPM_CLOCK_COARSE_FASTER  (TPM_CLOCK_ADJUST)(3)
 
 // Table 17 - TPM_EO Constants
 typedef UINT16 TPM_EO;
-#define TPM_EO_EQ          (TPM_EO)(0x0000)
-#define TPM_EO_NEQ         (TPM_EO)(0x0001)
-#define TPM_EO_SIGNED_GT   (TPM_EO)(0x0002)
-#define TPM_EO_UNSIGNED_GT (TPM_EO)(0x0003)
-#define TPM_EO_SIGNED_LT   (TPM_EO)(0x0004)
-#define TPM_EO_UNSIGNED_LT (TPM_EO)(0x0005)
-#define TPM_EO_SIGNED_GE   (TPM_EO)(0x0006)
-#define TPM_EO_UNSIGNED_GE (TPM_EO)(0x0007)
-#define TPM_EO_SIGNED_LE   (TPM_EO)(0x0008)
-#define TPM_EO_UNSIGNED_LE (TPM_EO)(0x0009)
-#define TPM_EO_BITSET      (TPM_EO)(0x000A)
-#define TPM_EO_BITCLEAR    (TPM_EO)(0x000B)
+#define TPM_EO_EQ           (TPM_EO)(0x0000)
+#define TPM_EO_NEQ          (TPM_EO)(0x0001)
+#define TPM_EO_SIGNED_GT    (TPM_EO)(0x0002)
+#define TPM_EO_UNSIGNED_GT  (TPM_EO)(0x0003)
+#define TPM_EO_SIGNED_LT    (TPM_EO)(0x0004)
+#define TPM_EO_UNSIGNED_LT  (TPM_EO)(0x0005)
+#define TPM_EO_SIGNED_GE    (TPM_EO)(0x0006)
+#define TPM_EO_UNSIGNED_GE  (TPM_EO)(0x0007)
+#define TPM_EO_SIGNED_LE    (TPM_EO)(0x0008)
+#define TPM_EO_UNSIGNED_LE  (TPM_EO)(0x0009)
+#define TPM_EO_BITSET       (TPM_EO)(0x000A)
+#define TPM_EO_BITCLEAR     (TPM_EO)(0x000B)
 
 // Table 18 - TPM_ST Constants
 typedef UINT16 TPM_ST;
-#define TPM_ST_RSP_COMMAND          (TPM_ST)(0x00C4)
-#define TPM_ST_NULL                 (TPM_ST)(0X8000)
-#define TPM_ST_NO_SESSIONS          (TPM_ST)(0x8001)
-#define TPM_ST_SESSIONS             (TPM_ST)(0x8002)
-#define TPM_ST_ATTEST_NV            (TPM_ST)(0x8014)
-#define TPM_ST_ATTEST_COMMAND_AUDIT (TPM_ST)(0x8015)
-#define TPM_ST_ATTEST_SESSION_AUDIT (TPM_ST)(0x8016)
-#define TPM_ST_ATTEST_CERTIFY       (TPM_ST)(0x8017)
-#define TPM_ST_ATTEST_QUOTE         (TPM_ST)(0x8018)
-#define TPM_ST_ATTEST_TIME          (TPM_ST)(0x8019)
-#define TPM_ST_ATTEST_CREATION      (TPM_ST)(0x801A)
-#define TPM_ST_CREATION             (TPM_ST)(0x8021)
-#define TPM_ST_VERIFIED             (TPM_ST)(0x8022)
-#define TPM_ST_AUTH_SECRET          (TPM_ST)(0x8023)
-#define TPM_ST_HASHCHECK            (TPM_ST)(0x8024)
-#define TPM_ST_AUTH_SIGNED          (TPM_ST)(0x8025)
-#define TPM_ST_FU_MANIFEST          (TPM_ST)(0x8029)
+#define TPM_ST_RSP_COMMAND           (TPM_ST)(0x00C4)
+#define TPM_ST_NULL                  (TPM_ST)(0X8000)
+#define TPM_ST_NO_SESSIONS           (TPM_ST)(0x8001)
+#define TPM_ST_SESSIONS              (TPM_ST)(0x8002)
+#define TPM_ST_ATTEST_NV             (TPM_ST)(0x8014)
+#define TPM_ST_ATTEST_COMMAND_AUDIT  (TPM_ST)(0x8015)
+#define TPM_ST_ATTEST_SESSION_AUDIT  (TPM_ST)(0x8016)
+#define TPM_ST_ATTEST_CERTIFY        (TPM_ST)(0x8017)
+#define TPM_ST_ATTEST_QUOTE          (TPM_ST)(0x8018)
+#define TPM_ST_ATTEST_TIME           (TPM_ST)(0x8019)
+#define TPM_ST_ATTEST_CREATION       (TPM_ST)(0x801A)
+#define TPM_ST_CREATION              (TPM_ST)(0x8021)
+#define TPM_ST_VERIFIED              (TPM_ST)(0x8022)
+#define TPM_ST_AUTH_SECRET           (TPM_ST)(0x8023)
+#define TPM_ST_HASHCHECK             (TPM_ST)(0x8024)
+#define TPM_ST_AUTH_SIGNED           (TPM_ST)(0x8025)
+#define TPM_ST_FU_MANIFEST           (TPM_ST)(0x8029)
 
 // Table 19 - TPM_SU Constants
 typedef UINT16 TPM_SU;
-#define TPM_SU_CLEAR (TPM_SU)(0x0000)
-#define TPM_SU_STATE (TPM_SU)(0x0001)
+#define TPM_SU_CLEAR  (TPM_SU)(0x0000)
+#define TPM_SU_STATE  (TPM_SU)(0x0001)
 
 // Table 20 - TPM_SE Constants
 typedef UINT8 TPM_SE;
-#define TPM_SE_HMAC   (TPM_SE)(0x00)
-#define TPM_SE_POLICY (TPM_SE)(0x01)
-#define TPM_SE_TRIAL  (TPM_SE)(0x03)
+#define TPM_SE_HMAC    (TPM_SE)(0x00)
+#define TPM_SE_POLICY  (TPM_SE)(0x01)
+#define TPM_SE_TRIAL   (TPM_SE)(0x03)
 
 // Table 21 - TPM_CAP Constants
 typedef UINT32 TPM_CAP;
-#define TPM_CAP_FIRST           (TPM_CAP)(0x00000000)
-#define TPM_CAP_ALGS            (TPM_CAP)(0x00000000)
-#define TPM_CAP_HANDLES         (TPM_CAP)(0x00000001)
-#define TPM_CAP_COMMANDS        (TPM_CAP)(0x00000002)
-#define TPM_CAP_PP_COMMANDS     (TPM_CAP)(0x00000003)
-#define TPM_CAP_AUDIT_COMMANDS  (TPM_CAP)(0x00000004)
-#define TPM_CAP_PCRS            (TPM_CAP)(0x00000005)
-#define TPM_CAP_TPM_PROPERTIES  (TPM_CAP)(0x00000006)
-#define TPM_CAP_PCR_PROPERTIES  (TPM_CAP)(0x00000007)
-#define TPM_CAP_ECC_CURVES      (TPM_CAP)(0x00000008)
-#define TPM_CAP_LAST            (TPM_CAP)(0x00000008)
-#define TPM_CAP_VENDOR_PROPERTY (TPM_CAP)(0x00000100)
+#define TPM_CAP_FIRST            (TPM_CAP)(0x00000000)
+#define TPM_CAP_ALGS             (TPM_CAP)(0x00000000)
+#define TPM_CAP_HANDLES          (TPM_CAP)(0x00000001)
+#define TPM_CAP_COMMANDS         (TPM_CAP)(0x00000002)
+#define TPM_CAP_PP_COMMANDS      (TPM_CAP)(0x00000003)
+#define TPM_CAP_AUDIT_COMMANDS   (TPM_CAP)(0x00000004)
+#define TPM_CAP_PCRS             (TPM_CAP)(0x00000005)
+#define TPM_CAP_TPM_PROPERTIES   (TPM_CAP)(0x00000006)
+#define TPM_CAP_PCR_PROPERTIES   (TPM_CAP)(0x00000007)
+#define TPM_CAP_ECC_CURVES       (TPM_CAP)(0x00000008)
+#define TPM_CAP_LAST             (TPM_CAP)(0x00000008)
+#define TPM_CAP_VENDOR_PROPERTY  (TPM_CAP)(0x00000100)
 
 // Table 22 - TPM_PT Constants
 typedef UINT32 TPM_PT;
-#define TPM_PT_NONE                (TPM_PT)(0x00000000)
-#define PT_GROUP                   (TPM_PT)(0x00000100)
-#define PT_FIXED                   (TPM_PT)(PT_GROUP * 1)
-#define TPM_PT_FAMILY_INDICATOR    (TPM_PT)(PT_FIXED + 0)
-#define TPM_PT_LEVEL               (TPM_PT)(PT_FIXED + 1)
-#define TPM_PT_REVISION            (TPM_PT)(PT_FIXED + 2)
-#define TPM_PT_DAY_OF_YEAR         (TPM_PT)(PT_FIXED + 3)
-#define TPM_PT_YEAR                (TPM_PT)(PT_FIXED + 4)
-#define TPM_PT_MANUFACTURER        (TPM_PT)(PT_FIXED + 5)
-#define TPM_PT_VENDOR_STRING_1     (TPM_PT)(PT_FIXED + 6)
-#define TPM_PT_VENDOR_STRING_2     (TPM_PT)(PT_FIXED + 7)
-#define TPM_PT_VENDOR_STRING_3     (TPM_PT)(PT_FIXED + 8)
-#define TPM_PT_VENDOR_STRING_4     (TPM_PT)(PT_FIXED + 9)
-#define TPM_PT_VENDOR_TPM_TYPE     (TPM_PT)(PT_FIXED + 10)
-#define TPM_PT_FIRMWARE_VERSION_1  (TPM_PT)(PT_FIXED + 11)
-#define TPM_PT_FIRMWARE_VERSION_2  (TPM_PT)(PT_FIXED + 12)
-#define TPM_PT_INPUT_BUFFER        (TPM_PT)(PT_FIXED + 13)
-#define TPM_PT_HR_TRANSIENT_MIN    (TPM_PT)(PT_FIXED + 14)
-#define TPM_PT_HR_PERSISTENT_MIN   (TPM_PT)(PT_FIXED + 15)
-#define TPM_PT_HR_LOADED_MIN       (TPM_PT)(PT_FIXED + 16)
-#define TPM_PT_ACTIVE_SESSIONS_MAX (TPM_PT)(PT_FIXED + 17)
-#define TPM_PT_PCR_COUNT           (TPM_PT)(PT_FIXED + 18)
-#define TPM_PT_PCR_SELECT_MIN      (TPM_PT)(PT_FIXED + 19)
-#define TPM_PT_CONTEXT_GAP_MAX     (TPM_PT)(PT_FIXED + 20)
-#define TPM_PT_NV_COUNTERS_MAX     (TPM_PT)(PT_FIXED + 22)
-#define TPM_PT_NV_INDEX_MAX        (TPM_PT)(PT_FIXED + 23)
-#define TPM_PT_MEMORY              (TPM_PT)(PT_FIXED + 24)
-#define TPM_PT_CLOCK_UPDATE        (TPM_PT)(PT_FIXED + 25)
-#define TPM_PT_CONTEXT_HASH        (TPM_PT)(PT_FIXED + 26)
-#define TPM_PT_CONTEXT_SYM         (TPM_PT)(PT_FIXED + 27)
-#define TPM_PT_CONTEXT_SYM_SIZE    (TPM_PT)(PT_FIXED + 28)
-#define TPM_PT_ORDERLY_COUNT       (TPM_PT)(PT_FIXED + 29)
-#define TPM_PT_MAX_COMMAND_SIZE    (TPM_PT)(PT_FIXED + 30)
-#define TPM_PT_MAX_RESPONSE_SIZE   (TPM_PT)(PT_FIXED + 31)
-#define TPM_PT_MAX_DIGEST          (TPM_PT)(PT_FIXED + 32)
-#define TPM_PT_MAX_OBJECT_CONTEXT  (TPM_PT)(PT_FIXED + 33)
-#define TPM_PT_MAX_SESSION_CONTEXT (TPM_PT)(PT_FIXED + 34)
-#define TPM_PT_PS_FAMILY_INDICATOR (TPM_PT)(PT_FIXED + 35)
-#define TPM_PT_PS_LEVEL            (TPM_PT)(PT_FIXED + 36)
-#define TPM_PT_PS_REVISION         (TPM_PT)(PT_FIXED + 37)
-#define TPM_PT_PS_DAY_OF_YEAR      (TPM_PT)(PT_FIXED + 38)
-#define TPM_PT_PS_YEAR             (TPM_PT)(PT_FIXED + 39)
-#define TPM_PT_SPLIT_MAX           (TPM_PT)(PT_FIXED + 40)
-#define TPM_PT_TOTAL_COMMANDS      (TPM_PT)(PT_FIXED + 41)
-#define TPM_PT_LIBRARY_COMMANDS    (TPM_PT)(PT_FIXED + 42)
-#define TPM_PT_VENDOR_COMMANDS     (TPM_PT)(PT_FIXED + 43)
-#define PT_VAR                     (TPM_PT)(PT_GROUP * 2)
-#define TPM_PT_PERMANENT           (TPM_PT)(PT_VAR + 0)
-#define TPM_PT_STARTUP_CLEAR       (TPM_PT)(PT_VAR + 1)
-#define TPM_PT_HR_NV_INDEX         (TPM_PT)(PT_VAR + 2)
-#define TPM_PT_HR_LOADED           (TPM_PT)(PT_VAR + 3)
-#define TPM_PT_HR_LOADED_AVAIL     (TPM_PT)(PT_VAR + 4)
-#define TPM_PT_HR_ACTIVE           (TPM_PT)(PT_VAR + 5)
-#define TPM_PT_HR_ACTIVE_AVAIL     (TPM_PT)(PT_VAR + 6)
-#define TPM_PT_HR_TRANSIENT_AVAIL  (TPM_PT)(PT_VAR + 7)
-#define TPM_PT_HR_PERSISTENT       (TPM_PT)(PT_VAR + 8)
-#define TPM_PT_HR_PERSISTENT_AVAIL (TPM_PT)(PT_VAR + 9)
-#define TPM_PT_NV_COUNTERS         (TPM_PT)(PT_VAR + 10)
-#define TPM_PT_NV_COUNTERS_AVAIL   (TPM_PT)(PT_VAR + 11)
-#define TPM_PT_ALGORITHM_SET       (TPM_PT)(PT_VAR + 12)
-#define TPM_PT_LOADED_CURVES       (TPM_PT)(PT_VAR + 13)
-#define TPM_PT_LOCKOUT_COUNTER     (TPM_PT)(PT_VAR + 14)
-#define TPM_PT_MAX_AUTH_FAIL       (TPM_PT)(PT_VAR + 15)
-#define TPM_PT_LOCKOUT_INTERVAL    (TPM_PT)(PT_VAR + 16)
-#define TPM_PT_LOCKOUT_RECOVERY    (TPM_PT)(PT_VAR + 17)
-#define TPM_PT_NV_WRITE_RECOVERY   (TPM_PT)(PT_VAR + 18)
-#define TPM_PT_AUDIT_COUNTER_0     (TPM_PT)(PT_VAR + 19)
-#define TPM_PT_AUDIT_COUNTER_1     (TPM_PT)(PT_VAR + 20)
+#define TPM_PT_NONE                 (TPM_PT)(0x00000000)
+#define PT_GROUP                    (TPM_PT)(0x00000100)
+#define PT_FIXED                    (TPM_PT)(PT_GROUP * 1)
+#define TPM_PT_FAMILY_INDICATOR     (TPM_PT)(PT_FIXED + 0)
+#define TPM_PT_LEVEL                (TPM_PT)(PT_FIXED + 1)
+#define TPM_PT_REVISION             (TPM_PT)(PT_FIXED + 2)
+#define TPM_PT_DAY_OF_YEAR          (TPM_PT)(PT_FIXED + 3)
+#define TPM_PT_YEAR                 (TPM_PT)(PT_FIXED + 4)
+#define TPM_PT_MANUFACTURER         (TPM_PT)(PT_FIXED + 5)
+#define TPM_PT_VENDOR_STRING_1      (TPM_PT)(PT_FIXED + 6)
+#define TPM_PT_VENDOR_STRING_2      (TPM_PT)(PT_FIXED + 7)
+#define TPM_PT_VENDOR_STRING_3      (TPM_PT)(PT_FIXED + 8)
+#define TPM_PT_VENDOR_STRING_4      (TPM_PT)(PT_FIXED + 9)
+#define TPM_PT_VENDOR_TPM_TYPE      (TPM_PT)(PT_FIXED + 10)
+#define TPM_PT_FIRMWARE_VERSION_1   (TPM_PT)(PT_FIXED + 11)
+#define TPM_PT_FIRMWARE_VERSION_2   (TPM_PT)(PT_FIXED + 12)
+#define TPM_PT_INPUT_BUFFER         (TPM_PT)(PT_FIXED + 13)
+#define TPM_PT_HR_TRANSIENT_MIN     (TPM_PT)(PT_FIXED + 14)
+#define TPM_PT_HR_PERSISTENT_MIN    (TPM_PT)(PT_FIXED + 15)
+#define TPM_PT_HR_LOADED_MIN        (TPM_PT)(PT_FIXED + 16)
+#define TPM_PT_ACTIVE_SESSIONS_MAX  (TPM_PT)(PT_FIXED + 17)
+#define TPM_PT_PCR_COUNT            (TPM_PT)(PT_FIXED + 18)
+#define TPM_PT_PCR_SELECT_MIN       (TPM_PT)(PT_FIXED + 19)
+#define TPM_PT_CONTEXT_GAP_MAX      (TPM_PT)(PT_FIXED + 20)
+#define TPM_PT_NV_COUNTERS_MAX      (TPM_PT)(PT_FIXED + 22)
+#define TPM_PT_NV_INDEX_MAX         (TPM_PT)(PT_FIXED + 23)
+#define TPM_PT_MEMORY               (TPM_PT)(PT_FIXED + 24)
+#define TPM_PT_CLOCK_UPDATE         (TPM_PT)(PT_FIXED + 25)
+#define TPM_PT_CONTEXT_HASH         (TPM_PT)(PT_FIXED + 26)
+#define TPM_PT_CONTEXT_SYM          (TPM_PT)(PT_FIXED + 27)
+#define TPM_PT_CONTEXT_SYM_SIZE     (TPM_PT)(PT_FIXED + 28)
+#define TPM_PT_ORDERLY_COUNT        (TPM_PT)(PT_FIXED + 29)
+#define TPM_PT_MAX_COMMAND_SIZE     (TPM_PT)(PT_FIXED + 30)
+#define TPM_PT_MAX_RESPONSE_SIZE    (TPM_PT)(PT_FIXED + 31)
+#define TPM_PT_MAX_DIGEST           (TPM_PT)(PT_FIXED + 32)
+#define TPM_PT_MAX_OBJECT_CONTEXT   (TPM_PT)(PT_FIXED + 33)
+#define TPM_PT_MAX_SESSION_CONTEXT  (TPM_PT)(PT_FIXED + 34)
+#define TPM_PT_PS_FAMILY_INDICATOR  (TPM_PT)(PT_FIXED + 35)
+#define TPM_PT_PS_LEVEL             (TPM_PT)(PT_FIXED + 36)
+#define TPM_PT_PS_REVISION          (TPM_PT)(PT_FIXED + 37)
+#define TPM_PT_PS_DAY_OF_YEAR       (TPM_PT)(PT_FIXED + 38)
+#define TPM_PT_PS_YEAR              (TPM_PT)(PT_FIXED + 39)
+#define TPM_PT_SPLIT_MAX            (TPM_PT)(PT_FIXED + 40)
+#define TPM_PT_TOTAL_COMMANDS       (TPM_PT)(PT_FIXED + 41)
+#define TPM_PT_LIBRARY_COMMANDS     (TPM_PT)(PT_FIXED + 42)
+#define TPM_PT_VENDOR_COMMANDS      (TPM_PT)(PT_FIXED + 43)
+#define PT_VAR                      (TPM_PT)(PT_GROUP * 2)
+#define TPM_PT_PERMANENT            (TPM_PT)(PT_VAR + 0)
+#define TPM_PT_STARTUP_CLEAR        (TPM_PT)(PT_VAR + 1)
+#define TPM_PT_HR_NV_INDEX          (TPM_PT)(PT_VAR + 2)
+#define TPM_PT_HR_LOADED            (TPM_PT)(PT_VAR + 3)
+#define TPM_PT_HR_LOADED_AVAIL      (TPM_PT)(PT_VAR + 4)
+#define TPM_PT_HR_ACTIVE            (TPM_PT)(PT_VAR + 5)
+#define TPM_PT_HR_ACTIVE_AVAIL      (TPM_PT)(PT_VAR + 6)
+#define TPM_PT_HR_TRANSIENT_AVAIL   (TPM_PT)(PT_VAR + 7)
+#define TPM_PT_HR_PERSISTENT        (TPM_PT)(PT_VAR + 8)
+#define TPM_PT_HR_PERSISTENT_AVAIL  (TPM_PT)(PT_VAR + 9)
+#define TPM_PT_NV_COUNTERS          (TPM_PT)(PT_VAR + 10)
+#define TPM_PT_NV_COUNTERS_AVAIL    (TPM_PT)(PT_VAR + 11)
+#define TPM_PT_ALGORITHM_SET        (TPM_PT)(PT_VAR + 12)
+#define TPM_PT_LOADED_CURVES        (TPM_PT)(PT_VAR + 13)
+#define TPM_PT_LOCKOUT_COUNTER      (TPM_PT)(PT_VAR + 14)
+#define TPM_PT_MAX_AUTH_FAIL        (TPM_PT)(PT_VAR + 15)
+#define TPM_PT_LOCKOUT_INTERVAL     (TPM_PT)(PT_VAR + 16)
+#define TPM_PT_LOCKOUT_RECOVERY     (TPM_PT)(PT_VAR + 17)
+#define TPM_PT_NV_WRITE_RECOVERY    (TPM_PT)(PT_VAR + 18)
+#define TPM_PT_AUDIT_COUNTER_0      (TPM_PT)(PT_VAR + 19)
+#define TPM_PT_AUDIT_COUNTER_1      (TPM_PT)(PT_VAR + 20)
 
 // Table 23 - TPM_PT_PCR Constants
 typedef UINT32 TPM_PT_PCR;
-#define TPM_PT_PCR_FIRST        (TPM_PT_PCR)(0x00000000)
-#define TPM_PT_PCR_SAVE         (TPM_PT_PCR)(0x00000000)
-#define TPM_PT_PCR_EXTEND_L0    (TPM_PT_PCR)(0x00000001)
-#define TPM_PT_PCR_RESET_L0     (TPM_PT_PCR)(0x00000002)
-#define TPM_PT_PCR_EXTEND_L1    (TPM_PT_PCR)(0x00000003)
-#define TPM_PT_PCR_RESET_L1     (TPM_PT_PCR)(0x00000004)
-#define TPM_PT_PCR_EXTEND_L2    (TPM_PT_PCR)(0x00000005)
-#define TPM_PT_PCR_RESET_L2     (TPM_PT_PCR)(0x00000006)
-#define TPM_PT_PCR_EXTEND_L3    (TPM_PT_PCR)(0x00000007)
-#define TPM_PT_PCR_RESET_L3     (TPM_PT_PCR)(0x00000008)
-#define TPM_PT_PCR_EXTEND_L4    (TPM_PT_PCR)(0x00000009)
-#define TPM_PT_PCR_RESET_L4     (TPM_PT_PCR)(0x0000000A)
-#define TPM_PT_PCR_NO_INCREMENT (TPM_PT_PCR)(0x00000011)
-#define TPM_PT_PCR_DRTM_RESET   (TPM_PT_PCR)(0x00000012)
-#define TPM_PT_PCR_POLICY       (TPM_PT_PCR)(0x00000013)
-#define TPM_PT_PCR_AUTH         (TPM_PT_PCR)(0x00000014)
-#define TPM_PT_PCR_LAST         (TPM_PT_PCR)(0x00000014)
+#define TPM_PT_PCR_FIRST         (TPM_PT_PCR)(0x00000000)
+#define TPM_PT_PCR_SAVE          (TPM_PT_PCR)(0x00000000)
+#define TPM_PT_PCR_EXTEND_L0     (TPM_PT_PCR)(0x00000001)
+#define TPM_PT_PCR_RESET_L0      (TPM_PT_PCR)(0x00000002)
+#define TPM_PT_PCR_EXTEND_L1     (TPM_PT_PCR)(0x00000003)
+#define TPM_PT_PCR_RESET_L1      (TPM_PT_PCR)(0x00000004)
+#define TPM_PT_PCR_EXTEND_L2     (TPM_PT_PCR)(0x00000005)
+#define TPM_PT_PCR_RESET_L2      (TPM_PT_PCR)(0x00000006)
+#define TPM_PT_PCR_EXTEND_L3     (TPM_PT_PCR)(0x00000007)
+#define TPM_PT_PCR_RESET_L3      (TPM_PT_PCR)(0x00000008)
+#define TPM_PT_PCR_EXTEND_L4     (TPM_PT_PCR)(0x00000009)
+#define TPM_PT_PCR_RESET_L4      (TPM_PT_PCR)(0x0000000A)
+#define TPM_PT_PCR_NO_INCREMENT  (TPM_PT_PCR)(0x00000011)
+#define TPM_PT_PCR_DRTM_RESET    (TPM_PT_PCR)(0x00000012)
+#define TPM_PT_PCR_POLICY        (TPM_PT_PCR)(0x00000013)
+#define TPM_PT_PCR_AUTH          (TPM_PT_PCR)(0x00000014)
+#define TPM_PT_PCR_LAST          (TPM_PT_PCR)(0x00000014)
 
 // Table 24 - TPM_PS Constants
 typedef UINT32 TPM_PS;
-#define TPM_PS_MAIN           (TPM_PS)(0x00000000)
-#define TPM_PS_PC             (TPM_PS)(0x00000001)
-#define TPM_PS_PDA            (TPM_PS)(0x00000002)
-#define TPM_PS_CELL_PHONE     (TPM_PS)(0x00000003)
-#define TPM_PS_SERVER         (TPM_PS)(0x00000004)
-#define TPM_PS_PERIPHERAL     (TPM_PS)(0x00000005)
-#define TPM_PS_TSS            (TPM_PS)(0x00000006)
-#define TPM_PS_STORAGE        (TPM_PS)(0x00000007)
-#define TPM_PS_AUTHENTICATION (TPM_PS)(0x00000008)
-#define TPM_PS_EMBEDDED       (TPM_PS)(0x00000009)
-#define TPM_PS_HARDCOPY       (TPM_PS)(0x0000000A)
-#define TPM_PS_INFRASTRUCTURE (TPM_PS)(0x0000000B)
-#define TPM_PS_VIRTUALIZATION (TPM_PS)(0x0000000C)
-#define TPM_PS_TNC            (TPM_PS)(0x0000000D)
-#define TPM_PS_MULTI_TENANT   (TPM_PS)(0x0000000E)
-#define TPM_PS_TC             (TPM_PS)(0x0000000F)
+#define TPM_PS_MAIN            (TPM_PS)(0x00000000)
+#define TPM_PS_PC              (TPM_PS)(0x00000001)
+#define TPM_PS_PDA             (TPM_PS)(0x00000002)
+#define TPM_PS_CELL_PHONE      (TPM_PS)(0x00000003)
+#define TPM_PS_SERVER          (TPM_PS)(0x00000004)
+#define TPM_PS_PERIPHERAL      (TPM_PS)(0x00000005)
+#define TPM_PS_TSS             (TPM_PS)(0x00000006)
+#define TPM_PS_STORAGE         (TPM_PS)(0x00000007)
+#define TPM_PS_AUTHENTICATION  (TPM_PS)(0x00000008)
+#define TPM_PS_EMBEDDED        (TPM_PS)(0x00000009)
+#define TPM_PS_HARDCOPY        (TPM_PS)(0x0000000A)
+#define TPM_PS_INFRASTRUCTURE  (TPM_PS)(0x0000000B)
+#define TPM_PS_VIRTUALIZATION  (TPM_PS)(0x0000000C)
+#define TPM_PS_TNC             (TPM_PS)(0x0000000D)
+#define TPM_PS_MULTI_TENANT    (TPM_PS)(0x0000000E)
+#define TPM_PS_TC              (TPM_PS)(0x0000000F)
 
 // 7 Handles
 
@@ -647,117 +640,117 @@
 //
 // NOTE: Comment because it has same name as TPM1.2 (value is same, so not runtime issue)
 //
-//typedef UINT32    TPM_HANDLE;
+// typedef UINT32    TPM_HANDLE;
 
 // Table 26 - TPM_HT Constants
 typedef UINT8 TPM_HT;
-#define TPM_HT_PCR            (TPM_HT)(0x00)
-#define TPM_HT_NV_INDEX       (TPM_HT)(0x01)
-#define TPM_HT_HMAC_SESSION   (TPM_HT)(0x02)
-#define TPM_HT_LOADED_SESSION (TPM_HT)(0x02)
-#define TPM_HT_POLICY_SESSION (TPM_HT)(0x03)
-#define TPM_HT_ACTIVE_SESSION (TPM_HT)(0x03)
-#define TPM_HT_PERMANENT      (TPM_HT)(0x40)
-#define TPM_HT_TRANSIENT      (TPM_HT)(0x80)
-#define TPM_HT_PERSISTENT     (TPM_HT)(0x81)
+#define TPM_HT_PCR             (TPM_HT)(0x00)
+#define TPM_HT_NV_INDEX        (TPM_HT)(0x01)
+#define TPM_HT_HMAC_SESSION    (TPM_HT)(0x02)
+#define TPM_HT_LOADED_SESSION  (TPM_HT)(0x02)
+#define TPM_HT_POLICY_SESSION  (TPM_HT)(0x03)
+#define TPM_HT_ACTIVE_SESSION  (TPM_HT)(0x03)
+#define TPM_HT_PERMANENT       (TPM_HT)(0x40)
+#define TPM_HT_TRANSIENT       (TPM_HT)(0x80)
+#define TPM_HT_PERSISTENT      (TPM_HT)(0x81)
 
 // Table 27 - TPM_RH Constants
 typedef UINT32 TPM_RH;
-#define TPM_RH_FIRST       (TPM_RH)(0x40000000)
-#define TPM_RH_SRK         (TPM_RH)(0x40000000)
-#define TPM_RH_OWNER       (TPM_RH)(0x40000001)
-#define TPM_RH_REVOKE      (TPM_RH)(0x40000002)
-#define TPM_RH_TRANSPORT   (TPM_RH)(0x40000003)
-#define TPM_RH_OPERATOR    (TPM_RH)(0x40000004)
-#define TPM_RH_ADMIN       (TPM_RH)(0x40000005)
-#define TPM_RH_EK          (TPM_RH)(0x40000006)
-#define TPM_RH_NULL        (TPM_RH)(0x40000007)
-#define TPM_RH_UNASSIGNED  (TPM_RH)(0x40000008)
-#define TPM_RS_PW          (TPM_RH)(0x40000009)
-#define TPM_RH_LOCKOUT     (TPM_RH)(0x4000000A)
-#define TPM_RH_ENDORSEMENT (TPM_RH)(0x4000000B)
-#define TPM_RH_PLATFORM    (TPM_RH)(0x4000000C)
-#define TPM_RH_PLATFORM_NV (TPM_RH)(0x4000000D)
-#define TPM_RH_AUTH_00     (TPM_RH)(0x40000010)
-#define TPM_RH_AUTH_FF     (TPM_RH)(0x4000010F)
-#define TPM_RH_LAST        (TPM_RH)(0x4000010F)
+#define TPM_RH_FIRST        (TPM_RH)(0x40000000)
+#define TPM_RH_SRK          (TPM_RH)(0x40000000)
+#define TPM_RH_OWNER        (TPM_RH)(0x40000001)
+#define TPM_RH_REVOKE       (TPM_RH)(0x40000002)
+#define TPM_RH_TRANSPORT    (TPM_RH)(0x40000003)
+#define TPM_RH_OPERATOR     (TPM_RH)(0x40000004)
+#define TPM_RH_ADMIN        (TPM_RH)(0x40000005)
+#define TPM_RH_EK           (TPM_RH)(0x40000006)
+#define TPM_RH_NULL         (TPM_RH)(0x40000007)
+#define TPM_RH_UNASSIGNED   (TPM_RH)(0x40000008)
+#define TPM_RS_PW           (TPM_RH)(0x40000009)
+#define TPM_RH_LOCKOUT      (TPM_RH)(0x4000000A)
+#define TPM_RH_ENDORSEMENT  (TPM_RH)(0x4000000B)
+#define TPM_RH_PLATFORM     (TPM_RH)(0x4000000C)
+#define TPM_RH_PLATFORM_NV  (TPM_RH)(0x4000000D)
+#define TPM_RH_AUTH_00      (TPM_RH)(0x40000010)
+#define TPM_RH_AUTH_FF      (TPM_RH)(0x4000010F)
+#define TPM_RH_LAST         (TPM_RH)(0x4000010F)
 
 // Table 28 - TPM_HC Constants
 typedef TPM_HANDLE TPM_HC;
-#define HR_HANDLE_MASK       (TPM_HC)(0x00FFFFFF)
-#define HR_RANGE_MASK        (TPM_HC)(0xFF000000)
-#define HR_SHIFT             (TPM_HC)(24)
-#define HR_PCR               (TPM_HC)((TPM_HC)TPM_HT_PCR << HR_SHIFT)
-#define HR_HMAC_SESSION      (TPM_HC)((TPM_HC)TPM_HT_HMAC_SESSION << HR_SHIFT)
-#define HR_POLICY_SESSION    (TPM_HC)((TPM_HC)TPM_HT_POLICY_SESSION << HR_SHIFT)
-#define HR_TRANSIENT         (TPM_HC)((TPM_HC)TPM_HT_TRANSIENT << HR_SHIFT)
-#define HR_PERSISTENT        (TPM_HC)((TPM_HC)TPM_HT_PERSISTENT << HR_SHIFT)
-#define HR_NV_INDEX          (TPM_HC)((TPM_HC)TPM_HT_NV_INDEX << HR_SHIFT)
-#define HR_PERMANENT         (TPM_HC)((TPM_HC)TPM_HT_PERMANENT << HR_SHIFT)
-#define PCR_FIRST            (TPM_HC)(HR_PCR + 0)
-#define PCR_LAST             (TPM_HC)(PCR_FIRST + IMPLEMENTATION_PCR - 1)
-#define HMAC_SESSION_FIRST   (TPM_HC)(HR_HMAC_SESSION + 0)
-#define HMAC_SESSION_LAST    (TPM_HC)(HMAC_SESSION_FIRST + MAX_ACTIVE_SESSIONS - 1)
-#define LOADED_SESSION_FIRST (TPM_HC)(HMAC_SESSION_FIRST)
-#define LOADED_SESSION_LAST  (TPM_HC)(HMAC_SESSION_LAST)
-#define POLICY_SESSION_FIRST (TPM_HC)(HR_POLICY_SESSION + 0)
-#define POLICY_SESSION_LAST  (TPM_HC)(POLICY_SESSION_FIRST + MAX_ACTIVE_SESSIONS - 1)
-#define TRANSIENT_FIRST      (TPM_HC)(HR_TRANSIENT + 0)
-#define ACTIVE_SESSION_FIRST (TPM_HC)(POLICY_SESSION_FIRST)
-#define ACTIVE_SESSION_LAST  (TPM_HC)(POLICY_SESSION_LAST)
-#define TRANSIENT_LAST       (TPM_HC)(TRANSIENT_FIRST+MAX_LOADED_OBJECTS - 1)
-#define PERSISTENT_FIRST     (TPM_HC)(HR_PERSISTENT + 0)
-#define PERSISTENT_LAST      (TPM_HC)(PERSISTENT_FIRST + 0x00FFFFFF)
-#define PLATFORM_PERSISTENT  (TPM_HC)(PERSISTENT_FIRST + 0x00800000)
-#define NV_INDEX_FIRST       (TPM_HC)(HR_NV_INDEX + 0)
-#define NV_INDEX_LAST        (TPM_HC)(NV_INDEX_FIRST + 0x00FFFFFF)
-#define PERMANENT_FIRST      (TPM_HC)(TPM_RH_FIRST)
-#define PERMANENT_LAST       (TPM_HC)(TPM_RH_LAST)
+#define HR_HANDLE_MASK        (TPM_HC)(0x00FFFFFF)
+#define HR_RANGE_MASK         (TPM_HC)(0xFF000000)
+#define HR_SHIFT              (TPM_HC)(24)
+#define HR_PCR                (TPM_HC)((TPM_HC)TPM_HT_PCR << HR_SHIFT)
+#define HR_HMAC_SESSION       (TPM_HC)((TPM_HC)TPM_HT_HMAC_SESSION << HR_SHIFT)
+#define HR_POLICY_SESSION     (TPM_HC)((TPM_HC)TPM_HT_POLICY_SESSION << HR_SHIFT)
+#define HR_TRANSIENT          (TPM_HC)((TPM_HC)TPM_HT_TRANSIENT << HR_SHIFT)
+#define HR_PERSISTENT         (TPM_HC)((TPM_HC)TPM_HT_PERSISTENT << HR_SHIFT)
+#define HR_NV_INDEX           (TPM_HC)((TPM_HC)TPM_HT_NV_INDEX << HR_SHIFT)
+#define HR_PERMANENT          (TPM_HC)((TPM_HC)TPM_HT_PERMANENT << HR_SHIFT)
+#define PCR_FIRST             (TPM_HC)(HR_PCR + 0)
+#define PCR_LAST              (TPM_HC)(PCR_FIRST + IMPLEMENTATION_PCR - 1)
+#define HMAC_SESSION_FIRST    (TPM_HC)(HR_HMAC_SESSION + 0)
+#define HMAC_SESSION_LAST     (TPM_HC)(HMAC_SESSION_FIRST + MAX_ACTIVE_SESSIONS - 1)
+#define LOADED_SESSION_FIRST  (TPM_HC)(HMAC_SESSION_FIRST)
+#define LOADED_SESSION_LAST   (TPM_HC)(HMAC_SESSION_LAST)
+#define POLICY_SESSION_FIRST  (TPM_HC)(HR_POLICY_SESSION + 0)
+#define POLICY_SESSION_LAST   (TPM_HC)(POLICY_SESSION_FIRST + MAX_ACTIVE_SESSIONS - 1)
+#define TRANSIENT_FIRST       (TPM_HC)(HR_TRANSIENT + 0)
+#define ACTIVE_SESSION_FIRST  (TPM_HC)(POLICY_SESSION_FIRST)
+#define ACTIVE_SESSION_LAST   (TPM_HC)(POLICY_SESSION_LAST)
+#define TRANSIENT_LAST        (TPM_HC)(TRANSIENT_FIRST+MAX_LOADED_OBJECTS - 1)
+#define PERSISTENT_FIRST      (TPM_HC)(HR_PERSISTENT + 0)
+#define PERSISTENT_LAST       (TPM_HC)(PERSISTENT_FIRST + 0x00FFFFFF)
+#define PLATFORM_PERSISTENT   (TPM_HC)(PERSISTENT_FIRST + 0x00800000)
+#define NV_INDEX_FIRST        (TPM_HC)(HR_NV_INDEX + 0)
+#define NV_INDEX_LAST         (TPM_HC)(NV_INDEX_FIRST + 0x00FFFFFF)
+#define PERMANENT_FIRST       (TPM_HC)(TPM_RH_FIRST)
+#define PERMANENT_LAST        (TPM_HC)(TPM_RH_LAST)
 
 // 8 Attribute Structures
 
 // Table 29 - TPMA_ALGORITHM Bits
 typedef struct {
-  UINT32 asymmetric    : 1;
-  UINT32 symmetric     : 1;
-  UINT32 hash          : 1;
-  UINT32 object        : 1;
-  UINT32 reserved4_7   : 4;
-  UINT32 signing       : 1;
-  UINT32 encrypting    : 1;
-  UINT32 method        : 1;
-  UINT32 reserved11_31 : 21;
+  UINT32    asymmetric    : 1;
+  UINT32    symmetric     : 1;
+  UINT32    hash          : 1;
+  UINT32    object        : 1;
+  UINT32    reserved4_7   : 4;
+  UINT32    signing       : 1;
+  UINT32    encrypting    : 1;
+  UINT32    method        : 1;
+  UINT32    reserved11_31 : 21;
 } TPMA_ALGORITHM;
 
 // Table 30 - TPMA_OBJECT Bits
 typedef struct {
-  UINT32 reserved1            : 1;
-  UINT32 fixedTPM             : 1;
-  UINT32 stClear              : 1;
-  UINT32 reserved4            : 1;
-  UINT32 fixedParent          : 1;
-  UINT32 sensitiveDataOrigin  : 1;
-  UINT32 userWithAuth         : 1;
-  UINT32 adminWithPolicy      : 1;
-  UINT32 reserved8_9          : 2;
-  UINT32 noDA                 : 1;
-  UINT32 encryptedDuplication : 1;
-  UINT32 reserved12_15        : 4;
-  UINT32 restricted           : 1;
-  UINT32 decrypt              : 1;
-  UINT32 sign                 : 1;
-  UINT32 reserved19_31        : 13;
+  UINT32    reserved1            : 1;
+  UINT32    fixedTPM             : 1;
+  UINT32    stClear              : 1;
+  UINT32    reserved4            : 1;
+  UINT32    fixedParent          : 1;
+  UINT32    sensitiveDataOrigin  : 1;
+  UINT32    userWithAuth         : 1;
+  UINT32    adminWithPolicy      : 1;
+  UINT32    reserved8_9          : 2;
+  UINT32    noDA                 : 1;
+  UINT32    encryptedDuplication : 1;
+  UINT32    reserved12_15        : 4;
+  UINT32    restricted           : 1;
+  UINT32    decrypt              : 1;
+  UINT32    sign                 : 1;
+  UINT32    reserved19_31        : 13;
 } TPMA_OBJECT;
 
 // Table 31 - TPMA_SESSION Bits
 typedef struct {
-  UINT8 continueSession : 1;
-  UINT8 auditExclusive  : 1;
-  UINT8 auditReset      : 1;
-  UINT8 reserved3_4     : 2;
-  UINT8 decrypt         : 1;
-  UINT8 encrypt         : 1;
-  UINT8 audit           : 1;
+  UINT8    continueSession : 1;
+  UINT8    auditExclusive  : 1;
+  UINT8    auditReset      : 1;
+  UINT8    reserved3_4     : 2;
+  UINT8    decrypt         : 1;
+  UINT8    encrypt         : 1;
+  UINT8    audit           : 1;
 } TPMA_SESSION;
 
 // Table 32 - TPMA_LOCALITY Bits
@@ -765,54 +758,54 @@
 // NOTE: Use low case here to resolve conflict
 //
 typedef struct {
-  UINT8 locZero  : 1;
-  UINT8 locOne   : 1;
-  UINT8 locTwo   : 1;
-  UINT8 locThree : 1;
-  UINT8 locFour  : 1;
-  UINT8 Extended : 3;
+  UINT8    locZero  : 1;
+  UINT8    locOne   : 1;
+  UINT8    locTwo   : 1;
+  UINT8    locThree : 1;
+  UINT8    locFour  : 1;
+  UINT8    Extended : 3;
 } TPMA_LOCALITY;
 
 // Table 33 - TPMA_PERMANENT Bits
 typedef struct {
-  UINT32 ownerAuthSet       : 1;
-  UINT32 endorsementAuthSet : 1;
-  UINT32 lockoutAuthSet     : 1;
-  UINT32 reserved3_7        : 5;
-  UINT32 disableClear       : 1;
-  UINT32 inLockout          : 1;
-  UINT32 tpmGeneratedEPS    : 1;
-  UINT32 reserved11_31      : 21;
+  UINT32    ownerAuthSet       : 1;
+  UINT32    endorsementAuthSet : 1;
+  UINT32    lockoutAuthSet     : 1;
+  UINT32    reserved3_7        : 5;
+  UINT32    disableClear       : 1;
+  UINT32    inLockout          : 1;
+  UINT32    tpmGeneratedEPS    : 1;
+  UINT32    reserved11_31      : 21;
 } TPMA_PERMANENT;
 
 // Table 34 - TPMA_STARTUP_CLEAR Bits
 typedef struct {
-  UINT32 phEnable     : 1;
-  UINT32 shEnable     : 1;
-  UINT32 ehEnable     : 1;
-  UINT32 reserved3_30 : 28;
-  UINT32 orderly      : 1;
+  UINT32    phEnable     : 1;
+  UINT32    shEnable     : 1;
+  UINT32    ehEnable     : 1;
+  UINT32    reserved3_30 : 28;
+  UINT32    orderly      : 1;
 } TPMA_STARTUP_CLEAR;
 
 // Table 35 - TPMA_MEMORY Bits
 typedef struct {
-  UINT32 sharedRAM         : 1;
-  UINT32 sharedNV          : 1;
-  UINT32 objectCopiedToRam : 1;
-  UINT32 reserved3_31      : 29;
+  UINT32    sharedRAM         : 1;
+  UINT32    sharedNV          : 1;
+  UINT32    objectCopiedToRam : 1;
+  UINT32    reserved3_31      : 29;
 } TPMA_MEMORY;
 
 // Table 36 - TPMA_CC Bits
 typedef struct {
-  UINT32 commandIndex  : 16;
-  UINT32 reserved16_21 : 6;
-  UINT32 nv            : 1;
-  UINT32 extensive     : 1;
-  UINT32 flushed       : 1;
-  UINT32 cHandles      : 3;
-  UINT32 rHandle       : 1;
-  UINT32 V             : 1;
-  UINT32 Res           : 2;
+  UINT32    commandIndex  : 16;
+  UINT32    reserved16_21 : 6;
+  UINT32    nv            : 1;
+  UINT32    extensive     : 1;
+  UINT32    flushed       : 1;
+  UINT32    cHandles      : 3;
+  UINT32    rHandle       : 1;
+  UINT32    V             : 1;
+  UINT32    Res           : 2;
 } TPMA_CC;
 
 // 9 Interface Types
@@ -905,35 +898,35 @@
 
 // Table 65 - TPMS_ALGORITHM_DESCRIPTION Structure
 typedef struct {
-  TPM_ALG_ID     alg;
-  TPMA_ALGORITHM attributes;
+  TPM_ALG_ID        alg;
+  TPMA_ALGORITHM    attributes;
 } TPMS_ALGORITHM_DESCRIPTION;
 
 // Table 66 - TPMU_HA Union
 typedef union {
-  BYTE sha1[SHA1_DIGEST_SIZE];
-  BYTE sha256[SHA256_DIGEST_SIZE];
-  BYTE sm3_256[SM3_256_DIGEST_SIZE];
-  BYTE sha384[SHA384_DIGEST_SIZE];
-  BYTE sha512[SHA512_DIGEST_SIZE];
+  BYTE    sha1[SHA1_DIGEST_SIZE];
+  BYTE    sha256[SHA256_DIGEST_SIZE];
+  BYTE    sm3_256[SM3_256_DIGEST_SIZE];
+  BYTE    sha384[SHA384_DIGEST_SIZE];
+  BYTE    sha512[SHA512_DIGEST_SIZE];
 } TPMU_HA;
 
 // Table 67 - TPMT_HA Structure
 typedef struct {
-  TPMI_ALG_HASH hashAlg;
-  TPMU_HA       digest;
+  TPMI_ALG_HASH    hashAlg;
+  TPMU_HA          digest;
 } TPMT_HA;
 
 // Table 68 - TPM2B_DIGEST Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[sizeof(TPMU_HA)];
+  UINT16    size;
+  BYTE      buffer[sizeof (TPMU_HA)];
 } TPM2B_DIGEST;
 
 // Table 69 - TPM2B_DATA Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[sizeof(TPMT_HA)];
+  UINT16    size;
+  BYTE      buffer[sizeof (TPMT_HA)];
 } TPM2B_DATA;
 
 // Table 70 - TPM2B_NONCE Types
@@ -947,254 +940,254 @@
 
 // Table 73 - TPM2B_EVENT Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[1024];
+  UINT16    size;
+  BYTE      buffer[1024];
 } TPM2B_EVENT;
 
 // Table 74 - TPM2B_MAX_BUFFER Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[MAX_DIGEST_BUFFER];
+  UINT16    size;
+  BYTE      buffer[MAX_DIGEST_BUFFER];
 } TPM2B_MAX_BUFFER;
 
 // Table 75 - TPM2B_MAX_NV_BUFFER Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[MAX_NV_INDEX_SIZE];
+  UINT16    size;
+  BYTE      buffer[MAX_NV_INDEX_SIZE];
 } TPM2B_MAX_NV_BUFFER;
 
 // Table 76 - TPM2B_TIMEOUT Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[sizeof(UINT64)];
+  UINT16    size;
+  BYTE      buffer[sizeof (UINT64)];
 } TPM2B_TIMEOUT;
 
 // Table 77 -- TPM2B_IV Structure <I/O>
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[MAX_SYM_BLOCK_SIZE];
+  UINT16    size;
+  BYTE      buffer[MAX_SYM_BLOCK_SIZE];
 } TPM2B_IV;
 
 // Table 78 - TPMU_NAME Union
 typedef union {
-  TPMT_HA    digest;
-  TPM_HANDLE handle;
+  TPMT_HA       digest;
+  TPM_HANDLE    handle;
 } TPMU_NAME;
 
 // Table 79 - TPM2B_NAME Structure
 typedef struct {
-  UINT16 size;
-  BYTE   name[sizeof(TPMU_NAME)];
+  UINT16    size;
+  BYTE      name[sizeof (TPMU_NAME)];
 } TPM2B_NAME;
 
 // Table 80 - TPMS_PCR_SELECT Structure
 typedef struct {
-  UINT8 sizeofSelect;
-  BYTE  pcrSelect[PCR_SELECT_MAX];
+  UINT8    sizeofSelect;
+  BYTE     pcrSelect[PCR_SELECT_MAX];
 } TPMS_PCR_SELECT;
 
 // Table 81 - TPMS_PCR_SELECTION Structure
 typedef struct {
-  TPMI_ALG_HASH hash;
-  UINT8         sizeofSelect;
-  BYTE          pcrSelect[PCR_SELECT_MAX];
+  TPMI_ALG_HASH    hash;
+  UINT8            sizeofSelect;
+  BYTE             pcrSelect[PCR_SELECT_MAX];
 } TPMS_PCR_SELECTION;
 
 // Table 84 - TPMT_TK_CREATION Structure
 typedef struct {
-  TPM_ST            tag;
-  TPMI_RH_HIERARCHY hierarchy;
-  TPM2B_DIGEST      digest;
+  TPM_ST               tag;
+  TPMI_RH_HIERARCHY    hierarchy;
+  TPM2B_DIGEST         digest;
 } TPMT_TK_CREATION;
 
 // Table 85 - TPMT_TK_VERIFIED Structure
 typedef struct {
-  TPM_ST            tag;
-  TPMI_RH_HIERARCHY hierarchy;
-  TPM2B_DIGEST      digest;
+  TPM_ST               tag;
+  TPMI_RH_HIERARCHY    hierarchy;
+  TPM2B_DIGEST         digest;
 } TPMT_TK_VERIFIED;
 
 // Table 86 - TPMT_TK_AUTH Structure
 typedef struct {
-  TPM_ST            tag;
-  TPMI_RH_HIERARCHY hierarchy;
-  TPM2B_DIGEST      digest;
+  TPM_ST               tag;
+  TPMI_RH_HIERARCHY    hierarchy;
+  TPM2B_DIGEST         digest;
 } TPMT_TK_AUTH;
 
 // Table 87 - TPMT_TK_HASHCHECK Structure
 typedef struct {
-  TPM_ST            tag;
-  TPMI_RH_HIERARCHY hierarchy;
-  TPM2B_DIGEST      digest;
+  TPM_ST               tag;
+  TPMI_RH_HIERARCHY    hierarchy;
+  TPM2B_DIGEST         digest;
 } TPMT_TK_HASHCHECK;
 
 // Table 88 - TPMS_ALG_PROPERTY Structure
 typedef struct {
-  TPM_ALG_ID     alg;
-  TPMA_ALGORITHM algProperties;
+  TPM_ALG_ID        alg;
+  TPMA_ALGORITHM    algProperties;
 } TPMS_ALG_PROPERTY;
 
 // Table 89 - TPMS_TAGGED_PROPERTY Structure
 typedef struct {
-  TPM_PT property;
-  UINT32 value;
+  TPM_PT    property;
+  UINT32    value;
 } TPMS_TAGGED_PROPERTY;
 
 // Table 90 - TPMS_TAGGED_PCR_SELECT Structure
 typedef struct {
-  TPM_PT tag;
-  UINT8  sizeofSelect;
-  BYTE   pcrSelect[PCR_SELECT_MAX];
+  TPM_PT    tag;
+  UINT8     sizeofSelect;
+  BYTE      pcrSelect[PCR_SELECT_MAX];
 } TPMS_TAGGED_PCR_SELECT;
 
 // Table 91 - TPML_CC Structure
 typedef struct {
-  UINT32 count;
-  TPM_CC commandCodes[MAX_CAP_CC];
+  UINT32    count;
+  TPM_CC    commandCodes[MAX_CAP_CC];
 } TPML_CC;
 
 // Table 92 - TPML_CCA Structure
 typedef struct {
-  UINT32  count;
-  TPMA_CC commandAttributes[MAX_CAP_CC];
+  UINT32     count;
+  TPMA_CC    commandAttributes[MAX_CAP_CC];
 } TPML_CCA;
 
 // Table 93 - TPML_ALG Structure
 typedef struct {
-  UINT32     count;
-  TPM_ALG_ID algorithms[MAX_ALG_LIST_SIZE];
+  UINT32        count;
+  TPM_ALG_ID    algorithms[MAX_ALG_LIST_SIZE];
 } TPML_ALG;
 
 // Table 94 - TPML_HANDLE Structure
 typedef struct {
-  UINT32     count;
-  TPM_HANDLE handle[MAX_CAP_HANDLES];
+  UINT32        count;
+  TPM_HANDLE    handle[MAX_CAP_HANDLES];
 } TPML_HANDLE;
 
 // Table 95 - TPML_DIGEST Structure
 typedef struct {
-  UINT32       count;
-  TPM2B_DIGEST digests[8];
+  UINT32          count;
+  TPM2B_DIGEST    digests[8];
 } TPML_DIGEST;
 
 // Table 96 -- TPML_DIGEST_VALUES Structure <I/O>
 typedef struct {
-  UINT32  count;
-  TPMT_HA digests[HASH_COUNT];
+  UINT32     count;
+  TPMT_HA    digests[HASH_COUNT];
 } TPML_DIGEST_VALUES;
 
 // Table 97 - TPM2B_DIGEST_VALUES Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[sizeof(TPML_DIGEST_VALUES)];
+  UINT16    size;
+  BYTE      buffer[sizeof (TPML_DIGEST_VALUES)];
 } TPM2B_DIGEST_VALUES;
 
 // Table 98 - TPML_PCR_SELECTION Structure
 typedef struct {
-  UINT32             count;
-  TPMS_PCR_SELECTION pcrSelections[HASH_COUNT];
+  UINT32                count;
+  TPMS_PCR_SELECTION    pcrSelections[HASH_COUNT];
 } TPML_PCR_SELECTION;
 
 // Table 99 - TPML_ALG_PROPERTY Structure
 typedef struct {
-  UINT32            count;
-  TPMS_ALG_PROPERTY algProperties[MAX_CAP_ALGS];
+  UINT32               count;
+  TPMS_ALG_PROPERTY    algProperties[MAX_CAP_ALGS];
 } TPML_ALG_PROPERTY;
 
 // Table 100 - TPML_TAGGED_TPM_PROPERTY Structure
 typedef struct {
-  UINT32               count;
-  TPMS_TAGGED_PROPERTY tpmProperty[MAX_TPM_PROPERTIES];
+  UINT32                  count;
+  TPMS_TAGGED_PROPERTY    tpmProperty[MAX_TPM_PROPERTIES];
 } TPML_TAGGED_TPM_PROPERTY;
 
 // Table 101 - TPML_TAGGED_PCR_PROPERTY Structure
 typedef struct {
-  UINT32                 count;
-  TPMS_TAGGED_PCR_SELECT pcrProperty[MAX_PCR_PROPERTIES];
+  UINT32                    count;
+  TPMS_TAGGED_PCR_SELECT    pcrProperty[MAX_PCR_PROPERTIES];
 } TPML_TAGGED_PCR_PROPERTY;
 
 // Table 102 - TPML_ECC_CURVE Structure
 typedef struct {
-  UINT32        count;
-  TPM_ECC_CURVE eccCurves[MAX_ECC_CURVES];
+  UINT32           count;
+  TPM_ECC_CURVE    eccCurves[MAX_ECC_CURVES];
 } TPML_ECC_CURVE;
 
 // Table 103 - TPMU_CAPABILITIES Union
 typedef union {
-  TPML_ALG_PROPERTY        algorithms;
-  TPML_HANDLE              handles;
-  TPML_CCA                 command;
-  TPML_CC                  ppCommands;
-  TPML_CC                  auditCommands;
-  TPML_PCR_SELECTION       assignedPCR;
-  TPML_TAGGED_TPM_PROPERTY tpmProperties;
-  TPML_TAGGED_PCR_PROPERTY pcrProperties;
-  TPML_ECC_CURVE           eccCurves;
+  TPML_ALG_PROPERTY           algorithms;
+  TPML_HANDLE                 handles;
+  TPML_CCA                    command;
+  TPML_CC                     ppCommands;
+  TPML_CC                     auditCommands;
+  TPML_PCR_SELECTION          assignedPCR;
+  TPML_TAGGED_TPM_PROPERTY    tpmProperties;
+  TPML_TAGGED_PCR_PROPERTY    pcrProperties;
+  TPML_ECC_CURVE              eccCurves;
 } TPMU_CAPABILITIES;
 
 // Table 104 - TPMS_CAPABILITY_DATA Structure
 typedef struct {
-  TPM_CAP           capability;
-  TPMU_CAPABILITIES data;
+  TPM_CAP              capability;
+  TPMU_CAPABILITIES    data;
 } TPMS_CAPABILITY_DATA;
 
 // Table 105 - TPMS_CLOCK_INFO Structure
 typedef struct {
-  UINT64      clock;
-  UINT32      resetCount;
-  UINT32      restartCount;
-  TPMI_YES_NO safe;
+  UINT64         clock;
+  UINT32         resetCount;
+  UINT32         restartCount;
+  TPMI_YES_NO    safe;
 } TPMS_CLOCK_INFO;
 
 // Table 106 - TPMS_TIME_INFO Structure
 typedef struct {
-  UINT64          time;
-  TPMS_CLOCK_INFO clockInfo;
+  UINT64             time;
+  TPMS_CLOCK_INFO    clockInfo;
 } TPMS_TIME_INFO;
 
 // Table 107 - TPMS_TIME_ATTEST_INFO Structure
 typedef struct {
-  TPMS_TIME_INFO time;
-  UINT64         firmwareVersion;
+  TPMS_TIME_INFO    time;
+  UINT64            firmwareVersion;
 } TPMS_TIME_ATTEST_INFO;
 
 // Table 108 - TPMS_CERTIFY_INFO Structure
 typedef struct {
-  TPM2B_NAME name;
-  TPM2B_NAME qualifiedName;
+  TPM2B_NAME    name;
+  TPM2B_NAME    qualifiedName;
 } TPMS_CERTIFY_INFO;
 
 // Table 109 - TPMS_QUOTE_INFO Structure
 typedef struct {
-  TPML_PCR_SELECTION pcrSelect;
-  TPM2B_DIGEST       pcrDigest;
+  TPML_PCR_SELECTION    pcrSelect;
+  TPM2B_DIGEST          pcrDigest;
 } TPMS_QUOTE_INFO;
 
 // Table 110 - TPMS_COMMAND_AUDIT_INFO Structure
 typedef struct {
-  UINT64       auditCounter;
-  TPM_ALG_ID   digestAlg;
-  TPM2B_DIGEST auditDigest;
-  TPM2B_DIGEST commandDigest;
+  UINT64          auditCounter;
+  TPM_ALG_ID      digestAlg;
+  TPM2B_DIGEST    auditDigest;
+  TPM2B_DIGEST    commandDigest;
 } TPMS_COMMAND_AUDIT_INFO;
 
 // Table 111 - TPMS_SESSION_AUDIT_INFO Structure
 typedef struct {
-  TPMI_YES_NO  exclusiveSession;
-  TPM2B_DIGEST sessionDigest;
+  TPMI_YES_NO     exclusiveSession;
+  TPM2B_DIGEST    sessionDigest;
 } TPMS_SESSION_AUDIT_INFO;
 
 // Table 112 - TPMS_CREATION_INFO Structure
 typedef struct {
-  TPM2B_NAME   objectName;
-  TPM2B_DIGEST creationHash;
+  TPM2B_NAME      objectName;
+  TPM2B_DIGEST    creationHash;
 } TPMS_CREATION_INFO;
 
 // Table 113 - TPMS_NV_CERTIFY_INFO Structure
 typedef struct {
-  TPM2B_NAME          indexName;
-  UINT16              offset;
-  TPM2B_MAX_NV_BUFFER nvContents;
+  TPM2B_NAME             indexName;
+  UINT16                 offset;
+  TPM2B_MAX_NV_BUFFER    nvContents;
 } TPMS_NV_CERTIFY_INFO;
 
 // Table 114 - TPMI_ST_ATTEST Type
@@ -1202,45 +1195,45 @@
 
 // Table 115 - TPMU_ATTEST Union
 typedef union {
-  TPMS_CERTIFY_INFO       certify;
-  TPMS_CREATION_INFO      creation;
-  TPMS_QUOTE_INFO         quote;
-  TPMS_COMMAND_AUDIT_INFO commandAudit;
-  TPMS_SESSION_AUDIT_INFO sessionAudit;
-  TPMS_TIME_ATTEST_INFO   time;
-  TPMS_NV_CERTIFY_INFO    nv;
+  TPMS_CERTIFY_INFO          certify;
+  TPMS_CREATION_INFO         creation;
+  TPMS_QUOTE_INFO            quote;
+  TPMS_COMMAND_AUDIT_INFO    commandAudit;
+  TPMS_SESSION_AUDIT_INFO    sessionAudit;
+  TPMS_TIME_ATTEST_INFO      time;
+  TPMS_NV_CERTIFY_INFO       nv;
 } TPMU_ATTEST;
 
 // Table 116 - TPMS_ATTEST Structure
 typedef struct {
-  TPM_GENERATED   magic;
-  TPMI_ST_ATTEST  type;
-  TPM2B_NAME      qualifiedSigner;
-  TPM2B_DATA      extraData;
-  TPMS_CLOCK_INFO clockInfo;
-  UINT64          firmwareVersion;
-  TPMU_ATTEST     attested;
+  TPM_GENERATED      magic;
+  TPMI_ST_ATTEST     type;
+  TPM2B_NAME         qualifiedSigner;
+  TPM2B_DATA         extraData;
+  TPMS_CLOCK_INFO    clockInfo;
+  UINT64             firmwareVersion;
+  TPMU_ATTEST        attested;
 } TPMS_ATTEST;
 
 // Table 117 - TPM2B_ATTEST Structure
 typedef struct {
-  UINT16 size;
-  BYTE   attestationData[sizeof(TPMS_ATTEST)];
+  UINT16    size;
+  BYTE      attestationData[sizeof (TPMS_ATTEST)];
 } TPM2B_ATTEST;
 
 // Table 118 - TPMS_AUTH_COMMAND Structure
 typedef struct {
-  TPMI_SH_AUTH_SESSION sessionHandle;
-  TPM2B_NONCE          nonce;
-  TPMA_SESSION         sessionAttributes;
-  TPM2B_AUTH           hmac;
+  TPMI_SH_AUTH_SESSION    sessionHandle;
+  TPM2B_NONCE             nonce;
+  TPMA_SESSION            sessionAttributes;
+  TPM2B_AUTH              hmac;
 } TPMS_AUTH_COMMAND;
 
 // Table 119 - TPMS_AUTH_RESPONSE Structure
 typedef struct {
-  TPM2B_NONCE  nonce;
-  TPMA_SESSION sessionAttributes;
-  TPM2B_AUTH   hmac;
+  TPM2B_NONCE     nonce;
+  TPMA_SESSION    sessionAttributes;
+  TPM2B_AUTH      hmac;
 } TPMS_AUTH_RESPONSE;
 
 // 11 Algorithm Parameters and Structures
@@ -1253,65 +1246,65 @@
 
 // Table 122 - TPMU_SYM_KEY_BITS Union
 typedef union {
-  TPMI_AES_KEY_BITS aes;
-  TPMI_SM4_KEY_BITS SM4;
-  TPM_KEY_BITS      sym;
+  TPMI_AES_KEY_BITS    aes;
+  TPMI_SM4_KEY_BITS    SM4;
+  TPM_KEY_BITS         sym;
   TPMI_ALG_HASH     xor;
 } TPMU_SYM_KEY_BITS;
 
 // Table 123 - TPMU_SYM_MODE Union
 typedef union {
-  TPMI_ALG_SYM_MODE aes;
-  TPMI_ALG_SYM_MODE SM4;
-  TPMI_ALG_SYM_MODE sym;
+  TPMI_ALG_SYM_MODE    aes;
+  TPMI_ALG_SYM_MODE    SM4;
+  TPMI_ALG_SYM_MODE    sym;
 } TPMU_SYM_MODE;
 
 // Table 125 - TPMT_SYM_DEF Structure
 typedef struct {
-  TPMI_ALG_SYM      algorithm;
-  TPMU_SYM_KEY_BITS keyBits;
-  TPMU_SYM_MODE     mode;
+  TPMI_ALG_SYM         algorithm;
+  TPMU_SYM_KEY_BITS    keyBits;
+  TPMU_SYM_MODE        mode;
 } TPMT_SYM_DEF;
 
 // Table 126 - TPMT_SYM_DEF_OBJECT Structure
 typedef struct {
-  TPMI_ALG_SYM_OBJECT algorithm;
-  TPMU_SYM_KEY_BITS   keyBits;
-  TPMU_SYM_MODE       mode;
+  TPMI_ALG_SYM_OBJECT    algorithm;
+  TPMU_SYM_KEY_BITS      keyBits;
+  TPMU_SYM_MODE          mode;
 } TPMT_SYM_DEF_OBJECT;
 
 // Table 127 - TPM2B_SYM_KEY Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[MAX_SYM_KEY_BYTES];
+  UINT16    size;
+  BYTE      buffer[MAX_SYM_KEY_BYTES];
 } TPM2B_SYM_KEY;
 
 // Table 128 - TPMS_SYMCIPHER_PARMS Structure
 typedef struct {
-  TPMT_SYM_DEF_OBJECT sym;
+  TPMT_SYM_DEF_OBJECT    sym;
 } TPMS_SYMCIPHER_PARMS;
 
 // Table 129 - TPM2B_SENSITIVE_DATA Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[MAX_SYM_DATA];
+  UINT16    size;
+  BYTE      buffer[MAX_SYM_DATA];
 } TPM2B_SENSITIVE_DATA;
 
 // Table 130 - TPMS_SENSITIVE_CREATE Structure
 typedef struct {
-  TPM2B_AUTH           userAuth;
-  TPM2B_SENSITIVE_DATA data;
+  TPM2B_AUTH              userAuth;
+  TPM2B_SENSITIVE_DATA    data;
 } TPMS_SENSITIVE_CREATE;
 
 // Table 131 - TPM2B_SENSITIVE_CREATE Structure
 typedef struct {
-  UINT16                size;
-  TPMS_SENSITIVE_CREATE sensitive;
+  UINT16                   size;
+  TPMS_SENSITIVE_CREATE    sensitive;
 } TPM2B_SENSITIVE_CREATE;
 
 // Table 132 - TPMS_SCHEME_SIGHASH Structure
 typedef struct {
-  TPMI_ALG_HASH hashAlg;
+  TPMI_ALG_HASH    hashAlg;
 } TPMS_SCHEME_SIGHASH;
 
 // Table 133 - TPMI_ALG_KEYEDHASH_SCHEME Type
@@ -1322,20 +1315,20 @@
 
 // Table 135 - TPMS_SCHEME_XOR Structure
 typedef struct {
-  TPMI_ALG_HASH hashAlg;
-  TPMI_ALG_KDF  kdf;
+  TPMI_ALG_HASH    hashAlg;
+  TPMI_ALG_KDF     kdf;
 } TPMS_SCHEME_XOR;
 
 // Table 136 - TPMU_SCHEME_KEYEDHASH Union
 typedef union {
-  TPMS_SCHEME_HMAC hmac;
+  TPMS_SCHEME_HMAC    hmac;
   TPMS_SCHEME_XOR  xor;
 } TPMU_SCHEME_KEYEDHASH;
 
 // Table 137 - TPMT_KEYEDHASH_SCHEME Structure
 typedef struct {
-  TPMI_ALG_KEYEDHASH_SCHEME scheme;
-  TPMU_SCHEME_KEYEDHASH     details;
+  TPMI_ALG_KEYEDHASH_SCHEME    scheme;
+  TPMU_SCHEME_KEYEDHASH        details;
 } TPMT_KEYEDHASH_SCHEME;
 
 // Table 138 - RSA_SIG_SCHEMES Types
@@ -1349,69 +1342,69 @@
 
 // Table 140 - TPMS_SCHEME_ECDAA Structure
 typedef struct {
-  TPMI_ALG_HASH hashAlg;
-  UINT16        count;
+  TPMI_ALG_HASH    hashAlg;
+  UINT16           count;
 } TPMS_SCHEME_ECDAA;
 
 // Table 141 - TPMU_SIG_SCHEME Union
 typedef union {
-  TPMS_SCHEME_RSASSA    rsassa;
-  TPMS_SCHEME_RSAPSS    rsapss;
-  TPMS_SCHEME_ECDSA     ecdsa;
-  TPMS_SCHEME_ECDAA     ecdaa;
-  TPMS_SCHEME_ECSCHNORR ecSchnorr;
-  TPMS_SCHEME_HMAC      hmac;
-  TPMS_SCHEME_SIGHASH   any;
+  TPMS_SCHEME_RSASSA       rsassa;
+  TPMS_SCHEME_RSAPSS       rsapss;
+  TPMS_SCHEME_ECDSA        ecdsa;
+  TPMS_SCHEME_ECDAA        ecdaa;
+  TPMS_SCHEME_ECSCHNORR    ecSchnorr;
+  TPMS_SCHEME_HMAC         hmac;
+  TPMS_SCHEME_SIGHASH      any;
 } TPMU_SIG_SCHEME;
 
 // Table 142 - TPMT_SIG_SCHEME Structure
 typedef struct {
-  TPMI_ALG_SIG_SCHEME scheme;
-  TPMU_SIG_SCHEME     details;
+  TPMI_ALG_SIG_SCHEME    scheme;
+  TPMU_SIG_SCHEME        details;
 } TPMT_SIG_SCHEME;
 
 // Table 143 - TPMS_SCHEME_OAEP Structure
 typedef struct {
-  TPMI_ALG_HASH hashAlg;
+  TPMI_ALG_HASH    hashAlg;
 } TPMS_SCHEME_OAEP;
 
 // Table 144 - TPMS_SCHEME_ECDH Structure
 typedef struct {
-  TPMI_ALG_HASH hashAlg;
+  TPMI_ALG_HASH    hashAlg;
 } TPMS_SCHEME_ECDH;
 
 // Table 145 - TPMS_SCHEME_MGF1 Structure
 typedef struct {
-  TPMI_ALG_HASH hashAlg;
+  TPMI_ALG_HASH    hashAlg;
 } TPMS_SCHEME_MGF1;
 
 // Table 146 - TPMS_SCHEME_KDF1_SP800_56a Structure
 typedef struct {
-  TPMI_ALG_HASH hashAlg;
+  TPMI_ALG_HASH    hashAlg;
 } TPMS_SCHEME_KDF1_SP800_56a;
 
 // Table 147 - TPMS_SCHEME_KDF2 Structure
 typedef struct {
-  TPMI_ALG_HASH hashAlg;
+  TPMI_ALG_HASH    hashAlg;
 } TPMS_SCHEME_KDF2;
 
 // Table 148 - TPMS_SCHEME_KDF1_SP800_108 Structure
 typedef struct {
-  TPMI_ALG_HASH hashAlg;
+  TPMI_ALG_HASH    hashAlg;
 } TPMS_SCHEME_KDF1_SP800_108;
 
 // Table 149 - TPMU_KDF_SCHEME Union
 typedef union {
-  TPMS_SCHEME_MGF1           mgf1;
-  TPMS_SCHEME_KDF1_SP800_56a kdf1_SP800_56a;
-  TPMS_SCHEME_KDF2           kdf2;
-  TPMS_SCHEME_KDF1_SP800_108 kdf1_sp800_108;
+  TPMS_SCHEME_MGF1              mgf1;
+  TPMS_SCHEME_KDF1_SP800_56a    kdf1_SP800_56a;
+  TPMS_SCHEME_KDF2              kdf2;
+  TPMS_SCHEME_KDF1_SP800_108    kdf1_sp800_108;
 } TPMU_KDF_SCHEME;
 
 // Table 150 - TPMT_KDF_SCHEME Structure
 typedef struct {
-  TPMI_ALG_KDF    scheme;
-  TPMU_KDF_SCHEME details;
+  TPMI_ALG_KDF       scheme;
+  TPMU_KDF_SCHEME    details;
 } TPMT_KDF_SCHEME;
 
 // Table 151 - TPMI_ALG_ASYM_SCHEME Type
@@ -1419,19 +1412,19 @@
 
 // Table 152 - TPMU_ASYM_SCHEME Union
 typedef union {
-  TPMS_SCHEME_RSASSA    rsassa;
-  TPMS_SCHEME_RSAPSS    rsapss;
-  TPMS_SCHEME_OAEP      oaep;
-  TPMS_SCHEME_ECDSA     ecdsa;
-  TPMS_SCHEME_ECDAA     ecdaa;
-  TPMS_SCHEME_ECSCHNORR ecSchnorr;
-  TPMS_SCHEME_SIGHASH   anySig;
+  TPMS_SCHEME_RSASSA       rsassa;
+  TPMS_SCHEME_RSAPSS       rsapss;
+  TPMS_SCHEME_OAEP         oaep;
+  TPMS_SCHEME_ECDSA        ecdsa;
+  TPMS_SCHEME_ECDAA        ecdaa;
+  TPMS_SCHEME_ECSCHNORR    ecSchnorr;
+  TPMS_SCHEME_SIGHASH      anySig;
 } TPMU_ASYM_SCHEME;
 
 // Table 153 - TPMT_ASYM_SCHEME Structure
 typedef struct {
-  TPMI_ALG_ASYM_SCHEME scheme;
-  TPMU_ASYM_SCHEME     details;
+  TPMI_ALG_ASYM_SCHEME    scheme;
+  TPMU_ASYM_SCHEME        details;
 } TPMT_ASYM_SCHEME;
 
 // Table 154 - TPMI_ALG_RSA_SCHEME Type
@@ -1439,8 +1432,8 @@
 
 // Table 155 - TPMT_RSA_SCHEME Structure
 typedef struct {
-  TPMI_ALG_RSA_SCHEME scheme;
-  TPMU_ASYM_SCHEME    details;
+  TPMI_ALG_RSA_SCHEME    scheme;
+  TPMU_ASYM_SCHEME       details;
 } TPMT_RSA_SCHEME;
 
 // Table 156 - TPMI_ALG_RSA_DECRYPT Type
@@ -1448,14 +1441,14 @@
 
 // Table 157 - TPMT_RSA_DECRYPT Structure
 typedef struct {
-  TPMI_ALG_RSA_DECRYPT scheme;
-  TPMU_ASYM_SCHEME     details;
+  TPMI_ALG_RSA_DECRYPT    scheme;
+  TPMU_ASYM_SCHEME        details;
 } TPMT_RSA_DECRYPT;
 
 // Table 158 - TPM2B_PUBLIC_KEY_RSA Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[MAX_RSA_KEY_BYTES];
+  UINT16    size;
+  BYTE      buffer[MAX_RSA_KEY_BYTES];
 } TPM2B_PUBLIC_KEY_RSA;
 
 // Table 159 - TPMI_RSA_KEY_BITS Type
@@ -1463,26 +1456,26 @@
 
 // Table 160 - TPM2B_PRIVATE_KEY_RSA Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[MAX_RSA_KEY_BYTES/2];
+  UINT16    size;
+  BYTE      buffer[MAX_RSA_KEY_BYTES/2];
 } TPM2B_PRIVATE_KEY_RSA;
 
 // Table 161 - TPM2B_ECC_PARAMETER Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[MAX_ECC_KEY_BYTES];
+  UINT16    size;
+  BYTE      buffer[MAX_ECC_KEY_BYTES];
 } TPM2B_ECC_PARAMETER;
 
 // Table 162 - TPMS_ECC_POINT Structure
 typedef struct {
-  TPM2B_ECC_PARAMETER x;
-  TPM2B_ECC_PARAMETER y;
+  TPM2B_ECC_PARAMETER    x;
+  TPM2B_ECC_PARAMETER    y;
 } TPMS_ECC_POINT;
 
 // Table 163 -- TPM2B_ECC_POINT Structure <I/O>
 typedef struct {
-  UINT16         size;
-  TPMS_ECC_POINT point;
+  UINT16            size;
+  TPMS_ECC_POINT    point;
 } TPM2B_ECC_POINT;
 
 // Table 164 - TPMI_ALG_ECC_SCHEME Type
@@ -1493,74 +1486,74 @@
 
 // Table 166 - TPMT_ECC_SCHEME Structure
 typedef struct {
-  TPMI_ALG_ECC_SCHEME scheme;
-  TPMU_SIG_SCHEME     details;
+  TPMI_ALG_ECC_SCHEME    scheme;
+  TPMU_SIG_SCHEME        details;
 } TPMT_ECC_SCHEME;
 
 // Table 167 - TPMS_ALGORITHM_DETAIL_ECC Structure
 typedef struct {
-  TPM_ECC_CURVE       curveID;
-  UINT16              keySize;
-  TPMT_KDF_SCHEME     kdf;
-  TPMT_ECC_SCHEME     sign;
-  TPM2B_ECC_PARAMETER p;
-  TPM2B_ECC_PARAMETER a;
-  TPM2B_ECC_PARAMETER b;
-  TPM2B_ECC_PARAMETER gX;
-  TPM2B_ECC_PARAMETER gY;
-  TPM2B_ECC_PARAMETER n;
-  TPM2B_ECC_PARAMETER h;
+  TPM_ECC_CURVE          curveID;
+  UINT16                 keySize;
+  TPMT_KDF_SCHEME        kdf;
+  TPMT_ECC_SCHEME        sign;
+  TPM2B_ECC_PARAMETER    p;
+  TPM2B_ECC_PARAMETER    a;
+  TPM2B_ECC_PARAMETER    b;
+  TPM2B_ECC_PARAMETER    gX;
+  TPM2B_ECC_PARAMETER    gY;
+  TPM2B_ECC_PARAMETER    n;
+  TPM2B_ECC_PARAMETER    h;
 } TPMS_ALGORITHM_DETAIL_ECC;
 
 // Table 168 - TPMS_SIGNATURE_RSASSA Structure
 typedef struct {
-  TPMI_ALG_HASH        hash;
-  TPM2B_PUBLIC_KEY_RSA sig;
+  TPMI_ALG_HASH           hash;
+  TPM2B_PUBLIC_KEY_RSA    sig;
 } TPMS_SIGNATURE_RSASSA;
 
 // Table 169 - TPMS_SIGNATURE_RSAPSS Structure
 typedef struct {
-  TPMI_ALG_HASH        hash;
-  TPM2B_PUBLIC_KEY_RSA sig;
+  TPMI_ALG_HASH           hash;
+  TPM2B_PUBLIC_KEY_RSA    sig;
 } TPMS_SIGNATURE_RSAPSS;
 
 // Table 170 - TPMS_SIGNATURE_ECDSA Structure
 typedef struct {
-  TPMI_ALG_HASH       hash;
-  TPM2B_ECC_PARAMETER signatureR;
-  TPM2B_ECC_PARAMETER signatureS;
+  TPMI_ALG_HASH          hash;
+  TPM2B_ECC_PARAMETER    signatureR;
+  TPM2B_ECC_PARAMETER    signatureS;
 } TPMS_SIGNATURE_ECDSA;
 
 // Table 171 - TPMU_SIGNATURE Union
 typedef union {
-  TPMS_SIGNATURE_RSASSA rsassa;
-  TPMS_SIGNATURE_RSAPSS rsapss;
-  TPMS_SIGNATURE_ECDSA  ecdsa;
-  TPMS_SIGNATURE_ECDSA  sm2;
-  TPMS_SIGNATURE_ECDSA  ecdaa;
-  TPMS_SIGNATURE_ECDSA  ecschnorr;
-  TPMT_HA               hmac;
-  TPMS_SCHEME_SIGHASH   any;
+  TPMS_SIGNATURE_RSASSA    rsassa;
+  TPMS_SIGNATURE_RSAPSS    rsapss;
+  TPMS_SIGNATURE_ECDSA     ecdsa;
+  TPMS_SIGNATURE_ECDSA     sm2;
+  TPMS_SIGNATURE_ECDSA     ecdaa;
+  TPMS_SIGNATURE_ECDSA     ecschnorr;
+  TPMT_HA                  hmac;
+  TPMS_SCHEME_SIGHASH      any;
 } TPMU_SIGNATURE;
 
 // Table 172 - TPMT_SIGNATURE Structure
 typedef struct {
-  TPMI_ALG_SIG_SCHEME sigAlg;
-  TPMU_SIGNATURE      signature;
+  TPMI_ALG_SIG_SCHEME    sigAlg;
+  TPMU_SIGNATURE         signature;
 } TPMT_SIGNATURE;
 
 // Table 173 - TPMU_ENCRYPTED_SECRET Union
 typedef union {
-  BYTE ecc[sizeof(TPMS_ECC_POINT)];
-  BYTE rsa[MAX_RSA_KEY_BYTES];
-  BYTE symmetric[sizeof(TPM2B_DIGEST)];
-  BYTE keyedHash[sizeof(TPM2B_DIGEST)];
+  BYTE    ecc[sizeof (TPMS_ECC_POINT)];
+  BYTE    rsa[MAX_RSA_KEY_BYTES];
+  BYTE    symmetric[sizeof (TPM2B_DIGEST)];
+  BYTE    keyedHash[sizeof (TPM2B_DIGEST)];
 } TPMU_ENCRYPTED_SECRET;
 
 // Table 174 - TPM2B_ENCRYPTED_SECRET Structure
 typedef struct {
-  UINT16 size;
-  BYTE   secret[sizeof(TPMU_ENCRYPTED_SECRET)];
+  UINT16    size;
+  BYTE      secret[sizeof (TPMU_ENCRYPTED_SECRET)];
 } TPM2B_ENCRYPTED_SECRET;
 
 // 12 Key/Object Complex
@@ -1570,122 +1563,122 @@
 
 // Table 176 - TPMU_PUBLIC_ID Union
 typedef union {
-  TPM2B_DIGEST         keyedHash;
-  TPM2B_DIGEST         sym;
-  TPM2B_PUBLIC_KEY_RSA rsa;
-  TPMS_ECC_POINT       ecc;
+  TPM2B_DIGEST            keyedHash;
+  TPM2B_DIGEST            sym;
+  TPM2B_PUBLIC_KEY_RSA    rsa;
+  TPMS_ECC_POINT          ecc;
 } TPMU_PUBLIC_ID;
 
 // Table 177 - TPMS_KEYEDHASH_PARMS Structure
 typedef struct {
-  TPMT_KEYEDHASH_SCHEME scheme;
+  TPMT_KEYEDHASH_SCHEME    scheme;
 } TPMS_KEYEDHASH_PARMS;
 
 // Table 178 - TPMS_ASYM_PARMS Structure
 typedef struct {
-  TPMT_SYM_DEF_OBJECT symmetric;
-  TPMT_ASYM_SCHEME    scheme;
+  TPMT_SYM_DEF_OBJECT    symmetric;
+  TPMT_ASYM_SCHEME       scheme;
 } TPMS_ASYM_PARMS;
 
 // Table 179 - TPMS_RSA_PARMS Structure
 typedef struct {
-  TPMT_SYM_DEF_OBJECT symmetric;
-  TPMT_RSA_SCHEME     scheme;
-  TPMI_RSA_KEY_BITS   keyBits;
-  UINT32              exponent;
+  TPMT_SYM_DEF_OBJECT    symmetric;
+  TPMT_RSA_SCHEME        scheme;
+  TPMI_RSA_KEY_BITS      keyBits;
+  UINT32                 exponent;
 } TPMS_RSA_PARMS;
 
 // Table 180 - TPMS_ECC_PARMS Structure
 typedef struct {
-  TPMT_SYM_DEF_OBJECT symmetric;
-  TPMT_ECC_SCHEME     scheme;
-  TPMI_ECC_CURVE      curveID;
-  TPMT_KDF_SCHEME     kdf;
+  TPMT_SYM_DEF_OBJECT    symmetric;
+  TPMT_ECC_SCHEME        scheme;
+  TPMI_ECC_CURVE         curveID;
+  TPMT_KDF_SCHEME        kdf;
 } TPMS_ECC_PARMS;
 
 // Table 181 - TPMU_PUBLIC_PARMS Union
 typedef union {
-  TPMS_KEYEDHASH_PARMS keyedHashDetail;
-  TPMT_SYM_DEF_OBJECT  symDetail;
-  TPMS_RSA_PARMS       rsaDetail;
-  TPMS_ECC_PARMS       eccDetail;
-  TPMS_ASYM_PARMS      asymDetail;
+  TPMS_KEYEDHASH_PARMS    keyedHashDetail;
+  TPMT_SYM_DEF_OBJECT     symDetail;
+  TPMS_RSA_PARMS          rsaDetail;
+  TPMS_ECC_PARMS          eccDetail;
+  TPMS_ASYM_PARMS         asymDetail;
 } TPMU_PUBLIC_PARMS;
 
 // Table 182 - TPMT_PUBLIC_PARMS Structure
 typedef struct {
-  TPMI_ALG_PUBLIC   type;
-  TPMU_PUBLIC_PARMS parameters;
+  TPMI_ALG_PUBLIC      type;
+  TPMU_PUBLIC_PARMS    parameters;
 } TPMT_PUBLIC_PARMS;
 
 // Table 183 - TPMT_PUBLIC Structure
 typedef struct {
-  TPMI_ALG_PUBLIC   type;
-  TPMI_ALG_HASH     nameAlg;
-  TPMA_OBJECT       objectAttributes;
-  TPM2B_DIGEST      authPolicy;
-  TPMU_PUBLIC_PARMS parameters;
-  TPMU_PUBLIC_ID    unique;
+  TPMI_ALG_PUBLIC      type;
+  TPMI_ALG_HASH        nameAlg;
+  TPMA_OBJECT          objectAttributes;
+  TPM2B_DIGEST         authPolicy;
+  TPMU_PUBLIC_PARMS    parameters;
+  TPMU_PUBLIC_ID       unique;
 } TPMT_PUBLIC;
 
 // Table 184 - TPM2B_PUBLIC Structure
 typedef struct {
-  UINT16      size;
-  TPMT_PUBLIC publicArea;
+  UINT16         size;
+  TPMT_PUBLIC    publicArea;
 } TPM2B_PUBLIC;
 
 // Table 185 - TPM2B_PRIVATE_VENDOR_SPECIFIC Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[PRIVATE_VENDOR_SPECIFIC_BYTES];
+  UINT16    size;
+  BYTE      buffer[PRIVATE_VENDOR_SPECIFIC_BYTES];
 } TPM2B_PRIVATE_VENDOR_SPECIFIC;
 
 // Table 186 - TPMU_SENSITIVE_COMPOSITE Union
 typedef union {
-  TPM2B_PRIVATE_KEY_RSA         rsa;
-  TPM2B_ECC_PARAMETER           ecc;
-  TPM2B_SENSITIVE_DATA          bits;
-  TPM2B_SYM_KEY                 sym;
-  TPM2B_PRIVATE_VENDOR_SPECIFIC any;
+  TPM2B_PRIVATE_KEY_RSA            rsa;
+  TPM2B_ECC_PARAMETER              ecc;
+  TPM2B_SENSITIVE_DATA             bits;
+  TPM2B_SYM_KEY                    sym;
+  TPM2B_PRIVATE_VENDOR_SPECIFIC    any;
 } TPMU_SENSITIVE_COMPOSITE;
 
 // Table 187 - TPMT_SENSITIVE Structure
 typedef struct {
-  TPMI_ALG_PUBLIC          sensitiveType;
-  TPM2B_AUTH               authValue;
-  TPM2B_DIGEST             seedValue;
-  TPMU_SENSITIVE_COMPOSITE sensitive;
+  TPMI_ALG_PUBLIC             sensitiveType;
+  TPM2B_AUTH                  authValue;
+  TPM2B_DIGEST                seedValue;
+  TPMU_SENSITIVE_COMPOSITE    sensitive;
 } TPMT_SENSITIVE;
 
 // Table 188 - TPM2B_SENSITIVE Structure
 typedef struct {
-  UINT16         size;
-  TPMT_SENSITIVE sensitiveArea;
+  UINT16            size;
+  TPMT_SENSITIVE    sensitiveArea;
 } TPM2B_SENSITIVE;
 
 // Table 189 - _PRIVATE Structure
 typedef struct {
-  TPM2B_DIGEST   integrityOuter;
-  TPM2B_DIGEST   integrityInner;
-  TPMT_SENSITIVE sensitive;
+  TPM2B_DIGEST      integrityOuter;
+  TPM2B_DIGEST      integrityInner;
+  TPMT_SENSITIVE    sensitive;
 } _PRIVATE;
 
 // Table 190 - TPM2B_PRIVATE Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[sizeof(_PRIVATE)];
+  UINT16    size;
+  BYTE      buffer[sizeof (_PRIVATE)];
 } TPM2B_PRIVATE;
 
 // Table 191 - _ID_OBJECT Structure
 typedef struct {
-  TPM2B_DIGEST integrityHMAC;
-  TPM2B_DIGEST encIdentity;
+  TPM2B_DIGEST    integrityHMAC;
+  TPM2B_DIGEST    encIdentity;
 } _ID_OBJECT;
 
 // Table 192 - TPM2B_ID_OBJECT Structure
 typedef struct {
-  UINT16 size;
-  BYTE   credential[sizeof(_ID_OBJECT)];
+  UINT16    size;
+  BYTE      credential[sizeof (_ID_OBJECT)];
 } TPM2B_ID_OBJECT;
 
 // 13 NV Storage Structures
@@ -1694,118 +1687,117 @@
 //
 // NOTE: Comment here to resolve conflict
 //
-//typedef struct {
+// typedef struct {
 //  UINT32 index : 22;
 //  UINT32 space : 2;
 //  UINT32 RH_NV : 8;
-//} TPM_NV_INDEX;
+// } TPM_NV_INDEX;
 
 // Table 195 - TPMA_NV Bits
 typedef struct {
-  UINT32 TPMA_NV_PPWRITE        : 1;
-  UINT32 TPMA_NV_OWNERWRITE     : 1;
-  UINT32 TPMA_NV_AUTHWRITE      : 1;
-  UINT32 TPMA_NV_POLICYWRITE    : 1;
-  UINT32 TPMA_NV_COUNTER        : 1;
-  UINT32 TPMA_NV_BITS           : 1;
-  UINT32 TPMA_NV_EXTEND         : 1;
-  UINT32 reserved7_9            : 3;
-  UINT32 TPMA_NV_POLICY_DELETE  : 1;
-  UINT32 TPMA_NV_WRITELOCKED    : 1;
-  UINT32 TPMA_NV_WRITEALL       : 1;
-  UINT32 TPMA_NV_WRITEDEFINE    : 1;
-  UINT32 TPMA_NV_WRITE_STCLEAR  : 1;
-  UINT32 TPMA_NV_GLOBALLOCK     : 1;
-  UINT32 TPMA_NV_PPREAD         : 1;
-  UINT32 TPMA_NV_OWNERREAD      : 1;
-  UINT32 TPMA_NV_AUTHREAD       : 1;
-  UINT32 TPMA_NV_POLICYREAD     : 1;
-  UINT32 reserved20_24          : 5;
-  UINT32 TPMA_NV_NO_DA          : 1;
-  UINT32 TPMA_NV_ORDERLY        : 1;
-  UINT32 TPMA_NV_CLEAR_STCLEAR  : 1;
-  UINT32 TPMA_NV_READLOCKED     : 1;
-  UINT32 TPMA_NV_WRITTEN        : 1;
-  UINT32 TPMA_NV_PLATFORMCREATE : 1;
-  UINT32 TPMA_NV_READ_STCLEAR   : 1;
+  UINT32    TPMA_NV_PPWRITE        : 1;
+  UINT32    TPMA_NV_OWNERWRITE     : 1;
+  UINT32    TPMA_NV_AUTHWRITE      : 1;
+  UINT32    TPMA_NV_POLICYWRITE    : 1;
+  UINT32    TPMA_NV_COUNTER        : 1;
+  UINT32    TPMA_NV_BITS           : 1;
+  UINT32    TPMA_NV_EXTEND         : 1;
+  UINT32    reserved7_9            : 3;
+  UINT32    TPMA_NV_POLICY_DELETE  : 1;
+  UINT32    TPMA_NV_WRITELOCKED    : 1;
+  UINT32    TPMA_NV_WRITEALL       : 1;
+  UINT32    TPMA_NV_WRITEDEFINE    : 1;
+  UINT32    TPMA_NV_WRITE_STCLEAR  : 1;
+  UINT32    TPMA_NV_GLOBALLOCK     : 1;
+  UINT32    TPMA_NV_PPREAD         : 1;
+  UINT32    TPMA_NV_OWNERREAD      : 1;
+  UINT32    TPMA_NV_AUTHREAD       : 1;
+  UINT32    TPMA_NV_POLICYREAD     : 1;
+  UINT32    reserved20_24          : 5;
+  UINT32    TPMA_NV_NO_DA          : 1;
+  UINT32    TPMA_NV_ORDERLY        : 1;
+  UINT32    TPMA_NV_CLEAR_STCLEAR  : 1;
+  UINT32    TPMA_NV_READLOCKED     : 1;
+  UINT32    TPMA_NV_WRITTEN        : 1;
+  UINT32    TPMA_NV_PLATFORMCREATE : 1;
+  UINT32    TPMA_NV_READ_STCLEAR   : 1;
 } TPMA_NV;
 
 // Table 196 - TPMS_NV_PUBLIC Structure
 typedef struct {
-  TPMI_RH_NV_INDEX nvIndex;
-  TPMI_ALG_HASH    nameAlg;
-  TPMA_NV          attributes;
-  TPM2B_DIGEST     authPolicy;
-  UINT16           dataSize;
+  TPMI_RH_NV_INDEX    nvIndex;
+  TPMI_ALG_HASH       nameAlg;
+  TPMA_NV             attributes;
+  TPM2B_DIGEST        authPolicy;
+  UINT16              dataSize;
 } TPMS_NV_PUBLIC;
 
 // Table 197 - TPM2B_NV_PUBLIC Structure
 typedef struct {
-  UINT16         size;
-  TPMS_NV_PUBLIC nvPublic;
+  UINT16            size;
+  TPMS_NV_PUBLIC    nvPublic;
 } TPM2B_NV_PUBLIC;
 
 // 14 Context Data
 
 // Table 198 - TPM2B_CONTEXT_SENSITIVE Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[MAX_CONTEXT_SIZE];
+  UINT16    size;
+  BYTE      buffer[MAX_CONTEXT_SIZE];
 } TPM2B_CONTEXT_SENSITIVE;
 
 // Table 199 - TPMS_CONTEXT_DATA Structure
 typedef struct {
-  TPM2B_DIGEST            integrity;
-  TPM2B_CONTEXT_SENSITIVE encrypted;
+  TPM2B_DIGEST               integrity;
+  TPM2B_CONTEXT_SENSITIVE    encrypted;
 } TPMS_CONTEXT_DATA;
 
 // Table 200 - TPM2B_CONTEXT_DATA Structure
 typedef struct {
-  UINT16 size;
-  BYTE   buffer[sizeof(TPMS_CONTEXT_DATA)];
+  UINT16    size;
+  BYTE      buffer[sizeof (TPMS_CONTEXT_DATA)];
 } TPM2B_CONTEXT_DATA;
 
 // Table 201 - TPMS_CONTEXT Structure
 typedef struct {
-  UINT64             sequence;
-  TPMI_DH_CONTEXT    savedHandle;
-  TPMI_RH_HIERARCHY  hierarchy;
-  TPM2B_CONTEXT_DATA contextBlob;
+  UINT64                sequence;
+  TPMI_DH_CONTEXT       savedHandle;
+  TPMI_RH_HIERARCHY     hierarchy;
+  TPM2B_CONTEXT_DATA    contextBlob;
 } TPMS_CONTEXT;
 
 // 15 Creation Data
 
 // Table 203 - TPMS_CREATION_DATA Structure
 typedef struct {
-  TPML_PCR_SELECTION pcrSelect;
-  TPM2B_DIGEST       pcrDigest;
-  TPMA_LOCALITY      locality;
-  TPM_ALG_ID         parentNameAlg;
-  TPM2B_NAME         parentName;
-  TPM2B_NAME         parentQualifiedName;
-  TPM2B_DATA         outsideInfo;
+  TPML_PCR_SELECTION    pcrSelect;
+  TPM2B_DIGEST          pcrDigest;
+  TPMA_LOCALITY         locality;
+  TPM_ALG_ID            parentNameAlg;
+  TPM2B_NAME            parentName;
+  TPM2B_NAME            parentQualifiedName;
+  TPM2B_DATA            outsideInfo;
 } TPMS_CREATION_DATA;
 
 // Table 204 - TPM2B_CREATION_DATA Structure
 typedef struct {
-  UINT16             size;
-  TPMS_CREATION_DATA creationData;
+  UINT16                size;
+  TPMS_CREATION_DATA    creationData;
 } TPM2B_CREATION_DATA;
 
-
 //
 // Command Header
 //
 typedef struct {
-  TPM_ST tag;
-  UINT32 paramSize;
-  TPM_CC commandCode;
+  TPM_ST    tag;
+  UINT32    paramSize;
+  TPM_CC    commandCode;
 } TPM2_COMMAND_HEADER;
 
 typedef struct {
-  TPM_ST tag;
-  UINT32 paramSize;
-  TPM_RC responseCode;
+  TPM_ST    tag;
+  UINT32    paramSize;
+  TPM_RC    responseCode;
 } TPM2_RESPONSE_HEADER;
 
 #pragma pack ()
@@ -1813,10 +1805,10 @@
 //
 // TCG Algorithm Registry
 //
-#define HASH_ALG_SHA1    0x00000001
-#define HASH_ALG_SHA256  0x00000002
-#define HASH_ALG_SHA384  0x00000004
-#define HASH_ALG_SHA512  0x00000008
-#define HASH_ALG_SM3_256 0x00000010
+#define HASH_ALG_SHA1     0x00000001
+#define HASH_ALG_SHA256   0x00000002
+#define HASH_ALG_SHA384   0x00000004
+#define HASH_ALG_SHA512   0x00000008
+#define HASH_ALG_SM3_256  0x00000010
 
 #endif
diff --git a/src/include/ipxe/efi/IndustryStandard/UefiTcgPlatform.h b/src/include/ipxe/efi/IndustryStandard/UefiTcgPlatform.h
index 3394c7c..a899867 100644
--- a/src/include/ipxe/efi/IndustryStandard/UefiTcgPlatform.h
+++ b/src/include/ipxe/efi/IndustryStandard/UefiTcgPlatform.h
@@ -1,21 +1,16 @@
 /** @file
-  TCG EFI Platform Definition in TCG_EFI_Platform_1_20_Final
+  TCG EFI Platform Definition in TCG_EFI_Platform_1_20_Final and
+  TCG PC Client Platform Firmware Profile Specification, Revision 1.05
 
-  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __UEFI_TCG_PLATFORM_H__
 #define __UEFI_TCG_PLATFORM_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/Tpm12.h>
 #include <ipxe/efi/IndustryStandard/Tpm20.h>
@@ -24,32 +19,46 @@
 //
 // Standard event types
 //
+#define EV_PREBOOT_CERT             ((TCG_EVENTTYPE) 0x00000000)
 #define EV_POST_CODE                ((TCG_EVENTTYPE) 0x00000001)
 #define EV_NO_ACTION                ((TCG_EVENTTYPE) 0x00000003)
 #define EV_SEPARATOR                ((TCG_EVENTTYPE) 0x00000004)
+#define EV_ACTION                   ((TCG_EVENTTYPE) 0x00000005)
+#define EV_EVENT_TAG                ((TCG_EVENTTYPE) 0x00000006)
 #define EV_S_CRTM_CONTENTS          ((TCG_EVENTTYPE) 0x00000007)
 #define EV_S_CRTM_VERSION           ((TCG_EVENTTYPE) 0x00000008)
 #define EV_CPU_MICROCODE            ((TCG_EVENTTYPE) 0x00000009)
+#define EV_PLATFORM_CONFIG_FLAGS    ((TCG_EVENTTYPE) 0x0000000A)
 #define EV_TABLE_OF_DEVICES         ((TCG_EVENTTYPE) 0x0000000B)
+#define EV_COMPACT_HASH             ((TCG_EVENTTYPE) 0x0000000C)
+#define EV_NONHOST_CODE             ((TCG_EVENTTYPE) 0x0000000F)
+#define EV_NONHOST_CONFIG           ((TCG_EVENTTYPE) 0x00000010)
+#define EV_NONHOST_INFO             ((TCG_EVENTTYPE) 0x00000011)
+#define EV_OMIT_BOOT_DEVICE_EVENTS  ((TCG_EVENTTYPE) 0x00000012)
 
 //
 // EFI specific event types
 //
-#define EV_EFI_EVENT_BASE                   ((TCG_EVENTTYPE) 0x80000000)
-#define EV_EFI_VARIABLE_DRIVER_CONFIG       (EV_EFI_EVENT_BASE + 1)
-#define EV_EFI_VARIABLE_BOOT                (EV_EFI_EVENT_BASE + 2)
-#define EV_EFI_BOOT_SERVICES_APPLICATION    (EV_EFI_EVENT_BASE + 3)
-#define EV_EFI_BOOT_SERVICES_DRIVER         (EV_EFI_EVENT_BASE + 4)
-#define EV_EFI_RUNTIME_SERVICES_DRIVER      (EV_EFI_EVENT_BASE + 5)
-#define EV_EFI_GPT_EVENT                    (EV_EFI_EVENT_BASE + 6)
-#define EV_EFI_ACTION                       (EV_EFI_EVENT_BASE + 7)
-#define EV_EFI_PLATFORM_FIRMWARE_BLOB       (EV_EFI_EVENT_BASE + 8)
-#define EV_EFI_HANDOFF_TABLES               (EV_EFI_EVENT_BASE + 9)
-#define EV_EFI_VARIABLE_AUTHORITY           (EV_EFI_EVENT_BASE + 0xE0)
+#define EV_EFI_EVENT_BASE                 ((TCG_EVENTTYPE) 0x80000000)
+#define EV_EFI_VARIABLE_DRIVER_CONFIG     (EV_EFI_EVENT_BASE + 1)
+#define EV_EFI_VARIABLE_BOOT              (EV_EFI_EVENT_BASE + 2)
+#define EV_EFI_BOOT_SERVICES_APPLICATION  (EV_EFI_EVENT_BASE + 3)
+#define EV_EFI_BOOT_SERVICES_DRIVER       (EV_EFI_EVENT_BASE + 4)
+#define EV_EFI_RUNTIME_SERVICES_DRIVER    (EV_EFI_EVENT_BASE + 5)
+#define EV_EFI_GPT_EVENT                  (EV_EFI_EVENT_BASE + 6)
+#define EV_EFI_ACTION                     (EV_EFI_EVENT_BASE + 7)
+#define EV_EFI_PLATFORM_FIRMWARE_BLOB     (EV_EFI_EVENT_BASE + 8)
+#define EV_EFI_HANDOFF_TABLES             (EV_EFI_EVENT_BASE + 9)
+#define EV_EFI_PLATFORM_FIRMWARE_BLOB2    (EV_EFI_EVENT_BASE + 0xA)
+#define EV_EFI_HANDOFF_TABLES2            (EV_EFI_EVENT_BASE + 0xB)
+#define EV_EFI_HCRTM_EVENT                (EV_EFI_EVENT_BASE + 0x10)
+#define EV_EFI_VARIABLE_AUTHORITY         (EV_EFI_EVENT_BASE + 0xE0)
+#define EV_EFI_SPDM_FIRMWARE_BLOB         (EV_EFI_EVENT_BASE + 0xE1)
+#define EV_EFI_SPDM_FIRMWARE_CONFIG       (EV_EFI_EVENT_BASE + 0xE2)
 
 #define EFI_CALLING_EFI_APPLICATION         \
   "Calling EFI Application from Boot Option"
-#define EFI_RETURNING_FROM_EFI_APPLICATOIN  \
+#define EFI_RETURNING_FROM_EFI_APPLICATION  \
   "Returning from EFI Application from Boot Option"
 #define EFI_EXIT_BOOT_SERVICES_INVOCATION   \
   "Exit Boot Services Invocation"
@@ -58,24 +67,26 @@
 #define EFI_EXIT_BOOT_SERVICES_SUCCEEDED    \
   "Exit Boot Services Returned with Success"
 
+#define EV_POSTCODE_INFO_POST_CODE  "POST CODE"
+#define POST_CODE_STR_LEN           (sizeof(EV_POSTCODE_INFO_POST_CODE) - 1)
 
-#define EV_POSTCODE_INFO_POST_CODE    "POST CODE"
-#define POST_CODE_STR_LEN             (sizeof(EV_POSTCODE_INFO_POST_CODE) - 1)
+#define EV_POSTCODE_INFO_SMM_CODE  "SMM CODE"
+#define SMM_CODE_STR_LEN           (sizeof(EV_POSTCODE_INFO_SMM_CODE) - 1)
 
-#define EV_POSTCODE_INFO_SMM_CODE     "SMM CODE"
-#define SMM_CODE_STR_LEN              (sizeof(EV_POSTCODE_INFO_SMM_CODE) - 1)
+#define EV_POSTCODE_INFO_ACPI_DATA  "ACPI DATA"
+#define ACPI_DATA_LEN               (sizeof(EV_POSTCODE_INFO_ACPI_DATA) - 1)
 
-#define EV_POSTCODE_INFO_ACPI_DATA    "ACPI DATA"
-#define ACPI_DATA_LEN                 (sizeof(EV_POSTCODE_INFO_ACPI_DATA) - 1)
+#define EV_POSTCODE_INFO_BIS_CODE  "BIS CODE"
+#define BIS_CODE_LEN               (sizeof(EV_POSTCODE_INFO_BIS_CODE) - 1)
 
-#define EV_POSTCODE_INFO_BIS_CODE     "BIS CODE"
-#define BIS_CODE_LEN                  (sizeof(EV_POSTCODE_INFO_BIS_CODE) - 1)
+#define EV_POSTCODE_INFO_UEFI_PI  "UEFI PI"
+#define UEFI_PI_LEN               (sizeof(EV_POSTCODE_INFO_UEFI_PI) - 1)
 
-#define EV_POSTCODE_INFO_UEFI_PI      "UEFI PI"
-#define UEFI_PI_LEN                   (sizeof(EV_POSTCODE_INFO_UEFI_PI) - 1)
+#define EV_POSTCODE_INFO_OPROM  "Embedded Option ROM"
+#define OPROM_LEN               (sizeof(EV_POSTCODE_INFO_OPROM) - 1)
 
-#define EV_POSTCODE_INFO_OPROM        "Embedded Option ROM"
-#define OPROM_LEN                     (sizeof(EV_POSTCODE_INFO_OPROM) - 1)
+#define EV_POSTCODE_INFO_EMBEDDED_UEFI_DRIVER  "Embedded UEFI Driver"
+#define EMBEDDED_UEFI_DRIVER_LEN               (sizeof(EV_POSTCODE_INFO_EMBEDDED_UEFI_DRIVER) - 1)
 
 #define FIRMWARE_DEBUGGER_EVENT_STRING      "UEFI Debug Mode"
 #define FIRMWARE_DEBUGGER_EVENT_STRING_LEN  (sizeof(FIRMWARE_DEBUGGER_EVENT_STRING) - 1)
@@ -85,30 +96,30 @@
 //
 #pragma pack (1)
 
-typedef UINT32                     TCG_EVENTTYPE;
-typedef TPM_PCRINDEX               TCG_PCRINDEX;
-typedef TPM_DIGEST                 TCG_DIGEST;
+typedef UINT32        TCG_EVENTTYPE;
+typedef TPM_PCRINDEX  TCG_PCRINDEX;
+typedef TPM_DIGEST    TCG_DIGEST;
 ///
 /// Event Log Entry Structure Definition
 ///
 typedef struct tdTCG_PCR_EVENT {
-  TCG_PCRINDEX                      PCRIndex;  ///< PCRIndex event extended to
-  TCG_EVENTTYPE                     EventType; ///< TCG EFI event type
-  TCG_DIGEST                        Digest;    ///< Value extended into PCRIndex
-  UINT32                            EventSize; ///< Size of the event data
-  UINT8                             Event[1];  ///< The event data
+  TCG_PCRINDEX     PCRIndex;                   ///< PCRIndex event extended to
+  TCG_EVENTTYPE    EventType;                  ///< TCG EFI event type
+  TCG_DIGEST       Digest;                     ///< Value extended into PCRIndex
+  UINT32           EventSize;                  ///< Size of the event data
+  UINT8            Event[1];                   ///< The event data
 } TCG_PCR_EVENT;
 
-#define TSS_EVENT_DATA_MAX_SIZE   256
+#define TSS_EVENT_DATA_MAX_SIZE  256
 
 ///
 /// TCG_PCR_EVENT_HDR
 ///
 typedef struct tdTCG_PCR_EVENT_HDR {
-  TCG_PCRINDEX                      PCRIndex;
-  TCG_EVENTTYPE                     EventType;
-  TCG_DIGEST                        Digest;
-  UINT32                            EventSize;
+  TCG_PCRINDEX     PCRIndex;
+  TCG_EVENTTYPE    EventType;
+  TCG_DIGEST       Digest;
+  UINT32           EventSize;
 } TCG_PCR_EVENT_HDR;
 
 ///
@@ -118,36 +129,98 @@
 /// because PEI is 32-bit while DXE is 64-bit on x64 platforms
 ///
 typedef struct tdEFI_PLATFORM_FIRMWARE_BLOB {
-  EFI_PHYSICAL_ADDRESS              BlobBase;
-  UINT64                            BlobLength;
+  EFI_PHYSICAL_ADDRESS    BlobBase;
+  UINT64                  BlobLength;
 } EFI_PLATFORM_FIRMWARE_BLOB;
 
 ///
+/// UEFI_PLATFORM_FIRMWARE_BLOB
+///
+/// This structure is used in EV_EFI_PLATFORM_FIRMWARE_BLOB
+/// event to facilitate the measurement of firmware volume.
+///
+typedef struct tdUEFI_PLATFORM_FIRMWARE_BLOB {
+  EFI_PHYSICAL_ADDRESS    BlobBase;
+  UINT64                  BlobLength;
+} UEFI_PLATFORM_FIRMWARE_BLOB;
+
+///
+/// UEFI_PLATFORM_FIRMWARE_BLOB2
+///
+/// This structure is used in EV_EFI_PLATFORM_FIRMWARE_BLOB2
+/// event to facilitate the measurement of firmware volume.
+///
+typedef struct tdUEFI_PLATFORM_FIRMWARE_BLOB2 {
+  UINT8    BlobDescriptionSize;
+  // UINT8                             BlobDescription[BlobDescriptionSize];
+  // EFI_PHYSICAL_ADDRESS              BlobBase;
+  // UINT64                            BlobLength;
+} UEFI_PLATFORM_FIRMWARE_BLOB2;
+
+///
 /// EFI_IMAGE_LOAD_EVENT
 ///
 /// This structure is used in EV_EFI_BOOT_SERVICES_APPLICATION,
 /// EV_EFI_BOOT_SERVICES_DRIVER and EV_EFI_RUNTIME_SERVICES_DRIVER
 ///
 typedef struct tdEFI_IMAGE_LOAD_EVENT {
-  EFI_PHYSICAL_ADDRESS              ImageLocationInMemory;
-  UINTN                             ImageLengthInMemory;
-  UINTN                             ImageLinkTimeAddress;
-  UINTN                             LengthOfDevicePath;
-  EFI_DEVICE_PATH_PROTOCOL          DevicePath[1];
+  EFI_PHYSICAL_ADDRESS        ImageLocationInMemory;
+  UINTN                       ImageLengthInMemory;
+  UINTN                       ImageLinkTimeAddress;
+  UINTN                       LengthOfDevicePath;
+  EFI_DEVICE_PATH_PROTOCOL    DevicePath[1];
 } EFI_IMAGE_LOAD_EVENT;
 
 ///
+/// UEFI_IMAGE_LOAD_EVENT
+///
+/// This structure is used in EV_EFI_BOOT_SERVICES_APPLICATION,
+/// EV_EFI_BOOT_SERVICES_DRIVER and EV_EFI_RUNTIME_SERVICES_DRIVER
+///
+typedef struct tdUEFI_IMAGE_LOAD_EVENT {
+  EFI_PHYSICAL_ADDRESS        ImageLocationInMemory;
+  UINT64                      ImageLengthInMemory;
+  UINT64                      ImageLinkTimeAddress;
+  UINT64                      LengthOfDevicePath;
+  EFI_DEVICE_PATH_PROTOCOL    DevicePath[1];
+} UEFI_IMAGE_LOAD_EVENT;
+
+///
 /// EFI_HANDOFF_TABLE_POINTERS
 ///
 /// This structure is used in EV_EFI_HANDOFF_TABLES event to facilitate
 /// the measurement of given configuration tables.
 ///
 typedef struct tdEFI_HANDOFF_TABLE_POINTERS {
-  UINTN                             NumberOfTables;
-  EFI_CONFIGURATION_TABLE           TableEntry[1];
+  UINTN                      NumberOfTables;
+  EFI_CONFIGURATION_TABLE    TableEntry[1];
 } EFI_HANDOFF_TABLE_POINTERS;
 
 ///
+/// UEFI_HANDOFF_TABLE_POINTERS
+///
+/// This structure is used in EV_EFI_HANDOFF_TABLES event to facilitate
+/// the measurement of given configuration tables.
+///
+typedef struct tdUEFI_HANDOFF_TABLE_POINTERS {
+  UINT64                     NumberOfTables;
+  EFI_CONFIGURATION_TABLE    TableEntry[1];
+} UEFI_HANDOFF_TABLE_POINTERS;
+
+///
+/// UEFI_HANDOFF_TABLE_POINTERS2
+///
+/// This structure is used in EV_EFI_HANDOFF_TABLES2 event to facilitate
+/// the measurement of given configuration tables.
+///
+typedef struct tdUEFI_HANDOFF_TABLE_POINTERS2 {
+  UINT8    TableDescriptionSize;
+  // UINT8                             TableDescription[TableDescriptionSize];
+  // UINT64                            NumberOfTables;
+  // EFI_CONFIGURATION_TABLE           TableEntry[1];
+} UEFI_HANDOFF_TABLE_POINTERS2;
+
+///
 /// EFI_VARIABLE_DATA
 ///
 /// This structure serves as the header for measuring variables. The name of the
@@ -156,11 +229,11 @@
 /// This is defined in TCG EFI Platform Spec for TPM1.1 or 1.2 V1.22
 ///
 typedef struct tdEFI_VARIABLE_DATA {
-  EFI_GUID                          VariableName;
-  UINTN                             UnicodeNameLength;
-  UINTN                             VariableDataLength;
-  CHAR16                            UnicodeName[1];
-  INT8                              VariableData[1];  ///< Driver or platform-specific data
+  EFI_GUID    VariableName;
+  UINTN       UnicodeNameLength;
+  UINTN       VariableDataLength;
+  CHAR16      UnicodeName[1];
+  INT8        VariableData[1];                        ///< Driver or platform-specific data
 } EFI_VARIABLE_DATA;
 
 ///
@@ -172,50 +245,110 @@
 /// This is defined in TCG PC Client Firmware Profile Spec 00.21
 ///
 typedef struct tdUEFI_VARIABLE_DATA {
-  EFI_GUID                          VariableName;
-  UINT64                            UnicodeNameLength;
-  UINT64                            VariableDataLength;
-  CHAR16                            UnicodeName[1];
-  INT8                              VariableData[1];  ///< Driver or platform-specific data
+  EFI_GUID    VariableName;
+  UINT64      UnicodeNameLength;
+  UINT64      VariableDataLength;
+  CHAR16      UnicodeName[1];
+  INT8        VariableData[1];                        ///< Driver or platform-specific data
 } UEFI_VARIABLE_DATA;
 
 //
 // For TrEE1.0 compatibility
 //
 typedef struct {
-  EFI_GUID                          VariableName;
-  UINT64                            UnicodeNameLength;   // The TCG Definition used UINTN
-  UINT64                            VariableDataLength;  // The TCG Definition used UINTN
-  CHAR16                            UnicodeName[1];
-  INT8                              VariableData[1];
+  EFI_GUID    VariableName;
+  UINT64      UnicodeNameLength;                         // The TCG Definition used UINTN
+  UINT64      VariableDataLength;                        // The TCG Definition used UINTN
+  CHAR16      UnicodeName[1];
+  INT8        VariableData[1];
 } EFI_VARIABLE_DATA_TREE;
 
 typedef struct tdEFI_GPT_DATA {
-  EFI_PARTITION_TABLE_HEADER  EfiPartitionHeader;
-  UINTN                       NumberOfPartitions;
-  EFI_PARTITION_ENTRY         Partitions[1];
+  EFI_PARTITION_TABLE_HEADER    EfiPartitionHeader;
+  UINTN                         NumberOfPartitions;
+  EFI_PARTITION_ENTRY           Partitions[1];
 } EFI_GPT_DATA;
 
+typedef struct tdUEFI_GPT_DATA {
+  EFI_PARTITION_TABLE_HEADER    EfiPartitionHeader;
+  UINT64                        NumberOfPartitions;
+  EFI_PARTITION_ENTRY           Partitions[1];
+} UEFI_GPT_DATA;
+
+#define TCG_DEVICE_SECURITY_EVENT_DATA_SIGNATURE  "SPDM Device Sec"
+#define TCG_DEVICE_SECURITY_EVENT_DATA_VERSION    1
+
+#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_TYPE_NULL  0
+#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_TYPE_PCI   1
+#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_TYPE_USB   2
+
+///
+/// TCG_DEVICE_SECURITY_EVENT_DATA_HEADER
+/// This is the header of TCG_DEVICE_SECURITY_EVENT_DATA, which is
+/// used in EV_EFI_SPDM_FIRMWARE_BLOB and EV_EFI_SPDM_FIRMWARE_CONFIG.
+///
+typedef struct {
+  UINT8     Signature[16];
+  UINT16    Version;
+  UINT16    Length;
+  UINT32    SpdmHashAlgo;
+  UINT32    DeviceType;
+  // SPDM_MEASUREMENT_BLOCK         SpdmMeasurementBlock;
+} TCG_DEVICE_SECURITY_EVENT_DATA_HEADER;
+
+#define TCG_DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT_VERSION  0
+
+///
+/// TCG_DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT
+/// This is the PCI context data of TCG_DEVICE_SECURITY_EVENT_DATA, which is
+/// used in EV_EFI_SPDM_FIRMWARE_BLOB and EV_EFI_SPDM_FIRMWARE_CONFIG.
+///
+typedef struct {
+  UINT16    Version;
+  UINT16    Length;
+  UINT16    VendorId;
+  UINT16    DeviceId;
+  UINT8     RevisionID;
+  UINT8     ClassCode[3];
+  UINT16    SubsystemVendorID;
+  UINT16    SubsystemID;
+} TCG_DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT;
+
+#define TCG_DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT_VERSION  0
+
+///
+/// TCG_DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT
+/// This is the USB context data of TCG_DEVICE_SECURITY_EVENT_DATA, which is
+/// used in EV_EFI_SPDM_FIRMWARE_BLOB and EV_EFI_SPDM_FIRMWARE_CONFIG.
+///
+typedef struct {
+  UINT16    Version;
+  UINT16    Length;
+  // UINT8   DeviceDescriptor[DescLen];
+  // UINT8   BodDescriptor[DescLen];
+  // UINT8   ConfigurationDescriptor[DescLen][NumOfConfiguration];
+} TCG_DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT;
+
 //
 // Crypto Agile Log Entry Format
 //
 typedef struct tdTCG_PCR_EVENT2 {
-  TCG_PCRINDEX        PCRIndex;
-  TCG_EVENTTYPE       EventType;
-  TPML_DIGEST_VALUES  Digest;
-  UINT32              EventSize;
-  UINT8               Event[1];
+  TCG_PCRINDEX          PCRIndex;
+  TCG_EVENTTYPE         EventType;
+  TPML_DIGEST_VALUES    Digest;
+  UINT32                EventSize;
+  UINT8                 Event[1];
 } TCG_PCR_EVENT2;
 
 //
 // TCG PCR Event2 Header
 // Follow TCG EFI Protocol Spec 5.2 Crypto Agile Log Entry Format
 //
-typedef struct tdTCG_PCR_EVENT2_HDR{
-  TCG_PCRINDEX        PCRIndex;
-  TCG_EVENTTYPE       EventType;
-  TPML_DIGEST_VALUES  Digests;
-  UINT32              EventSize;
+typedef struct tdTCG_PCR_EVENT2_HDR {
+  TCG_PCRINDEX          PCRIndex;
+  TCG_EVENTTYPE         EventType;
+  TPML_DIGEST_VALUES    Digests;
+  UINT32                EventSize;
 } TCG_PCR_EVENT2_HDR;
 
 //
@@ -225,111 +358,140 @@
   //
   // TCG defined hashing algorithm ID.
   //
-  UINT16              algorithmId;
+  UINT16    algorithmId;
   //
   // The size of the digest for the respective hashing algorithm.
   //
-  UINT16              digestSize;
+  UINT16    digestSize;
 } TCG_EfiSpecIdEventAlgorithmSize;
 
-#define TCG_EfiSpecIDEventStruct_SIGNATURE_02 "Spec ID Event02"
-#define TCG_EfiSpecIDEventStruct_SIGNATURE_03 "Spec ID Event03"
+#define TCG_EfiSpecIDEventStruct_SIGNATURE_02  "Spec ID Event02"
+#define TCG_EfiSpecIDEventStruct_SIGNATURE_03  "Spec ID Event03"
 
-#define TCG_EfiSpecIDEventStruct_SPEC_VERSION_MAJOR_TPM12   1
-#define TCG_EfiSpecIDEventStruct_SPEC_VERSION_MINOR_TPM12   2
-#define TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM12          2
+#define TCG_EfiSpecIDEventStruct_SPEC_VERSION_MAJOR_TPM12  1
+#define TCG_EfiSpecIDEventStruct_SPEC_VERSION_MINOR_TPM12  2
+#define TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM12         2
 
 #define TCG_EfiSpecIDEventStruct_SPEC_VERSION_MAJOR_TPM2   2
 #define TCG_EfiSpecIDEventStruct_SPEC_VERSION_MINOR_TPM2   0
 #define TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2          0
+#define TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105  105
 
 typedef struct {
-  UINT8               signature[16];
+  UINT8     signature[16];
   //
   // The value for the Platform Class.
   // The enumeration is defined in the TCG ACPI Specification Client Common Header.
   //
-  UINT32              platformClass;
+  UINT32    platformClass;
   //
   // The TCG EFI Platform Specification minor version number this BIOS supports.
   // Any BIOS supporting version (1.22) MUST set this value to 02h.
   // Any BIOS supporting version (2.0) SHALL set this value to 0x00.
   //
-  UINT8               specVersionMinor;
+  UINT8     specVersionMinor;
   //
   // The TCG EFI Platform Specification major version number this BIOS supports.
   // Any BIOS supporting version (1.22) MUST set this value to 01h.
   // Any BIOS supporting version (2.0) SHALL set this value to 0x02.
   //
-  UINT8               specVersionMajor;
+  UINT8     specVersionMajor;
   //
   // The TCG EFI Platform Specification errata for this specification this BIOS supports.
   // Any BIOS supporting version and errata (1.22) MUST set this value to 02h.
   // Any BIOS supporting version and errata (2.0) SHALL set this value to 0x00.
   //
-  UINT8               specErrata;
+  UINT8     specErrata;
   //
   // Specifies the size of the UINTN fields used in various data structures used in this specification.
   // 0x01 indicates UINT32 and 0x02 indicates UINT64.
   //
-  UINT8               uintnSize;
+  UINT8     uintnSize;
   //
   // This field is added in "Spec ID Event03".
   // The number of hashing algorithms used in this event log (except the first event).
   // All events in this event log use all hashing algorithms defined here.
   //
-//UINT32              numberOfAlgorithms;
+  // UINT32              numberOfAlgorithms;
   //
   // This field is added in "Spec ID Event03".
   // An array of size numberOfAlgorithms of value pairs.
   //
-//TCG_EfiSpecIdEventAlgorithmSize digestSize[numberOfAlgorithms];
+  // TCG_EfiSpecIdEventAlgorithmSize digestSize[numberOfAlgorithms];
   //
   // Size in bytes of the VendorInfo field.
   // Maximum value SHALL be FFh bytes.
   //
-//UINT8               vendorInfoSize;
+  // UINT8               vendorInfoSize;
   //
   // Provided for use by the BIOS implementer.
   // The value might be used, for example, to provide more detailed information about the specific BIOS such as BIOS revision numbers, etc.
   // The values within this field are not standardized and are implementer-specific.
   // Platform-specific or -unique information SHALL NOT be provided in this field.
   //
-//UINT8               vendorInfo[vendorInfoSize];
+  // UINT8               vendorInfo[vendorInfoSize];
 } TCG_EfiSpecIDEventStruct;
 
+typedef struct tdTCG_PCClientTaggedEvent {
+  UINT32    taggedEventID;
+  UINT32    taggedEventDataSize;
+  // UINT8               taggedEventData[taggedEventDataSize];
+} TCG_PCClientTaggedEvent;
 
+#define TCG_Sp800_155_PlatformId_Event_SIGNATURE   "SP800-155 Event"
+#define TCG_Sp800_155_PlatformId_Event2_SIGNATURE  "SP800-155 Event2"
 
-#define TCG_EfiStartupLocalityEvent_SIGNATURE      "StartupLocality"
+typedef struct tdTCG_Sp800_155_PlatformId_Event2 {
+  UINT8       Signature[16];
+  //
+  // Where Vendor ID is an integer defined
+  // at http://www.iana.org/assignments/enterprisenumbers
+  //
+  UINT32      VendorId;
+  //
+  // 16-byte identifier of a given platform's static configuration of code
+  //
+  EFI_GUID    ReferenceManifestGuid;
+  //
+  // Below structure is newly added in TCG_Sp800_155_PlatformId_Event2.
+  //
+  // UINT8               PlatformManufacturerStrSize;
+  // UINT8               PlatformManufacturerStr[PlatformManufacturerStrSize];
+  // UINT8               PlatformModelSize;
+  // UINT8               PlatformModel[PlatformModelSize];
+  // UINT8               PlatformVersionSize;
+  // UINT8               PlatformVersion[PlatformVersionSize];
+  // UINT8               PlatformModelSize;
+  // UINT8               PlatformModel[PlatformModelSize];
+  // UINT8               FirmwareManufacturerStrSize;
+  // UINT8               FirmwareManufacturerStr[FirmwareManufacturerStrSize];
+  // UINT32              FirmwareManufacturerId;
+  // UINT8               FirmwareVersion;
+  // UINT8               FirmwareVersion[FirmwareVersionSize]];
+} TCG_Sp800_155_PlatformId_Event2;
 
+#define TCG_EfiStartupLocalityEvent_SIGNATURE  "StartupLocality"
 
 //
-// PC Client PTP spec Table 8 Relationship between Locality and Locality Attribute
+// The Locality Indicator which sent the TPM2_Startup command
 //
-#define LOCALITY_0_INDICATOR        0x01
-#define LOCALITY_1_INDICATOR        0x02
-#define LOCALITY_2_INDICATOR        0x03
-#define LOCALITY_3_INDICATOR        0x04
-#define LOCALITY_4_INDICATOR        0x05
-
+#define LOCALITY_0_INDICATOR  0x00
+#define LOCALITY_3_INDICATOR  0x03
 
 //
 // Startup Locality Event
 //
-typedef struct tdTCG_EfiStartupLocalityEvent{
-  UINT8       Signature[16];
+typedef struct tdTCG_EfiStartupLocalityEvent {
+  UINT8    Signature[16];
   //
   // The Locality Indicator which sent the TPM2_Startup command
   //
-  UINT8       StartupLocality;
+  UINT8    StartupLocality;
 } TCG_EfiStartupLocalityEvent;
 
-
 //
 // Restore original structure alignment
 //
 #pragma pack ()
 
 #endif
-
-
diff --git a/src/include/ipxe/efi/IndustryStandard/Usb.h b/src/include/ipxe/efi/IndustryStandard/Usb.h
index 7eb1a8d..8c7fe83 100644
--- a/src/include/ipxe/efi/IndustryStandard/Usb.h
+++ b/src/include/ipxe/efi/IndustryStandard/Usb.h
@@ -2,20 +2,14 @@
   Support for USB 2.0 standard.
 
   Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __USB_H__
 #define __USB_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 //
 // Subset of Class and Subclass definitions from USB Specs
@@ -24,52 +18,52 @@
 //
 // Usb mass storage class code
 //
-#define USB_MASS_STORE_CLASS    0x08
+#define USB_MASS_STORE_CLASS  0x08
 
 //
 // Usb mass storage subclass code, specify the command set used.
 //
-#define USB_MASS_STORE_RBC      0x01 ///< Reduced Block Commands
-#define USB_MASS_STORE_8020I    0x02 ///< SFF-8020i, typically a CD/DVD device
-#define USB_MASS_STORE_QIC      0x03 ///< Typically a tape device
-#define USB_MASS_STORE_UFI      0x04 ///< Typically a floppy disk driver device
-#define USB_MASS_STORE_8070I    0x05 ///< SFF-8070i, typically a floppy disk driver device.
-#define USB_MASS_STORE_SCSI     0x06 ///< SCSI transparent command set
+#define USB_MASS_STORE_RBC    0x01   ///< Reduced Block Commands
+#define USB_MASS_STORE_8020I  0x02   ///< SFF-8020i, typically a CD/DVD device
+#define USB_MASS_STORE_QIC    0x03   ///< Typically a tape device
+#define USB_MASS_STORE_UFI    0x04   ///< Typically a floppy disk driver device
+#define USB_MASS_STORE_8070I  0x05   ///< SFF-8070i, typically a floppy disk driver device.
+#define USB_MASS_STORE_SCSI   0x06   ///< SCSI transparent command set
 
 //
 // Usb mass storage protocol code, specify the transport protocol
 //
-#define USB_MASS_STORE_CBI0     0x00 ///< CBI protocol with command completion interrupt
-#define USB_MASS_STORE_CBI1     0x01 ///< CBI protocol without command completion interrupt
-#define USB_MASS_STORE_BOT      0x50 ///< Bulk-Only Transport
+#define USB_MASS_STORE_CBI0  0x00    ///< CBI protocol with command completion interrupt
+#define USB_MASS_STORE_CBI1  0x01    ///< CBI protocol without command completion interrupt
+#define USB_MASS_STORE_BOT   0x50    ///< Bulk-Only Transport
 
 //
 // Standard device request and request type
 // USB 2.0 spec, Section 9.4
 //
-#define USB_DEV_GET_STATUS                  0x00
-#define USB_DEV_GET_STATUS_REQ_TYPE_D       0x80 // Receiver : Device
-#define USB_DEV_GET_STATUS_REQ_TYPE_I       0x81 // Receiver : Interface
-#define USB_DEV_GET_STATUS_REQ_TYPE_E       0x82 // Receiver : Endpoint
+#define USB_DEV_GET_STATUS             0x00
+#define USB_DEV_GET_STATUS_REQ_TYPE_D  0x80      // Receiver : Device
+#define USB_DEV_GET_STATUS_REQ_TYPE_I  0x81      // Receiver : Interface
+#define USB_DEV_GET_STATUS_REQ_TYPE_E  0x82      // Receiver : Endpoint
 
-#define USB_DEV_CLEAR_FEATURE               0x01
-#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_D    0x00 // Receiver : Device
-#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_I    0x01 // Receiver : Interface
-#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_E    0x02 // Receiver : Endpoint
+#define USB_DEV_CLEAR_FEATURE             0x01
+#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_D  0x00   // Receiver : Device
+#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_I  0x01   // Receiver : Interface
+#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_E  0x02   // Receiver : Endpoint
 
-#define USB_DEV_SET_FEATURE                 0x03
-#define USB_DEV_SET_FEATURE_REQ_TYPE_D      0x00 // Receiver : Device
-#define USB_DEV_SET_FEATURE_REQ_TYPE_I      0x01 // Receiver : Interface
-#define USB_DEV_SET_FEATURE_REQ_TYPE_E      0x02 // Receiver : Endpoint
+#define USB_DEV_SET_FEATURE             0x03
+#define USB_DEV_SET_FEATURE_REQ_TYPE_D  0x00     // Receiver : Device
+#define USB_DEV_SET_FEATURE_REQ_TYPE_I  0x01     // Receiver : Interface
+#define USB_DEV_SET_FEATURE_REQ_TYPE_E  0x02     // Receiver : Endpoint
 
-#define USB_DEV_SET_ADDRESS                 0x05
-#define USB_DEV_SET_ADDRESS_REQ_TYPE        0x00
+#define USB_DEV_SET_ADDRESS           0x05
+#define USB_DEV_SET_ADDRESS_REQ_TYPE  0x00
 
-#define USB_DEV_GET_DESCRIPTOR              0x06
-#define USB_DEV_GET_DESCRIPTOR_REQ_TYPE     0x80
+#define USB_DEV_GET_DESCRIPTOR           0x06
+#define USB_DEV_GET_DESCRIPTOR_REQ_TYPE  0x80
 
-#define USB_DEV_SET_DESCRIPTOR              0x07
-#define USB_DEV_SET_DESCRIPTOR_REQ_TYPE     0x00
+#define USB_DEV_SET_DESCRIPTOR           0x07
+#define USB_DEV_SET_DESCRIPTOR_REQ_TYPE  0x00
 
 #define USB_DEV_GET_CONFIGURATION           0x08
 #define USB_DEV_GET_CONFIGURATION_REQ_TYPE  0x80
@@ -77,15 +71,14 @@
 #define USB_DEV_SET_CONFIGURATION           0x09
 #define USB_DEV_SET_CONFIGURATION_REQ_TYPE  0x00
 
-#define USB_DEV_GET_INTERFACE               0x0A
-#define USB_DEV_GET_INTERFACE_REQ_TYPE      0x81
+#define USB_DEV_GET_INTERFACE           0x0A
+#define USB_DEV_GET_INTERFACE_REQ_TYPE  0x81
 
-#define USB_DEV_SET_INTERFACE               0x0B
-#define USB_DEV_SET_INTERFACE_REQ_TYPE      0x01
+#define USB_DEV_SET_INTERFACE           0x0B
+#define USB_DEV_SET_INTERFACE_REQ_TYPE  0x01
 
-#define USB_DEV_SYNCH_FRAME                 0x0C
-#define USB_DEV_SYNCH_FRAME_REQ_TYPE        0x82
-
+#define USB_DEV_SYNCH_FRAME           0x0C
+#define USB_DEV_SYNCH_FRAME_REQ_TYPE  0x82
 
 //
 // USB standard descriptors and reqeust
@@ -97,11 +90,11 @@
 /// USB 2.0 spec, Section 9.3
 ///
 typedef struct {
-  UINT8           RequestType;
-  UINT8           Request;
-  UINT16          Value;
-  UINT16          Index;
-  UINT16          Length;
+  UINT8     RequestType;
+  UINT8     Request;
+  UINT16    Value;
+  UINT16    Index;
+  UINT16    Length;
 } USB_DEVICE_REQUEST;
 
 ///
@@ -109,20 +102,20 @@
 /// USB 2.0 spec, Section 9.6.1
 ///
 typedef struct {
-  UINT8           Length;
-  UINT8           DescriptorType;
-  UINT16          BcdUSB;
-  UINT8           DeviceClass;
-  UINT8           DeviceSubClass;
-  UINT8           DeviceProtocol;
-  UINT8           MaxPacketSize0;
-  UINT16          IdVendor;
-  UINT16          IdProduct;
-  UINT16          BcdDevice;
-  UINT8           StrManufacturer;
-  UINT8           StrProduct;
-  UINT8           StrSerialNumber;
-  UINT8           NumConfigurations;
+  UINT8     Length;
+  UINT8     DescriptorType;
+  UINT16    BcdUSB;
+  UINT8     DeviceClass;
+  UINT8     DeviceSubClass;
+  UINT8     DeviceProtocol;
+  UINT8     MaxPacketSize0;
+  UINT16    IdVendor;
+  UINT16    IdProduct;
+  UINT16    BcdDevice;
+  UINT8     StrManufacturer;
+  UINT8     StrProduct;
+  UINT8     StrSerialNumber;
+  UINT8     NumConfigurations;
 } USB_DEVICE_DESCRIPTOR;
 
 ///
@@ -130,14 +123,14 @@
 /// USB 2.0 spec, Section 9.6.3
 ///
 typedef struct {
-  UINT8           Length;
-  UINT8           DescriptorType;
-  UINT16          TotalLength;
-  UINT8           NumInterfaces;
-  UINT8           ConfigurationValue;
-  UINT8           Configuration;
-  UINT8           Attributes;
-  UINT8           MaxPower;
+  UINT8     Length;
+  UINT8     DescriptorType;
+  UINT16    TotalLength;
+  UINT8     NumInterfaces;
+  UINT8     ConfigurationValue;
+  UINT8     Configuration;
+  UINT8     Attributes;
+  UINT8     MaxPower;
 } USB_CONFIG_DESCRIPTOR;
 
 ///
@@ -145,15 +138,15 @@
 /// USB 2.0 spec, Section 9.6.5
 ///
 typedef struct {
-  UINT8           Length;
-  UINT8           DescriptorType;
-  UINT8           InterfaceNumber;
-  UINT8           AlternateSetting;
-  UINT8           NumEndpoints;
-  UINT8           InterfaceClass;
-  UINT8           InterfaceSubClass;
-  UINT8           InterfaceProtocol;
-  UINT8           Interface;
+  UINT8    Length;
+  UINT8    DescriptorType;
+  UINT8    InterfaceNumber;
+  UINT8    AlternateSetting;
+  UINT8    NumEndpoints;
+  UINT8    InterfaceClass;
+  UINT8    InterfaceSubClass;
+  UINT8    InterfaceProtocol;
+  UINT8    Interface;
 } USB_INTERFACE_DESCRIPTOR;
 
 ///
@@ -161,12 +154,12 @@
 /// USB 2.0 spec, Section 9.6.6
 ///
 typedef struct {
-  UINT8           Length;
-  UINT8           DescriptorType;
-  UINT8           EndpointAddress;
-  UINT8           Attributes;
-  UINT16          MaxPacketSize;
-  UINT8           Interval;
+  UINT8     Length;
+  UINT8     DescriptorType;
+  UINT8     EndpointAddress;
+  UINT8     Attributes;
+  UINT16    MaxPacketSize;
+  UINT8     Interval;
 } USB_ENDPOINT_DESCRIPTOR;
 
 ///
@@ -174,45 +167,44 @@
 /// USB 2.0 spec, Section 9.6.7
 ///
 typedef struct {
-  UINT8           Length;
-  UINT8           DescriptorType;
-  CHAR16          String[1];
+  UINT8     Length;
+  UINT8     DescriptorType;
+  CHAR16    String[1];
 } EFI_USB_STRING_DESCRIPTOR;
 
 #pragma pack()
 
-
 typedef enum {
   //
   // USB request type
   //
-  USB_REQ_TYPE_STANDARD   = (0x00 << 5),
-  USB_REQ_TYPE_CLASS      = (0x01 << 5),
-  USB_REQ_TYPE_VENDOR     = (0x02 << 5),
+  USB_REQ_TYPE_STANDARD = (0x00 << 5),
+  USB_REQ_TYPE_CLASS    = (0x01 << 5),
+  USB_REQ_TYPE_VENDOR   = (0x02 << 5),
 
   //
   // Standard control transfer request type, or the value
   // to fill in EFI_USB_DEVICE_REQUEST.Request
   //
-  USB_REQ_GET_STATUS      = 0x00,
-  USB_REQ_CLEAR_FEATURE   = 0x01,
-  USB_REQ_SET_FEATURE     = 0x03,
-  USB_REQ_SET_ADDRESS     = 0x05,
-  USB_REQ_GET_DESCRIPTOR  = 0x06,
-  USB_REQ_SET_DESCRIPTOR  = 0x07,
-  USB_REQ_GET_CONFIG      = 0x08,
-  USB_REQ_SET_CONFIG      = 0x09,
-  USB_REQ_GET_INTERFACE   = 0x0A,
-  USB_REQ_SET_INTERFACE   = 0x0B,
-  USB_REQ_SYNCH_FRAME     = 0x0C,
+  USB_REQ_GET_STATUS     = 0x00,
+  USB_REQ_CLEAR_FEATURE  = 0x01,
+  USB_REQ_SET_FEATURE    = 0x03,
+  USB_REQ_SET_ADDRESS    = 0x05,
+  USB_REQ_GET_DESCRIPTOR = 0x06,
+  USB_REQ_SET_DESCRIPTOR = 0x07,
+  USB_REQ_GET_CONFIG     = 0x08,
+  USB_REQ_SET_CONFIG     = 0x09,
+  USB_REQ_GET_INTERFACE  = 0x0A,
+  USB_REQ_SET_INTERFACE  = 0x0B,
+  USB_REQ_SYNCH_FRAME    = 0x0C,
 
   //
   // Usb control transfer target
   //
-  USB_TARGET_DEVICE       = 0,
-  USB_TARGET_INTERFACE    = 0x01,
-  USB_TARGET_ENDPOINT     = 0x02,
-  USB_TARGET_OTHER        = 0x03,
+  USB_TARGET_DEVICE    = 0,
+  USB_TARGET_INTERFACE = 0x01,
+  USB_TARGET_ENDPOINT  = 0x02,
+  USB_TARGET_OTHER     = 0x03,
 
   //
   // USB Descriptor types
@@ -233,21 +225,20 @@
   //
   // USB endpoint types: 00: control, 01: isochronous, 10: bulk, 11: interrupt
   //
-  USB_ENDPOINT_CONTROL    = 0x00,
-  USB_ENDPOINT_ISO        = 0x01,
-  USB_ENDPOINT_BULK       = 0x02,
-  USB_ENDPOINT_INTERRUPT  = 0x03,
+  USB_ENDPOINT_CONTROL   = 0x00,
+  USB_ENDPOINT_ISO       = 0x01,
+  USB_ENDPOINT_BULK      = 0x02,
+  USB_ENDPOINT_INTERRUPT = 0x03,
 
-  USB_ENDPOINT_TYPE_MASK  = 0x03,
-  USB_ENDPOINT_DIR_IN     = 0x80,
+  USB_ENDPOINT_TYPE_MASK = 0x03,
+  USB_ENDPOINT_DIR_IN    = 0x80,
 
   //
-  //Use 200 ms to increase the error handling response time
+  // Use 200 ms to increase the error handling response time
   //
   EFI_USB_INTERRUPT_DELAY = 2000000
 } USB_TYPES_DEFINITION;
 
-
 //
 // HID constants definition, see Device Class Definition
 // for Human Interface Devices (HID) rev1.11
@@ -261,19 +252,19 @@
 //
 // HID specific requests.
 //
-#define USB_HID_CLASS_GET_REQ_TYPE       0xa1
-#define USB_HID_CLASS_SET_REQ_TYPE       0x21
+#define USB_HID_CLASS_GET_REQ_TYPE  0xa1
+#define USB_HID_CLASS_SET_REQ_TYPE  0x21
 
 //
 // HID report item format
 //
-#define HID_ITEM_FORMAT_SHORT 0
-#define HID_ITEM_FORMAT_LONG  1
+#define HID_ITEM_FORMAT_SHORT  0
+#define HID_ITEM_FORMAT_LONG   1
 
 //
 // Special tag indicating long items
 //
-#define HID_ITEM_TAG_LONG 15
+#define HID_ITEM_TAG_LONG  15
 
 //
 // HID report descriptor item type (prefix bit 2,3)
@@ -295,15 +286,15 @@
 //
 // HID report descriptor main item contents
 //
-#define HID_MAIN_ITEM_CONSTANT      0x001
-#define HID_MAIN_ITEM_VARIABLE      0x002
-#define HID_MAIN_ITEM_RELATIVE      0x004
-#define HID_MAIN_ITEM_WRAP          0x008
-#define HID_MAIN_ITEM_NONLINEAR     0x010
-#define HID_MAIN_ITEM_NO_PREFERRED  0x020
-#define HID_MAIN_ITEM_NULL_STATE    0x040
-#define HID_MAIN_ITEM_VOLATILE      0x080
-#define HID_MAIN_ITEM_BUFFERED_BYTE 0x100
+#define HID_MAIN_ITEM_CONSTANT       0x001
+#define HID_MAIN_ITEM_VARIABLE       0x002
+#define HID_MAIN_ITEM_RELATIVE       0x004
+#define HID_MAIN_ITEM_WRAP           0x008
+#define HID_MAIN_ITEM_NONLINEAR      0x010
+#define HID_MAIN_ITEM_NO_PREFERRED   0x020
+#define HID_MAIN_ITEM_NULL_STATE     0x040
+#define HID_MAIN_ITEM_VOLATILE       0x080
+#define HID_MAIN_ITEM_BUFFERED_BYTE  0x100
 
 //
 // HID report descriptor collection item types
@@ -331,16 +322,16 @@
 //
 // HID report descriptor local item tags
 //
-#define HID_LOCAL_ITEM_TAG_USAGE              0
-#define HID_LOCAL_ITEM_TAG_USAGE_MINIMUM      1
-#define HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM      2
-#define HID_LOCAL_ITEM_TAG_DESIGNATOR_INDEX   3
-#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MINIMUM 4
-#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MAXIMUM 5
-#define HID_LOCAL_ITEM_TAG_STRING_INDEX       7
-#define HID_LOCAL_ITEM_TAG_STRING_MINIMUM     8
-#define HID_LOCAL_ITEM_TAG_STRING_MAXIMUM     9
-#define HID_LOCAL_ITEM_TAG_DELIMITER          10
+#define HID_LOCAL_ITEM_TAG_USAGE               0
+#define HID_LOCAL_ITEM_TAG_USAGE_MINIMUM       1
+#define HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM       2
+#define HID_LOCAL_ITEM_TAG_DESIGNATOR_INDEX    3
+#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MINIMUM  4
+#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MAXIMUM  5
+#define HID_LOCAL_ITEM_TAG_STRING_INDEX        7
+#define HID_LOCAL_ITEM_TAG_STRING_MINIMUM      8
+#define HID_LOCAL_ITEM_TAG_STRING_MAXIMUM      9
+#define HID_LOCAL_ITEM_TAG_DELIMITER           10
 
 //
 // HID report types
@@ -365,8 +356,8 @@
 /// HID 1.1, section 6.2.1
 ///
 typedef struct hid_class_descriptor {
-  UINT8   DescriptorType;
-  UINT16  DescriptorLength;
+  UINT8     DescriptorType;
+  UINT16    DescriptorLength;
 } EFI_USB_HID_CLASS_DESCRIPTOR;
 
 ///
@@ -375,12 +366,12 @@
 /// HID 1.1, section 6.2.1
 ///
 typedef struct hid_descriptor {
-  UINT8                         Length;
-  UINT8                         DescriptorType;
-  UINT16                        BcdHID;
-  UINT8                         CountryCode;
-  UINT8                         NumDescriptors;
-  EFI_USB_HID_CLASS_DESCRIPTOR  HidClassDesc[1];
+  UINT8                           Length;
+  UINT8                           DescriptorType;
+  UINT16                          BcdHID;
+  UINT8                           CountryCode;
+  UINT8                           NumDescriptors;
+  EFI_USB_HID_CLASS_DESCRIPTOR    HidClassDesc[1];
 } EFI_USB_HID_DESCRIPTOR;
 
 #pragma pack()
diff --git a/src/include/ipxe/efi/Library/BaseLib.h b/src/include/ipxe/efi/Library/BaseLib.h
index a03ef30..416ca00 100644
--- a/src/include/ipxe/efi/Library/BaseLib.h
+++ b/src/include/ipxe/efi/Library/BaseLib.h
@@ -2,22 +2,20 @@
   Provides string functions, linked list functions, math functions, synchronization
   functions, file path functions, and CPU architecture-specific functions.
 
-Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
 Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution.  The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
+Copyright (c) Microsoft Corporation.<BR>
+Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
+Portions Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>
 
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __BASE_LIB__
 #define __BASE_LIB__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 //
 // Definitions for architecture-specific types
@@ -27,88 +25,40 @@
 /// The IA-32 architecture context buffer used by SetJump() and LongJump().
 ///
 typedef struct {
-  UINT32                            Ebx;
-  UINT32                            Esi;
-  UINT32                            Edi;
-  UINT32                            Ebp;
-  UINT32                            Esp;
-  UINT32                            Eip;
+  UINT32    Ebx;
+  UINT32    Esi;
+  UINT32    Edi;
+  UINT32    Ebp;
+  UINT32    Esp;
+  UINT32    Eip;
+  UINT32    Ssp;
 } BASE_LIBRARY_JUMP_BUFFER;
 
-#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 4
+#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT  4
 
 #endif // defined (MDE_CPU_IA32)
 
-#if defined (MDE_CPU_IPF)
-
-///
-/// The Itanium architecture context buffer used by SetJump() and LongJump().
-///
-typedef struct {
-  UINT64                            F2[2];
-  UINT64                            F3[2];
-  UINT64                            F4[2];
-  UINT64                            F5[2];
-  UINT64                            F16[2];
-  UINT64                            F17[2];
-  UINT64                            F18[2];
-  UINT64                            F19[2];
-  UINT64                            F20[2];
-  UINT64                            F21[2];
-  UINT64                            F22[2];
-  UINT64                            F23[2];
-  UINT64                            F24[2];
-  UINT64                            F25[2];
-  UINT64                            F26[2];
-  UINT64                            F27[2];
-  UINT64                            F28[2];
-  UINT64                            F29[2];
-  UINT64                            F30[2];
-  UINT64                            F31[2];
-  UINT64                            R4;
-  UINT64                            R5;
-  UINT64                            R6;
-  UINT64                            R7;
-  UINT64                            SP;
-  UINT64                            BR0;
-  UINT64                            BR1;
-  UINT64                            BR2;
-  UINT64                            BR3;
-  UINT64                            BR4;
-  UINT64                            BR5;
-  UINT64                            InitialUNAT;
-  UINT64                            AfterSpillUNAT;
-  UINT64                            PFS;
-  UINT64                            BSP;
-  UINT64                            Predicates;
-  UINT64                            LoopCount;
-  UINT64                            FPSR;
-} BASE_LIBRARY_JUMP_BUFFER;
-
-#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 0x10
-
-#endif // defined (MDE_CPU_IPF)
-
 #if defined (MDE_CPU_X64)
 ///
 /// The x64 architecture context buffer used by SetJump() and LongJump().
 ///
 typedef struct {
-  UINT64                            Rbx;
-  UINT64                            Rsp;
-  UINT64                            Rbp;
-  UINT64                            Rdi;
-  UINT64                            Rsi;
-  UINT64                            R12;
-  UINT64                            R13;
-  UINT64                            R14;
-  UINT64                            R15;
-  UINT64                            Rip;
-  UINT64                            MxCsr;
-  UINT8                             XmmBuffer[160]; ///< XMM6-XMM15.
+  UINT64    Rbx;
+  UINT64    Rsp;
+  UINT64    Rbp;
+  UINT64    Rdi;
+  UINT64    Rsi;
+  UINT64    R12;
+  UINT64    R13;
+  UINT64    R14;
+  UINT64    R15;
+  UINT64    Rip;
+  UINT64    MxCsr;
+  UINT8     XmmBuffer[160];                         ///< XMM6-XMM15.
+  UINT64    Ssp;
 } BASE_LIBRARY_JUMP_BUFFER;
 
-#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
+#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT  8
 
 #endif // defined (MDE_CPU_X64)
 
@@ -117,14 +67,14 @@
 /// The EBC context buffer used by SetJump() and LongJump().
 ///
 typedef struct {
-  UINT64                            R0;
-  UINT64                            R1;
-  UINT64                            R2;
-  UINT64                            R3;
-  UINT64                            IP;
+  UINT64    R0;
+  UINT64    R1;
+  UINT64    R2;
+  UINT64    R3;
+  UINT64    IP;
 } BASE_LIBRARY_JUMP_BUFFER;
 
-#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
+#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT  8
 
 #endif // defined (MDE_CPU_EBC)
 
@@ -144,9 +94,9 @@
   UINT32    R14;
 } BASE_LIBRARY_JUMP_BUFFER;
 
-#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 4
+#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT  4
 
-#endif  // defined (MDE_CPU_ARM)
+#endif // defined (MDE_CPU_ARM)
 
 #if defined (MDE_CPU_AARCH64)
 typedef struct {
@@ -176,16 +126,62 @@
   UINT64    D15;
 } BASE_LIBRARY_JUMP_BUFFER;
 
-#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
+#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT  8
 
-#endif  // defined (MDE_CPU_AARCH64)
+#endif // defined (MDE_CPU_AARCH64)
 
+#if defined (MDE_CPU_RISCV64)
+///
+/// The RISC-V architecture context buffer used by SetJump() and LongJump().
+///
+typedef struct {
+  UINT64    RA;
+  UINT64    S0;
+  UINT64    S1;
+  UINT64    S2;
+  UINT64    S3;
+  UINT64    S4;
+  UINT64    S5;
+  UINT64    S6;
+  UINT64    S7;
+  UINT64    S8;
+  UINT64    S9;
+  UINT64    S10;
+  UINT64    S11;
+  UINT64    SP;
+} BASE_LIBRARY_JUMP_BUFFER;
+
+#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT  8
+
+#endif // defined (MDE_CPU_RISCV64)
+
+#if defined (MDE_CPU_LOONGARCH64)
+///
+/// The LoongArch architecture context buffer used by SetJump() and LongJump()
+///
+typedef struct {
+  UINT64    S0;
+  UINT64    S1;
+  UINT64    S2;
+  UINT64    S3;
+  UINT64    S4;
+  UINT64    S5;
+  UINT64    S6;
+  UINT64    S7;
+  UINT64    S8;
+  UINT64    SP;
+  UINT64    FP;
+  UINT64    RA;
+} BASE_LIBRARY_JUMP_BUFFER;
+
+#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT  8
+
+#endif // defined (MDE_CPU_LOONGARCH64)
 
 //
 // String Services
 //
 
-
 /**
   Returns the length of a Null-terminated Unicode string.
 
@@ -205,8 +201,8 @@
 UINTN
 EFIAPI
 StrnLenS (
-  IN CONST CHAR16              *String,
-  IN UINTN                     MaxSize
+  IN CONST CHAR16  *String,
+  IN UINTN         MaxSize
   );
 
 /**
@@ -233,8 +229,8 @@
 UINTN
 EFIAPI
 StrnSizeS (
-  IN CONST CHAR16              *String,
-  IN UINTN                     MaxSize
+  IN CONST CHAR16  *String,
+  IN UINTN         MaxSize
   );
 
 /**
@@ -245,7 +241,6 @@
 
   If Destination is not aligned on a 16-bit boundary, then ASSERT().
   If Source is not aligned on a 16-bit boundary, then ASSERT().
-  If an error would be returned, then the function will also ASSERT().
 
   If an error is returned, then the Destination is unmodified.
 
@@ -267,9 +262,9 @@
 RETURN_STATUS
 EFIAPI
 StrCpyS (
-  OUT CHAR16       *Destination,
-  IN  UINTN        DestMax,
-  IN  CONST CHAR16 *Source
+  OUT CHAR16        *Destination,
+  IN  UINTN         DestMax,
+  IN  CONST CHAR16  *Source
   );
 
 /**
@@ -281,7 +276,6 @@
 
   If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().
   If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().
-  If an error would be returned, then the function will also ASSERT().
 
   If an error is returned, then the Destination is unmodified.
 
@@ -305,10 +299,10 @@
 RETURN_STATUS
 EFIAPI
 StrnCpyS (
-  OUT CHAR16       *Destination,
-  IN  UINTN        DestMax,
-  IN  CONST CHAR16 *Source,
-  IN  UINTN        Length
+  OUT CHAR16        *Destination,
+  IN  UINTN         DestMax,
+  IN  CONST CHAR16  *Source,
+  IN  UINTN         Length
   );
 
 /**
@@ -319,7 +313,6 @@
 
   If Destination is not aligned on a 16-bit boundary, then ASSERT().
   If Source is not aligned on a 16-bit boundary, then ASSERT().
-  If an error would be returned, then the function will also ASSERT().
 
   If an error is returned, then the Destination is unmodified.
 
@@ -344,9 +337,9 @@
 RETURN_STATUS
 EFIAPI
 StrCatS (
-  IN OUT CHAR16       *Destination,
-  IN     UINTN        DestMax,
-  IN     CONST CHAR16 *Source
+  IN OUT CHAR16        *Destination,
+  IN     UINTN         DestMax,
+  IN     CONST CHAR16  *Source
   );
 
 /**
@@ -359,7 +352,6 @@
 
   If Destination is not aligned on a 16-bit boundary, then ASSERT().
   If Source is not aligned on a 16-bit boundary, then ASSERT().
-  If an error would be returned, then the function will also ASSERT().
 
   If an error is returned, then the Destination is unmodified.
 
@@ -385,10 +377,10 @@
 RETURN_STATUS
 EFIAPI
 StrnCatS (
-  IN OUT CHAR16       *Destination,
-  IN     UINTN        DestMax,
-  IN     CONST CHAR16 *Source,
-  IN     UINTN        Length
+  IN OUT CHAR16        *Destination,
+  IN     UINTN         DestMax,
+  IN     CONST CHAR16  *Source,
+  IN     UINTN         Length
   );
 
 /**
@@ -406,12 +398,7 @@
   be ignored. Then, the function stops at the first character that is a not a
   valid decimal character or a Null-terminator, whichever one comes first.
 
-  If String is NULL, then ASSERT().
-  If Data is NULL, then ASSERT().
   If String is not aligned in a 16-bit boundary, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and String contains more than
-  PcdMaximumUnicodeStringLength Unicode characters, not including the
-  Null-terminator, then ASSERT().
 
   If String has no valid decimal digits in the above format, then 0 is stored
   at the location pointed to by Data.
@@ -442,9 +429,9 @@
 RETURN_STATUS
 EFIAPI
 StrDecimalToUintnS (
-  IN  CONST CHAR16             *String,
-  OUT       CHAR16             **EndPointer,  OPTIONAL
-  OUT       UINTN              *Data
+  IN  CONST CHAR16  *String,
+  OUT       CHAR16  **EndPointer   OPTIONAL,
+  OUT       UINTN   *Data
   );
 
 /**
@@ -462,12 +449,7 @@
   be ignored. Then, the function stops at the first character that is a not a
   valid decimal character or a Null-terminator, whichever one comes first.
 
-  If String is NULL, then ASSERT().
-  If Data is NULL, then ASSERT().
   If String is not aligned in a 16-bit boundary, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and String contains more than
-  PcdMaximumUnicodeStringLength Unicode characters, not including the
-  Null-terminator, then ASSERT().
 
   If String has no valid decimal digits in the above format, then 0 is stored
   at the location pointed to by Data.
@@ -498,9 +480,9 @@
 RETURN_STATUS
 EFIAPI
 StrDecimalToUint64S (
-  IN  CONST CHAR16             *String,
-  OUT       CHAR16             **EndPointer,  OPTIONAL
-  OUT       UINT64             *Data
+  IN  CONST CHAR16  *String,
+  OUT       CHAR16  **EndPointer   OPTIONAL,
+  OUT       UINT64  *Data
   );
 
 /**
@@ -523,12 +505,7 @@
   the first character that is a not a valid hexadecimal character or NULL,
   whichever one comes first.
 
-  If String is NULL, then ASSERT().
-  If Data is NULL, then ASSERT().
   If String is not aligned in a 16-bit boundary, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and String contains more than
-  PcdMaximumUnicodeStringLength Unicode characters, not including the
-  Null-terminator, then ASSERT().
 
   If String has no valid hexadecimal digits in the above format, then 0 is
   stored at the location pointed to by Data.
@@ -559,9 +536,9 @@
 RETURN_STATUS
 EFIAPI
 StrHexToUintnS (
-  IN  CONST CHAR16             *String,
-  OUT       CHAR16             **EndPointer,  OPTIONAL
-  OUT       UINTN              *Data
+  IN  CONST CHAR16  *String,
+  OUT       CHAR16  **EndPointer   OPTIONAL,
+  OUT       UINTN   *Data
   );
 
 /**
@@ -584,12 +561,7 @@
   the first character that is a not a valid hexadecimal character or NULL,
   whichever one comes first.
 
-  If String is NULL, then ASSERT().
-  If Data is NULL, then ASSERT().
   If String is not aligned in a 16-bit boundary, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and String contains more than
-  PcdMaximumUnicodeStringLength Unicode characters, not including the
-  Null-terminator, then ASSERT().
 
   If String has no valid hexadecimal digits in the above format, then 0 is
   stored at the location pointed to by Data.
@@ -620,9 +592,9 @@
 RETURN_STATUS
 EFIAPI
 StrHexToUint64S (
-  IN  CONST CHAR16             *String,
-  OUT       CHAR16             **EndPointer,  OPTIONAL
-  OUT       UINT64             *Data
+  IN  CONST CHAR16  *String,
+  OUT       CHAR16  **EndPointer   OPTIONAL,
+  OUT       UINT64  *Data
   );
 
 /**
@@ -642,8 +614,8 @@
 UINTN
 EFIAPI
 AsciiStrnLenS (
-  IN CONST CHAR8               *String,
-  IN UINTN                     MaxSize
+  IN CONST CHAR8  *String,
+  IN UINTN        MaxSize
   );
 
 /**
@@ -668,8 +640,8 @@
 UINTN
 EFIAPI
 AsciiStrnSizeS (
-  IN CONST CHAR8               *String,
-  IN UINTN                     MaxSize
+  IN CONST CHAR8  *String,
+  IN UINTN        MaxSize
   );
 
 /**
@@ -678,8 +650,6 @@
 
   This function is similar as strcpy_s defined in C11.
 
-  If an error would be returned, then the function will also ASSERT().
-
   If an error is returned, then the Destination is unmodified.
 
   @param  Destination              A pointer to a Null-terminated Ascii string.
@@ -712,8 +682,6 @@
 
   This function is similar as strncpy_s defined in C11.
 
-  If an error would be returned, then the function will also ASSERT().
-
   If an error is returned, then the Destination is unmodified.
 
   @param  Destination              A pointer to a Null-terminated Ascii string.
@@ -748,8 +716,6 @@
 
   This function is similar as strcat_s defined in C11.
 
-  If an error would be returned, then the function will also ASSERT().
-
   If an error is returned, then the Destination is unmodified.
 
   @param  Destination              A pointer to a Null-terminated Ascii string.
@@ -786,8 +752,6 @@
 
   This function is similar as strncat_s defined in C11.
 
-  If an error would be returned, then the function will also ASSERT().
-
   If an error is returned, then the Destination is unmodified.
 
   @param  Destination              A pointer to a Null-terminated Ascii string.
@@ -833,12 +797,6 @@
   be ignored. Then, the function stops at the first character that is a not a
   valid decimal character or a Null-terminator, whichever one comes first.
 
-  If String is NULL, then ASSERT().
-  If Data is NULL, then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero, and String contains more than
-  PcdMaximumAsciiStringLength Ascii characters, not including the
-  Null-terminator, then ASSERT().
-
   If String has no valid decimal digits in the above format, then 0 is stored
   at the location pointed to by Data.
   If the number represented by String exceeds the range defined by UINTN, then
@@ -868,9 +826,9 @@
 RETURN_STATUS
 EFIAPI
 AsciiStrDecimalToUintnS (
-  IN  CONST CHAR8              *String,
-  OUT       CHAR8              **EndPointer,  OPTIONAL
-  OUT       UINTN              *Data
+  IN  CONST CHAR8  *String,
+  OUT       CHAR8  **EndPointer   OPTIONAL,
+  OUT       UINTN  *Data
   );
 
 /**
@@ -888,12 +846,6 @@
   be ignored. Then, the function stops at the first character that is a not a
   valid decimal character or a Null-terminator, whichever one comes first.
 
-  If String is NULL, then ASSERT().
-  If Data is NULL, then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero, and String contains more than
-  PcdMaximumAsciiStringLength Ascii characters, not including the
-  Null-terminator, then ASSERT().
-
   If String has no valid decimal digits in the above format, then 0 is stored
   at the location pointed to by Data.
   If the number represented by String exceeds the range defined by UINT64, then
@@ -923,9 +875,9 @@
 RETURN_STATUS
 EFIAPI
 AsciiStrDecimalToUint64S (
-  IN  CONST CHAR8              *String,
-  OUT       CHAR8              **EndPointer,  OPTIONAL
-  OUT       UINT64             *Data
+  IN  CONST CHAR8   *String,
+  OUT       CHAR8   **EndPointer   OPTIONAL,
+  OUT       UINT64  *Data
   );
 
 /**
@@ -947,12 +899,6 @@
   character that is a not a valid hexadecimal character or Null-terminator,
   whichever on comes first.
 
-  If String is NULL, then ASSERT().
-  If Data is NULL, then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero, and String contains more than
-  PcdMaximumAsciiStringLength Ascii characters, not including the
-  Null-terminator, then ASSERT().
-
   If String has no valid hexadecimal digits in the above format, then 0 is
   stored at the location pointed to by Data.
   If the number represented by String exceeds the range defined by UINTN, then
@@ -982,9 +928,9 @@
 RETURN_STATUS
 EFIAPI
 AsciiStrHexToUintnS (
-  IN  CONST CHAR8              *String,
-  OUT       CHAR8              **EndPointer,  OPTIONAL
-  OUT       UINTN              *Data
+  IN  CONST CHAR8  *String,
+  OUT       CHAR8  **EndPointer   OPTIONAL,
+  OUT       UINTN  *Data
   );
 
 /**
@@ -1006,12 +952,6 @@
   character that is a not a valid hexadecimal character or Null-terminator,
   whichever on comes first.
 
-  If String is NULL, then ASSERT().
-  If Data is NULL, then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero, and String contains more than
-  PcdMaximumAsciiStringLength Ascii characters, not including the
-  Null-terminator, then ASSERT().
-
   If String has no valid hexadecimal digits in the above format, then 0 is
   stored at the location pointed to by Data.
   If the number represented by String exceeds the range defined by UINT64, then
@@ -1041,88 +981,11 @@
 RETURN_STATUS
 EFIAPI
 AsciiStrHexToUint64S (
-  IN  CONST CHAR8              *String,
-  OUT       CHAR8              **EndPointer,  OPTIONAL
-  OUT       UINT64             *Data
+  IN  CONST CHAR8   *String,
+  OUT       CHAR8   **EndPointer   OPTIONAL,
+  OUT       UINT64  *Data
   );
 
-
-#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
-
-/**
-  [ATTENTION] This function is deprecated for security reason.
-
-  Copies one Null-terminated Unicode string to another Null-terminated Unicode
-  string and returns the new Unicode string.
-
-  This function copies the contents of the Unicode string Source to the Unicode
-  string Destination, and returns Destination. If Source and Destination
-  overlap, then the results are undefined.
-
-  If Destination is NULL, then ASSERT().
-  If Destination is not aligned on a 16-bit boundary, then ASSERT().
-  If Source is NULL, then ASSERT().
-  If Source is not aligned on a 16-bit boundary, then ASSERT().
-  If Source and Destination overlap, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
-  PcdMaximumUnicodeStringLength Unicode characters not including the
-  Null-terminator, then ASSERT().
-
-  @param  Destination The pointer to a Null-terminated Unicode string.
-  @param  Source      The pointer to a Null-terminated Unicode string.
-
-  @return Destination.
-
-**/
-CHAR16 *
-EFIAPI
-StrCpy (
-  OUT     CHAR16                    *Destination,
-  IN      CONST CHAR16              *Source
-  );
-
-
-/**
-  [ATTENTION] This function is deprecated for security reason.
-
-  Copies up to a specified length from one Null-terminated Unicode string to
-  another Null-terminated Unicode string and returns the new Unicode string.
-
-  This function copies the contents of the Unicode string Source to the Unicode
-  string Destination, and returns Destination. At most, Length Unicode
-  characters are copied from Source to Destination. If Length is 0, then
-  Destination is returned unmodified. If Length is greater that the number of
-  Unicode characters in Source, then Destination is padded with Null Unicode
-  characters. If Source and Destination overlap, then the results are
-  undefined.
-
-  If Length > 0 and Destination is NULL, then ASSERT().
-  If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().
-  If Length > 0 and Source is NULL, then ASSERT().
-  If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().
-  If Source and Destination overlap, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and Length is greater than
-  PcdMaximumUnicodeStringLength, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
-  PcdMaximumUnicodeStringLength Unicode characters, not including the Null-terminator,
-  then ASSERT().
-
-  @param  Destination The pointer to a Null-terminated Unicode string.
-  @param  Source      The pointer to a Null-terminated Unicode string.
-  @param  Length      The maximum number of Unicode characters to copy.
-
-  @return Destination.
-
-**/
-CHAR16 *
-EFIAPI
-StrnCpy (
-  OUT     CHAR16                    *Destination,
-  IN      CONST CHAR16              *Source,
-  IN      UINTN                     Length
-  );
-#endif
-
 /**
   Returns the length of a Null-terminated Unicode string.
 
@@ -1143,10 +1006,9 @@
 UINTN
 EFIAPI
 StrLen (
-  IN      CONST CHAR16              *String
+  IN      CONST CHAR16  *String
   );
 
-
 /**
   Returns the size of a Null-terminated Unicode string in bytes, including the
   Null terminator.
@@ -1168,10 +1030,9 @@
 UINTN
 EFIAPI
 StrSize (
-  IN      CONST CHAR16              *String
+  IN      CONST CHAR16  *String
   );
 
-
 /**
   Compares two Null-terminated Unicode strings, and returns the difference
   between the first mismatched Unicode characters.
@@ -1203,11 +1064,10 @@
 INTN
 EFIAPI
 StrCmp (
-  IN      CONST CHAR16              *FirstString,
-  IN      CONST CHAR16              *SecondString
+  IN      CONST CHAR16  *FirstString,
+  IN      CONST CHAR16  *SecondString
   );
 
-
 /**
   Compares up to a specified length the contents of two Null-terminated Unicode strings,
   and returns the difference between the first mismatched Unicode characters.
@@ -1243,105 +1103,11 @@
 INTN
 EFIAPI
 StrnCmp (
-  IN      CONST CHAR16              *FirstString,
-  IN      CONST CHAR16              *SecondString,
-  IN      UINTN                     Length
+  IN      CONST CHAR16  *FirstString,
+  IN      CONST CHAR16  *SecondString,
+  IN      UINTN         Length
   );
 
-
-#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
-
-/**
-  [ATTENTION] This function is deprecated for security reason.
-
-  Concatenates one Null-terminated Unicode string to another Null-terminated
-  Unicode string, and returns the concatenated Unicode string.
-
-  This function concatenates two Null-terminated Unicode strings. The contents
-  of Null-terminated Unicode string Source are concatenated to the end of
-  Null-terminated Unicode string Destination. The Null-terminated concatenated
-  Unicode String is returned. If Source and Destination overlap, then the
-  results are undefined.
-
-  If Destination is NULL, then ASSERT().
-  If Destination is not aligned on a 16-bit boundary, then ASSERT().
-  If Source is NULL, then ASSERT().
-  If Source is not aligned on a 16-bit boundary, then ASSERT().
-  If Source and Destination overlap, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and Destination contains more
-  than PcdMaximumUnicodeStringLength Unicode characters, not including the
-  Null-terminator, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
-  PcdMaximumUnicodeStringLength Unicode characters, not including the
-  Null-terminator, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and concatenating Destination
-  and Source results in a Unicode string with more than
-  PcdMaximumUnicodeStringLength Unicode characters, not including the
-  Null-terminator, then ASSERT().
-
-  @param  Destination The pointer to a Null-terminated Unicode string.
-  @param  Source      The pointer to a Null-terminated Unicode string.
-
-  @return Destination.
-
-**/
-CHAR16 *
-EFIAPI
-StrCat (
-  IN OUT  CHAR16                    *Destination,
-  IN      CONST CHAR16              *Source
-  );
-
-
-/**
-  [ATTENTION] This function is deprecated for security reason.
-
-  Concatenates up to a specified length one Null-terminated Unicode to the end
-  of another Null-terminated Unicode string, and returns the concatenated
-  Unicode string.
-
-  This function concatenates two Null-terminated Unicode strings. The contents
-  of Null-terminated Unicode string Source are concatenated to the end of
-  Null-terminated Unicode string Destination, and Destination is returned. At
-  most, Length Unicode characters are concatenated from Source to the end of
-  Destination, and Destination is always Null-terminated. If Length is 0, then
-  Destination is returned unmodified. If Source and Destination overlap, then
-  the results are undefined.
-
-  If Destination is NULL, then ASSERT().
-  If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().
-  If Length > 0 and Source is NULL, then ASSERT().
-  If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().
-  If Source and Destination overlap, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and Length is greater than
-  PcdMaximumUnicodeStringLength, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and Destination contains more
-  than PcdMaximumUnicodeStringLength Unicode characters, not including the
-  Null-terminator, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
-  PcdMaximumUnicodeStringLength Unicode characters, not including the
-  Null-terminator, then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and concatenating Destination
-  and Source results in a Unicode string with more than PcdMaximumUnicodeStringLength
-  Unicode characters, not including the Null-terminator, then ASSERT().
-
-  @param  Destination The pointer to a Null-terminated Unicode string.
-  @param  Source      The pointer to a Null-terminated Unicode string.
-  @param  Length      The maximum number of Unicode characters to concatenate from
-                      Source.
-
-  @return Destination.
-
-**/
-CHAR16 *
-EFIAPI
-StrnCat (
-  IN OUT  CHAR16                    *Destination,
-  IN      CONST CHAR16              *Source,
-  IN      UINTN                     Length
-  );
-#endif
-
 /**
   Returns the first occurrence of a Null-terminated Unicode sub-string
   in a Null-terminated Unicode string.
@@ -1370,8 +1136,8 @@
 CHAR16 *
 EFIAPI
 StrStr (
-  IN      CONST CHAR16              *String,
-  IN      CONST CHAR16              *SearchString
+  IN      CONST CHAR16  *String,
+  IN      CONST CHAR16  *SearchString
   );
 
 /**
@@ -1411,7 +1177,7 @@
 UINTN
 EFIAPI
 StrDecimalToUintn (
-  IN      CONST CHAR16              *String
+  IN      CONST CHAR16  *String
   );
 
 /**
@@ -1451,10 +1217,9 @@
 UINT64
 EFIAPI
 StrDecimalToUint64 (
-  IN      CONST CHAR16              *String
+  IN      CONST CHAR16  *String
   );
 
-
 /**
   Convert a Null-terminated Unicode hexadecimal string to a value of type UINTN.
 
@@ -1493,10 +1258,9 @@
 UINTN
 EFIAPI
 StrHexToUintn (
-  IN      CONST CHAR16              *String
+  IN      CONST CHAR16  *String
   );
 
-
 /**
   Convert a Null-terminated Unicode hexadecimal string to a value of type UINT64.
 
@@ -1535,7 +1299,7 @@
 UINT64
 EFIAPI
 StrHexToUint64 (
-  IN      CONST CHAR16             *String
+  IN      CONST CHAR16  *String
   );
 
 /**
@@ -1562,16 +1326,8 @@
   "::" can be used to compress one or more groups of X when X contains only 0.
   The "::" can only appear once in the String.
 
-  If String is NULL, then ASSERT().
-
-  If Address is NULL, then ASSERT().
-
   If String is not aligned in a 16-bit boundary, then ASSERT().
 
-  If PcdMaximumUnicodeStringLength is not zero, and String contains more than
-  PcdMaximumUnicodeStringLength Unicode characters, not including the
-  Null-terminator, then ASSERT().
-
   If EndPointer is not NULL and Address is translated from String, a pointer
   to the character that stopped the scan is stored at the location pointed to
   by EndPointer.
@@ -1599,10 +1355,10 @@
 RETURN_STATUS
 EFIAPI
 StrToIpv6Address (
-  IN  CONST CHAR16       *String,
-  OUT CHAR16             **EndPointer, OPTIONAL
-  OUT IPv6_ADDRESS       *Address,
-  OUT UINT8              *PrefixLength OPTIONAL
+  IN  CONST CHAR16  *String,
+  OUT CHAR16        **EndPointer  OPTIONAL,
+  OUT IPv6_ADDRESS  *Address,
+  OUT UINT8         *PrefixLength OPTIONAL
   );
 
 /**
@@ -1623,16 +1379,8 @@
   When /P is in the String, the function stops at the first character that is not
   a valid decimal digit character after P is converted.
 
-  If String is NULL, then ASSERT().
-
-  If Address is NULL, then ASSERT().
-
   If String is not aligned in a 16-bit boundary, then ASSERT().
 
-  If PcdMaximumUnicodeStringLength is not zero, and String contains more than
-  PcdMaximumUnicodeStringLength Unicode characters, not including the
-  Null-terminator, then ASSERT().
-
   If EndPointer is not NULL and Address is translated from String, a pointer
   to the character that stopped the scan is stored at the location pointed to
   by EndPointer.
@@ -1657,10 +1405,10 @@
 RETURN_STATUS
 EFIAPI
 StrToIpv4Address (
-  IN  CONST CHAR16       *String,
-  OUT CHAR16             **EndPointer, OPTIONAL
-  OUT IPv4_ADDRESS       *Address,
-  OUT UINT8              *PrefixLength OPTIONAL
+  IN  CONST CHAR16  *String,
+  OUT CHAR16        **EndPointer  OPTIONAL,
+  OUT IPv4_ADDRESS  *Address,
+  OUT UINT8         *PrefixLength OPTIONAL
   );
 
 #define GUID_STRING_LENGTH  36
@@ -1696,8 +1444,6 @@
                   oo          Data4[48:55]
                   pp          Data4[56:63]
 
-  If String is NULL, then ASSERT().
-  If Guid is NULL, then ASSERT().
   If String is not aligned in a 16-bit boundary, then ASSERT().
 
   @param  String                   Pointer to a Null-terminated Unicode string.
@@ -1712,8 +1458,8 @@
 RETURN_STATUS
 EFIAPI
 StrToGuid (
-  IN  CONST CHAR16       *String,
-  OUT GUID               *Guid
+  IN  CONST CHAR16  *String,
+  OUT GUID          *Guid
   );
 
 /**
@@ -1732,17 +1478,6 @@
 
   If String is not aligned in a 16-bit boundary, then ASSERT().
 
-  If String is NULL, then ASSERT().
-
-  If Buffer is NULL, then ASSERT().
-
-  If Length is not multiple of 2, then ASSERT().
-
-  If PcdMaximumUnicodeStringLength is not zero and Length is greater than
-  PcdMaximumUnicodeStringLength, then ASSERT().
-
-  If MaxBufferSize is less than (Length / 2), then ASSERT().
-
   @param  String                   Pointer to a Null-terminated Unicode string.
   @param  Length                   The number of Unicode characters to decode.
   @param  Buffer                   Pointer to the converted bytes array.
@@ -1763,58 +1498,12 @@
 RETURN_STATUS
 EFIAPI
 StrHexToBytes (
-  IN  CONST CHAR16       *String,
-  IN  UINTN              Length,
-  OUT UINT8              *Buffer,
-  IN  UINTN              MaxBufferSize
+  IN  CONST CHAR16  *String,
+  IN  UINTN         Length,
+  OUT UINT8         *Buffer,
+  IN  UINTN         MaxBufferSize
   );
 
-#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
-
-/**
-  [ATTENTION] This function is deprecated for security reason.
-
-  Convert a Null-terminated Unicode string to a Null-terminated
-  ASCII string and returns the ASCII string.
-
-  This function converts the content of the Unicode string Source
-  to the ASCII string Destination by copying the lower 8 bits of
-  each Unicode character. It returns Destination.
-
-  The caller is responsible to make sure Destination points to a buffer with size
-  equal or greater than ((StrLen (Source) + 1) * sizeof (CHAR8)) in bytes.
-
-  If any Unicode characters in Source contain non-zero value in
-  the upper 8 bits, then ASSERT().
-
-  If Destination is NULL, then ASSERT().
-  If Source is NULL, then ASSERT().
-  If Source is not aligned on a 16-bit boundary, then ASSERT().
-  If Source and Destination overlap, then ASSERT().
-
-  If PcdMaximumUnicodeStringLength is not zero, and Source contains
-  more than PcdMaximumUnicodeStringLength Unicode characters not including
-  the Null-terminator, then ASSERT().
-
-  If PcdMaximumAsciiStringLength is not zero, and Source contains more
-  than PcdMaximumAsciiStringLength Unicode characters not including the
-  Null-terminator, then ASSERT().
-
-  @param  Source        The pointer to a Null-terminated Unicode string.
-  @param  Destination   The pointer to a Null-terminated ASCII string.
-
-  @return Destination.
-
-**/
-CHAR8 *
-EFIAPI
-UnicodeStrToAsciiStr (
-  IN      CONST CHAR16              *Source,
-  OUT     CHAR8                     *Destination
-  );
-
-#endif
-
 /**
   Convert a Null-terminated Unicode string to a Null-terminated
   ASCII string.
@@ -1833,7 +1522,6 @@
   the upper 8 bits, then ASSERT().
 
   If Source is not aligned on a 16-bit boundary, then ASSERT().
-  If an error would be returned, then the function will also ASSERT().
 
   If an error is returned, then the Destination is unmodified.
 
@@ -1859,9 +1547,9 @@
 RETURN_STATUS
 EFIAPI
 UnicodeStrToAsciiStrS (
-  IN      CONST CHAR16              *Source,
-  OUT     CHAR8                     *Destination,
-  IN      UINTN                     DestMax
+  IN      CONST CHAR16  *Source,
+  OUT     CHAR8         *Destination,
+  IN      UINTN         DestMax
   );
 
 /**
@@ -1880,7 +1568,6 @@
   If any Unicode characters in Source contain non-zero value in the upper 8
   bits, then ASSERT().
   If Source is not aligned on a 16-bit boundary, then ASSERT().
-  If an error would be returned, then the function will also ASSERT().
 
   If an error is returned, then the Destination is unmodified.
 
@@ -1911,84 +1598,13 @@
 RETURN_STATUS
 EFIAPI
 UnicodeStrnToAsciiStrS (
-  IN      CONST CHAR16              *Source,
-  IN      UINTN                     Length,
-  OUT     CHAR8                     *Destination,
-  IN      UINTN                     DestMax,
-  OUT     UINTN                     *DestinationLength
+  IN      CONST CHAR16  *Source,
+  IN      UINTN         Length,
+  OUT     CHAR8         *Destination,
+  IN      UINTN         DestMax,
+  OUT     UINTN         *DestinationLength
   );
 
-#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
-
-/**
-  [ATTENTION] This function is deprecated for security reason.
-
-  Copies one Null-terminated ASCII string to another Null-terminated ASCII
-  string and returns the new ASCII string.
-
-  This function copies the contents of the ASCII string Source to the ASCII
-  string Destination, and returns Destination. If Source and Destination
-  overlap, then the results are undefined.
-
-  If Destination is NULL, then ASSERT().
-  If Source is NULL, then ASSERT().
-  If Source and Destination overlap, then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero and Source contains more than
-  PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
-  then ASSERT().
-
-  @param  Destination The pointer to a Null-terminated ASCII string.
-  @param  Source      The pointer to a Null-terminated ASCII string.
-
-  @return Destination
-
-**/
-CHAR8 *
-EFIAPI
-AsciiStrCpy (
-  OUT     CHAR8                     *Destination,
-  IN      CONST CHAR8               *Source
-  );
-
-
-/**
-  [ATTENTION] This function is deprecated for security reason.
-
-  Copies up to a specified length one Null-terminated ASCII string to another
-  Null-terminated ASCII string and returns the new ASCII string.
-
-  This function copies the contents of the ASCII string Source to the ASCII
-  string Destination, and returns Destination. At most, Length ASCII characters
-  are copied from Source to Destination. If Length is 0, then Destination is
-  returned unmodified. If Length is greater that the number of ASCII characters
-  in Source, then Destination is padded with Null ASCII characters. If Source
-  and Destination overlap, then the results are undefined.
-
-  If Destination is NULL, then ASSERT().
-  If Source is NULL, then ASSERT().
-  If Source and Destination overlap, then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero, and Length is greater than
-  PcdMaximumAsciiStringLength, then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero, and Source contains more than
-  PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
-  then ASSERT().
-
-  @param  Destination The pointer to a Null-terminated ASCII string.
-  @param  Source      The pointer to a Null-terminated ASCII string.
-  @param  Length      The maximum number of ASCII characters to copy.
-
-  @return Destination
-
-**/
-CHAR8 *
-EFIAPI
-AsciiStrnCpy (
-  OUT     CHAR8                     *Destination,
-  IN      CONST CHAR8               *Source,
-  IN      UINTN                     Length
-  );
-#endif
-
 /**
   Returns the length of a Null-terminated ASCII string.
 
@@ -2009,10 +1625,9 @@
 UINTN
 EFIAPI
 AsciiStrLen (
-  IN      CONST CHAR8               *String
+  IN      CONST CHAR8  *String
   );
 
-
 /**
   Returns the size of a Null-terminated ASCII string in bytes, including the
   Null terminator.
@@ -2033,10 +1648,9 @@
 UINTN
 EFIAPI
 AsciiStrSize (
-  IN      CONST CHAR8               *String
+  IN      CONST CHAR8  *String
   );
 
-
 /**
   Compares two Null-terminated ASCII strings, and returns the difference
   between the first mismatched ASCII characters.
@@ -2066,11 +1680,10 @@
 INTN
 EFIAPI
 AsciiStrCmp (
-  IN      CONST CHAR8               *FirstString,
-  IN      CONST CHAR8               *SecondString
+  IN      CONST CHAR8  *FirstString,
+  IN      CONST CHAR8  *SecondString
   );
 
-
 /**
   Performs a case insensitive comparison of two Null-terminated ASCII strings,
   and returns the difference between the first mismatched ASCII characters.
@@ -2103,11 +1716,10 @@
 INTN
 EFIAPI
 AsciiStriCmp (
-  IN      CONST CHAR8               *FirstString,
-  IN      CONST CHAR8               *SecondString
+  IN      CONST CHAR8  *FirstString,
+  IN      CONST CHAR8  *SecondString
   );
 
-
 /**
   Compares two Null-terminated ASCII strings with maximum lengths, and returns
   the difference between the first mismatched ASCII characters.
@@ -2141,98 +1753,11 @@
 INTN
 EFIAPI
 AsciiStrnCmp (
-  IN      CONST CHAR8               *FirstString,
-  IN      CONST CHAR8               *SecondString,
-  IN      UINTN                     Length
+  IN      CONST CHAR8  *FirstString,
+  IN      CONST CHAR8  *SecondString,
+  IN      UINTN        Length
   );
 
-
-#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
-
-/**
-  [ATTENTION] This function is deprecated for security reason.
-
-  Concatenates one Null-terminated ASCII string to another Null-terminated
-  ASCII string, and returns the concatenated ASCII string.
-
-  This function concatenates two Null-terminated ASCII strings. The contents of
-  Null-terminated ASCII string Source are concatenated to the end of Null-
-  terminated ASCII string Destination. The Null-terminated concatenated ASCII
-  String is returned.
-
-  If Destination is NULL, then ASSERT().
-  If Source is NULL, then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero and Destination contains more than
-  PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
-  then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero and Source contains more than
-  PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
-  then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero and concatenating Destination and
-  Source results in a ASCII string with more than PcdMaximumAsciiStringLength
-  ASCII characters, then ASSERT().
-
-  @param  Destination The pointer to a Null-terminated ASCII string.
-  @param  Source      The pointer to a Null-terminated ASCII string.
-
-  @return Destination
-
-**/
-CHAR8 *
-EFIAPI
-AsciiStrCat (
-  IN OUT CHAR8    *Destination,
-  IN CONST CHAR8  *Source
-  );
-
-
-/**
-  [ATTENTION] This function is deprecated for security reason.
-
-  Concatenates up to a specified length one Null-terminated ASCII string to
-  the end of another Null-terminated ASCII string, and returns the
-  concatenated ASCII string.
-
-  This function concatenates two Null-terminated ASCII strings. The contents
-  of Null-terminated ASCII string Source are concatenated to the end of Null-
-  terminated ASCII string Destination, and Destination is returned. At most,
-  Length ASCII characters are concatenated from Source to the end of
-  Destination, and Destination is always Null-terminated. If Length is 0, then
-  Destination is returned unmodified. If Source and Destination overlap, then
-  the results are undefined.
-
-  If Length > 0 and Destination is NULL, then ASSERT().
-  If Length > 0 and Source is NULL, then ASSERT().
-  If Source and Destination overlap, then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero, and Length is greater than
-  PcdMaximumAsciiStringLength, then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero, and Destination contains more than
-  PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
-  then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero, and Source contains more than
-  PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,
-  then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero, and concatenating Destination and
-  Source results in a ASCII string with more than PcdMaximumAsciiStringLength
-  ASCII characters, not including the Null-terminator, then ASSERT().
-
-  @param  Destination The pointer to a Null-terminated ASCII string.
-  @param  Source      The pointer to a Null-terminated ASCII string.
-  @param  Length      The maximum number of ASCII characters to concatenate from
-                      Source.
-
-  @return Destination
-
-**/
-CHAR8 *
-EFIAPI
-AsciiStrnCat (
-  IN OUT  CHAR8                     *Destination,
-  IN      CONST CHAR8               *Source,
-  IN      UINTN                     Length
-  );
-#endif
-
 /**
   Returns the first occurrence of a Null-terminated ASCII sub-string
   in a Null-terminated ASCII string.
@@ -2260,11 +1785,10 @@
 CHAR8 *
 EFIAPI
 AsciiStrStr (
-  IN      CONST CHAR8               *String,
-  IN      CONST CHAR8               *SearchString
+  IN      CONST CHAR8  *String,
+  IN      CONST CHAR8  *SearchString
   );
 
-
 /**
   Convert a Null-terminated ASCII decimal string to a value of type
   UINTN.
@@ -2298,10 +1822,9 @@
 UINTN
 EFIAPI
 AsciiStrDecimalToUintn (
-  IN      CONST CHAR8               *String
+  IN      CONST CHAR8  *String
   );
 
-
 /**
   Convert a Null-terminated ASCII decimal string to a value of type
   UINT64.
@@ -2335,10 +1858,9 @@
 UINT64
 EFIAPI
 AsciiStrDecimalToUint64 (
-  IN      CONST CHAR8               *String
+  IN      CONST CHAR8  *String
   );
 
-
 /**
   Convert a Null-terminated ASCII hexadecimal string to a value of type UINTN.
 
@@ -2376,10 +1898,9 @@
 UINTN
 EFIAPI
 AsciiStrHexToUintn (
-  IN      CONST CHAR8               *String
+  IN      CONST CHAR8  *String
   );
 
-
 /**
   Convert a Null-terminated ASCII hexadecimal string to a value of type UINT64.
 
@@ -2417,7 +1938,7 @@
 UINT64
 EFIAPI
 AsciiStrHexToUint64 (
-  IN      CONST CHAR8                *String
+  IN      CONST CHAR8  *String
   );
 
 /**
@@ -2444,10 +1965,6 @@
   "::" can be used to compress one or more groups of X when X contains only 0.
   The "::" can only appear once in the String.
 
-  If String is NULL, then ASSERT().
-
-  If Address is NULL, then ASSERT().
-
   If EndPointer is not NULL and Address is translated from String, a pointer
   to the character that stopped the scan is stored at the location pointed to
   by EndPointer.
@@ -2475,10 +1992,10 @@
 RETURN_STATUS
 EFIAPI
 AsciiStrToIpv6Address (
-  IN  CONST CHAR8        *String,
-  OUT CHAR8              **EndPointer, OPTIONAL
-  OUT IPv6_ADDRESS       *Address,
-  OUT UINT8              *PrefixLength OPTIONAL
+  IN  CONST CHAR8   *String,
+  OUT CHAR8         **EndPointer  OPTIONAL,
+  OUT IPv6_ADDRESS  *Address,
+  OUT UINT8         *PrefixLength OPTIONAL
   );
 
 /**
@@ -2499,10 +2016,6 @@
   When /P is in the String, the function stops at the first character that is not
   a valid decimal digit character after P is converted.
 
-  If String is NULL, then ASSERT().
-
-  If Address is NULL, then ASSERT().
-
   If EndPointer is not NULL and Address is translated from String, a pointer
   to the character that stopped the scan is stored at the location pointed to
   by EndPointer.
@@ -2527,10 +2040,10 @@
 RETURN_STATUS
 EFIAPI
 AsciiStrToIpv4Address (
-  IN  CONST CHAR8        *String,
-  OUT CHAR8              **EndPointer, OPTIONAL
-  OUT IPv4_ADDRESS       *Address,
-  OUT UINT8              *PrefixLength OPTIONAL
+  IN  CONST CHAR8   *String,
+  OUT CHAR8         **EndPointer  OPTIONAL,
+  OUT IPv4_ADDRESS  *Address,
+  OUT UINT8         *PrefixLength OPTIONAL
   );
 
 /**
@@ -2564,9 +2077,6 @@
                   oo          Data4[48:55]
                   pp          Data4[56:63]
 
-  If String is NULL, then ASSERT().
-  If Guid is NULL, then ASSERT().
-
   @param  String                   Pointer to a Null-terminated ASCII string.
   @param  Guid                     Pointer to the converted GUID.
 
@@ -2579,8 +2089,8 @@
 RETURN_STATUS
 EFIAPI
 AsciiStrToGuid (
-  IN  CONST CHAR8        *String,
-  OUT GUID               *Guid
+  IN  CONST CHAR8  *String,
+  OUT GUID         *Guid
   );
 
 /**
@@ -2597,17 +2107,6 @@
   decoding stops after Length of characters and outputs Buffer containing
   (Length / 2) bytes.
 
-  If String is NULL, then ASSERT().
-
-  If Buffer is NULL, then ASSERT().
-
-  If Length is not multiple of 2, then ASSERT().
-
-  If PcdMaximumAsciiStringLength is not zero and Length is greater than
-  PcdMaximumAsciiStringLength, then ASSERT().
-
-  If MaxBufferSize is less than (Length / 2), then ASSERT().
-
   @param  String                   Pointer to a Null-terminated ASCII string.
   @param  Length                   The number of ASCII characters to decode.
   @param  Buffer                   Pointer to the converted bytes array.
@@ -2628,52 +2127,12 @@
 RETURN_STATUS
 EFIAPI
 AsciiStrHexToBytes (
-  IN  CONST CHAR8        *String,
-  IN  UINTN              Length,
-  OUT UINT8              *Buffer,
-  IN  UINTN              MaxBufferSize
+  IN  CONST CHAR8  *String,
+  IN  UINTN        Length,
+  OUT UINT8        *Buffer,
+  IN  UINTN        MaxBufferSize
   );
 
-#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
-
-/**
-  [ATTENTION] This function is deprecated for security reason.
-
-  Convert one Null-terminated ASCII string to a Null-terminated
-  Unicode string and returns the Unicode string.
-
-  This function converts the contents of the ASCII string Source to the Unicode
-  string Destination, and returns Destination.  The function terminates the
-  Unicode string Destination by appending a Null-terminator character at the end.
-  The caller is responsible to make sure Destination points to a buffer with size
-  equal or greater than ((AsciiStrLen (Source) + 1) * sizeof (CHAR16)) in bytes.
-
-  If Destination is NULL, then ASSERT().
-  If Destination is not aligned on a 16-bit boundary, then ASSERT().
-  If Source is NULL, then ASSERT().
-  If Source and Destination overlap, then ASSERT().
-  If PcdMaximumAsciiStringLength is not zero, and Source contains more than
-  PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
-  then ASSERT().
-  If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
-  PcdMaximumUnicodeStringLength ASCII characters not including the
-  Null-terminator, then ASSERT().
-
-  @param  Source        The pointer to a Null-terminated ASCII string.
-  @param  Destination   The pointer to a Null-terminated Unicode string.
-
-  @return Destination.
-
-**/
-CHAR16 *
-EFIAPI
-AsciiStrToUnicodeStr (
-  IN      CONST CHAR8               *Source,
-  OUT     CHAR16                    *Destination
-  );
-
-#endif
-
 /**
   Convert one Null-terminated ASCII string to a Null-terminated
   Unicode string.
@@ -2688,7 +2147,6 @@
   equal or greater than ((AsciiStrLen (Source) + 1) * sizeof (CHAR16)) in bytes.
 
   If Destination is not aligned on a 16-bit boundary, then ASSERT().
-  If an error would be returned, then the function will also ASSERT().
 
   If an error is returned, then the Destination is unmodified.
 
@@ -2714,9 +2172,9 @@
 RETURN_STATUS
 EFIAPI
 AsciiStrToUnicodeStrS (
-  IN      CONST CHAR8               *Source,
-  OUT     CHAR16                    *Destination,
-  IN      UINTN                     DestMax
+  IN      CONST CHAR8  *Source,
+  OUT     CHAR16       *Destination,
+  IN      UINTN        DestMax
   );
 
 /**
@@ -2734,7 +2192,6 @@
   ((MIN(AsciiStrLen(Source), Length) + 1) * sizeof (CHAR8)) in bytes.
 
   If Destination is not aligned on a 16-bit boundary, then ASSERT().
-  If an error would be returned, then the function will also ASSERT().
 
   If an error is returned, then Destination and DestinationLength are
   unmodified.
@@ -2765,11 +2222,170 @@
 RETURN_STATUS
 EFIAPI
 AsciiStrnToUnicodeStrS (
-  IN      CONST CHAR8               *Source,
-  IN      UINTN                     Length,
-  OUT     CHAR16                    *Destination,
-  IN      UINTN                     DestMax,
-  OUT     UINTN                     *DestinationLength
+  IN      CONST CHAR8  *Source,
+  IN      UINTN        Length,
+  OUT     CHAR16       *Destination,
+  IN      UINTN        DestMax,
+  OUT     UINTN        *DestinationLength
+  );
+
+/**
+  Convert a Unicode character to upper case only if
+  it maps to a valid small-case ASCII character.
+
+  This internal function only deal with Unicode character
+  which maps to a valid small-case ASCII character, i.e.
+  L'a' to L'z'. For other Unicode character, the input character
+  is returned directly.
+
+  @param  Char  The character to convert.
+
+  @retval LowerCharacter   If the Char is with range L'a' to L'z'.
+  @retval Unchanged        Otherwise.
+
+**/
+CHAR16
+EFIAPI
+CharToUpper (
+  IN      CHAR16  Char
+  );
+
+/**
+  Converts a lowercase Ascii character to upper one.
+
+  If Chr is lowercase Ascii character, then converts it to upper one.
+
+  If Value >= 0xA0, then ASSERT().
+  If (Value & 0x0F) >= 0x0A, then ASSERT().
+
+  @param  Chr   one Ascii character
+
+  @return The uppercase value of Ascii character
+
+**/
+CHAR8
+EFIAPI
+AsciiCharToUpper (
+  IN      CHAR8  Chr
+  );
+
+/**
+  Convert binary data to a Base64 encoded ascii string based on RFC4648.
+
+  Produce a Null-terminated Ascii string in the output buffer specified by Destination and DestinationSize.
+  The Ascii string is produced by converting the data string specified by Source and SourceLength.
+
+  @param Source           Input UINT8 data
+  @param SourceLength     Number of UINT8 bytes of data
+  @param Destination      Pointer to output string buffer
+  @param DestinationSize  Size of ascii buffer. Set to 0 to get the size needed.
+                          Caller is responsible for passing in buffer of DestinationSize
+
+  @retval RETURN_SUCCESS             When ascii buffer is filled in.
+  @retval RETURN_INVALID_PARAMETER   If Source is NULL or DestinationSize is NULL.
+  @retval RETURN_INVALID_PARAMETER   If SourceLength or DestinationSize is bigger than (MAX_ADDRESS - (UINTN)Destination).
+  @retval RETURN_BUFFER_TOO_SMALL    If SourceLength is 0 and DestinationSize is <1.
+  @retval RETURN_BUFFER_TOO_SMALL    If Destination is NULL or DestinationSize is smaller than required buffersize.
+
+**/
+RETURN_STATUS
+EFIAPI
+Base64Encode (
+  IN  CONST UINT8  *Source,
+  IN        UINTN  SourceLength,
+  OUT       CHAR8  *Destination  OPTIONAL,
+  IN OUT    UINTN  *DestinationSize
+  );
+
+/**
+  Decode Base64 ASCII encoded data to 8-bit binary representation, based on
+  RFC4648.
+
+  Decoding occurs according to "Table 1: The Base 64 Alphabet" in RFC4648.
+
+  Whitespace is ignored at all positions:
+  - 0x09 ('\t') horizontal tab
+  - 0x0A ('\n') new line
+  - 0x0B ('\v') vertical tab
+  - 0x0C ('\f') form feed
+  - 0x0D ('\r') carriage return
+  - 0x20 (' ')  space
+
+  The minimum amount of required padding (with ASCII 0x3D, '=') is tolerated
+  and enforced at the end of the Base64 ASCII encoded data, and only there.
+
+  Other characters outside of the encoding alphabet cause the function to
+  reject the Base64 ASCII encoded data.
+
+  @param[in] Source               Array of CHAR8 elements containing the Base64
+                                  ASCII encoding. May be NULL if SourceSize is
+                                  zero.
+
+  @param[in] SourceSize           Number of CHAR8 elements in Source.
+
+  @param[out] Destination         Array of UINT8 elements receiving the decoded
+                                  8-bit binary representation. Allocated by the
+                                  caller. May be NULL if DestinationSize is
+                                  zero on input. If NULL, decoding is
+                                  performed, but the 8-bit binary
+                                  representation is not stored. If non-NULL and
+                                  the function returns an error, the contents
+                                  of Destination are indeterminate.
+
+  @param[in,out] DestinationSize  On input, the number of UINT8 elements that
+                                  the caller allocated for Destination. On
+                                  output, if the function returns
+                                  RETURN_SUCCESS or RETURN_BUFFER_TOO_SMALL,
+                                  the number of UINT8 elements that are
+                                  required for decoding the Base64 ASCII
+                                  representation. If the function returns a
+                                  value different from both RETURN_SUCCESS and
+                                  RETURN_BUFFER_TOO_SMALL, then DestinationSize
+                                  is indeterminate on output.
+
+  @retval RETURN_SUCCESS            SourceSize CHAR8 elements at Source have
+                                    been decoded to on-output DestinationSize
+                                    UINT8 elements at Destination. Note that
+                                    RETURN_SUCCESS covers the case when
+                                    DestinationSize is zero on input, and
+                                    Source decodes to zero bytes (due to
+                                    containing at most ignored whitespace).
+
+  @retval RETURN_BUFFER_TOO_SMALL   The input value of DestinationSize is not
+                                    large enough for decoding SourceSize CHAR8
+                                    elements at Source. The required number of
+                                    UINT8 elements has been stored to
+                                    DestinationSize.
+
+  @retval RETURN_INVALID_PARAMETER  DestinationSize is NULL.
+
+  @retval RETURN_INVALID_PARAMETER  Source is NULL, but SourceSize is not zero.
+
+  @retval RETURN_INVALID_PARAMETER  Destination is NULL, but DestinationSize is
+                                    not zero on input.
+
+  @retval RETURN_INVALID_PARAMETER  Source is non-NULL, and (Source +
+                                    SourceSize) would wrap around MAX_ADDRESS.
+
+  @retval RETURN_INVALID_PARAMETER  Destination is non-NULL, and (Destination +
+                                    DestinationSize) would wrap around
+                                    MAX_ADDRESS, as specified on input.
+
+  @retval RETURN_INVALID_PARAMETER  None of Source and Destination are NULL,
+                                    and CHAR8[SourceSize] at Source overlaps
+                                    UINT8[DestinationSize] at Destination, as
+                                    specified on input.
+
+  @retval RETURN_INVALID_PARAMETER  Invalid CHAR8 element encountered in
+                                    Source.
+**/
+RETURN_STATUS
+EFIAPI
+Base64Decode (
+  IN     CONST CHAR8  *Source          OPTIONAL,
+  IN     UINTN        SourceSize,
+  OUT    UINT8        *Destination     OPTIONAL,
+  IN OUT UINTN        *DestinationSize
   );
 
 /**
@@ -2788,10 +2404,9 @@
 UINT8
 EFIAPI
 DecimalToBcd8 (
-  IN      UINT8                     Value
+  IN      UINT8  Value
   );
 
-
 /**
   Converts an 8-bit BCD value to an 8-bit value.
 
@@ -2809,7 +2424,7 @@
 UINT8
 EFIAPI
 BcdToDecimal8 (
-  IN      UINT8                     Value
+  IN      UINT8  Value
   );
 
 //
@@ -2826,8 +2441,8 @@
 **/
 BOOLEAN
 EFIAPI
-PathRemoveLastItem(
-  IN OUT CHAR16 *Path
+PathRemoveLastItem (
+  IN OUT CHAR16  *Path
   );
 
 /**
@@ -2843,10 +2458,10 @@
 
   @return       Returns Path, otherwise returns NULL to indicate that an error has occurred.
 **/
-CHAR16*
+CHAR16 *
 EFIAPI
-PathCleanUpDirectories(
-  IN CHAR16 *Path
+PathCleanUpDirectories (
+  IN CHAR16  *Path
   );
 
 //
@@ -2869,6 +2484,58 @@
 **/
 #define INITIALIZE_LIST_HEAD_VARIABLE(ListHead)  {&(ListHead), &(ListHead)}
 
+/**
+  Iterates over each node in a doubly linked list using each node's forward link.
+
+  @param  Entry     A pointer to a list node used as a loop cursor during iteration
+  @param  ListHead  The head node of the doubly linked list
+
+**/
+#define BASE_LIST_FOR_EACH(Entry, ListHead)    \
+  for(Entry = (ListHead)->ForwardLink; Entry != (ListHead); Entry = Entry->ForwardLink)
+
+/**
+  Iterates over each node in a doubly linked list using each node's forward link
+  with safety against node removal.
+
+  This macro uses NextEntry to temporarily store the next list node so the node
+  pointed to by Entry may be deleted in the current loop iteration step and
+  iteration can continue from the node pointed to by NextEntry.
+
+  @param  Entry     A pointer to a list node used as a loop cursor during iteration
+  @param  NextEntry A pointer to a list node used to temporarily store the next node
+  @param  ListHead  The head node of the doubly linked list
+
+**/
+#define BASE_LIST_FOR_EACH_SAFE(Entry, NextEntry, ListHead)            \
+  for(Entry = (ListHead)->ForwardLink, NextEntry = Entry->ForwardLink;\
+      Entry != (ListHead); Entry = NextEntry, NextEntry = Entry->ForwardLink)
+
+/**
+  Checks whether FirstEntry and SecondEntry are part of the same doubly-linked
+  list.
+
+  If FirstEntry is NULL, then ASSERT().
+  If FirstEntry->ForwardLink is NULL, then ASSERT().
+  If FirstEntry->BackLink is NULL, then ASSERT().
+  If SecondEntry is NULL, then ASSERT();
+  If PcdMaximumLinkedListLength is not zero, and List contains more than
+  PcdMaximumLinkedListLength nodes, then ASSERT().
+
+  @param  FirstEntry   A pointer to a node in a linked list.
+  @param  SecondEntry  A pointer to the node to locate.
+
+  @retval TRUE   SecondEntry is in the same doubly-linked list as FirstEntry.
+  @retval FALSE  SecondEntry isn't in the same doubly-linked list as FirstEntry,
+                 or FirstEntry is invalid.
+
+**/
+BOOLEAN
+EFIAPI
+IsNodeInList (
+  IN      CONST LIST_ENTRY  *FirstEntry,
+  IN      CONST LIST_ENTRY  *SecondEntry
+  );
 
 /**
   Initializes the head node of a doubly linked list, and returns the pointer to
@@ -2889,10 +2556,9 @@
 LIST_ENTRY *
 EFIAPI
 InitializeListHead (
-  IN OUT  LIST_ENTRY                *ListHead
+  IN OUT  LIST_ENTRY  *ListHead
   );
 
-
 /**
   Adds a node to the beginning of a doubly linked list, and returns the pointer
   to the head node of the doubly linked list.
@@ -2918,11 +2584,10 @@
 LIST_ENTRY *
 EFIAPI
 InsertHeadList (
-  IN OUT  LIST_ENTRY                *ListHead,
-  IN OUT  LIST_ENTRY                *Entry
+  IN OUT  LIST_ENTRY  *ListHead,
+  IN OUT  LIST_ENTRY  *Entry
   );
 
-
 /**
   Adds a node to the end of a doubly linked list, and returns the pointer to
   the head node of the doubly linked list.
@@ -2948,11 +2613,10 @@
 LIST_ENTRY *
 EFIAPI
 InsertTailList (
-  IN OUT  LIST_ENTRY                *ListHead,
-  IN OUT  LIST_ENTRY                *Entry
+  IN OUT  LIST_ENTRY  *ListHead,
+  IN OUT  LIST_ENTRY  *Entry
   );
 
-
 /**
   Retrieves the first node of a doubly linked list.
 
@@ -2976,10 +2640,9 @@
 LIST_ENTRY *
 EFIAPI
 GetFirstNode (
-  IN      CONST LIST_ENTRY          *List
+  IN      CONST LIST_ENTRY  *List
   );
 
-
 /**
   Retrieves the next node of a doubly linked list.
 
@@ -3004,11 +2667,10 @@
 LIST_ENTRY *
 EFIAPI
 GetNextNode (
-  IN      CONST LIST_ENTRY          *List,
-  IN      CONST LIST_ENTRY          *Node
+  IN      CONST LIST_ENTRY  *List,
+  IN      CONST LIST_ENTRY  *Node
   );
 
-
 /**
   Retrieves the previous node of a doubly linked list.
 
@@ -3033,11 +2695,10 @@
 LIST_ENTRY *
 EFIAPI
 GetPreviousNode (
-  IN      CONST LIST_ENTRY          *List,
-  IN      CONST LIST_ENTRY          *Node
+  IN      CONST LIST_ENTRY  *List,
+  IN      CONST LIST_ENTRY  *Node
   );
 
-
 /**
   Checks to see if a doubly linked list is empty or not.
 
@@ -3060,10 +2721,9 @@
 BOOLEAN
 EFIAPI
 IsListEmpty (
-  IN      CONST LIST_ENTRY          *ListHead
+  IN      CONST LIST_ENTRY  *ListHead
   );
 
-
 /**
   Determines if a node in a doubly linked list is the head node of a the same
   doubly linked list.  This function is typically used to terminate a loop that
@@ -3093,11 +2753,10 @@
 BOOLEAN
 EFIAPI
 IsNull (
-  IN      CONST LIST_ENTRY          *List,
-  IN      CONST LIST_ENTRY          *Node
+  IN      CONST LIST_ENTRY  *List,
+  IN      CONST LIST_ENTRY  *Node
   );
 
-
 /**
   Determines if a node the last node in a doubly linked list.
 
@@ -3124,11 +2783,10 @@
 BOOLEAN
 EFIAPI
 IsNodeAtEnd (
-  IN      CONST LIST_ENTRY          *List,
-  IN      CONST LIST_ENTRY          *Node
+  IN      CONST LIST_ENTRY  *List,
+  IN      CONST LIST_ENTRY  *Node
   );
 
-
 /**
   Swaps the location of two nodes in a doubly linked list, and returns the
   first node after the swap.
@@ -3158,11 +2816,10 @@
 LIST_ENTRY *
 EFIAPI
 SwapListEntries (
-  IN OUT  LIST_ENTRY                *FirstEntry,
-  IN OUT  LIST_ENTRY                *SecondEntry
+  IN OUT  LIST_ENTRY  *FirstEntry,
+  IN OUT  LIST_ENTRY  *SecondEntry
   );
 
-
 /**
   Removes a node from a doubly linked list, and returns the node that follows
   the removed node.
@@ -3187,7 +2844,7 @@
 LIST_ENTRY *
 EFIAPI
 RemoveEntryList (
-  IN      CONST LIST_ENTRY          *Entry
+  IN      CONST LIST_ENTRY  *Entry
   );
 
 //
@@ -3195,6 +2852,56 @@
 //
 
 /**
+  Prototype for comparison function for any two element types.
+
+  @param[in] Buffer1                  The pointer to first buffer.
+  @param[in] Buffer2                  The pointer to second buffer.
+
+  @retval 0                           Buffer1 equal to Buffer2.
+  @return <0                          Buffer1 is less than Buffer2.
+  @return >0                          Buffer1 is greater than Buffer2.
+**/
+typedef
+INTN
+(EFIAPI *BASE_SORT_COMPARE)(
+  IN CONST VOID                 *Buffer1,
+  IN CONST VOID                 *Buffer2
+  );
+
+/**
+  This function is identical to perform QuickSort,
+  except that is uses the pre-allocated buffer so the in place sorting does not need to
+  allocate and free buffers constantly.
+
+  Each element must be equal sized.
+
+  if BufferToSort is NULL, then ASSERT.
+  if CompareFunction is NULL, then ASSERT.
+  if BufferOneElement is NULL, then ASSERT.
+  if ElementSize is < 1, then ASSERT.
+
+  if Count is < 2 then perform no action.
+
+  @param[in, out] BufferToSort   on call a Buffer of (possibly sorted) elements
+                                 on return a buffer of sorted elements
+  @param[in] Count               the number of elements in the buffer to sort
+  @param[in] ElementSize         Size of an element in bytes
+  @param[in] CompareFunction     The function to call to perform the comparison
+                                 of any 2 elements
+  @param[out] BufferOneElement   Caller provided buffer whose size equals to ElementSize.
+                                 It's used by QuickSort() for swapping in sorting.
+**/
+VOID
+EFIAPI
+QuickSort (
+  IN OUT VOID                 *BufferToSort,
+  IN CONST UINTN              Count,
+  IN CONST UINTN              ElementSize,
+  IN       BASE_SORT_COMPARE  CompareFunction,
+  OUT VOID                    *BufferOneElement
+  );
+
+/**
   Shifts a 64-bit integer left between 0 and 63 bits. The low bits are filled
   with zeros. The shifted value is returned.
 
@@ -3212,11 +2919,10 @@
 UINT64
 EFIAPI
 LShiftU64 (
-  IN      UINT64                    Operand,
-  IN      UINTN                     Count
+  IN      UINT64  Operand,
+  IN      UINTN   Count
   );
 
-
 /**
   Shifts a 64-bit integer right between 0 and 63 bits. This high bits are
   filled with zeros. The shifted value is returned.
@@ -3235,11 +2941,10 @@
 UINT64
 EFIAPI
 RShiftU64 (
-  IN      UINT64                    Operand,
-  IN      UINTN                     Count
+  IN      UINT64  Operand,
+  IN      UINTN   Count
   );
 
-
 /**
   Shifts a 64-bit integer right between 0 and 63 bits. The high bits are filled
   with original integer's bit 63. The shifted value is returned.
@@ -3258,11 +2963,10 @@
 UINT64
 EFIAPI
 ARShiftU64 (
-  IN      UINT64                    Operand,
-  IN      UINTN                     Count
+  IN      UINT64  Operand,
+  IN      UINTN   Count
   );
 
-
 /**
   Rotates a 32-bit integer left between 0 and 31 bits, filling the low bits
   with the high bits that were rotated.
@@ -3282,11 +2986,10 @@
 UINT32
 EFIAPI
 LRotU32 (
-  IN      UINT32                    Operand,
-  IN      UINTN                     Count
+  IN      UINT32  Operand,
+  IN      UINTN   Count
   );
 
-
 /**
   Rotates a 32-bit integer right between 0 and 31 bits, filling the high bits
   with the low bits that were rotated.
@@ -3306,11 +3009,10 @@
 UINT32
 EFIAPI
 RRotU32 (
-  IN      UINT32                    Operand,
-  IN      UINTN                     Count
+  IN      UINT32  Operand,
+  IN      UINTN   Count
   );
 
-
 /**
   Rotates a 64-bit integer left between 0 and 63 bits, filling the low bits
   with the high bits that were rotated.
@@ -3330,11 +3032,10 @@
 UINT64
 EFIAPI
 LRotU64 (
-  IN      UINT64                    Operand,
-  IN      UINTN                     Count
+  IN      UINT64  Operand,
+  IN      UINTN   Count
   );
 
-
 /**
   Rotates a 64-bit integer right between 0 and 63 bits, filling the high bits
   with the high low bits that were rotated.
@@ -3354,11 +3055,10 @@
 UINT64
 EFIAPI
 RRotU64 (
-  IN      UINT64                    Operand,
-  IN      UINTN                     Count
+  IN      UINT64  Operand,
+  IN      UINTN   Count
   );
 
-
 /**
   Returns the bit position of the lowest bit set in a 32-bit value.
 
@@ -3375,10 +3075,9 @@
 INTN
 EFIAPI
 LowBitSet32 (
-  IN      UINT32                    Operand
+  IN      UINT32  Operand
   );
 
-
 /**
   Returns the bit position of the lowest bit set in a 64-bit value.
 
@@ -3396,10 +3095,9 @@
 INTN
 EFIAPI
 LowBitSet64 (
-  IN      UINT64                    Operand
+  IN      UINT64  Operand
   );
 
-
 /**
   Returns the bit position of the highest bit set in a 32-bit value. Equivalent
   to log2(x).
@@ -3417,10 +3115,9 @@
 INTN
 EFIAPI
 HighBitSet32 (
-  IN      UINT32                    Operand
+  IN      UINT32  Operand
   );
 
-
 /**
   Returns the bit position of the highest bit set in a 64-bit value. Equivalent
   to log2(x).
@@ -3438,10 +3135,9 @@
 INTN
 EFIAPI
 HighBitSet64 (
-  IN      UINT64                    Operand
+  IN      UINT64  Operand
   );
 
-
 /**
   Returns the value of the highest bit set in a 32-bit value. Equivalent to
   1 << log2(x).
@@ -3458,10 +3154,9 @@
 UINT32
 EFIAPI
 GetPowerOfTwo32 (
-  IN      UINT32                    Operand
+  IN      UINT32  Operand
   );
 
-
 /**
   Returns the value of the highest bit set in a 64-bit value. Equivalent to
   1 << log2(x).
@@ -3478,10 +3173,9 @@
 UINT64
 EFIAPI
 GetPowerOfTwo64 (
-  IN      UINT64                    Operand
+  IN      UINT64  Operand
   );
 
-
 /**
   Switches the endianness of a 16-bit integer.
 
@@ -3497,10 +3191,9 @@
 UINT16
 EFIAPI
 SwapBytes16 (
-  IN      UINT16                    Value
+  IN      UINT16  Value
   );
 
-
 /**
   Switches the endianness of a 32-bit integer.
 
@@ -3516,10 +3209,9 @@
 UINT32
 EFIAPI
 SwapBytes32 (
-  IN      UINT32                    Value
+  IN      UINT32  Value
   );
 
-
 /**
   Switches the endianness of a 64-bit integer.
 
@@ -3535,10 +3227,9 @@
 UINT64
 EFIAPI
 SwapBytes64 (
-  IN      UINT64                    Value
+  IN      UINT64  Value
   );
 
-
 /**
   Multiples a 64-bit unsigned integer by a 32-bit unsigned integer and
   generates a 64-bit unsigned result.
@@ -3556,11 +3247,10 @@
 UINT64
 EFIAPI
 MultU64x32 (
-  IN      UINT64                    Multiplicand,
-  IN      UINT32                    Multiplier
+  IN      UINT64  Multiplicand,
+  IN      UINT32  Multiplier
   );
 
-
 /**
   Multiples a 64-bit unsigned integer by a 64-bit unsigned integer and
   generates a 64-bit unsigned result.
@@ -3578,11 +3268,10 @@
 UINT64
 EFIAPI
 MultU64x64 (
-  IN      UINT64                    Multiplicand,
-  IN      UINT64                    Multiplier
+  IN      UINT64  Multiplicand,
+  IN      UINT64  Multiplier
   );
 
-
 /**
   Multiples a 64-bit signed integer by a 64-bit signed integer and generates a
   64-bit signed result.
@@ -3600,11 +3289,10 @@
 INT64
 EFIAPI
 MultS64x64 (
-  IN      INT64                     Multiplicand,
-  IN      INT64                     Multiplier
+  IN      INT64  Multiplicand,
+  IN      INT64  Multiplier
   );
 
-
 /**
   Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates
   a 64-bit unsigned result.
@@ -3624,11 +3312,10 @@
 UINT64
 EFIAPI
 DivU64x32 (
-  IN      UINT64                    Dividend,
-  IN      UINT32                    Divisor
+  IN      UINT64  Dividend,
+  IN      UINT32  Divisor
   );
 
-
 /**
   Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates
   a 32-bit unsigned remainder.
@@ -3648,11 +3335,10 @@
 UINT32
 EFIAPI
 ModU64x32 (
-  IN      UINT64                    Dividend,
-  IN      UINT32                    Divisor
+  IN      UINT64  Dividend,
+  IN      UINT32  Divisor
   );
 
-
 /**
   Divides a 64-bit unsigned integer by a 32-bit unsigned integer and generates
   a 64-bit unsigned result and an optional 32-bit unsigned remainder.
@@ -3675,12 +3361,11 @@
 UINT64
 EFIAPI
 DivU64x32Remainder (
-  IN      UINT64                    Dividend,
-  IN      UINT32                    Divisor,
-  OUT     UINT32                    *Remainder  OPTIONAL
+  IN      UINT64  Dividend,
+  IN      UINT32  Divisor,
+  OUT     UINT32  *Remainder  OPTIONAL
   );
 
-
 /**
   Divides a 64-bit unsigned integer by a 64-bit unsigned integer and generates
   a 64-bit unsigned result and an optional 64-bit unsigned remainder.
@@ -3703,12 +3388,11 @@
 UINT64
 EFIAPI
 DivU64x64Remainder (
-  IN      UINT64                    Dividend,
-  IN      UINT64                    Divisor,
-  OUT     UINT64                    *Remainder  OPTIONAL
+  IN      UINT64  Dividend,
+  IN      UINT64  Divisor,
+  OUT     UINT64  *Remainder  OPTIONAL
   );
 
-
 /**
   Divides a 64-bit signed integer by a 64-bit signed integer and generates a
   64-bit signed result and a optional 64-bit signed remainder.
@@ -3735,12 +3419,11 @@
 INT64
 EFIAPI
 DivS64x64Remainder (
-  IN      INT64                     Dividend,
-  IN      INT64                     Divisor,
-  OUT     INT64                     *Remainder  OPTIONAL
+  IN      INT64  Dividend,
+  IN      INT64  Divisor,
+  OUT     INT64  *Remainder  OPTIONAL
   );
 
-
 /**
   Reads a 16-bit value from memory that may be unaligned.
 
@@ -3757,10 +3440,9 @@
 UINT16
 EFIAPI
 ReadUnaligned16 (
-  IN CONST UINT16              *Buffer
+  IN CONST UINT16  *Buffer
   );
 
-
 /**
   Writes a 16-bit value to memory that may be unaligned.
 
@@ -3779,11 +3461,10 @@
 UINT16
 EFIAPI
 WriteUnaligned16 (
-  OUT UINT16                    *Buffer,
-  IN  UINT16                    Value
+  OUT UINT16  *Buffer,
+  IN  UINT16  Value
   );
 
-
 /**
   Reads a 24-bit value from memory that may be unaligned.
 
@@ -3800,10 +3481,9 @@
 UINT32
 EFIAPI
 ReadUnaligned24 (
-  IN CONST UINT32              *Buffer
+  IN CONST UINT32  *Buffer
   );
 
-
 /**
   Writes a 24-bit value to memory that may be unaligned.
 
@@ -3822,11 +3502,10 @@
 UINT32
 EFIAPI
 WriteUnaligned24 (
-  OUT UINT32                    *Buffer,
-  IN  UINT32                    Value
+  OUT UINT32  *Buffer,
+  IN  UINT32  Value
   );
 
-
 /**
   Reads a 32-bit value from memory that may be unaligned.
 
@@ -3843,10 +3522,9 @@
 UINT32
 EFIAPI
 ReadUnaligned32 (
-  IN CONST UINT32              *Buffer
+  IN CONST UINT32  *Buffer
   );
 
-
 /**
   Writes a 32-bit value to memory that may be unaligned.
 
@@ -3865,11 +3543,10 @@
 UINT32
 EFIAPI
 WriteUnaligned32 (
-  OUT UINT32                    *Buffer,
-  IN  UINT32                    Value
+  OUT UINT32  *Buffer,
+  IN  UINT32  Value
   );
 
-
 /**
   Reads a 64-bit value from memory that may be unaligned.
 
@@ -3886,10 +3563,9 @@
 UINT64
 EFIAPI
 ReadUnaligned64 (
-  IN CONST UINT64              *Buffer
+  IN CONST UINT64  *Buffer
   );
 
-
 /**
   Writes a 64-bit value to memory that may be unaligned.
 
@@ -3908,11 +3584,10 @@
 UINT64
 EFIAPI
 WriteUnaligned64 (
-  OUT UINT64                    *Buffer,
-  IN  UINT64                    Value
+  OUT UINT64  *Buffer,
+  IN  UINT64  Value
   );
 
-
 //
 // Bit Field Functions
 //
@@ -3939,12 +3614,11 @@
 UINT8
 EFIAPI
 BitFieldRead8 (
-  IN      UINT8                     Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
+  IN      UINT8  Operand,
+  IN      UINTN  StartBit,
+  IN      UINTN  EndBit
   );
 
-
 /**
   Writes a bit field to an 8-bit value, and returns the result.
 
@@ -3971,13 +3645,12 @@
 UINT8
 EFIAPI
 BitFieldWrite8 (
-  IN      UINT8                     Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     Value
+  IN      UINT8  Operand,
+  IN      UINTN  StartBit,
+  IN      UINTN  EndBit,
+  IN      UINT8  Value
   );
 
-
 /**
   Reads a bit field from an 8-bit value, performs a bitwise OR, and returns the
   result.
@@ -4005,13 +3678,12 @@
 UINT8
 EFIAPI
 BitFieldOr8 (
-  IN      UINT8                     Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     OrData
+  IN      UINT8  Operand,
+  IN      UINTN  StartBit,
+  IN      UINTN  EndBit,
+  IN      UINT8  OrData
   );
 
-
 /**
   Reads a bit field from an 8-bit value, performs a bitwise AND, and returns
   the result.
@@ -4039,13 +3711,12 @@
 UINT8
 EFIAPI
 BitFieldAnd8 (
-  IN      UINT8                     Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     AndData
+  IN      UINT8  Operand,
+  IN      UINTN  StartBit,
+  IN      UINTN  EndBit,
+  IN      UINT8  AndData
   );
 
-
 /**
   Reads a bit field from an 8-bit value, performs a bitwise AND followed by a
   bitwise OR, and returns the result.
@@ -4076,14 +3747,13 @@
 UINT8
 EFIAPI
 BitFieldAndThenOr8 (
-  IN      UINT8                     Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT8                     AndData,
-  IN      UINT8                     OrData
+  IN      UINT8  Operand,
+  IN      UINTN  StartBit,
+  IN      UINTN  EndBit,
+  IN      UINT8  AndData,
+  IN      UINT8  OrData
   );
 
-
 /**
   Returns a bit field from a 16-bit value.
 
@@ -4106,12 +3776,11 @@
 UINT16
 EFIAPI
 BitFieldRead16 (
-  IN      UINT16                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
+  IN      UINT16  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit
   );
 
-
 /**
   Writes a bit field to a 16-bit value, and returns the result.
 
@@ -4138,13 +3807,12 @@
 UINT16
 EFIAPI
 BitFieldWrite16 (
-  IN      UINT16                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    Value
+  IN      UINT16  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT16  Value
   );
 
-
 /**
   Reads a bit field from a 16-bit value, performs a bitwise OR, and returns the
   result.
@@ -4172,13 +3840,12 @@
 UINT16
 EFIAPI
 BitFieldOr16 (
-  IN      UINT16                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    OrData
+  IN      UINT16  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT16  OrData
   );
 
-
 /**
   Reads a bit field from a 16-bit value, performs a bitwise AND, and returns
   the result.
@@ -4206,13 +3873,12 @@
 UINT16
 EFIAPI
 BitFieldAnd16 (
-  IN      UINT16                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    AndData
+  IN      UINT16  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT16  AndData
   );
 
-
 /**
   Reads a bit field from a 16-bit value, performs a bitwise AND followed by a
   bitwise OR, and returns the result.
@@ -4243,14 +3909,13 @@
 UINT16
 EFIAPI
 BitFieldAndThenOr16 (
-  IN      UINT16                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT16                    AndData,
-  IN      UINT16                    OrData
+  IN      UINT16  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT16  AndData,
+  IN      UINT16  OrData
   );
 
-
 /**
   Returns a bit field from a 32-bit value.
 
@@ -4273,12 +3938,11 @@
 UINT32
 EFIAPI
 BitFieldRead32 (
-  IN      UINT32                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
+  IN      UINT32  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit
   );
 
-
 /**
   Writes a bit field to a 32-bit value, and returns the result.
 
@@ -4305,13 +3969,12 @@
 UINT32
 EFIAPI
 BitFieldWrite32 (
-  IN      UINT32                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    Value
+  IN      UINT32  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT32  Value
   );
 
-
 /**
   Reads a bit field from a 32-bit value, performs a bitwise OR, and returns the
   result.
@@ -4339,13 +4002,12 @@
 UINT32
 EFIAPI
 BitFieldOr32 (
-  IN      UINT32                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    OrData
+  IN      UINT32  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT32  OrData
   );
 
-
 /**
   Reads a bit field from a 32-bit value, performs a bitwise AND, and returns
   the result.
@@ -4373,13 +4035,12 @@
 UINT32
 EFIAPI
 BitFieldAnd32 (
-  IN      UINT32                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    AndData
+  IN      UINT32  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT32  AndData
   );
 
-
 /**
   Reads a bit field from a 32-bit value, performs a bitwise AND followed by a
   bitwise OR, and returns the result.
@@ -4410,14 +4071,13 @@
 UINT32
 EFIAPI
 BitFieldAndThenOr32 (
-  IN      UINT32                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    AndData,
-  IN      UINT32                    OrData
+  IN      UINT32  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT32  AndData,
+  IN      UINT32  OrData
   );
 
-
 /**
   Returns a bit field from a 64-bit value.
 
@@ -4440,12 +4100,11 @@
 UINT64
 EFIAPI
 BitFieldRead64 (
-  IN      UINT64                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
+  IN      UINT64  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit
   );
 
-
 /**
   Writes a bit field to a 64-bit value, and returns the result.
 
@@ -4472,13 +4131,12 @@
 UINT64
 EFIAPI
 BitFieldWrite64 (
-  IN      UINT64                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    Value
+  IN      UINT64  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT64  Value
   );
 
-
 /**
   Reads a bit field from a 64-bit value, performs a bitwise OR, and returns the
   result.
@@ -4506,13 +4164,12 @@
 UINT64
 EFIAPI
 BitFieldOr64 (
-  IN      UINT64                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    OrData
+  IN      UINT64  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT64  OrData
   );
 
-
 /**
   Reads a bit field from a 64-bit value, performs a bitwise AND, and returns
   the result.
@@ -4540,13 +4197,12 @@
 UINT64
 EFIAPI
 BitFieldAnd64 (
-  IN      UINT64                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    AndData
+  IN      UINT64  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT64  AndData
   );
 
-
 /**
   Reads a bit field from a 64-bit value, performs a bitwise AND followed by a
   bitwise OR, and returns the result.
@@ -4577,11 +4233,67 @@
 UINT64
 EFIAPI
 BitFieldAndThenOr64 (
-  IN      UINT64                    Operand,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    AndData,
-  IN      UINT64                    OrData
+  IN      UINT64  Operand,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT64  AndData,
+  IN      UINT64  OrData
+  );
+
+/**
+  Reads a bit field from a 32-bit value, counts and returns
+  the number of set bits.
+
+  Counts the number of set bits in the  bit field specified by
+  StartBit and EndBit in Operand. The count is returned.
+
+  If StartBit is greater than 31, then ASSERT().
+  If EndBit is greater than 31, then ASSERT().
+  If EndBit is less than StartBit, then ASSERT().
+
+  @param  Operand   Operand on which to perform the bitfield operation.
+  @param  StartBit  The ordinal of the least significant bit in the bit field.
+                    Range 0..31.
+  @param  EndBit    The ordinal of the most significant bit in the bit field.
+                    Range 0..31.
+
+  @return The number of bits set between StartBit and EndBit.
+
+**/
+UINT8
+EFIAPI
+BitFieldCountOnes32 (
+  IN       UINT32  Operand,
+  IN       UINTN   StartBit,
+  IN       UINTN   EndBit
+  );
+
+/**
+   Reads a bit field from a 64-bit value, counts and returns
+   the number of set bits.
+
+   Counts the number of set bits in the  bit field specified by
+   StartBit and EndBit in Operand. The count is returned.
+
+   If StartBit is greater than 63, then ASSERT().
+   If EndBit is greater than 63, then ASSERT().
+   If EndBit is less than StartBit, then ASSERT().
+
+   @param  Operand   Operand on which to perform the bitfield operation.
+   @param  StartBit  The ordinal of the least significant bit in the bit field.
+   Range 0..63.
+   @param  EndBit    The ordinal of the most significant bit in the bit field.
+   Range 0..63.
+
+   @return The number of bits set between StartBit and EndBit.
+
+**/
+UINT8
+EFIAPI
+BitFieldCountOnes64 (
+  IN       UINT64  Operand,
+  IN       UINTN   StartBit,
+  IN       UINTN   EndBit
   );
 
 //
@@ -4609,11 +4321,10 @@
 UINT8
 EFIAPI
 CalculateSum8 (
-  IN      CONST UINT8              *Buffer,
-  IN      UINTN                     Length
+  IN      CONST UINT8  *Buffer,
+  IN      UINTN        Length
   );
 
-
 /**
   Returns the two's complement checksum of all elements in a buffer
   of 8-bit values.
@@ -4635,11 +4346,10 @@
 UINT8
 EFIAPI
 CalculateCheckSum8 (
-  IN      CONST UINT8              *Buffer,
-  IN      UINTN                     Length
+  IN      CONST UINT8  *Buffer,
+  IN      UINTN        Length
   );
 
-
 /**
   Returns the sum of all elements in a buffer of 16-bit values.  During
   calculation, the carry bits are dropped.
@@ -4662,11 +4372,10 @@
 UINT16
 EFIAPI
 CalculateSum16 (
-  IN      CONST UINT16             *Buffer,
-  IN      UINTN                     Length
+  IN      CONST UINT16  *Buffer,
+  IN      UINTN         Length
   );
 
-
 /**
   Returns the two's complement checksum of all elements in a buffer of
   16-bit values.
@@ -4690,11 +4399,10 @@
 UINT16
 EFIAPI
 CalculateCheckSum16 (
-  IN      CONST UINT16             *Buffer,
-  IN      UINTN                     Length
+  IN      CONST UINT16  *Buffer,
+  IN      UINTN         Length
   );
 
-
 /**
   Returns the sum of all elements in a buffer of 32-bit values. During
   calculation, the carry bits are dropped.
@@ -4717,11 +4425,10 @@
 UINT32
 EFIAPI
 CalculateSum32 (
-  IN      CONST UINT32             *Buffer,
-  IN      UINTN                     Length
+  IN      CONST UINT32  *Buffer,
+  IN      UINTN         Length
   );
 
-
 /**
   Returns the two's complement checksum of all elements in a buffer of
   32-bit values.
@@ -4745,11 +4452,10 @@
 UINT32
 EFIAPI
 CalculateCheckSum32 (
-  IN      CONST UINT32             *Buffer,
-  IN      UINTN                     Length
+  IN      CONST UINT32  *Buffer,
+  IN      UINTN         Length
   );
 
-
 /**
   Returns the sum of all elements in a buffer of 64-bit values.  During
   calculation, the carry bits are dropped.
@@ -4772,11 +4478,10 @@
 UINT64
 EFIAPI
 CalculateSum64 (
-  IN      CONST UINT64             *Buffer,
-  IN      UINTN                     Length
+  IN      CONST UINT64  *Buffer,
+  IN      UINTN         Length
   );
 
-
 /**
   Returns the two's complement checksum of all elements in a buffer of
   64-bit values.
@@ -4800,10 +4505,63 @@
 UINT64
 EFIAPI
 CalculateCheckSum64 (
-  IN      CONST UINT64             *Buffer,
-  IN      UINTN                     Length
+  IN      CONST UINT64  *Buffer,
+  IN      UINTN         Length
   );
 
+/**
+  Computes and returns a 32-bit CRC for a data buffer.
+  CRC32 value bases on ITU-T V.42.
+
+  If Buffer is NULL, then ASSERT().
+  If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
+
+  @param[in]  Buffer       A pointer to the buffer on which the 32-bit CRC is to be computed.
+  @param[in]  Length       The number of bytes in the buffer Data.
+
+  @retval Crc32            The 32-bit CRC was computed for the data buffer.
+
+**/
+UINT32
+EFIAPI
+CalculateCrc32 (
+  IN  VOID   *Buffer,
+  IN  UINTN  Length
+  );
+
+/**
+   Calculates the CRC16-ANSI checksum of the given buffer.
+
+   @param[in]      Buffer        Pointer to the buffer.
+   @param[in]      Length        Length of the buffer, in bytes.
+   @param[in]      InitialValue  Initial value of the CRC.
+
+   @return The CRC16-ANSI checksum.
+**/
+UINT16
+EFIAPI
+CalculateCrc16Ansi (
+  IN  CONST VOID  *Buffer,
+  IN  UINTN       Length,
+  IN  UINT16      InitialValue
+  );
+
+/**
+   Calculates the CRC32c checksum of the given buffer.
+
+   @param[in]      Buffer        Pointer to the buffer.
+   @param[in]      Length        Length of the buffer, in bytes.
+   @param[in]      InitialValue  Initial value of the CRC.
+
+   @return The CRC32c checksum.
+**/
+UINT32
+EFIAPI
+CalculateCrc32c (
+  IN CONST VOID  *Buffer,
+  IN UINTN       Length,
+  IN UINT32      InitialValue
+  );
 
 //
 // Base Library CPU Functions
@@ -4814,16 +4572,14 @@
 
   @param  Context1        Context1 parameter passed into SwitchStack().
   @param  Context2        Context2 parameter passed into SwitchStack().
-
 **/
 typedef
 VOID
 (EFIAPI *SWITCH_STACK_ENTRY_POINT)(
-  IN      VOID                      *Context1,  OPTIONAL
+  IN      VOID                      *Context1   OPTIONAL,
   IN      VOID                      *Context2   OPTIONAL
   );
 
-
 /**
   Used to serialize load and store operations.
 
@@ -4837,7 +4593,6 @@
   VOID
   );
 
-
 /**
   Saves the current CPU context that can be restored with a call to LongJump()
   and returns 0.
@@ -4859,13 +4614,13 @@
   @retval 0 Indicates a return from SetJump().
 
 **/
+RETURNS_TWICE
 UINTN
 EFIAPI
 SetJump (
   OUT     BASE_LIBRARY_JUMP_BUFFER  *JumpBuffer
   );
 
-
 /**
   Restores the CPU context that was saved with SetJump().
 
@@ -4889,7 +4644,6 @@
   IN      UINTN                     Value
   );
 
-
 /**
   Enables CPU interrupts.
 
@@ -4900,7 +4654,6 @@
   VOID
   );
 
-
 /**
   Disables CPU interrupts.
 
@@ -4911,7 +4664,6 @@
   VOID
   );
 
-
 /**
   Disables CPU interrupts and returns the interrupt state prior to the disable
   operation.
@@ -4926,7 +4678,6 @@
   VOID
   );
 
-
 /**
   Enables CPU interrupts for the smallest window required to capture any
   pending interrupts.
@@ -4938,7 +4689,6 @@
   VOID
   );
 
-
 /**
   Retrieves the current CPU interrupt state.
 
@@ -4955,7 +4705,6 @@
   VOID
   );
 
-
 /**
   Set the current CPU interrupt state.
 
@@ -4973,10 +4722,9 @@
 BOOLEAN
 EFIAPI
 SetInterruptState (
-  IN      BOOLEAN                   InterruptState
+  IN      BOOLEAN  InterruptState
   );
 
-
 /**
   Requests CPU to pause for a short period of time.
 
@@ -4990,7 +4738,6 @@
   VOID
   );
 
-
 /**
   Transfers control to a function starting with a new stack.
 
@@ -5024,13 +4771,12 @@
 EFIAPI
 SwitchStack (
   IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
-  IN      VOID                      *Context1,  OPTIONAL
-  IN      VOID                      *Context2,  OPTIONAL
+  IN      VOID                      *Context1   OPTIONAL,
+  IN      VOID                      *Context2   OPTIONAL,
   IN      VOID                      *NewStack,
   ...
   );
 
-
 /**
   Generates a breakpoint on the CPU.
 
@@ -5044,7 +4790,6 @@
   VOID
   );
 
-
 /**
   Executes an infinite loop.
 
@@ -5060,1396 +4805,169 @@
   VOID
   );
 
-#if defined (MDE_CPU_IPF)
-
 /**
-  Flush a range of  cache lines in the cache coherency domain of the calling
-  CPU.
+  Uses as a barrier to stop speculative execution.
 
-  Flushes the cache lines specified by Address and Length.  If Address is not aligned
-  on a cache line boundary, then entire cache line containing Address is flushed.
-  If Address + Length is not aligned on a cache line boundary, then the entire cache
-  line containing Address + Length - 1 is flushed.  This function may choose to flush
-  the entire cache if that is more efficient than flushing the specified range.  If
-  Length is 0, the no cache lines are flushed.  Address is returned.
-  This function is only available on Itanium processors.
-
-  If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT().
-
-  @param  Address The base address of the instruction lines to invalidate. If
-                  the CPU is in a physical addressing mode, then Address is a
-                  physical address. If the CPU is in a virtual addressing mode,
-                  then Address is a virtual address.
-
-  @param  Length  The number of bytes to invalidate from the instruction cache.
-
-  @return Address.
-
-**/
-VOID *
-EFIAPI
-AsmFlushCacheRange (
-  IN      VOID                      *Address,
-  IN      UINTN                     Length
-  );
-
-
-/**
-  Executes an FC instruction.
-  Executes an FC instruction on the cache line specified by Address.
-  The cache line size affected is at least 32-bytes (aligned on a 32-byte boundary).
-  An implementation may flush a larger region.  This function is only available on Itanium processors.
-
-  @param Address    The Address of cache line to be flushed.
-
-  @return The address of FC instruction executed.
-
-**/
-UINT64
-EFIAPI
-AsmFc (
-  IN  UINT64  Address
-  );
-
-
-/**
-  Executes an FC.I instruction.
-  Executes an FC.I instruction on the cache line specified by Address.
-  The cache line size affected is at least 32-bytes (aligned on a 32-byte boundary).
-  An implementation may flush a larger region.  This function is only available on Itanium processors.
-
-  @param Address    The Address of cache line to be flushed.
-
-  @return The address of the FC.I instruction executed.
-
-**/
-UINT64
-EFIAPI
-AsmFci (
-  IN  UINT64  Address
-  );
-
-
-/**
-  Reads the current value of a Processor Identifier Register (CPUID).
-
-  Reads and returns the current value of Processor Identifier Register specified by Index.
-  The Index of largest implemented CPUID (One less than the number of implemented CPUID
-  registers) is determined by CPUID [3] bits {7:0}.
-  No parameter checking is performed on Index.  If the Index value is beyond the
-  implemented CPUID register range, a Reserved Register/Field fault may occur.  The caller
-  must either guarantee that Index is valid, or the caller must set up fault handlers to
-  catch the faults.  This function is only available on Itanium processors.
-
-  @param Index    The 8-bit Processor Identifier Register index to read.
-
-  @return The current value of Processor Identifier Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadCpuid (
-  IN  UINT8   Index
-  );
-
-
-/**
-  Reads the current value of 64-bit Processor Status Register (PSR).
-  This function is only available on Itanium processors.
-
-  @return The current value of PSR.
-
-**/
-UINT64
-EFIAPI
-AsmReadPsr (
-  VOID
-  );
-
-
-/**
-  Writes the current value of 64-bit Processor Status Register (PSR).
-
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of PSR must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults. This function is only available on Itanium processors.
-
-  @param Value    The 64-bit value to write to PSR.
-
-  @return The 64-bit value written to the PSR.
-
-**/
-UINT64
-EFIAPI
-AsmWritePsr (
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #0 (KR0).
-
-  Reads and returns the current value of KR0.
-  This function is only available on Itanium processors.
-
-  @return The current value of KR0.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr0 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #1 (KR1).
-
-  Reads and returns the current value of KR1.
-  This function is only available on Itanium processors.
-
-  @return The current value of KR1.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr1 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #2 (KR2).
-
-  Reads and returns the current value of KR2.
-  This function is only available on Itanium processors.
-
-  @return The current value of KR2.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr2 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #3 (KR3).
-
-  Reads and returns the current value of KR3.
-  This function is only available on Itanium processors.
-
-  @return The current value of KR3.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr3 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #4 (KR4).
-
-  Reads and returns the current value of KR4.
-  This function is only available on Itanium processors.
-
-  @return The current value of KR4.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr4 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #5 (KR5).
-
-  Reads and returns the current value of KR5.
-  This function is only available on Itanium processors.
-
-  @return The current value of KR5.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr5 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #6 (KR6).
-
-  Reads and returns the current value of KR6.
-  This function is only available on Itanium processors.
-
-  @return The current value of KR6.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr6 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of 64-bit Kernel Register #7 (KR7).
-
-  Reads and returns the current value of KR7.
-  This function is only available on Itanium processors.
-
-  @return The current value of KR7.
-
-**/
-UINT64
-EFIAPI
-AsmReadKr7 (
-  VOID
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #0 (KR0).
-
-  Writes the current value of KR0.  The 64-bit value written to
-  the KR0 is returned. This function is only available on Itanium processors.
-
-  @param  Value   The 64-bit value to write to KR0.
-
-  @return The 64-bit value written to the KR0.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr0 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #1 (KR1).
-
-  Writes the current value of KR1.  The 64-bit value written to
-  the KR1 is returned. This function is only available on Itanium processors.
-
-  @param  Value   The 64-bit value to write to KR1.
-
-  @return The 64-bit value written to the KR1.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr1 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #2 (KR2).
-
-  Writes the current value of KR2.  The 64-bit value written to
-  the KR2 is returned. This function is only available on Itanium processors.
-
-  @param  Value   The 64-bit value to write to KR2.
-
-  @return The 64-bit value written to the KR2.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr2 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #3 (KR3).
-
-  Writes the current value of KR3.  The 64-bit value written to
-  the KR3 is returned. This function is only available on Itanium processors.
-
-  @param  Value   The 64-bit value to write to KR3.
-
-  @return The 64-bit value written to the KR3.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr3 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #4 (KR4).
-
-  Writes the current value of KR4.  The 64-bit value written to
-  the KR4 is returned. This function is only available on Itanium processors.
-
-  @param  Value   The 64-bit value to write to KR4.
-
-  @return The 64-bit value written to the KR4.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr4 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #5 (KR5).
-
-  Writes the current value of KR5.  The 64-bit value written to
-  the KR5 is returned. This function is only available on Itanium processors.
-
-  @param  Value   The 64-bit value to write to KR5.
-
-  @return The 64-bit value written to the KR5.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr5 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #6 (KR6).
-
-  Writes the current value of KR6.  The 64-bit value written to
-  the KR6 is returned. This function is only available on Itanium processors.
-
-  @param  Value   The 64-bit value to write to KR6.
-
-  @return The 64-bit value written to the KR6.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr6 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Write the current value of 64-bit Kernel Register #7 (KR7).
-
-  Writes the current value of KR7.  The 64-bit value written to
-  the KR7 is returned. This function is only available on Itanium processors.
-
-  @param  Value   The 64-bit value to write to KR7.
-
-  @return The 64-bit value written to the KR7.
-
-**/
-UINT64
-EFIAPI
-AsmWriteKr7 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of Interval Timer Counter Register (ITC).
-
-  Reads and returns the current value of ITC.
-  This function is only available on Itanium processors.
-
-  @return The current value of ITC.
-
-**/
-UINT64
-EFIAPI
-AsmReadItc (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Interval Timer Vector Register (ITV).
-
-  Reads and returns the current value of ITV.
-  This function is only available on Itanium processors.
-
-  @return The current value of ITV.
-
-**/
-UINT64
-EFIAPI
-AsmReadItv (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Interval Timer Match Register (ITM).
-
-  Reads and returns the current value of ITM.
-  This function is only available on Itanium processors.
-
-  @return The current value of ITM.
-**/
-UINT64
-EFIAPI
-AsmReadItm (
-  VOID
-  );
-
-
-/**
-  Writes the current value of 64-bit Interval Timer Counter Register (ITC).
-
-  Writes the current value of ITC.  The 64-bit value written to the ITC is returned.
-  This function is only available on Itanium processors.
-
-  @param Value    The 64-bit value to write to ITC.
-
-  @return The 64-bit value written to the ITC.
-
-**/
-UINT64
-EFIAPI
-AsmWriteItc (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Interval Timer Match Register (ITM).
-
-  Writes the current value of ITM.  The 64-bit value written to the ITM is returned.
-  This function is only available on Itanium processors.
-
-  @param Value    The 64-bit value to write to ITM.
-
-  @return The 64-bit value written to the ITM.
-
-**/
-UINT64
-EFIAPI
-AsmWriteItm (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Interval Timer Vector Register (ITV).
-
-  Writes the current value of ITV.  The 64-bit value written to the ITV is returned.
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of ITV must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on Itanium processors.
-
-  @param Value    The 64-bit value to write to ITV.
-
-  @return The 64-bit value written to the ITV.
-
-**/
-UINT64
-EFIAPI
-AsmWriteItv (
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of Default Control Register (DCR).
-
-  Reads and returns the current value of DCR.  This function is only available on Itanium processors.
-
-  @return The current value of DCR.
-
-**/
-UINT64
-EFIAPI
-AsmReadDcr (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Interruption Vector Address Register (IVA).
-
-  Reads and returns the current value of IVA.  This function is only available on Itanium processors.
-
-  @return The current value of IVA.
-**/
-UINT64
-EFIAPI
-AsmReadIva (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Page Table Address Register (PTA).
-
-  Reads and returns the current value of PTA.  This function is only available on Itanium processors.
-
-  @return The current value of PTA.
-
-**/
-UINT64
-EFIAPI
-AsmReadPta (
-  VOID
-  );
-
-
-/**
-  Writes the current value of 64-bit Default Control Register (DCR).
-
-  Writes the current value of DCR.  The 64-bit value written to the DCR is returned.
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of DCR must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on Itanium processors.
-
-  @param Value    The 64-bit value to write to DCR.
-
-  @return The 64-bit value written to the DCR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteDcr (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Interruption Vector Address Register (IVA).
-
-  Writes the current value of IVA.  The 64-bit value written to the IVA is returned.
-  The size of vector table is 32 K bytes and is 32 K bytes aligned
-  the low 15 bits of Value is ignored when written.
-  This function is only available on Itanium processors.
-
-  @param Value    The 64-bit value to write to IVA.
-
-  @return The 64-bit value written to the IVA.
-
-**/
-UINT64
-EFIAPI
-AsmWriteIva (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Page Table Address Register (PTA).
-
-  Writes the current value of PTA.  The 64-bit value written to the PTA is returned.
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of DCR must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on Itanium processors.
-
-  @param Value    The 64-bit value to write to PTA.
-
-  @return The 64-bit value written to the PTA.
-**/
-UINT64
-EFIAPI
-AsmWritePta (
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of Local Interrupt ID Register (LID).
-
-  Reads and returns the current value of LID.  This function is only available on Itanium processors.
-
-  @return The current value of LID.
-
-**/
-UINT64
-EFIAPI
-AsmReadLid (
-  VOID
-  );
-
-
-/**
-  Reads the current value of External Interrupt Vector Register (IVR).
-
-  Reads and returns the current value of IVR.  This function is only available on Itanium processors.
-
-  @return The current value of IVR.
-
-**/
-UINT64
-EFIAPI
-AsmReadIvr (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Task Priority Register (TPR).
-
-  Reads and returns the current value of TPR.  This function is only available on Itanium processors.
-
-  @return The current value of TPR.
-
-**/
-UINT64
-EFIAPI
-AsmReadTpr (
-  VOID
-  );
-
-
-/**
-  Reads the current value of External Interrupt Request Register #0 (IRR0).
-
-  Reads and returns the current value of IRR0.  This function is only available on Itanium processors.
-
-  @return The current value of IRR0.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr0 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of External Interrupt Request Register #1 (IRR1).
-
-  Reads and returns the current value of IRR1.  This function is only available on Itanium processors.
-
-  @return The current value of IRR1.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr1 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of External Interrupt Request Register #2 (IRR2).
-
-  Reads and returns the current value of IRR2.  This function is only available on Itanium processors.
-
-  @return The current value of IRR2.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr2 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of External Interrupt Request Register #3 (IRR3).
-
-  Reads and returns the current value of IRR3.  This function is only available on Itanium processors.
-
-  @return The current value of IRR3.
-
-**/
-UINT64
-EFIAPI
-AsmReadIrr3 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Performance Monitor Vector Register (PMV).
-
-  Reads and returns the current value of PMV.  This function is only available on Itanium processors.
-
-  @return The current value of PMV.
-
-**/
-UINT64
-EFIAPI
-AsmReadPmv (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Corrected Machine Check Vector Register (CMCV).
-
-  Reads and returns the current value of CMCV.  This function is only available on Itanium processors.
-
-  @return The current value of CMCV.
-
-**/
-UINT64
-EFIAPI
-AsmReadCmcv (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Local Redirection Register #0 (LRR0).
-
-  Reads and returns the current value of LRR0.  This function is only available on Itanium processors.
-
-  @return The current value of LRR0.
-
-**/
-UINT64
-EFIAPI
-AsmReadLrr0 (
-  VOID
-  );
-
-
-/**
-  Reads the current value of Local Redirection Register #1 (LRR1).
-
-  Reads and returns the current value of LRR1.  This function is only available on Itanium processors.
-
-  @return The current value of LRR1.
-
-**/
-UINT64
-EFIAPI
-AsmReadLrr1 (
-  VOID
-  );
-
-
-/**
-  Writes the current value of 64-bit Page Local Interrupt ID Register (LID).
-
-  Writes the current value of LID.  The 64-bit value written to the LID is returned.
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of LID must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on Itanium processors.
-
-  @param Value    The 64-bit value to write to LID.
-
-  @return The 64-bit value written to the LID.
-
-**/
-UINT64
-EFIAPI
-AsmWriteLid (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Task Priority Register (TPR).
-
-  Writes the current value of TPR.  The 64-bit value written to the TPR is returned.
-  No parameter checking is performed on Value.  All bits of Value corresponding to
-  reserved fields of TPR must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on Itanium processors.
-
-  @param Value    The 64-bit value to write to TPR.
-
-  @return The 64-bit value written to the TPR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteTpr (
-  IN UINT64  Value
-  );
-
-
-/**
-  Performs a write operation on End OF External Interrupt Register (EOI).
-
-  Writes a value of 0 to the EOI Register.  This function is only available on Itanium processors.
+  Ensures that no later instruction will execute speculatively, until all prior
+  instructions have completed.
 
 **/
 VOID
 EFIAPI
-AsmWriteEoi (
+SpeculationBarrier (
   VOID
   );
 
+#if defined (MDE_CPU_X64) || defined (MDE_CPU_IA32)
 
 /**
-  Writes the current value of 64-bit Performance Monitor Vector Register (PMV).
+  The TDCALL instruction causes a VM exit to the Intel TDX module.  It is
+  used to call guest-side Intel TDX functions, either local or a TD exit
+  to the host VMM, as selected by Leaf.
 
-  Writes the current value of PMV.  The 64-bit value written to the PMV is returned.
-  No parameter checking is performed on Value.  All bits of Value corresponding
-  to reserved fields of PMV must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on Itanium processors.
+  @param[in]      Leaf        Leaf number of TDCALL instruction
+  @param[in]      Arg1        Arg1
+  @param[in]      Arg2        Arg2
+  @param[in]      Arg3        Arg3
+  @param[in,out]  Results  Returned result of the Leaf function
 
-  @param Value    The 64-bit value to write to PMV.
-
-  @return The 64-bit value written to the PMV.
-
+  @return 0               A successful call
+  @return Other           See individual leaf functions
 **/
-UINT64
+UINTN
 EFIAPI
-AsmWritePmv (
-  IN UINT64  Value
+TdCall (
+  IN UINT64    Leaf,
+  IN UINT64    Arg1,
+  IN UINT64    Arg2,
+  IN UINT64    Arg3,
+  IN OUT VOID  *Results
   );
 
-
 /**
-  Writes the current value of 64-bit Corrected Machine Check Vector Register (CMCV).
+  TDVMALL is a leaf function 0 for TDCALL. It helps invoke services from the
+  host VMM to pass/receive information.
 
-  Writes the current value of CMCV.  The 64-bit value written to the CMCV is returned.
-  No parameter checking is performed on Value.  All bits of Value corresponding
-  to reserved fields of CMCV must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on Itanium processors.
+  @param[in]     Leaf        Number of sub-functions
+  @param[in]     Arg1        Arg1
+  @param[in]     Arg2        Arg2
+  @param[in]     Arg3        Arg3
+  @param[in]     Arg4        Arg4
+  @param[in,out] Results     Returned result of the sub-function
 
-  @param Value    The 64-bit value to write to CMCV.
-
-  @return The 64-bit value written to the CMCV.
+  @return 0               A successful call
+  @return Other           See individual sub-functions
 
 **/
-UINT64
+UINTN
 EFIAPI
-AsmWriteCmcv (
-  IN UINT64  Value
+TdVmCall (
+  IN UINT64    Leaf,
+  IN UINT64    Arg1,
+  IN UINT64    Arg2,
+  IN UINT64    Arg3,
+  IN UINT64    Arg4,
+  IN OUT VOID  *Results
   );
 
-
 /**
-  Writes the current value of 64-bit Local Redirection Register #0 (LRR0).
+  Probe if TD is enabled.
 
-  Writes the current value of LRR0.  The 64-bit value written to the LRR0 is returned.
-  No parameter checking is performed on Value.  All bits of Value corresponding
-  to reserved fields of LRR0 must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on Itanium processors.
-
-  @param Value    The 64-bit value to write to LRR0.
-
-  @return The 64-bit value written to the LRR0.
-
+  @return TRUE    TD is enabled.
+  @return FALSE   TD is not enabled.
 **/
-UINT64
+BOOLEAN
 EFIAPI
-AsmWriteLrr0 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Local Redirection Register #1 (LRR1).
-
-  Writes the current value of LRR1.  The 64-bit value written to the LRR1 is returned.
-  No parameter checking is performed on Value.  All bits of Value corresponding
-  to reserved fields of LRR1 must be 0 or a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Value is valid, or the caller must
-  set up fault handlers to catch the faults.
-  This function is only available on Itanium processors.
-
-  @param Value    The 64-bit value to write to LRR1.
-
-  @return The 64-bit value written to the LRR1.
-
-**/
-UINT64
-EFIAPI
-AsmWriteLrr1 (
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of Instruction Breakpoint Register (IBR).
-
-  The Instruction Breakpoint Registers are used in pairs.  The even numbered
-  registers contain breakpoint addresses, and the odd numbered registers contain
-  breakpoint mask conditions.  At least four instruction registers pairs are implemented
-  on all processor models.   Implemented registers are contiguous starting with
-  register 0.  No parameter checking is performed on Index, and if the Index value
-  is beyond the implemented IBR register range, a Reserved Register/Field fault may
-  occur.  The caller must either guarantee that Index is valid, or the caller must
-  set up fault handlers to catch the faults.
-  This function is only available on Itanium processors.
-
-  @param Index    The 8-bit Instruction Breakpoint Register index to read.
-
-  @return The current value of Instruction Breakpoint Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadIbr (
-  IN  UINT8   Index
-  );
-
-
-/**
-  Reads the current value of Data Breakpoint Register (DBR).
-
-  The Data Breakpoint Registers are used in pairs.  The even numbered registers
-  contain breakpoint addresses, and odd numbered registers contain breakpoint
-  mask conditions.  At least four data registers pairs are implemented on all processor
-  models.  Implemented registers are contiguous starting with register 0.
-  No parameter checking is performed on Index.  If the Index value is beyond
-  the implemented DBR register range, a Reserved Register/Field fault may occur.
-  The caller must either guarantee that Index is valid, or the caller must set up
-  fault handlers to catch the faults.
-  This function is only available on Itanium processors.
-
-  @param Index    The 8-bit Data Breakpoint Register index to read.
-
-  @return The current value of Data Breakpoint Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadDbr (
-  IN  UINT8   Index
-  );
-
-
-/**
-  Reads the current value of Performance Monitor Configuration Register (PMC).
-
-  All processor implementations provide at least four performance counters
-  (PMC/PMD [4]...PMC/PMD [7] pairs), and four performance monitor counter overflow
-  status registers (PMC [0]... PMC [3]).  Processor implementations may provide
-  additional implementation-dependent PMC and PMD to increase the number of
-  'generic' performance counters (PMC/PMD pairs).  The remainder of PMC and PMD
-  register set is implementation dependent.  No parameter checking is performed
-  on Index.  If the Index value is beyond the implemented PMC register range,
-  zero value will be returned.
-  This function is only available on Itanium processors.
-
-  @param Index    The 8-bit Performance Monitor Configuration Register index to read.
-
-  @return   The current value of Performance Monitor Configuration Register
-            specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadPmc (
-  IN  UINT8   Index
-  );
-
-
-/**
-  Reads the current value of Performance Monitor Data Register (PMD).
-
-  All processor implementations provide at least 4 performance counters
-  (PMC/PMD [4]...PMC/PMD [7] pairs), and 4 performance monitor counter
-  overflow status registers (PMC [0]... PMC [3]).  Processor implementations may
-  provide additional implementation-dependent PMC and PMD to increase the number
-  of 'generic' performance counters (PMC/PMD pairs).  The remainder of PMC and PMD
-  register set is implementation dependent.  No parameter checking is performed
-  on Index.  If the Index value is beyond the implemented PMD register range,
-  zero value will be returned.
-  This function is only available on Itanium processors.
-
-  @param Index    The 8-bit Performance Monitor Data Register index to read.
-
-  @return The current value of Performance Monitor Data Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadPmd (
-  IN  UINT8   Index
-  );
-
-
-/**
-  Writes the current value of 64-bit Instruction Breakpoint Register (IBR).
-
-  Writes current value of Instruction Breakpoint Register specified by Index.
-  The Instruction Breakpoint Registers are used in pairs.  The even numbered
-  registers contain breakpoint addresses, and odd numbered registers contain
-  breakpoint mask conditions.  At least four instruction registers pairs are implemented
-  on all processor models.  Implemented registers are contiguous starting with
-  register 0.  No parameter checking is performed on Index.  If the Index value
-  is beyond the implemented IBR register range, a Reserved Register/Field fault may
-  occur.  The caller must either guarantee that Index is valid, or the caller must
-  set up fault handlers to catch the faults.
-  This function is only available on Itanium processors.
-
-  @param Index    The 8-bit Instruction Breakpoint Register index to write.
-  @param Value    The 64-bit value to write to IBR.
-
-  @return The 64-bit value written to the IBR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteIbr (
-  IN UINT8   Index,
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Data Breakpoint Register (DBR).
-
-  Writes current value of Data Breakpoint Register specified by Index.
-  The Data Breakpoint Registers are used in pairs.  The even numbered registers
-  contain breakpoint addresses, and odd numbered registers contain breakpoint
-  mask conditions.  At least four data registers pairs are implemented on all processor
-  models.  Implemented registers are contiguous starting with register 0.  No parameter
-  checking is performed on Index.  If the Index value is beyond the implemented
-  DBR register range, a Reserved Register/Field fault may occur.  The caller must
-  either guarantee that Index is valid, or the caller must set up fault handlers to
-  catch the faults.
-  This function is only available on Itanium processors.
-
-  @param Index    The 8-bit Data Breakpoint Register index to write.
-  @param Value    The 64-bit value to write to DBR.
-
-  @return The 64-bit value written to the DBR.
-
-**/
-UINT64
-EFIAPI
-AsmWriteDbr (
-  IN UINT8   Index,
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Performance Monitor Configuration Register (PMC).
-
-  Writes current value of Performance Monitor Configuration Register specified by Index.
-  All processor implementations provide at least four performance counters
-  (PMC/PMD [4]...PMC/PMD [7] pairs), and four performance monitor counter overflow status
-  registers (PMC [0]... PMC [3]).  Processor implementations may provide additional
-  implementation-dependent PMC and PMD to increase the number of 'generic' performance
-  counters (PMC/PMD pairs).  The remainder of PMC and PMD register set is implementation
-  dependent.  No parameter checking is performed on Index.  If the Index value is
-  beyond the implemented PMC register range, the write is ignored.
-  This function is only available on Itanium processors.
-
-  @param Index    The 8-bit Performance Monitor Configuration Register index to write.
-  @param Value    The 64-bit value to write to PMC.
-
-  @return The 64-bit value written to the PMC.
-
-**/
-UINT64
-EFIAPI
-AsmWritePmc (
-  IN UINT8   Index,
-  IN UINT64  Value
-  );
-
-
-/**
-  Writes the current value of 64-bit Performance Monitor Data Register (PMD).
-
-  Writes current value of Performance Monitor Data Register specified by Index.
-  All processor implementations provide at least four performance counters
-  (PMC/PMD [4]...PMC/PMD [7] pairs), and four performance monitor counter overflow
-  status registers (PMC [0]... PMC [3]).  Processor implementations may provide
-  additional implementation-dependent PMC and PMD to increase the number of 'generic'
-  performance counters (PMC/PMD pairs).  The remainder of PMC and PMD register set
-  is implementation dependent.  No parameter checking is performed on Index.  If the
-  Index value is beyond the implemented PMD register range, the write is ignored.
-  This function is only available on Itanium processors.
-
-  @param Index    The 8-bit Performance Monitor Data Register index to write.
-  @param Value    The 64-bit value to write to PMD.
-
-  @return The 64-bit value written to the PMD.
-
-**/
-UINT64
-EFIAPI
-AsmWritePmd (
-  IN UINT8   Index,
-  IN UINT64  Value
-  );
-
-
-/**
-  Reads the current value of 64-bit Global Pointer (GP).
-
-  Reads and returns the current value of GP.
-  This function is only available on Itanium processors.
-
-  @return The current value of GP.
-
-**/
-UINT64
-EFIAPI
-AsmReadGp (
+TdIsEnabled (
   VOID
   );
 
+#endif
+
+#if defined (MDE_CPU_X64)
+//
+// The page size for the PVALIDATE instruction
+//
+typedef enum {
+  PvalidatePageSize4K = 0,
+  PvalidatePageSize2MB,
+} PVALIDATE_PAGE_SIZE;
+
+//
+// PVALIDATE Return Code.
+//
+#define PVALIDATE_RET_SUCCESS        0
+#define PVALIDATE_RET_FAIL_INPUT     1
+#define PVALIDATE_RET_SIZE_MISMATCH  6
+
+//
+// The PVALIDATE instruction did not make any changes to the RMP entry.
+//
+#define PVALIDATE_RET_NO_RMPUPDATE  255
 
 /**
-  Write the current value of 64-bit Global Pointer (GP).
+ Execute a PVALIDATE instruction to validate or to rescinds validation of a guest
+ page's RMP entry.
 
-  Writes the current value of GP. The 64-bit value written to the GP is returned.
-  No parameter checking is performed on Value.
-  This function is only available on Itanium processors.
+ The instruction is available only when CPUID Fn8000_001F_EAX[SNP]=1.
 
-  @param Value  The 64-bit value to write to GP.
+ The function is available on X64.
 
-  @return The 64-bit value written to the GP.
+ @param[in]    PageSize         The page size to use.
+ @param[in]    Validate         If TRUE, validate the guest virtual address
+                                otherwise invalidate the guest virtual address.
+ @param[in]    Address          The guest virtual address.
 
+ @retval PVALIDATE_RET_SUCCESS        The PVALIDATE instruction succeeded, and
+                                      updated the RMP entry.
+ @retval PVALIDATE_RET_NO_RMPUPDATE   The PVALIDATE instruction succeeded, but
+                                      did not update the RMP entry.
+ @return                              Failure code from the PVALIDATE
+                                      instruction.
 **/
-UINT64
+UINT32
 EFIAPI
-AsmWriteGp (
-  IN UINT64  Value
+AsmPvalidate (
+  IN   PVALIDATE_PAGE_SIZE  PageSize,
+  IN   BOOLEAN              Validate,
+  IN   PHYSICAL_ADDRESS     Address
   );
 
+//
+// RDX settings for RMPADJUST
+//
+#define RMPADJUST_VMPL_MAX               3
+#define RMPADJUST_VMPL_MASK              0xFF
+#define RMPADJUST_VMPL_SHIFT             0
+#define RMPADJUST_PERMISSION_MASK_MASK   0xFF
+#define RMPADJUST_PERMISSION_MASK_SHIFT  8
+#define RMPADJUST_VMSA_PAGE_BIT          BIT16
 
 /**
-  Reads the current value of 64-bit Stack Pointer (SP).
+  Adjusts the permissions of an SEV-SNP guest page.
 
-  Reads and returns the current value of SP.
-  This function is only available on Itanium processors.
+  Executes a RMPADJUST instruction with the register state specified by Rax,
+  Rcx, and Rdx. Returns Eax. This function is only available on X64.
 
-  @return The current value of SP.
+  The instruction is available only when CPUID Fn8000_001F_EAX[SNP]=1.
 
+  @param[in]  Rax   The value to load into RAX before executing the RMPADJUST
+                    instruction.
+  @param[in]  Rcx   The value to load into RCX before executing the RMPADJUST
+                    instruction.
+  @param[in]  Rdx   The value to load into RDX before executing the RMPADJUST
+                    instruction.
+
+  @return     Eax
 **/
-UINT64
+UINT32
 EFIAPI
-AsmReadSp (
-  VOID
+AsmRmpAdjust (
+  IN      UINT64  Rax,
+  IN      UINT64  Rcx,
+  IN      UINT64  Rdx
   );
 
-
-///
-/// Valid Index value for AsmReadControlRegister().
-///
-#define IPF_CONTROL_REGISTER_DCR   0
-#define IPF_CONTROL_REGISTER_ITM   1
-#define IPF_CONTROL_REGISTER_IVA   2
-#define IPF_CONTROL_REGISTER_PTA   8
-#define IPF_CONTROL_REGISTER_IPSR  16
-#define IPF_CONTROL_REGISTER_ISR   17
-#define IPF_CONTROL_REGISTER_IIP   19
-#define IPF_CONTROL_REGISTER_IFA   20
-#define IPF_CONTROL_REGISTER_ITIR  21
-#define IPF_CONTROL_REGISTER_IIPA  22
-#define IPF_CONTROL_REGISTER_IFS   23
-#define IPF_CONTROL_REGISTER_IIM   24
-#define IPF_CONTROL_REGISTER_IHA   25
-#define IPF_CONTROL_REGISTER_LID   64
-#define IPF_CONTROL_REGISTER_IVR   65
-#define IPF_CONTROL_REGISTER_TPR   66
-#define IPF_CONTROL_REGISTER_EOI   67
-#define IPF_CONTROL_REGISTER_IRR0  68
-#define IPF_CONTROL_REGISTER_IRR1  69
-#define IPF_CONTROL_REGISTER_IRR2  70
-#define IPF_CONTROL_REGISTER_IRR3  71
-#define IPF_CONTROL_REGISTER_ITV   72
-#define IPF_CONTROL_REGISTER_PMV   73
-#define IPF_CONTROL_REGISTER_CMCV  74
-#define IPF_CONTROL_REGISTER_LRR0  80
-#define IPF_CONTROL_REGISTER_LRR1  81
-
-/**
-  Reads a 64-bit control register.
-
-  Reads and returns the control register specified by Index. The valid Index valued
-  are defined above in "Related Definitions".
-  If Index is invalid then 0xFFFFFFFFFFFFFFFF is returned.  This function is only
-  available on Itanium processors.
-
-  @param  Index                     The index of the control register to read.
-
-  @return The control register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadControlRegister (
-  IN UINT64  Index
-  );
-
-
-///
-/// Valid Index value for AsmReadApplicationRegister().
-///
-#define IPF_APPLICATION_REGISTER_K0        0
-#define IPF_APPLICATION_REGISTER_K1        1
-#define IPF_APPLICATION_REGISTER_K2        2
-#define IPF_APPLICATION_REGISTER_K3        3
-#define IPF_APPLICATION_REGISTER_K4        4
-#define IPF_APPLICATION_REGISTER_K5        5
-#define IPF_APPLICATION_REGISTER_K6        6
-#define IPF_APPLICATION_REGISTER_K7        7
-#define IPF_APPLICATION_REGISTER_RSC       16
-#define IPF_APPLICATION_REGISTER_BSP       17
-#define IPF_APPLICATION_REGISTER_BSPSTORE  18
-#define IPF_APPLICATION_REGISTER_RNAT      19
-#define IPF_APPLICATION_REGISTER_FCR       21
-#define IPF_APPLICATION_REGISTER_EFLAG     24
-#define IPF_APPLICATION_REGISTER_CSD       25
-#define IPF_APPLICATION_REGISTER_SSD       26
-#define IPF_APPLICATION_REGISTER_CFLG      27
-#define IPF_APPLICATION_REGISTER_FSR       28
-#define IPF_APPLICATION_REGISTER_FIR       29
-#define IPF_APPLICATION_REGISTER_FDR       30
-#define IPF_APPLICATION_REGISTER_CCV       32
-#define IPF_APPLICATION_REGISTER_UNAT      36
-#define IPF_APPLICATION_REGISTER_FPSR      40
-#define IPF_APPLICATION_REGISTER_ITC       44
-#define IPF_APPLICATION_REGISTER_PFS       64
-#define IPF_APPLICATION_REGISTER_LC        65
-#define IPF_APPLICATION_REGISTER_EC        66
-
-/**
-  Reads a 64-bit application register.
-
-  Reads and returns the application register specified by Index. The valid Index
-  valued are defined above in "Related Definitions".
-  If Index is invalid then 0xFFFFFFFFFFFFFFFF is returned.  This function is only
-  available on Itanium processors.
-
-  @param  Index                     The index of the application register to read.
-
-  @return The application register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadApplicationRegister (
-  IN UINT64  Index
-  );
-
-
-/**
-  Reads the current value of a Machine Specific Register (MSR).
-
-  Reads and returns the current value of the Machine Specific Register specified by Index.  No
-  parameter checking is performed on Index, and if the Index value is beyond the implemented MSR
-  register range, a Reserved Register/Field fault may occur.  The caller must either guarantee that
-  Index is valid, or the caller must set up fault handlers to catch the faults.  This function is
-  only available on Itanium processors.
-
-  @param  Index                     The 8-bit Machine Specific Register index to read.
-
-  @return The current value of the Machine Specific Register specified by Index.
-
-**/
-UINT64
-EFIAPI
-AsmReadMsr (
-  IN UINT8   Index
-  );
-
-
-/**
-  Writes the current value of a Machine Specific Register (MSR).
-
-  Writes Value to the Machine Specific Register specified by Index.  Value is returned.  No
-  parameter checking is performed on Index, and if the Index value is beyond the implemented MSR
-  register range, a Reserved Register/Field fault may occur.  The caller must either guarantee that
-  Index is valid, or the caller must set up fault handlers to catch the faults.  This function is
-  only available on Itanium processors.
-
-  @param  Index                     The 8-bit Machine Specific Register index to write.
-  @param  Value                     The 64-bit value to write to the Machine Specific Register.
-
-  @return The 64-bit value to write to the Machine Specific Register.
-
-**/
-UINT64
-EFIAPI
-AsmWriteMsr (
-  IN UINT8   Index,
-  IN UINT64  Value
-  );
-
-
-/**
-  Determines if the CPU is currently executing in virtual, physical, or mixed mode.
-
-  Determines the current execution mode of the CPU.
-  If the CPU is in virtual mode(PSR.RT=1, PSR.DT=1, PSR.IT=1), then 1 is returned.
-  If the CPU is in physical mode(PSR.RT=0, PSR.DT=0, PSR.IT=0), then 0 is returned.
-  If the CPU is not in physical mode or virtual mode, then it is in mixed mode,
-  and -1 is returned.
-  This function is only available on Itanium processors.
-
-  @retval  1  The CPU is in virtual mode.
-  @retval  0  The CPU is in physical mode.
-  @retval -1  The CPU is in mixed mode.
-
-**/
-INT64
-EFIAPI
-AsmCpuVirtual (
-  VOID
-  );
-
-
-/**
-  Makes a PAL procedure call.
-
-  This is a wrapper function to make a PAL procedure call.  Based on the Index
-  value this API will make static or stacked PAL call.  The following table
-  describes the usage of PAL Procedure Index Assignment. Architected procedures
-  may be designated as required or optional.  If a PAL procedure is specified
-  as optional, a unique return code of 0xFFFFFFFFFFFFFFFF is returned in the
-  Status field of the PAL_CALL_RETURN structure.
-  This indicates that the procedure is not present in this PAL implementation.
-  It is the caller's responsibility to check for this return code after calling
-  any optional PAL procedure.
-  No parameter checking is performed on the 5 input parameters, but there are
-  some common rules that the caller should follow when making a PAL call.  Any
-  address passed to PAL as buffers for return parameters must be 8-byte aligned.
-  Unaligned addresses may cause undefined results.  For those parameters defined
-  as reserved or some fields defined as reserved must be zero filled or the invalid
-  argument return value may be returned or undefined result may occur during the
-  execution of the procedure.  If the PalEntryPoint  does not point to a valid
-  PAL entry point then the system behavior is undefined.  This function is only
-  available on Itanium processors.
-
-  @param PalEntryPoint  The PAL procedure calls entry point.
-  @param Index          The PAL procedure Index number.
-  @param Arg2           The 2nd parameter for PAL procedure calls.
-  @param Arg3           The 3rd parameter for PAL procedure calls.
-  @param Arg4           The 4th parameter for PAL procedure calls.
-
-  @return structure returned from the PAL Call procedure, including the status and return value.
-
-**/
-PAL_CALL_RETURN
-EFIAPI
-AsmPalCall (
-  IN UINT64  PalEntryPoint,
-  IN UINT64  Index,
-  IN UINT64  Arg2,
-  IN UINT64  Arg3,
-  IN UINT64  Arg4
-  );
 #endif
 
 #if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
@@ -6459,21 +4977,21 @@
 ///
 typedef union {
   struct {
-    UINT32  CF:1;           ///< Carry Flag.
-    UINT32  Reserved_0:1;   ///< Reserved.
-    UINT32  PF:1;           ///< Parity Flag.
-    UINT32  Reserved_1:1;   ///< Reserved.
-    UINT32  AF:1;           ///< Auxiliary Carry Flag.
-    UINT32  Reserved_2:1;   ///< Reserved.
-    UINT32  ZF:1;           ///< Zero Flag.
-    UINT32  SF:1;           ///< Sign Flag.
-    UINT32  TF:1;           ///< Trap Flag.
-    UINT32  IF:1;           ///< Interrupt Enable Flag.
-    UINT32  DF:1;           ///< Direction Flag.
-    UINT32  OF:1;           ///< Overflow Flag.
-    UINT32  IOPL:2;         ///< I/O Privilege Level.
-    UINT32  NT:1;           ///< Nested Task.
-    UINT32  Reserved_3:1;   ///< Reserved.
+    UINT32    CF         : 1; ///< Carry Flag.
+    UINT32    Reserved_0 : 1; ///< Reserved.
+    UINT32    PF         : 1; ///< Parity Flag.
+    UINT32    Reserved_1 : 1; ///< Reserved.
+    UINT32    AF         : 1; ///< Auxiliary Carry Flag.
+    UINT32    Reserved_2 : 1; ///< Reserved.
+    UINT32    ZF         : 1; ///< Zero Flag.
+    UINT32    SF         : 1; ///< Sign Flag.
+    UINT32    TF         : 1; ///< Trap Flag.
+    UINT32    IF         : 1; ///< Interrupt Enable Flag.
+    UINT32    DF         : 1; ///< Direction Flag.
+    UINT32    OF         : 1; ///< Overflow Flag.
+    UINT32    IOPL       : 2; ///< I/O Privilege Level.
+    UINT32    NT         : 1; ///< Nested Task.
+    UINT32    Reserved_3 : 1; ///< Reserved.
   } Bits;
   UINT16    Uint16;
 } IA32_FLAGS16;
@@ -6485,30 +5003,30 @@
 ///
 typedef union {
   struct {
-    UINT32  CF:1;           ///< Carry Flag.
-    UINT32  Reserved_0:1;   ///< Reserved.
-    UINT32  PF:1;           ///< Parity Flag.
-    UINT32  Reserved_1:1;   ///< Reserved.
-    UINT32  AF:1;           ///< Auxiliary Carry Flag.
-    UINT32  Reserved_2:1;   ///< Reserved.
-    UINT32  ZF:1;           ///< Zero Flag.
-    UINT32  SF:1;           ///< Sign Flag.
-    UINT32  TF:1;           ///< Trap Flag.
-    UINT32  IF:1;           ///< Interrupt Enable Flag.
-    UINT32  DF:1;           ///< Direction Flag.
-    UINT32  OF:1;           ///< Overflow Flag.
-    UINT32  IOPL:2;         ///< I/O Privilege Level.
-    UINT32  NT:1;           ///< Nested Task.
-    UINT32  Reserved_3:1;   ///< Reserved.
-    UINT32  RF:1;           ///< Resume Flag.
-    UINT32  VM:1;           ///< Virtual 8086 Mode.
-    UINT32  AC:1;           ///< Alignment Check.
-    UINT32  VIF:1;          ///< Virtual Interrupt Flag.
-    UINT32  VIP:1;          ///< Virtual Interrupt Pending.
-    UINT32  ID:1;           ///< ID Flag.
-    UINT32  Reserved_4:10;  ///< Reserved.
+    UINT32    CF         : 1;  ///< Carry Flag.
+    UINT32    Reserved_0 : 1;  ///< Reserved.
+    UINT32    PF         : 1;  ///< Parity Flag.
+    UINT32    Reserved_1 : 1;  ///< Reserved.
+    UINT32    AF         : 1;  ///< Auxiliary Carry Flag.
+    UINT32    Reserved_2 : 1;  ///< Reserved.
+    UINT32    ZF         : 1;  ///< Zero Flag.
+    UINT32    SF         : 1;  ///< Sign Flag.
+    UINT32    TF         : 1;  ///< Trap Flag.
+    UINT32    IF         : 1;  ///< Interrupt Enable Flag.
+    UINT32    DF         : 1;  ///< Direction Flag.
+    UINT32    OF         : 1;  ///< Overflow Flag.
+    UINT32    IOPL       : 2;  ///< I/O Privilege Level.
+    UINT32    NT         : 1;  ///< Nested Task.
+    UINT32    Reserved_3 : 1;  ///< Reserved.
+    UINT32    RF         : 1;  ///< Resume Flag.
+    UINT32    VM         : 1;  ///< Virtual 8086 Mode.
+    UINT32    AC         : 1;  ///< Alignment Check.
+    UINT32    VIF        : 1;  ///< Virtual Interrupt Flag.
+    UINT32    VIP        : 1;  ///< Virtual Interrupt Pending.
+    UINT32    ID         : 1;  ///< ID Flag.
+    UINT32    Reserved_4 : 10; ///< Reserved.
   } Bits;
-  UINTN     UintN;
+  UINTN    UintN;
 } IA32_EFLAGS32;
 
 ///
@@ -6518,22 +5036,22 @@
 ///
 typedef union {
   struct {
-    UINT32  PE:1;           ///< Protection Enable.
-    UINT32  MP:1;           ///< Monitor Coprocessor.
-    UINT32  EM:1;           ///< Emulation.
-    UINT32  TS:1;           ///< Task Switched.
-    UINT32  ET:1;           ///< Extension Type.
-    UINT32  NE:1;           ///< Numeric Error.
-    UINT32  Reserved_0:10;  ///< Reserved.
-    UINT32  WP:1;           ///< Write Protect.
-    UINT32  Reserved_1:1;   ///< Reserved.
-    UINT32  AM:1;           ///< Alignment Mask.
-    UINT32  Reserved_2:10;  ///< Reserved.
-    UINT32  NW:1;           ///< Mot Write-through.
-    UINT32  CD:1;           ///< Cache Disable.
-    UINT32  PG:1;           ///< Paging.
+    UINT32    PE         : 1;  ///< Protection Enable.
+    UINT32    MP         : 1;  ///< Monitor Coprocessor.
+    UINT32    EM         : 1;  ///< Emulation.
+    UINT32    TS         : 1;  ///< Task Switched.
+    UINT32    ET         : 1;  ///< Extension Type.
+    UINT32    NE         : 1;  ///< Numeric Error.
+    UINT32    Reserved_0 : 10; ///< Reserved.
+    UINT32    WP         : 1;  ///< Write Protect.
+    UINT32    Reserved_1 : 1;  ///< Reserved.
+    UINT32    AM         : 1;  ///< Alignment Mask.
+    UINT32    Reserved_2 : 10; ///< Reserved.
+    UINT32    NW         : 1;  ///< Mot Write-through.
+    UINT32    CD         : 1;  ///< Cache Disable.
+    UINT32    PG         : 1;  ///< Paging.
   } Bits;
-  UINTN     UintN;
+  UINTN    UintN;
 } IA32_CR0;
 
 ///
@@ -6543,26 +5061,36 @@
 ///
 typedef union {
   struct {
-    UINT32  VME:1;          ///< Virtual-8086 Mode Extensions.
-    UINT32  PVI:1;          ///< Protected-Mode Virtual Interrupts.
-    UINT32  TSD:1;          ///< Time Stamp Disable.
-    UINT32  DE:1;           ///< Debugging Extensions.
-    UINT32  PSE:1;          ///< Page Size Extensions.
-    UINT32  PAE:1;          ///< Physical Address Extension.
-    UINT32  MCE:1;          ///< Machine Check Enable.
-    UINT32  PGE:1;          ///< Page Global Enable.
-    UINT32  PCE:1;          ///< Performance Monitoring Counter
-                            ///< Enable.
-    UINT32  OSFXSR:1;       ///< Operating System Support for
-                            ///< FXSAVE and FXRSTOR instructions
-    UINT32  OSXMMEXCPT:1;   ///< Operating System Support for
-                            ///< Unmasked SIMD Floating Point
-                            ///< Exceptions.
-    UINT32  Reserved_0:2;   ///< Reserved.
-    UINT32  VMXE:1;         ///< VMX Enable
-    UINT32  Reserved_1:18;  ///< Reserved.
+    UINT32    VME        : 1; ///< Virtual-8086 Mode Extensions.
+    UINT32    PVI        : 1; ///< Protected-Mode Virtual Interrupts.
+    UINT32    TSD        : 1; ///< Time Stamp Disable.
+    UINT32    DE         : 1; ///< Debugging Extensions.
+    UINT32    PSE        : 1; ///< Page Size Extensions.
+    UINT32    PAE        : 1; ///< Physical Address Extension.
+    UINT32    MCE        : 1; ///< Machine Check Enable.
+    UINT32    PGE        : 1; ///< Page Global Enable.
+    UINT32    PCE        : 1; ///< Performance Monitoring Counter
+                              ///< Enable.
+    UINT32    OSFXSR     : 1; ///< Operating System Support for
+                              ///< FXSAVE and FXRSTOR instructions
+    UINT32    OSXMMEXCPT : 1; ///< Operating System Support for
+                              ///< Unmasked SIMD Floating Point
+                              ///< Exceptions.
+    UINT32    UMIP       : 1; ///< User-Mode Instruction Prevention.
+    UINT32    LA57       : 1; ///< Linear Address 57bit.
+    UINT32    VMXE       : 1; ///< VMX Enable.
+    UINT32    SMXE       : 1; ///< SMX Enable.
+    UINT32    Reserved_3 : 1; ///< Reserved.
+    UINT32    FSGSBASE   : 1; ///< FSGSBASE Enable.
+    UINT32    PCIDE      : 1; ///< PCID Enable.
+    UINT32    OSXSAVE    : 1; ///< XSAVE and Processor Extended States Enable.
+    UINT32    Reserved_4 : 1; ///< Reserved.
+    UINT32    SMEP       : 1; ///< SMEP Enable.
+    UINT32    SMAP       : 1; ///< SMAP Enable.
+    UINT32    PKE        : 1; ///< Protection-Key Enable.
+    UINT32    Reserved_5 : 9; ///< Reserved.
   } Bits;
-  UINTN     UintN;
+  UINTN    UintN;
 } IA32_CR4;
 
 ///
@@ -6570,32 +5098,32 @@
 ///
 typedef union {
   struct {
-    UINT32  LimitLow:16;
-    UINT32  BaseLow:16;
-    UINT32  BaseMid:8;
-    UINT32  Type:4;
-    UINT32  S:1;
-    UINT32  DPL:2;
-    UINT32  P:1;
-    UINT32  LimitHigh:4;
-    UINT32  AVL:1;
-    UINT32  L:1;
-    UINT32  DB:1;
-    UINT32  G:1;
-    UINT32  BaseHigh:8;
+    UINT32    LimitLow  : 16;
+    UINT32    BaseLow   : 16;
+    UINT32    BaseMid   : 8;
+    UINT32    Type      : 4;
+    UINT32    S         : 1;
+    UINT32    DPL       : 2;
+    UINT32    P         : 1;
+    UINT32    LimitHigh : 4;
+    UINT32    AVL       : 1;
+    UINT32    L         : 1;
+    UINT32    DB        : 1;
+    UINT32    G         : 1;
+    UINT32    BaseHigh  : 8;
   } Bits;
-  UINT64  Uint64;
+  UINT64    Uint64;
 } IA32_SEGMENT_DESCRIPTOR;
 
 ///
 /// Byte packed structure for an IDTR, GDTR, LDTR descriptor.
 ///
-#pragma pack (1)
+  #pragma pack (1)
 typedef struct {
-  UINT16  Limit;
-  UINTN   Base;
+  UINT16    Limit;
+  UINTN     Base;
 } IA32_DESCRIPTOR;
-#pragma pack ()
+  #pragma pack ()
 
 #define IA32_IDT_GATE_TYPE_TASK          0x85
 #define IA32_IDT_GATE_TYPE_INTERRUPT_16  0x86
@@ -6603,132 +5131,254 @@
 #define IA32_IDT_GATE_TYPE_INTERRUPT_32  0x8E
 #define IA32_IDT_GATE_TYPE_TRAP_32       0x8F
 
+#define IA32_GDT_TYPE_TSS   0x9
+#define IA32_GDT_ALIGNMENT  8
 
-#if defined (MDE_CPU_IA32)
+  #if defined (MDE_CPU_IA32)
 ///
 /// Byte packed structure for an IA-32 Interrupt Gate Descriptor.
 ///
 typedef union {
   struct {
-    UINT32  OffsetLow:16;   ///< Offset bits 15..0.
-    UINT32  Selector:16;    ///< Selector.
-    UINT32  Reserved_0:8;   ///< Reserved.
-    UINT32  GateType:8;     ///< Gate Type.  See #defines above.
-    UINT32  OffsetHigh:16;  ///< Offset bits 31..16.
+    UINT32    OffsetLow  : 16; ///< Offset bits 15..0.
+    UINT32    Selector   : 16; ///< Selector.
+    UINT32    Reserved_0 : 8;  ///< Reserved.
+    UINT32    GateType   : 8;  ///< Gate Type.  See #defines above.
+    UINT32    OffsetHigh : 16; ///< Offset bits 31..16.
   } Bits;
-  UINT64  Uint64;
+  UINT64    Uint64;
 } IA32_IDT_GATE_DESCRIPTOR;
 
-#endif
+    #pragma pack (1)
+//
+// IA32 Task-State Segment Definition
+//
+typedef struct {
+  UINT16    PreviousTaskLink;
+  UINT16    Reserved_2;
+  UINT32    ESP0;
+  UINT16    SS0;
+  UINT16    Reserved_10;
+  UINT32    ESP1;
+  UINT16    SS1;
+  UINT16    Reserved_18;
+  UINT32    ESP2;
+  UINT16    SS2;
+  UINT16    Reserved_26;
+  UINT32    CR3;
+  UINT32    EIP;
+  UINT32    EFLAGS;
+  UINT32    EAX;
+  UINT32    ECX;
+  UINT32    EDX;
+  UINT32    EBX;
+  UINT32    ESP;
+  UINT32    EBP;
+  UINT32    ESI;
+  UINT32    EDI;
+  UINT16    ES;
+  UINT16    Reserved_74;
+  UINT16    CS;
+  UINT16    Reserved_78;
+  UINT16    SS;
+  UINT16    Reserved_82;
+  UINT16    DS;
+  UINT16    Reserved_86;
+  UINT16    FS;
+  UINT16    Reserved_90;
+  UINT16    GS;
+  UINT16    Reserved_94;
+  UINT16    LDTSegmentSelector;
+  UINT16    Reserved_98;
+  UINT16    T;
+  UINT16    IOMapBaseAddress;
+} IA32_TASK_STATE_SEGMENT;
 
-#if defined (MDE_CPU_X64)
+typedef union {
+  struct {
+    UINT32    LimitLow    : 16; ///< Segment Limit 15..00
+    UINT32    BaseLow     : 16; ///< Base Address  15..00
+    UINT32    BaseMid     : 8;  ///< Base Address  23..16
+    UINT32    Type        : 4;  ///< Type (1 0 B 1)
+    UINT32    Reserved_43 : 1;  ///< 0
+    UINT32    DPL         : 2;  ///< Descriptor Privilege Level
+    UINT32    P           : 1;  ///< Segment Present
+    UINT32    LimitHigh   : 4;  ///< Segment Limit 19..16
+    UINT32    AVL         : 1;  ///< Available for use by system software
+    UINT32    Reserved_52 : 2;  ///< 0 0
+    UINT32    G           : 1;  ///< Granularity
+    UINT32    BaseHigh    : 8;  ///< Base Address 31..24
+  } Bits;
+  UINT64    Uint64;
+} IA32_TSS_DESCRIPTOR;
+    #pragma pack ()
+
+  #endif // defined (MDE_CPU_IA32)
+
+  #if defined (MDE_CPU_X64)
 ///
 /// Byte packed structure for an x64 Interrupt Gate Descriptor.
 ///
 typedef union {
   struct {
-    UINT32  OffsetLow:16;   ///< Offset bits 15..0.
-    UINT32  Selector:16;    ///< Selector.
-    UINT32  Reserved_0:8;   ///< Reserved.
-    UINT32  GateType:8;     ///< Gate Type.  See #defines above.
-    UINT32  OffsetHigh:16;  ///< Offset bits 31..16.
-    UINT32  OffsetUpper:32; ///< Offset bits 63..32.
-    UINT32  Reserved_1:32;  ///< Reserved.
+    UINT32    OffsetLow   : 16; ///< Offset bits 15..0.
+    UINT32    Selector    : 16; ///< Selector.
+    UINT32    Reserved_0  : 8;  ///< Reserved.
+    UINT32    GateType    : 8;  ///< Gate Type.  See #defines above.
+    UINT32    OffsetHigh  : 16; ///< Offset bits 31..16.
+    UINT32    OffsetUpper : 32; ///< Offset bits 63..32.
+    UINT32    Reserved_1  : 32; ///< Reserved.
   } Bits;
   struct {
-    UINT64  Uint64;
-    UINT64  Uint64_1;
+    UINT64    Uint64;
+    UINT64    Uint64_1;
   } Uint128;
 } IA32_IDT_GATE_DESCRIPTOR;
 
-#endif
+    #pragma pack (1)
+//
+// IA32 Task-State Segment Definition
+//
+typedef struct {
+  UINT32    Reserved_0;
+  UINT64    RSP0;
+  UINT64    RSP1;
+  UINT64    RSP2;
+  UINT64    Reserved_28;
+  UINT64    IST[7];
+  UINT64    Reserved_92;
+  UINT16    Reserved_100;
+  UINT16    IOMapBaseAddress;
+} IA32_TASK_STATE_SEGMENT;
+
+typedef union {
+  struct {
+    UINT32    LimitLow    : 16; ///< Segment Limit 15..00
+    UINT32    BaseLow     : 16; ///< Base Address  15..00
+    UINT32    BaseMidl    : 8;  ///< Base Address  23..16
+    UINT32    Type        : 4;  ///< Type (1 0 B 1)
+    UINT32    Reserved_43 : 1;  ///< 0
+    UINT32    DPL         : 2;  ///< Descriptor Privilege Level
+    UINT32    P           : 1;  ///< Segment Present
+    UINT32    LimitHigh   : 4;  ///< Segment Limit 19..16
+    UINT32    AVL         : 1;  ///< Available for use by system software
+    UINT32    Reserved_52 : 2;  ///< 0 0
+    UINT32    G           : 1;  ///< Granularity
+    UINT32    BaseMidh    : 8;  ///< Base Address  31..24
+    UINT32    BaseHigh    : 32; ///< Base Address  63..32
+    UINT32    Reserved_96 : 32; ///< Reserved
+  } Bits;
+  struct {
+    UINT64    Uint64;
+    UINT64    Uint64_1;
+  } Uint128;
+} IA32_TSS_DESCRIPTOR;
+    #pragma pack ()
+
+  #endif // defined (MDE_CPU_X64)
 
 ///
 /// Byte packed structure for an FP/SSE/SSE2 context.
 ///
 typedef struct {
-  UINT8  Buffer[512];
+  UINT8    Buffer[512];
 } IA32_FX_BUFFER;
 
 ///
 /// Structures for the 16-bit real mode thunks.
 ///
 typedef struct {
-  UINT32                            Reserved1;
-  UINT32                            Reserved2;
-  UINT32                            Reserved3;
-  UINT32                            Reserved4;
-  UINT8                             BL;
-  UINT8                             BH;
-  UINT16                            Reserved5;
-  UINT8                             DL;
-  UINT8                             DH;
-  UINT16                            Reserved6;
-  UINT8                             CL;
-  UINT8                             CH;
-  UINT16                            Reserved7;
-  UINT8                             AL;
-  UINT8                             AH;
-  UINT16                            Reserved8;
+  UINT32    Reserved1;
+  UINT32    Reserved2;
+  UINT32    Reserved3;
+  UINT32    Reserved4;
+  UINT8     BL;
+  UINT8     BH;
+  UINT16    Reserved5;
+  UINT8     DL;
+  UINT8     DH;
+  UINT16    Reserved6;
+  UINT8     CL;
+  UINT8     CH;
+  UINT16    Reserved7;
+  UINT8     AL;
+  UINT8     AH;
+  UINT16    Reserved8;
 } IA32_BYTE_REGS;
 
 typedef struct {
-  UINT16                            DI;
-  UINT16                            Reserved1;
-  UINT16                            SI;
-  UINT16                            Reserved2;
-  UINT16                            BP;
-  UINT16                            Reserved3;
-  UINT16                            SP;
-  UINT16                            Reserved4;
-  UINT16                            BX;
-  UINT16                            Reserved5;
-  UINT16                            DX;
-  UINT16                            Reserved6;
-  UINT16                            CX;
-  UINT16                            Reserved7;
-  UINT16                            AX;
-  UINT16                            Reserved8;
+  UINT16    DI;
+  UINT16    Reserved1;
+  UINT16    SI;
+  UINT16    Reserved2;
+  UINT16    BP;
+  UINT16    Reserved3;
+  UINT16    SP;
+  UINT16    Reserved4;
+  UINT16    BX;
+  UINT16    Reserved5;
+  UINT16    DX;
+  UINT16    Reserved6;
+  UINT16    CX;
+  UINT16    Reserved7;
+  UINT16    AX;
+  UINT16    Reserved8;
 } IA32_WORD_REGS;
 
 typedef struct {
-  UINT32                            EDI;
-  UINT32                            ESI;
-  UINT32                            EBP;
-  UINT32                            ESP;
-  UINT32                            EBX;
-  UINT32                            EDX;
-  UINT32                            ECX;
-  UINT32                            EAX;
-  UINT16                            DS;
-  UINT16                            ES;
-  UINT16                            FS;
-  UINT16                            GS;
-  IA32_EFLAGS32                     EFLAGS;
-  UINT32                            Eip;
-  UINT16                            CS;
-  UINT16                            SS;
+  UINT32           EDI;
+  UINT32           ESI;
+  UINT32           EBP;
+  UINT32           ESP;
+  UINT32           EBX;
+  UINT32           EDX;
+  UINT32           ECX;
+  UINT32           EAX;
+  UINT16           DS;
+  UINT16           ES;
+  UINT16           FS;
+  UINT16           GS;
+  IA32_EFLAGS32    EFLAGS;
+  UINT32           Eip;
+  UINT16           CS;
+  UINT16           SS;
 } IA32_DWORD_REGS;
 
 typedef union {
-  IA32_DWORD_REGS                   E;
-  IA32_WORD_REGS                    X;
-  IA32_BYTE_REGS                    H;
+  IA32_DWORD_REGS    E;
+  IA32_WORD_REGS     X;
+  IA32_BYTE_REGS     H;
 } IA32_REGISTER_SET;
 
 ///
 /// Byte packed structure for an 16-bit real mode thunks.
 ///
 typedef struct {
-  IA32_REGISTER_SET                 *RealModeState;
-  VOID                              *RealModeBuffer;
-  UINT32                            RealModeBufferSize;
-  UINT32                            ThunkAttributes;
+  IA32_REGISTER_SET    *RealModeState;
+  VOID                 *RealModeBuffer;
+  UINT32               RealModeBufferSize;
+  UINT32               ThunkAttributes;
 } THUNK_CONTEXT;
 
-#define THUNK_ATTRIBUTE_BIG_REAL_MODE             0x00000001
-#define THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15   0x00000002
-#define THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL 0x00000004
+#define THUNK_ATTRIBUTE_BIG_REAL_MODE              0x00000001
+#define THUNK_ATTRIBUTE_DISABLE_A20_MASK_INT_15    0x00000002
+#define THUNK_ATTRIBUTE_DISABLE_A20_MASK_KBD_CTRL  0x00000004
+
+///
+/// Type definition for representing labels in NASM source code that allow for
+/// the patching of immediate operands of IA32 and X64 instructions.
+///
+/// While the type is technically defined as a function type (note: not a
+/// pointer-to-function type), such labels in NASM source code never stand for
+/// actual functions, and identifiers declared with this function type should
+/// never be called. This is also why the EFIAPI calling convention specifier
+/// is missing from the typedef, and why the typedef does not follow the usual
+/// edk2 coding style for function (or pointer-to-function) typedefs. The VOID
+/// return type and the VOID argument list are merely artifacts.
+///
+typedef VOID (X86_ASSEMBLY_PATCH_LABEL) (
+  VOID
+  );
 
 /**
   Retrieves CPUID information.
@@ -6758,14 +5408,13 @@
 UINT32
 EFIAPI
 AsmCpuid (
-  IN      UINT32                    Index,
-  OUT     UINT32                    *Eax,  OPTIONAL
-  OUT     UINT32                    *Ebx,  OPTIONAL
-  OUT     UINT32                    *Ecx,  OPTIONAL
-  OUT     UINT32                    *Edx   OPTIONAL
+  IN      UINT32  Index,
+  OUT     UINT32  *Eax   OPTIONAL,
+  OUT     UINT32  *Ebx   OPTIONAL,
+  OUT     UINT32  *Ecx   OPTIONAL,
+  OUT     UINT32  *Edx   OPTIONAL
   );
 
-
 /**
   Retrieves CPUID information using an extended leaf identifier.
 
@@ -6801,15 +5450,14 @@
 UINT32
 EFIAPI
 AsmCpuidEx (
-  IN      UINT32                    Index,
-  IN      UINT32                    SubIndex,
-  OUT     UINT32                    *Eax,  OPTIONAL
-  OUT     UINT32                    *Ebx,  OPTIONAL
-  OUT     UINT32                    *Ecx,  OPTIONAL
-  OUT     UINT32                    *Edx   OPTIONAL
+  IN      UINT32  Index,
+  IN      UINT32  SubIndex,
+  OUT     UINT32  *Eax   OPTIONAL,
+  OUT     UINT32  *Ebx   OPTIONAL,
+  OUT     UINT32  *Ecx   OPTIONAL,
+  OUT     UINT32  *Edx   OPTIONAL
   );
 
-
 /**
   Set CD bit and clear NW bit of CR0 followed by a WBINVD.
 
@@ -6823,7 +5471,6 @@
   VOID
   );
 
-
 /**
   Perform a WBINVD and clear both the CD and NW bits of CR0.
 
@@ -6837,7 +5484,6 @@
   VOID
   );
 
-
 /**
   Returns the lower 32-bits of a Machine Specific Register(MSR).
 
@@ -6855,10 +5501,9 @@
 UINT32
 EFIAPI
 AsmReadMsr32 (
-  IN      UINT32                    Index
+  IN      UINT32  Index
   );
 
-
 /**
   Writes a 32-bit value to a Machine Specific Register(MSR), and returns the value.
   The upper 32-bits of the MSR are set to zero.
@@ -6879,11 +5524,10 @@
 UINT32
 EFIAPI
 AsmWriteMsr32 (
-  IN      UINT32                    Index,
-  IN      UINT32                    Value
+  IN      UINT32  Index,
+  IN      UINT32  Value
   );
 
-
 /**
   Reads a 64-bit MSR, performs a bitwise OR on the lower 32-bits, and
   writes the result back to the 64-bit MSR.
@@ -6906,11 +5550,10 @@
 UINT32
 EFIAPI
 AsmMsrOr32 (
-  IN      UINT32                    Index,
-  IN      UINT32                    OrData
+  IN      UINT32  Index,
+  IN      UINT32  OrData
   );
 
-
 /**
   Reads a 64-bit MSR, performs a bitwise AND on the lower 32-bits, and writes
   the result back to the 64-bit MSR.
@@ -6933,11 +5576,10 @@
 UINT32
 EFIAPI
 AsmMsrAnd32 (
-  IN      UINT32                    Index,
-  IN      UINT32                    AndData
+  IN      UINT32  Index,
+  IN      UINT32  AndData
   );
 
-
 /**
   Reads a 64-bit MSR, performs a bitwise AND followed by a bitwise OR
   on the lower 32-bits, and writes the result back to the 64-bit MSR.
@@ -6963,12 +5605,11 @@
 UINT32
 EFIAPI
 AsmMsrAndThenOr32 (
-  IN      UINT32                    Index,
-  IN      UINT32                    AndData,
-  IN      UINT32                    OrData
+  IN      UINT32  Index,
+  IN      UINT32  AndData,
+  IN      UINT32  OrData
   );
 
-
 /**
   Reads a bit field of an MSR.
 
@@ -6994,12 +5635,11 @@
 UINT32
 EFIAPI
 AsmMsrBitFieldRead32 (
-  IN      UINT32                    Index,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
+  IN      UINT32  Index,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit
   );
 
-
 /**
   Writes a bit field to an MSR.
 
@@ -7028,13 +5668,12 @@
 UINT32
 EFIAPI
 AsmMsrBitFieldWrite32 (
-  IN      UINT32                    Index,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    Value
+  IN      UINT32  Index,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT32  Value
   );
 
-
 /**
   Reads a bit field in a 64-bit MSR, performs a bitwise OR, and writes the
   result back to the bit field in the 64-bit MSR.
@@ -7065,13 +5704,12 @@
 UINT32
 EFIAPI
 AsmMsrBitFieldOr32 (
-  IN      UINT32                    Index,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    OrData
+  IN      UINT32  Index,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT32  OrData
   );
 
-
 /**
   Reads a bit field in a 64-bit MSR, performs a bitwise AND, and writes the
   result back to the bit field in the 64-bit MSR.
@@ -7102,13 +5740,12 @@
 UINT32
 EFIAPI
 AsmMsrBitFieldAnd32 (
-  IN      UINT32                    Index,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    AndData
+  IN      UINT32  Index,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT32  AndData
   );
 
-
 /**
   Reads a bit field in a 64-bit MSR, performs a bitwise AND followed by a
   bitwise OR, and writes the result back to the bit field in the
@@ -7143,14 +5780,13 @@
 UINT32
 EFIAPI
 AsmMsrBitFieldAndThenOr32 (
-  IN      UINT32                    Index,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT32                    AndData,
-  IN      UINT32                    OrData
+  IN      UINT32  Index,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT32  AndData,
+  IN      UINT32  OrData
   );
 
-
 /**
   Returns a 64-bit Machine Specific Register(MSR).
 
@@ -7168,10 +5804,9 @@
 UINT64
 EFIAPI
 AsmReadMsr64 (
-  IN      UINT32                    Index
+  IN      UINT32  Index
   );
 
-
 /**
   Writes a 64-bit value to a Machine Specific Register(MSR), and returns the
   value.
@@ -7192,11 +5827,10 @@
 UINT64
 EFIAPI
 AsmWriteMsr64 (
-  IN      UINT32                    Index,
-  IN      UINT64                    Value
+  IN      UINT32  Index,
+  IN      UINT64  Value
   );
 
-
 /**
   Reads a 64-bit MSR, performs a bitwise OR, and writes the result
   back to the 64-bit MSR.
@@ -7218,11 +5852,10 @@
 UINT64
 EFIAPI
 AsmMsrOr64 (
-  IN      UINT32                    Index,
-  IN      UINT64                    OrData
+  IN      UINT32  Index,
+  IN      UINT64  OrData
   );
 
-
 /**
   Reads a 64-bit MSR, performs a bitwise AND, and writes the result back to the
   64-bit MSR.
@@ -7244,11 +5877,10 @@
 UINT64
 EFIAPI
 AsmMsrAnd64 (
-  IN      UINT32                    Index,
-  IN      UINT64                    AndData
+  IN      UINT32  Index,
+  IN      UINT64  AndData
   );
 
-
 /**
   Reads a 64-bit MSR, performs a bitwise AND followed by a bitwise
   OR, and writes the result back to the 64-bit MSR.
@@ -7273,12 +5905,11 @@
 UINT64
 EFIAPI
 AsmMsrAndThenOr64 (
-  IN      UINT32                    Index,
-  IN      UINT64                    AndData,
-  IN      UINT64                    OrData
+  IN      UINT32  Index,
+  IN      UINT64  AndData,
+  IN      UINT64  OrData
   );
 
-
 /**
   Reads a bit field of an MSR.
 
@@ -7304,12 +5935,11 @@
 UINT64
 EFIAPI
 AsmMsrBitFieldRead64 (
-  IN      UINT32                    Index,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit
+  IN      UINT32  Index,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit
   );
 
-
 /**
   Writes a bit field to an MSR.
 
@@ -7337,13 +5967,12 @@
 UINT64
 EFIAPI
 AsmMsrBitFieldWrite64 (
-  IN      UINT32                    Index,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    Value
+  IN      UINT32  Index,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT64  Value
   );
 
-
 /**
   Reads a bit field in a 64-bit MSR, performs a bitwise OR, and
   writes the result back to the bit field in the 64-bit MSR.
@@ -7374,13 +6003,12 @@
 UINT64
 EFIAPI
 AsmMsrBitFieldOr64 (
-  IN      UINT32                    Index,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    OrData
+  IN      UINT32  Index,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT64  OrData
   );
 
-
 /**
   Reads a bit field in a 64-bit MSR, performs a bitwise AND, and writes the
   result back to the bit field in the 64-bit MSR.
@@ -7411,13 +6039,12 @@
 UINT64
 EFIAPI
 AsmMsrBitFieldAnd64 (
-  IN      UINT32                    Index,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    AndData
+  IN      UINT32  Index,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT64  AndData
   );
 
-
 /**
   Reads a bit field in a 64-bit MSR, performs a bitwise AND followed by a
   bitwise OR, and writes the result back to the bit field in the
@@ -7451,14 +6078,13 @@
 UINT64
 EFIAPI
 AsmMsrBitFieldAndThenOr64 (
-  IN      UINT32                    Index,
-  IN      UINTN                     StartBit,
-  IN      UINTN                     EndBit,
-  IN      UINT64                    AndData,
-  IN      UINT64                    OrData
+  IN      UINT32  Index,
+  IN      UINTN   StartBit,
+  IN      UINTN   EndBit,
+  IN      UINT64  AndData,
+  IN      UINT64  OrData
   );
 
-
 /**
   Reads the current value of the EFLAGS register.
 
@@ -7475,7 +6101,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of the Control Register 0 (CR0).
 
@@ -7492,7 +6117,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of the Control Register 2 (CR2).
 
@@ -7509,7 +6133,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of the Control Register 3 (CR3).
 
@@ -7526,7 +6149,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of the Control Register 4 (CR4).
 
@@ -7543,7 +6165,6 @@
   VOID
   );
 
-
 /**
   Writes a value to Control Register 0 (CR0).
 
@@ -7561,7 +6182,6 @@
   UINTN  Cr0
   );
 
-
 /**
   Writes a value to Control Register 2 (CR2).
 
@@ -7579,7 +6199,6 @@
   UINTN  Cr2
   );
 
-
 /**
   Writes a value to Control Register 3 (CR3).
 
@@ -7597,7 +6216,6 @@
   UINTN  Cr3
   );
 
-
 /**
   Writes a value to Control Register 4 (CR4).
 
@@ -7615,7 +6233,6 @@
   UINTN  Cr4
   );
 
-
 /**
   Reads the current value of Debug Register 0 (DR0).
 
@@ -7632,7 +6249,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of Debug Register 1 (DR1).
 
@@ -7649,7 +6265,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of Debug Register 2 (DR2).
 
@@ -7666,7 +6281,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of Debug Register 3 (DR3).
 
@@ -7683,7 +6297,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of Debug Register 4 (DR4).
 
@@ -7700,7 +6313,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of Debug Register 5 (DR5).
 
@@ -7717,7 +6329,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of Debug Register 6 (DR6).
 
@@ -7734,7 +6345,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of Debug Register 7 (DR7).
 
@@ -7751,7 +6361,6 @@
   VOID
   );
 
-
 /**
   Writes a value to Debug Register 0 (DR0).
 
@@ -7769,7 +6378,6 @@
   UINTN  Dr0
   );
 
-
 /**
   Writes a value to Debug Register 1 (DR1).
 
@@ -7787,7 +6395,6 @@
   UINTN  Dr1
   );
 
-
 /**
   Writes a value to Debug Register 2 (DR2).
 
@@ -7805,7 +6412,6 @@
   UINTN  Dr2
   );
 
-
 /**
   Writes a value to Debug Register 3 (DR3).
 
@@ -7823,7 +6429,6 @@
   UINTN  Dr3
   );
 
-
 /**
   Writes a value to Debug Register 4 (DR4).
 
@@ -7841,7 +6446,6 @@
   UINTN  Dr4
   );
 
-
 /**
   Writes a value to Debug Register 5 (DR5).
 
@@ -7859,7 +6463,6 @@
   UINTN  Dr5
   );
 
-
 /**
   Writes a value to Debug Register 6 (DR6).
 
@@ -7877,7 +6480,6 @@
   UINTN  Dr6
   );
 
-
 /**
   Writes a value to Debug Register 7 (DR7).
 
@@ -7895,7 +6497,6 @@
   UINTN  Dr7
   );
 
-
 /**
   Reads the current value of Code Segment Register (CS).
 
@@ -7911,7 +6512,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of Data Segment Register (DS).
 
@@ -7927,7 +6527,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of Extra Segment Register (ES).
 
@@ -7943,7 +6542,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of FS Data Segment Register (FS).
 
@@ -7959,7 +6557,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of GS Data Segment Register (GS).
 
@@ -7975,7 +6572,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of Stack Segment Register (SS).
 
@@ -7991,7 +6587,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of Task Register (TR).
 
@@ -8007,7 +6602,6 @@
   VOID
   );
 
-
 /**
   Reads the current Global Descriptor Table Register(GDTR) descriptor.
 
@@ -8022,10 +6616,9 @@
 VOID
 EFIAPI
 AsmReadGdtr (
-  OUT     IA32_DESCRIPTOR           *Gdtr
+  OUT     IA32_DESCRIPTOR  *Gdtr
   );
 
-
 /**
   Writes the current Global Descriptor Table Register (GDTR) descriptor.
 
@@ -8040,10 +6633,9 @@
 VOID
 EFIAPI
 AsmWriteGdtr (
-  IN      CONST IA32_DESCRIPTOR     *Gdtr
+  IN      CONST IA32_DESCRIPTOR  *Gdtr
   );
 
-
 /**
   Reads the current Interrupt Descriptor Table Register(IDTR) descriptor.
 
@@ -8058,10 +6650,9 @@
 VOID
 EFIAPI
 AsmReadIdtr (
-  OUT     IA32_DESCRIPTOR           *Idtr
+  OUT     IA32_DESCRIPTOR  *Idtr
   );
 
-
 /**
   Writes the current Interrupt Descriptor Table Register(IDTR) descriptor.
 
@@ -8076,10 +6667,9 @@
 VOID
 EFIAPI
 AsmWriteIdtr (
-  IN      CONST IA32_DESCRIPTOR     *Idtr
+  IN      CONST IA32_DESCRIPTOR  *Idtr
   );
 
-
 /**
   Reads the current Local Descriptor Table Register(LDTR) selector.
 
@@ -8095,7 +6685,6 @@
   VOID
   );
 
-
 /**
   Writes the current Local Descriptor Table Register (LDTR) selector.
 
@@ -8108,10 +6697,9 @@
 VOID
 EFIAPI
 AsmWriteLdtr (
-  IN      UINT16                    Ldtr
+  IN      UINT16  Ldtr
   );
 
-
 /**
   Save the current floating point/SSE/SSE2 context to a buffer.
 
@@ -8128,10 +6716,9 @@
 VOID
 EFIAPI
 AsmFxSave (
-  OUT     IA32_FX_BUFFER            *Buffer
+  OUT     IA32_FX_BUFFER  *Buffer
   );
 
-
 /**
   Restores the current floating point/SSE/SSE2 context from a buffer.
 
@@ -8149,10 +6736,9 @@
 VOID
 EFIAPI
 AsmFxRestore (
-  IN      CONST IA32_FX_BUFFER      *Buffer
+  IN      CONST IA32_FX_BUFFER  *Buffer
   );
 
-
 /**
   Reads the current value of 64-bit MMX Register #0 (MM0).
 
@@ -8168,7 +6754,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of 64-bit MMX Register #1 (MM1).
 
@@ -8184,7 +6769,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of 64-bit MMX Register #2 (MM2).
 
@@ -8200,7 +6784,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of 64-bit MMX Register #3 (MM3).
 
@@ -8216,7 +6799,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of 64-bit MMX Register #4 (MM4).
 
@@ -8232,7 +6814,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of 64-bit MMX Register #5 (MM5).
 
@@ -8248,7 +6829,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of 64-bit MMX Register #6 (MM6).
 
@@ -8264,7 +6844,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of 64-bit MMX Register #7 (MM7).
 
@@ -8280,7 +6859,6 @@
   VOID
   );
 
-
 /**
   Writes the current value of 64-bit MMX Register #0 (MM0).
 
@@ -8293,10 +6871,9 @@
 VOID
 EFIAPI
 AsmWriteMm0 (
-  IN      UINT64                    Value
+  IN      UINT64  Value
   );
 
-
 /**
   Writes the current value of 64-bit MMX Register #1 (MM1).
 
@@ -8309,10 +6886,9 @@
 VOID
 EFIAPI
 AsmWriteMm1 (
-  IN      UINT64                    Value
+  IN      UINT64  Value
   );
 
-
 /**
   Writes the current value of 64-bit MMX Register #2 (MM2).
 
@@ -8325,10 +6901,9 @@
 VOID
 EFIAPI
 AsmWriteMm2 (
-  IN      UINT64                    Value
+  IN      UINT64  Value
   );
 
-
 /**
   Writes the current value of 64-bit MMX Register #3 (MM3).
 
@@ -8341,10 +6916,9 @@
 VOID
 EFIAPI
 AsmWriteMm3 (
-  IN      UINT64                    Value
+  IN      UINT64  Value
   );
 
-
 /**
   Writes the current value of 64-bit MMX Register #4 (MM4).
 
@@ -8357,10 +6931,9 @@
 VOID
 EFIAPI
 AsmWriteMm4 (
-  IN      UINT64                    Value
+  IN      UINT64  Value
   );
 
-
 /**
   Writes the current value of 64-bit MMX Register #5 (MM5).
 
@@ -8373,10 +6946,9 @@
 VOID
 EFIAPI
 AsmWriteMm5 (
-  IN      UINT64                    Value
+  IN      UINT64  Value
   );
 
-
 /**
   Writes the current value of 64-bit MMX Register #6 (MM6).
 
@@ -8389,10 +6961,9 @@
 VOID
 EFIAPI
 AsmWriteMm6 (
-  IN      UINT64                    Value
+  IN      UINT64  Value
   );
 
-
 /**
   Writes the current value of 64-bit MMX Register #7 (MM7).
 
@@ -8405,10 +6976,9 @@
 VOID
 EFIAPI
 AsmWriteMm7 (
-  IN      UINT64                    Value
+  IN      UINT64  Value
   );
 
-
 /**
   Reads the current value of Time Stamp Counter (TSC).
 
@@ -8424,7 +6994,6 @@
   VOID
   );
 
-
 /**
   Reads the current value of a Performance Counter (PMC).
 
@@ -8439,10 +7008,9 @@
 UINT64
 EFIAPI
 AsmReadPmc (
-  IN      UINT32                    Index
+  IN      UINT32  Index
   );
 
-
 /**
   Sets up a monitor buffer that is used by AsmMwait().
 
@@ -8462,12 +7030,11 @@
 UINTN
 EFIAPI
 AsmMonitor (
-  IN      UINTN                     Eax,
-  IN      UINTN                     Ecx,
-  IN      UINTN                     Edx
+  IN      UINTN  Eax,
+  IN      UINTN  Ecx,
+  IN      UINTN  Edx
   );
 
-
 /**
   Executes an MWAIT instruction.
 
@@ -8485,11 +7052,10 @@
 UINTN
 EFIAPI
 AsmMwait (
-  IN      UINTN                     Eax,
-  IN      UINTN                     Ecx
+  IN      UINTN  Eax,
+  IN      UINTN  Ecx
   );
 
-
 /**
   Executes a WBINVD instruction.
 
@@ -8503,7 +7069,6 @@
   VOID
   );
 
-
 /**
   Executes a INVD instruction.
 
@@ -8517,7 +7082,6 @@
   VOID
   );
 
-
 /**
   Flushes a cache line from all the instruction and data caches within the
   coherency domain of the CPU.
@@ -8536,10 +7100,9 @@
 VOID *
 EFIAPI
 AsmFlushCacheLine (
-  IN      VOID                      *LinearAddress
+  IN      VOID  *LinearAddress
   );
 
-
 /**
   Enables the 32-bit paging mode on the CPU.
 
@@ -8581,12 +7144,11 @@
 EFIAPI
 AsmEnablePaging32 (
   IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
-  IN      VOID                      *Context1,  OPTIONAL
-  IN      VOID                      *Context2,  OPTIONAL
+  IN      VOID                      *Context1   OPTIONAL,
+  IN      VOID                      *Context2   OPTIONAL,
   IN      VOID                      *NewStack
   );
 
-
 /**
   Disables the 32-bit paging mode on the CPU.
 
@@ -8625,12 +7187,11 @@
 EFIAPI
 AsmDisablePaging32 (
   IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
-  IN      VOID                      *Context1,  OPTIONAL
-  IN      VOID                      *Context2,  OPTIONAL
+  IN      VOID                      *Context1   OPTIONAL,
+  IN      VOID                      *Context2   OPTIONAL,
   IN      VOID                      *NewStack
   );
 
-
 /**
   Enables the 64-bit paging mode on the CPU.
 
@@ -8666,14 +7227,13 @@
 VOID
 EFIAPI
 AsmEnablePaging64 (
-  IN      UINT16                    Cs,
-  IN      UINT64                    EntryPoint,
-  IN      UINT64                    Context1,  OPTIONAL
-  IN      UINT64                    Context2,  OPTIONAL
-  IN      UINT64                    NewStack
+  IN      UINT16  Cs,
+  IN      UINT64  EntryPoint,
+  IN      UINT64  Context1   OPTIONAL,
+  IN      UINT64  Context2   OPTIONAL,
+  IN      UINT64  NewStack
   );
 
-
 /**
   Disables the 64-bit paging mode on the CPU.
 
@@ -8707,14 +7267,13 @@
 VOID
 EFIAPI
 AsmDisablePaging64 (
-  IN      UINT16                    Cs,
-  IN      UINT32                    EntryPoint,
-  IN      UINT32                    Context1,  OPTIONAL
-  IN      UINT32                    Context2,  OPTIONAL
-  IN      UINT32                    NewStack
+  IN      UINT16  Cs,
+  IN      UINT32  EntryPoint,
+  IN      UINT32  Context1   OPTIONAL,
+  IN      UINT32  Context2   OPTIONAL,
+  IN      UINT32  NewStack
   );
 
-
 //
 // 16-bit thunking services
 //
@@ -8743,11 +7302,10 @@
 VOID
 EFIAPI
 AsmGetThunk16Properties (
-  OUT     UINT32                    *RealModeBufferSize,
-  OUT     UINT32                    *ExtraStackSize
+  OUT     UINT32  *RealModeBufferSize,
+  OUT     UINT32  *ExtraStackSize
   );
 
-
 /**
   Prepares all structures a code required to use AsmThunk16().
 
@@ -8765,10 +7323,9 @@
 VOID
 EFIAPI
 AsmPrepareThunk16 (
-  IN OUT  THUNK_CONTEXT             *ThunkContext
+  IN OUT  THUNK_CONTEXT  *ThunkContext
   );
 
-
 /**
   Transfers control to a 16-bit real mode entry point and returns the results.
 
@@ -8825,10 +7382,9 @@
 VOID
 EFIAPI
 AsmThunk16 (
-  IN OUT  THUNK_CONTEXT             *ThunkContext
+  IN OUT  THUNK_CONTEXT  *ThunkContext
   );
 
-
 /**
   Prepares all structures and code for a 16-bit real mode thunk, transfers
   control to a 16-bit real mode entry point, and returns the results.
@@ -8852,7 +7408,7 @@
 VOID
 EFIAPI
 AsmPrepareAndThunk16 (
-  IN OUT  THUNK_CONTEXT             *ThunkContext
+  IN OUT  THUNK_CONTEXT  *ThunkContext
   );
 
 /**
@@ -8869,7 +7425,7 @@
 BOOLEAN
 EFIAPI
 AsmRdRand16 (
-  OUT     UINT16                    *Rand
+  OUT     UINT16  *Rand
   );
 
 /**
@@ -8886,7 +7442,7 @@
 BOOLEAN
 EFIAPI
 AsmRdRand32 (
-  OUT     UINT32                    *Rand
+  OUT     UINT32  *Rand
   );
 
 /**
@@ -8903,10 +7459,127 @@
 BOOLEAN
 EFIAPI
 AsmRdRand64  (
-  OUT     UINT64                    *Rand
+  OUT     UINT64  *Rand
   );
 
-#endif
-#endif
+/**
+  Load given selector into TR register.
 
+  @param[in] Selector     Task segment selector
+**/
+VOID
+EFIAPI
+AsmWriteTr (
+  IN UINT16  Selector
+  );
 
+/**
+  Performs a serializing operation on all load-from-memory instructions that
+  were issued prior the AsmLfence function.
+
+  Executes a LFENCE instruction. This function is only available on IA-32 and x64.
+
+**/
+VOID
+EFIAPI
+AsmLfence (
+  VOID
+  );
+
+/**
+  Executes a XGETBV instruction
+
+  Executes a XGETBV instruction. This function is only available on IA-32 and
+  x64.
+
+  @param[in] Index        Extended control register index
+
+  @return                 The current value of the extended control register
+**/
+UINT64
+EFIAPI
+AsmXGetBv (
+  IN UINT32  Index
+  );
+
+/**
+  Executes a XSETBV instruction to write a 64-bit value to a Extended Control
+  Register(XCR), and returns the value.
+
+  Writes the 64-bit value specified by Value to the XCR specified by Index. The
+  64-bit value written to the XCR is returned. No parameter checking is
+  performed on Index or Value, and some of these may cause CPU exceptions. The
+  caller must either guarantee that Index and Value are valid, or the caller
+  must establish proper exception handlers. This function is only available on
+  IA-32 and x64.
+
+  @param  Index The 32-bit XCR index to write.
+  @param  Value The 64-bit value to write to the XCR.
+
+  @return Value
+
+**/
+UINT64
+EFIAPI
+AsmXSetBv (
+  IN UINT32  Index,
+  IN UINT64  Value
+  );
+
+/**
+  Executes a VMGEXIT instruction (VMMCALL with a REP prefix)
+
+  Executes a VMGEXIT instruction. This function is only available on IA-32 and
+  x64.
+
+**/
+VOID
+EFIAPI
+AsmVmgExit (
+  VOID
+  );
+
+/**
+  Patch the immediate operand of an IA32 or X64 instruction such that the byte,
+  word, dword or qword operand is encoded at the end of the instruction's
+  binary representation.
+
+  This function should be used to update object code that was compiled with
+  NASM from assembly source code. Example:
+
+  NASM source code:
+
+        mov     eax, strict dword 0 ; the imm32 zero operand will be patched
+    ASM_PFX(gPatchCr3):
+        mov     cr3, eax
+
+  C source code:
+
+    X86_ASSEMBLY_PATCH_LABEL gPatchCr3;
+    PatchInstructionX86 (gPatchCr3, AsmReadCr3 (), 4);
+
+  @param[out] InstructionEnd  Pointer right past the instruction to patch. The
+                              immediate operand to patch is expected to
+                              comprise the trailing bytes of the instruction.
+                              If InstructionEnd is closer to address 0 than
+                              ValueSize permits, then ASSERT().
+
+  @param[in] PatchValue       The constant to write to the immediate operand.
+                              The caller is responsible for ensuring that
+                              PatchValue can be represented in the byte, word,
+                              dword or qword operand (as indicated through
+                              ValueSize); otherwise ASSERT().
+
+  @param[in] ValueSize        The size of the operand in bytes; must be 1, 2,
+                              4, or 8. ASSERT() otherwise.
+**/
+VOID
+EFIAPI
+PatchInstructionX86 (
+  OUT X86_ASSEMBLY_PATCH_LABEL  *InstructionEnd,
+  IN  UINT64                    PatchValue,
+  IN  UINTN                     ValueSize
+  );
+
+#endif // defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
+#endif // !defined (__BASE_LIB__)
diff --git a/src/include/ipxe/efi/Pi/PiBootMode.h b/src/include/ipxe/efi/Pi/PiBootMode.h
index f462f7a..1d8a8a9 100644
--- a/src/include/ipxe/efi/Pi/PiBootMode.h
+++ b/src/include/ipxe/efi/Pi/PiBootMode.h
@@ -2,13 +2,7 @@
   Present the boot mode values in PI.
 
   Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   PI Version 1.2.1A
@@ -18,27 +12,27 @@
 #ifndef __PI_BOOT_MODE_H__
 #define __PI_BOOT_MODE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// EFI boot mode
 ///
-typedef UINT32  EFI_BOOT_MODE;
+typedef UINT32 EFI_BOOT_MODE;
 
 //
 // 0x21 - 0xf..f are reserved.
 //
-#define BOOT_WITH_FULL_CONFIGURATION                  0x00
-#define BOOT_WITH_MINIMAL_CONFIGURATION               0x01
-#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES        0x02
-#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS 0x03
-#define BOOT_WITH_DEFAULT_SETTINGS                    0x04
-#define BOOT_ON_S4_RESUME                             0x05
-#define BOOT_ON_S5_RESUME                             0x06
-#define BOOT_WITH_MFG_MODE_SETTINGS                   0x07
-#define BOOT_ON_S2_RESUME                             0x10
-#define BOOT_ON_S3_RESUME                             0x11
-#define BOOT_ON_FLASH_UPDATE                          0x12
-#define BOOT_IN_RECOVERY_MODE                         0x20
+#define BOOT_WITH_FULL_CONFIGURATION                   0x00
+#define BOOT_WITH_MINIMAL_CONFIGURATION                0x01
+#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES         0x02
+#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS  0x03
+#define BOOT_WITH_DEFAULT_SETTINGS                     0x04
+#define BOOT_ON_S4_RESUME                              0x05
+#define BOOT_ON_S5_RESUME                              0x06
+#define BOOT_WITH_MFG_MODE_SETTINGS                    0x07
+#define BOOT_ON_S2_RESUME                              0x10
+#define BOOT_ON_S3_RESUME                              0x11
+#define BOOT_ON_FLASH_UPDATE                           0x12
+#define BOOT_IN_RECOVERY_MODE                          0x20
 
 #endif
diff --git a/src/include/ipxe/efi/Pi/PiDependency.h b/src/include/ipxe/efi/Pi/PiDependency.h
index b1fa399..bfe30c4 100644
--- a/src/include/ipxe/efi/Pi/PiDependency.h
+++ b/src/include/ipxe/efi/Pi/PiDependency.h
@@ -1,49 +1,43 @@
 /** @file
   Present the dependency expression values in PI.
 
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   PI Version 1.0
 
 **/
+
 #ifndef __PI_DEPENDENCY_H__
 #define __PI_DEPENDENCY_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// If present, this must be the first and only opcode,
 /// EFI_DEP_BEFORE may be used by DXE and SMM drivers.
 ///
-#define EFI_DEP_BEFORE        0x00
+#define EFI_DEP_BEFORE  0x00
 
 ///
 /// If present, this must be the first and only opcode,
 /// EFI_DEP_AFTER may be used by DXE and SMM drivers.
 ///
-#define EFI_DEP_AFTER         0x01
+#define EFI_DEP_AFTER  0x01
 
-#define EFI_DEP_PUSH          0x02
-#define EFI_DEP_AND           0x03
-#define EFI_DEP_OR            0x04
-#define EFI_DEP_NOT           0x05
-#define EFI_DEP_TRUE          0x06
-#define EFI_DEP_FALSE         0x07
-#define EFI_DEP_END           0x08
-
+#define EFI_DEP_PUSH   0x02
+#define EFI_DEP_AND    0x03
+#define EFI_DEP_OR     0x04
+#define EFI_DEP_NOT    0x05
+#define EFI_DEP_TRUE   0x06
+#define EFI_DEP_FALSE  0x07
+#define EFI_DEP_END    0x08
 
 ///
 /// If present, this must be the first opcode,
 /// EFI_DEP_SOR is only used by DXE driver.
 ///
-#define EFI_DEP_SOR           0x09
+#define EFI_DEP_SOR  0x09
 
 #endif
diff --git a/src/include/ipxe/efi/Pi/PiDxeCis.h b/src/include/ipxe/efi/Pi/PiDxeCis.h
index 047c077..506abfd 100644
--- a/src/include/ipxe/efi/Pi/PiDxeCis.h
+++ b/src/include/ipxe/efi/Pi/PiDxeCis.h
@@ -1,24 +1,18 @@
 /** @file
   Include file matches things in PI.
 
-Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
-  PI Version 1.4
+  PI Version 1.7
 
 **/
 
 #ifndef __PI_DXECIS_H__
 #define __PI_DXECIS_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Uefi/UefiMultiPhase.h>
 #include <ipxe/efi/Pi/PiMultiPhase.h>
@@ -54,13 +48,25 @@
   /// A memory region that is visible to the boot processor.
   /// This memory supports byte-addressable non-volatility.
   ///
-  EfiGcdMemoryTypePersistentMemory,
+  EfiGcdMemoryTypePersistent,
+  //
+  // Keep original one for the compatibility.
+  //
+  EfiGcdMemoryTypePersistentMemory = EfiGcdMemoryTypePersistent,
   ///
   /// A memory region that provides higher reliability relative to other memory in the
   /// system. If all memory has the same reliability, then this bit is not used.
   ///
   EfiGcdMemoryTypeMoreReliable,
-  EfiGcdMemoryTypeMaximum
+  // ///
+  // /// A memory region that describes system memory that has not been accepted
+  // /// by a corresponding call to the underlying isolation architecture.
+  // ///
+  // /// Please be noted:
+  // /// EfiGcdMemoryTypeUnaccepted is defined in PrePiDxeCis.h because it has not been
+  // /// defined in PI spec.
+  // EfiGcdMemoryTypeUnaccepted,
+  EfiGcdMemoryTypeMaximum = 8
 } EFI_GCD_MEMORY_TYPE;
 
 ///
@@ -126,29 +132,29 @@
   /// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function
   /// description in the UEFI 2.0 specification.
   ///
-  EFI_PHYSICAL_ADDRESS  BaseAddress;
+  EFI_PHYSICAL_ADDRESS    BaseAddress;
 
   ///
   /// The number of bytes in the memory region.
   ///
-  UINT64                Length;
+  UINT64                  Length;
 
   ///
   /// The bit mask of attributes that the memory region is capable of supporting. The bit
   /// mask of available attributes is defined in the GetMemoryMap() function description
   /// in the UEFI 2.0 specification.
   ///
-  UINT64                Capabilities;
+  UINT64                  Capabilities;
   ///
   /// The bit mask of attributes that the memory region is currently using. The bit mask of
   /// available attributes is defined in GetMemoryMap().
   ///
-  UINT64                Attributes;
+  UINT64                  Attributes;
   ///
   /// Type of the memory region. Type EFI_GCD_MEMORY_TYPE is defined in the
   /// AddMemorySpace() function description.
   ///
-  EFI_GCD_MEMORY_TYPE   GcdMemoryType;
+  EFI_GCD_MEMORY_TYPE     GcdMemoryType;
 
   ///
   /// The image handle of the agent that allocated the memory resource described by
@@ -156,7 +162,7 @@
   /// resource is not currently allocated. Type EFI_HANDLE is defined in
   /// InstallProtocolInterface() in the UEFI 2.0 specification.
   ///
-  EFI_HANDLE            ImageHandle;
+  EFI_HANDLE              ImageHandle;
 
   ///
   /// The device handle for which the memory resource has been allocated. If
@@ -165,7 +171,7 @@
   /// described by a device handle. Type EFI_HANDLE is defined in
   /// InstallProtocolInterface() in the UEFI 2.0 specification.
   ///
-  EFI_HANDLE            DeviceHandle;
+  EFI_HANDLE    DeviceHandle;
 } EFI_GCD_MEMORY_SPACE_DESCRIPTOR;
 
 ///
@@ -177,18 +183,18 @@
   /// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function
   /// description in the UEFI 2.0 specification.
   ///
-  EFI_PHYSICAL_ADDRESS  BaseAddress;
+  EFI_PHYSICAL_ADDRESS    BaseAddress;
 
   ///
   /// Number of bytes in the I/O region.
   ///
-  UINT64                Length;
+  UINT64                  Length;
 
   ///
   /// Type of the I/O region. Type EFI_GCD_IO_TYPE is defined in the
   /// AddIoSpace() function description.
   ///
-  EFI_GCD_IO_TYPE       GcdIoType;
+  EFI_GCD_IO_TYPE         GcdIoType;
 
   ///
   /// The image handle of the agent that allocated the I/O resource described by
@@ -196,7 +202,7 @@
   /// resource is not currently allocated. Type EFI_HANDLE is defined in
   /// InstallProtocolInterface() in the UEFI 2.0 specification.
   ///
-  EFI_HANDLE            ImageHandle;
+  EFI_HANDLE              ImageHandle;
 
   ///
   /// The device handle for which the I/O resource has been allocated. If ImageHandle
@@ -205,10 +211,9 @@
   /// Type EFI_HANDLE is defined in InstallProtocolInterface() in the UEFI
   /// 2.0 specification.
   ///
-  EFI_HANDLE            DeviceHandle;
+  EFI_HANDLE    DeviceHandle;
 } EFI_GCD_IO_SPACE_DESCRIPTOR;
 
-
 /**
   Adds reserved memory, system memory, or memory-mapped I/O resources to the
   global coherency domain of the processor.
@@ -411,7 +416,7 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI *EFI_SET_MEMORY_SPACE_CAPABILITIES) (
+(EFIAPI *EFI_SET_MEMORY_SPACE_CAPABILITIES)(
   IN EFI_PHYSICAL_ADDRESS  BaseAddress,
   IN UINT64                Length,
   IN UINT64                Capabilities
@@ -603,8 +608,6 @@
   OUT EFI_GCD_IO_SPACE_DESCRIPTOR  **IoSpaceMap
   );
 
-
-
 /**
   Loads and executed DXE drivers from firmware volumes.
 
@@ -694,7 +697,7 @@
 //
 #define DXE_SERVICES_SIGNATURE            0x565245535f455844ULL
 #define DXE_SPECIFICATION_MAJOR_REVISION  1
-#define DXE_SPECIFICATION_MINOR_REVISION  40
+#define DXE_SPECIFICATION_MINOR_REVISION  70
 #define DXE_SERVICES_REVISION             ((DXE_SPECIFICATION_MAJOR_REVISION<<16) | (DXE_SPECIFICATION_MINOR_REVISION))
 
 typedef struct {
@@ -702,39 +705,39 @@
   /// The table header for the DXE Services Table.
   /// This header contains the DXE_SERVICES_SIGNATURE and DXE_SERVICES_REVISION values.
   ///
-  EFI_TABLE_HEADER                Hdr;
+  EFI_TABLE_HEADER                     Hdr;
 
   //
   // Global Coherency Domain Services
   //
-  EFI_ADD_MEMORY_SPACE            AddMemorySpace;
-  EFI_ALLOCATE_MEMORY_SPACE       AllocateMemorySpace;
-  EFI_FREE_MEMORY_SPACE           FreeMemorySpace;
-  EFI_REMOVE_MEMORY_SPACE         RemoveMemorySpace;
-  EFI_GET_MEMORY_SPACE_DESCRIPTOR GetMemorySpaceDescriptor;
-  EFI_SET_MEMORY_SPACE_ATTRIBUTES SetMemorySpaceAttributes;
-  EFI_GET_MEMORY_SPACE_MAP        GetMemorySpaceMap;
-  EFI_ADD_IO_SPACE                AddIoSpace;
-  EFI_ALLOCATE_IO_SPACE           AllocateIoSpace;
-  EFI_FREE_IO_SPACE               FreeIoSpace;
-  EFI_REMOVE_IO_SPACE             RemoveIoSpace;
-  EFI_GET_IO_SPACE_DESCRIPTOR     GetIoSpaceDescriptor;
-  EFI_GET_IO_SPACE_MAP            GetIoSpaceMap;
+  EFI_ADD_MEMORY_SPACE                 AddMemorySpace;
+  EFI_ALLOCATE_MEMORY_SPACE            AllocateMemorySpace;
+  EFI_FREE_MEMORY_SPACE                FreeMemorySpace;
+  EFI_REMOVE_MEMORY_SPACE              RemoveMemorySpace;
+  EFI_GET_MEMORY_SPACE_DESCRIPTOR      GetMemorySpaceDescriptor;
+  EFI_SET_MEMORY_SPACE_ATTRIBUTES      SetMemorySpaceAttributes;
+  EFI_GET_MEMORY_SPACE_MAP             GetMemorySpaceMap;
+  EFI_ADD_IO_SPACE                     AddIoSpace;
+  EFI_ALLOCATE_IO_SPACE                AllocateIoSpace;
+  EFI_FREE_IO_SPACE                    FreeIoSpace;
+  EFI_REMOVE_IO_SPACE                  RemoveIoSpace;
+  EFI_GET_IO_SPACE_DESCRIPTOR          GetIoSpaceDescriptor;
+  EFI_GET_IO_SPACE_MAP                 GetIoSpaceMap;
 
   //
   // Dispatcher Services
   //
-  EFI_DISPATCH                    Dispatch;
-  EFI_SCHEDULE                    Schedule;
-  EFI_TRUST                       Trust;
+  EFI_DISPATCH                         Dispatch;
+  EFI_SCHEDULE                         Schedule;
+  EFI_TRUST                            Trust;
   //
   // Service to process a single firmware volume found in a capsule
   //
-  EFI_PROCESS_FIRMWARE_VOLUME     ProcessFirmwareVolume;
+  EFI_PROCESS_FIRMWARE_VOLUME          ProcessFirmwareVolume;
   //
   // Extensions to Global Coherency Domain Services
   //
-  EFI_SET_MEMORY_SPACE_CAPABILITIES SetMemorySpaceCapabilities;
+  EFI_SET_MEMORY_SPACE_CAPABILITIES    SetMemorySpaceCapabilities;
 } DXE_SERVICES;
 
 typedef DXE_SERVICES EFI_DXE_SERVICES;
diff --git a/src/include/ipxe/efi/Pi/PiFirmwareFile.h b/src/include/ipxe/efi/Pi/PiFirmwareFile.h
index 9bd22a5..daf66f8 100644
--- a/src/include/ipxe/efi/Pi/PiFirmwareFile.h
+++ b/src/include/ipxe/efi/Pi/PiFirmwareFile.h
@@ -1,25 +1,18 @@
 /** @file
   The firmware file related definitions in PI.
 
-Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
-  PI Version 1.4.
+  PI Version 1.6.
 
 **/
 
-
 #ifndef __PI_FIRMWARE_FILE_H__
 #define __PI_FIRMWARE_FILE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #pragma pack(1)
 ///
@@ -32,7 +25,7 @@
     /// header. The State and IntegrityCheck.Checksum.File fields are assumed
     /// to be zero and the checksum is calculated such that the entire header sums to zero.
     ///
-    UINT8   Header;
+    UINT8    Header;
     ///
     /// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes
     /// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit
@@ -42,7 +35,7 @@
     /// 0xAA. The IntegrityCheck.Checksum.File field is valid any time the
     /// EFI_FILE_DATA_VALID bit is set in the State field.
     ///
-    UINT8   File;
+    UINT8    File;
   } Checksum;
   ///
   /// This is the full 16 bits of the IntegrityCheck field.
@@ -56,41 +49,47 @@
 ///
 #define FFS_FIXED_CHECKSUM  0xAA
 
-typedef UINT8 EFI_FV_FILETYPE;
-typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
-typedef UINT8 EFI_FFS_FILE_STATE;
+typedef UINT8  EFI_FV_FILETYPE;
+typedef UINT8  EFI_FFS_FILE_ATTRIBUTES;
+typedef UINT8  EFI_FFS_FILE_STATE;
 
 ///
 /// File Types Definitions
 ///
-#define EFI_FV_FILETYPE_ALL                   0x00
-#define EFI_FV_FILETYPE_RAW                   0x01
-#define EFI_FV_FILETYPE_FREEFORM              0x02
-#define EFI_FV_FILETYPE_SECURITY_CORE         0x03
-#define EFI_FV_FILETYPE_PEI_CORE              0x04
-#define EFI_FV_FILETYPE_DXE_CORE              0x05
-#define EFI_FV_FILETYPE_PEIM                  0x06
-#define EFI_FV_FILETYPE_DRIVER                0x07
-#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER  0x08
-#define EFI_FV_FILETYPE_APPLICATION           0x09
-#define EFI_FV_FILETYPE_SMM                   0x0A
-#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B
-#define EFI_FV_FILETYPE_COMBINED_SMM_DXE      0x0C
-#define EFI_FV_FILETYPE_SMM_CORE              0x0D
-#define EFI_FV_FILETYPE_OEM_MIN               0xc0
-#define EFI_FV_FILETYPE_OEM_MAX               0xdf
-#define EFI_FV_FILETYPE_DEBUG_MIN             0xe0
-#define EFI_FV_FILETYPE_DEBUG_MAX             0xef
-#define EFI_FV_FILETYPE_FFS_MIN               0xf0
-#define EFI_FV_FILETYPE_FFS_MAX               0xff
-#define EFI_FV_FILETYPE_FFS_PAD               0xf0
+#define EFI_FV_FILETYPE_ALL                    0x00
+#define EFI_FV_FILETYPE_RAW                    0x01
+#define EFI_FV_FILETYPE_FREEFORM               0x02
+#define EFI_FV_FILETYPE_SECURITY_CORE          0x03
+#define EFI_FV_FILETYPE_PEI_CORE               0x04
+#define EFI_FV_FILETYPE_DXE_CORE               0x05
+#define EFI_FV_FILETYPE_PEIM                   0x06
+#define EFI_FV_FILETYPE_DRIVER                 0x07
+#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER   0x08
+#define EFI_FV_FILETYPE_APPLICATION            0x09
+#define EFI_FV_FILETYPE_MM                     0x0A
+#define EFI_FV_FILETYPE_SMM                    EFI_FV_FILETYPE_MM
+#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE  0x0B
+#define EFI_FV_FILETYPE_COMBINED_MM_DXE        0x0C
+#define EFI_FV_FILETYPE_COMBINED_SMM_DXE       EFI_FV_FILETYPE_COMBINED_MM_DXE
+#define EFI_FV_FILETYPE_MM_CORE                0x0D
+#define EFI_FV_FILETYPE_SMM_CORE               EFI_FV_FILETYPE_MM_CORE
+#define EFI_FV_FILETYPE_MM_STANDALONE          0x0E
+#define EFI_FV_FILETYPE_MM_CORE_STANDALONE     0x0F
+#define EFI_FV_FILETYPE_OEM_MIN                0xc0
+#define EFI_FV_FILETYPE_OEM_MAX                0xdf
+#define EFI_FV_FILETYPE_DEBUG_MIN              0xe0
+#define EFI_FV_FILETYPE_DEBUG_MAX              0xef
+#define EFI_FV_FILETYPE_FFS_MIN                0xf0
+#define EFI_FV_FILETYPE_FFS_MAX                0xff
+#define EFI_FV_FILETYPE_FFS_PAD                0xf0
 ///
 /// FFS File Attributes.
 ///
-#define FFS_ATTRIB_LARGE_FILE         0x01
-#define FFS_ATTRIB_FIXED              0x04
-#define FFS_ATTRIB_DATA_ALIGNMENT     0x38
-#define FFS_ATTRIB_CHECKSUM           0x40
+#define FFS_ATTRIB_LARGE_FILE        0x01
+#define FFS_ATTRIB_DATA_ALIGNMENT_2  0x02
+#define FFS_ATTRIB_FIXED             0x04
+#define FFS_ATTRIB_DATA_ALIGNMENT    0x38
+#define FFS_ATTRIB_CHECKSUM          0x40
 
 ///
 /// FFS File State Bits.
@@ -102,7 +101,6 @@
 #define EFI_FILE_DELETED              0x10
 #define EFI_FILE_HEADER_INVALID       0x20
 
-
 ///
 /// Each file begins with the header that describe the
 /// contents and state of the files.
@@ -111,27 +109,27 @@
   ///
   /// This GUID is the file name. It is used to uniquely identify the file.
   ///
-  EFI_GUID                Name;
+  EFI_GUID                   Name;
   ///
   /// Used to verify the integrity of the file.
   ///
-  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
+  EFI_FFS_INTEGRITY_CHECK    IntegrityCheck;
   ///
   /// Identifies the type of file.
   ///
-  EFI_FV_FILETYPE         Type;
+  EFI_FV_FILETYPE            Type;
   ///
   /// Declares various file attribute bits.
   ///
-  EFI_FFS_FILE_ATTRIBUTES Attributes;
+  EFI_FFS_FILE_ATTRIBUTES    Attributes;
   ///
   /// The length of the file in bytes, including the FFS header.
   ///
-  UINT8                   Size[3];
+  UINT8                      Size[3];
   ///
   /// Used to track the state of the file throughout the life of the file from creation to deletion.
   ///
-  EFI_FFS_FILE_STATE      State;
+  EFI_FFS_FILE_STATE         State;
 } EFI_FFS_FILE_HEADER;
 
 typedef struct {
@@ -140,22 +138,22 @@
   /// one instance of a file with the file name GUID of Name in any given firmware
   /// volume, except if the file type is EFI_FV_FILETYPE_FFS_PAD.
   ///
-  EFI_GUID                  Name;
+  EFI_GUID                   Name;
 
   ///
   /// Used to verify the integrity of the file.
   ///
-  EFI_FFS_INTEGRITY_CHECK   IntegrityCheck;
+  EFI_FFS_INTEGRITY_CHECK    IntegrityCheck;
 
   ///
   /// Identifies the type of file.
   ///
-  EFI_FV_FILETYPE           Type;
+  EFI_FV_FILETYPE            Type;
 
   ///
   /// Declares various file attribute bits.
   ///
-  EFI_FFS_FILE_ATTRIBUTES   Attributes;
+  EFI_FFS_FILE_ATTRIBUTES    Attributes;
 
   ///
   /// The length of the file in bytes, including the FFS header.
@@ -164,25 +162,32 @@
   /// Size is not required to be a multiple of 8 bytes. Given a file F, the next file header is
   /// located at the next 8-byte aligned firmware volume offset following the last byte of the file F.
   ///
-  UINT8                     Size[3];
+  UINT8                 Size[3];
 
   ///
   /// Used to track the state of the file throughout the life of the file from creation to deletion.
   ///
-  EFI_FFS_FILE_STATE        State;
+  EFI_FFS_FILE_STATE    State;
 
   ///
   /// If FFS_ATTRIB_LARGE_FILE is set in Attributes, then ExtendedSize exists and Size must be set to zero.
   /// If FFS_ATTRIB_LARGE_FILE is not set then EFI_FFS_FILE_HEADER is used.
   ///
-  UINT64                    ExtendedSize;
+  UINT64                ExtendedSize;
 } EFI_FFS_FILE_HEADER2;
 
 #define IS_FFS_FILE2(FfsFileHeaderPtr) \
     (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
 
-#define FFS_FILE_SIZE(FfsFileHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Size) & 0x00ffffff))
+///
+/// The argument passed as the FfsFileHeaderPtr parameter to the
+/// FFS_FILE_SIZE() function-like macro below must not have side effects:
+/// FfsFileHeaderPtr is evaluated multiple times.
+///
+#define FFS_FILE_SIZE(FfsFileHeaderPtr)  ((UINT32) (\
+    (((EFI_FFS_FILE_HEADER *) (UINTN) (FfsFileHeaderPtr))->Size[0]      ) | \
+    (((EFI_FFS_FILE_HEADER *) (UINTN) (FfsFileHeaderPtr))->Size[1] <<  8) | \
+    (((EFI_FFS_FILE_HEADER *) (UINTN) (FfsFileHeaderPtr))->Size[2] << 16)))
 
 #define FFS_FILE2_SIZE(FfsFileHeaderPtr) \
     ((UINT32) (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize))
@@ -193,32 +198,33 @@
 /// Pseudo type. It is used as a wild card when retrieving sections.
 ///  The section type EFI_SECTION_ALL matches all section types.
 ///
-#define EFI_SECTION_ALL                   0x00
+#define EFI_SECTION_ALL  0x00
 
 ///
 /// Encapsulation section Type values.
 ///
-#define EFI_SECTION_COMPRESSION           0x01
+#define EFI_SECTION_COMPRESSION  0x01
 
-#define EFI_SECTION_GUID_DEFINED          0x02
+#define EFI_SECTION_GUID_DEFINED  0x02
 
-#define EFI_SECTION_DISPOSABLE            0x03
+#define EFI_SECTION_DISPOSABLE  0x03
 
 ///
 /// Leaf section Type values.
 ///
-#define EFI_SECTION_PE32                  0x10
-#define EFI_SECTION_PIC                   0x11
-#define EFI_SECTION_TE                    0x12
-#define EFI_SECTION_DXE_DEPEX             0x13
-#define EFI_SECTION_VERSION               0x14
-#define EFI_SECTION_USER_INTERFACE        0x15
-#define EFI_SECTION_COMPATIBILITY16       0x16
-#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
-#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
-#define EFI_SECTION_RAW                   0x19
-#define EFI_SECTION_PEI_DEPEX             0x1B
-#define EFI_SECTION_SMM_DEPEX             0x1C
+#define EFI_SECTION_PE32                   0x10
+#define EFI_SECTION_PIC                    0x11
+#define EFI_SECTION_TE                     0x12
+#define EFI_SECTION_DXE_DEPEX              0x13
+#define EFI_SECTION_VERSION                0x14
+#define EFI_SECTION_USER_INTERFACE         0x15
+#define EFI_SECTION_COMPATIBILITY16        0x16
+#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE  0x17
+#define EFI_SECTION_FREEFORM_SUBTYPE_GUID  0x18
+#define EFI_SECTION_RAW                    0x19
+#define EFI_SECTION_PEI_DEPEX              0x1B
+#define EFI_SECTION_MM_DEPEX               0x1C
+#define EFI_SECTION_SMM_DEPEX              EFI_SECTION_MM_DEPEX
 
 ///
 /// Common section header.
@@ -228,8 +234,8 @@
   /// A 24-bit unsigned integer that contains the total size of the section in bytes,
   /// including the EFI_COMMON_SECTION_HEADER.
   ///
-  UINT8             Size[3];
-  EFI_SECTION_TYPE  Type;
+  UINT8               Size[3];
+  EFI_SECTION_TYPE    Type;
   ///
   /// Declares the section type.
   ///
@@ -240,15 +246,15 @@
   /// A 24-bit unsigned integer that contains the total size of the section in bytes,
   /// including the EFI_COMMON_SECTION_HEADER.
   ///
-  UINT8             Size[3];
+  UINT8               Size[3];
 
-  EFI_SECTION_TYPE  Type;
+  EFI_SECTION_TYPE    Type;
 
   ///
   /// If Size is 0xFFFFFF, then ExtendedSize contains the size of the section. If
   /// Size is not equal to 0xFFFFFF, then this field does not exist.
   ///
-  UINT32            ExtendedSize;
+  UINT32              ExtendedSize;
 } EFI_COMMON_SECTION_HEADER2;
 
 ///
@@ -271,15 +277,15 @@
   ///
   /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
   ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  EFI_COMMON_SECTION_HEADER    CommonHeader;
   ///
   /// The UINT32 that indicates the size of the section data after decompression.
   ///
-  UINT32                      UncompressedLength;
+  UINT32                       UncompressedLength;
   ///
   /// Indicates which compression algorithm is used.
   ///
-  UINT8                       CompressionType;
+  UINT8                        CompressionType;
 } EFI_COMPRESSION_SECTION;
 
 typedef struct {
@@ -306,20 +312,20 @@
 /// order to conserve space. The contents of this section are implementation specific, but might contain
 /// debug data or detailed integration instructions.
 ///
-typedef EFI_COMMON_SECTION_HEADER   EFI_DISPOSABLE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_DISPOSABLE_SECTION2;
+typedef EFI_COMMON_SECTION_HEADER  EFI_DISPOSABLE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_DISPOSABLE_SECTION2;
 
 ///
 /// The leaf section which could be used to determine the dispatch order of DXEs.
 ///
-typedef EFI_COMMON_SECTION_HEADER   EFI_DXE_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_DXE_DEPEX_SECTION2;
+typedef EFI_COMMON_SECTION_HEADER  EFI_DXE_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_DXE_DEPEX_SECTION2;
 
 ///
 /// The leaf section which contains a PI FV.
 ///
-typedef EFI_COMMON_SECTION_HEADER   EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_FIRMWARE_VOLUME_IMAGE_SECTION2;
+typedef EFI_COMMON_SECTION_HEADER  EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_FIRMWARE_VOLUME_IMAGE_SECTION2;
 
 ///
 /// The leaf section which contains a single GUID.
@@ -328,11 +334,11 @@
   ///
   /// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
   ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  EFI_COMMON_SECTION_HEADER    CommonHeader;
   ///
   /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
   ///
-  EFI_GUID                    SubTypeGuid;
+  EFI_GUID                     SubTypeGuid;
 } EFI_FREEFORM_SUBTYPE_GUID_SECTION;
 
 typedef struct {
@@ -358,19 +364,19 @@
   ///
   /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
   ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  EFI_COMMON_SECTION_HEADER    CommonHeader;
   ///
   /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
   ///
-  EFI_GUID                    SectionDefinitionGuid;
+  EFI_GUID                     SectionDefinitionGuid;
   ///
   /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
   ///
-  UINT16                      DataOffset;
+  UINT16                       DataOffset;
   ///
   /// The bit field that declares some specific characteristics of the section contents.
   ///
-  UINT16                      Attributes;
+  UINT16                       Attributes;
 } EFI_GUID_DEFINED_SECTION;
 
 typedef struct {
@@ -395,14 +401,14 @@
 ///
 /// The leaf section which contains PE32+ image.
 ///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PE32_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PE32_SECTION2;
+typedef EFI_COMMON_SECTION_HEADER  EFI_PE32_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_PE32_SECTION2;
 
 ///
 /// The leaf section used to determine the dispatch order of PEIMs.
 ///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PEI_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PEI_DEPEX_SECTION2;
+typedef EFI_COMMON_SECTION_HEADER  EFI_PEI_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_PEI_DEPEX_SECTION2;
 
 ///
 /// A leaf section type that contains a position-independent-code (PIC) image.
@@ -413,20 +419,20 @@
 /// execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must
 /// be used if the section is 16MB or larger.
 ///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PIC_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PIC_SECTION2;
+typedef EFI_COMMON_SECTION_HEADER  EFI_PIC_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_PIC_SECTION2;
 
 ///
 /// The leaf section which constains the position-independent-code image.
 ///
-typedef EFI_COMMON_SECTION_HEADER   EFI_TE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_TE_SECTION2;
+typedef EFI_COMMON_SECTION_HEADER  EFI_TE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_TE_SECTION2;
 
 ///
 /// The leaf section which contains an array of zero or more bytes.
 ///
-typedef EFI_COMMON_SECTION_HEADER   EFI_RAW_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_RAW_SECTION2;
+typedef EFI_COMMON_SECTION_HEADER  EFI_RAW_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_RAW_SECTION2;
 
 ///
 /// The SMM dependency expression section is a leaf section that contains a dependency expression that
@@ -436,7 +442,7 @@
 /// The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol
 /// database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger.
 ///
-typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER  EFI_SMM_DEPEX_SECTION;
 typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2;
 
 ///
@@ -444,12 +450,12 @@
 /// is human readable file name.
 ///
 typedef struct {
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  EFI_COMMON_SECTION_HEADER    CommonHeader;
 
   ///
   /// Array of unicode string.
   ///
-  CHAR16                      FileNameString[1];
+  CHAR16                       FileNameString[1];
 } EFI_USER_INTERFACE_SECTION;
 
 typedef struct {
@@ -462,13 +468,13 @@
 /// an optional unicode string that represents the file revision.
 ///
 typedef struct {
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  UINT16                      BuildNumber;
+  EFI_COMMON_SECTION_HEADER    CommonHeader;
+  UINT16                       BuildNumber;
 
   ///
   /// Array of unicode string.
   ///
-  CHAR16                      VersionString[1];
+  CHAR16                       VersionString[1];
 } EFI_VERSION_SECTION;
 
 typedef struct {
@@ -481,11 +487,18 @@
   CHAR16                        VersionString[1];
 } EFI_VERSION_SECTION2;
 
-#define IS_SECTION2(SectionHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff) == 0x00ffffff)
+///
+/// The argument passed as the SectionHeaderPtr parameter to the SECTION_SIZE()
+/// and IS_SECTION2() function-like macros below must not have side effects:
+/// SectionHeaderPtr is evaluated multiple times.
+///
+#define SECTION_SIZE(SectionHeaderPtr)  ((UINT32) (\
+    (((EFI_COMMON_SECTION_HEADER *) (UINTN) (SectionHeaderPtr))->Size[0]      ) | \
+    (((EFI_COMMON_SECTION_HEADER *) (UINTN) (SectionHeaderPtr))->Size[1] <<  8) | \
+    (((EFI_COMMON_SECTION_HEADER *) (UINTN) (SectionHeaderPtr))->Size[2] << 16)))
 
-#define SECTION_SIZE(SectionHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff))
+#define IS_SECTION2(SectionHeaderPtr) \
+    (SECTION_SIZE (SectionHeaderPtr) == 0x00ffffff)
 
 #define SECTION2_SIZE(SectionHeaderPtr) \
     (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
@@ -493,4 +506,3 @@
 #pragma pack()
 
 #endif
-
diff --git a/src/include/ipxe/efi/Pi/PiFirmwareVolume.h b/src/include/ipxe/efi/Pi/PiFirmwareVolume.h
index e818861..f46134f 100644
--- a/src/include/ipxe/efi/Pi/PiFirmwareVolume.h
+++ b/src/include/ipxe/efi/Pi/PiFirmwareVolume.h
@@ -1,29 +1,23 @@
 /** @file
   The firmware volume related definitions in PI.
 
-  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
-  PI Version 1.3
+  PI Version 1.6
 
 **/
 
 #ifndef __PI_FIRMWAREVOLUME_H__
 #define __PI_FIRMWAREVOLUME_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// EFI_FV_FILE_ATTRIBUTES
 ///
-typedef UINT32  EFI_FV_FILE_ATTRIBUTES;
+typedef UINT32 EFI_FV_FILE_ATTRIBUTES;
 
 //
 // Value of EFI_FV_FILE_ATTRIBUTES.
@@ -35,70 +29,70 @@
 ///
 /// type of EFI FVB attribute
 ///
-typedef UINT32  EFI_FVB_ATTRIBUTES_2;
+typedef UINT32 EFI_FVB_ATTRIBUTES_2;
 
 //
 // Attributes bit definitions
 //
-#define EFI_FVB2_READ_DISABLED_CAP  0x00000001
-#define EFI_FVB2_READ_ENABLED_CAP   0x00000002
-#define EFI_FVB2_READ_STATUS        0x00000004
-#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
-#define EFI_FVB2_WRITE_ENABLED_CAP  0x00000010
-#define EFI_FVB2_WRITE_STATUS       0x00000020
-#define EFI_FVB2_LOCK_CAP           0x00000040
-#define EFI_FVB2_LOCK_STATUS        0x00000080
-#define EFI_FVB2_STICKY_WRITE       0x00000200
-#define EFI_FVB2_MEMORY_MAPPED      0x00000400
-#define EFI_FVB2_ERASE_POLARITY     0x00000800
-#define EFI_FVB2_READ_LOCK_CAP      0x00001000
-#define EFI_FVB2_READ_LOCK_STATUS   0x00002000
-#define EFI_FVB2_WRITE_LOCK_CAP     0x00004000
-#define EFI_FVB2_WRITE_LOCK_STATUS  0x00008000
-#define EFI_FVB2_ALIGNMENT          0x001F0000
-#define EFI_FVB2_ALIGNMENT_1        0x00000000
-#define EFI_FVB2_ALIGNMENT_2        0x00010000
-#define EFI_FVB2_ALIGNMENT_4        0x00020000
-#define EFI_FVB2_ALIGNMENT_8        0x00030000
-#define EFI_FVB2_ALIGNMENT_16       0x00040000
-#define EFI_FVB2_ALIGNMENT_32       0x00050000
-#define EFI_FVB2_ALIGNMENT_64       0x00060000
-#define EFI_FVB2_ALIGNMENT_128      0x00070000
-#define EFI_FVB2_ALIGNMENT_256      0x00080000
-#define EFI_FVB2_ALIGNMENT_512      0x00090000
-#define EFI_FVB2_ALIGNMENT_1K       0x000A0000
-#define EFI_FVB2_ALIGNMENT_2K       0x000B0000
-#define EFI_FVB2_ALIGNMENT_4K       0x000C0000
-#define EFI_FVB2_ALIGNMENT_8K       0x000D0000
-#define EFI_FVB2_ALIGNMENT_16K      0x000E0000
-#define EFI_FVB2_ALIGNMENT_32K      0x000F0000
-#define EFI_FVB2_ALIGNMENT_64K      0x00100000
-#define EFI_FVB2_ALIGNMENT_128K     0x00110000
-#define EFI_FVB2_ALIGNMENT_256K     0x00120000
-#define EFI_FVB2_ALIGNMENT_512K     0x00130000
-#define EFI_FVB2_ALIGNMENT_1M       0x00140000
-#define EFI_FVB2_ALIGNMENT_2M       0x00150000
-#define EFI_FVB2_ALIGNMENT_4M       0x00160000
-#define EFI_FVB2_ALIGNMENT_8M       0x00170000
-#define EFI_FVB2_ALIGNMENT_16M      0x00180000
-#define EFI_FVB2_ALIGNMENT_32M      0x00190000
-#define EFI_FVB2_ALIGNMENT_64M      0x001A0000
-#define EFI_FVB2_ALIGNMENT_128M     0x001B0000
-#define EFI_FVB2_ALIGNMENT_256M     0x001C0000
-#define EFI_FVB2_ALIGNMENT_512M     0x001D0000
-#define EFI_FVB2_ALIGNMENT_1G       0x001E0000
-#define EFI_FVB2_ALIGNMENT_2G       0x001F0000
-#define EFI_FVB2_WEAK_ALIGNMENT     0x80000000
+#define EFI_FVB2_READ_DISABLED_CAP   0x00000001
+#define EFI_FVB2_READ_ENABLED_CAP    0x00000002
+#define EFI_FVB2_READ_STATUS         0x00000004
+#define EFI_FVB2_WRITE_DISABLED_CAP  0x00000008
+#define EFI_FVB2_WRITE_ENABLED_CAP   0x00000010
+#define EFI_FVB2_WRITE_STATUS        0x00000020
+#define EFI_FVB2_LOCK_CAP            0x00000040
+#define EFI_FVB2_LOCK_STATUS         0x00000080
+#define EFI_FVB2_STICKY_WRITE        0x00000200
+#define EFI_FVB2_MEMORY_MAPPED       0x00000400
+#define EFI_FVB2_ERASE_POLARITY      0x00000800
+#define EFI_FVB2_READ_LOCK_CAP       0x00001000
+#define EFI_FVB2_READ_LOCK_STATUS    0x00002000
+#define EFI_FVB2_WRITE_LOCK_CAP      0x00004000
+#define EFI_FVB2_WRITE_LOCK_STATUS   0x00008000
+#define EFI_FVB2_ALIGNMENT           0x001F0000
+#define EFI_FVB2_ALIGNMENT_1         0x00000000
+#define EFI_FVB2_ALIGNMENT_2         0x00010000
+#define EFI_FVB2_ALIGNMENT_4         0x00020000
+#define EFI_FVB2_ALIGNMENT_8         0x00030000
+#define EFI_FVB2_ALIGNMENT_16        0x00040000
+#define EFI_FVB2_ALIGNMENT_32        0x00050000
+#define EFI_FVB2_ALIGNMENT_64        0x00060000
+#define EFI_FVB2_ALIGNMENT_128       0x00070000
+#define EFI_FVB2_ALIGNMENT_256       0x00080000
+#define EFI_FVB2_ALIGNMENT_512       0x00090000
+#define EFI_FVB2_ALIGNMENT_1K        0x000A0000
+#define EFI_FVB2_ALIGNMENT_2K        0x000B0000
+#define EFI_FVB2_ALIGNMENT_4K        0x000C0000
+#define EFI_FVB2_ALIGNMENT_8K        0x000D0000
+#define EFI_FVB2_ALIGNMENT_16K       0x000E0000
+#define EFI_FVB2_ALIGNMENT_32K       0x000F0000
+#define EFI_FVB2_ALIGNMENT_64K       0x00100000
+#define EFI_FVB2_ALIGNMENT_128K      0x00110000
+#define EFI_FVB2_ALIGNMENT_256K      0x00120000
+#define EFI_FVB2_ALIGNMENT_512K      0x00130000
+#define EFI_FVB2_ALIGNMENT_1M        0x00140000
+#define EFI_FVB2_ALIGNMENT_2M        0x00150000
+#define EFI_FVB2_ALIGNMENT_4M        0x00160000
+#define EFI_FVB2_ALIGNMENT_8M        0x00170000
+#define EFI_FVB2_ALIGNMENT_16M       0x00180000
+#define EFI_FVB2_ALIGNMENT_32M       0x00190000
+#define EFI_FVB2_ALIGNMENT_64M       0x001A0000
+#define EFI_FVB2_ALIGNMENT_128M      0x001B0000
+#define EFI_FVB2_ALIGNMENT_256M      0x001C0000
+#define EFI_FVB2_ALIGNMENT_512M      0x001D0000
+#define EFI_FVB2_ALIGNMENT_1G        0x001E0000
+#define EFI_FVB2_ALIGNMENT_2G        0x001F0000
+#define EFI_FVB2_WEAK_ALIGNMENT      0x80000000
 
 typedef struct {
   ///
   /// The number of sequential blocks which are of the same size.
   ///
-  UINT32 NumBlocks;
+  UINT32    NumBlocks;
   ///
   /// The size of the blocks.
   ///
-  UINT32 Length;
+  UINT32    Length;
 } EFI_FV_BLOCK_MAP_ENTRY;
 
 ///
@@ -155,7 +149,7 @@
   EFI_FV_BLOCK_MAP_ENTRY    BlockMap[1];
 } EFI_FIRMWARE_VOLUME_HEADER;
 
-#define EFI_FVH_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', 'H')
+#define EFI_FVH_SIGNATURE  SIGNATURE_32 ('_', 'F', 'V', 'H')
 
 ///
 /// Firmware Volume Header Revision definition
@@ -169,11 +163,11 @@
   ///
   /// Firmware volume name.
   ///
-  EFI_GUID  FvName;
+  EFI_GUID    FvName;
   ///
   /// Size of the rest of the extension header, including this structure.
   ///
-  UINT32    ExtHeaderSize;
+  UINT32      ExtHeaderSize;
 } EFI_FIRMWARE_VOLUME_EXT_HEADER;
 
 ///
@@ -198,12 +192,12 @@
   ///
   /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
   ///
-  EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
+  EFI_FIRMWARE_VOLUME_EXT_ENTRY    Hdr;
   ///
   /// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit
   /// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types.
   ///
-  UINT32    TypeMask;
+  UINT32                           TypeMask;
   ///
   /// An array of GUIDs, each GUID representing an OEM file type.
   ///
@@ -211,7 +205,7 @@
   ///
 } EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
 
-#define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002
+#define EFI_FV_EXT_TYPE_GUID_TYPE  0x0002
 
 ///
 /// This extension header EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE provides a vendor specific
@@ -221,11 +215,11 @@
   ///
   /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
   ///
-  EFI_FIRMWARE_VOLUME_EXT_ENTRY     Hdr;
+  EFI_FIRMWARE_VOLUME_EXT_ENTRY    Hdr;
   ///
   /// Vendor-specific GUID.
   ///
-  EFI_GUID                          FormatType;
+  EFI_GUID                         FormatType;
   ///
   /// An arry of bytes of length Length.
   ///
@@ -233,4 +227,23 @@
   ///
 } EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE;
 
+#define EFI_FV_EXT_TYPE_USED_SIZE_TYPE  0x03
+
+///
+/// The EFI_FIRMWARE_VOLUME_EXT_ENTRY_USED_SIZE_TYPE can be used to find
+/// out how many EFI_FVB2_ERASE_POLARITY bytes are at the end of the FV.
+///
+typedef struct {
+  ///
+  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_USED_SIZE_TYPE.
+  ///
+  EFI_FIRMWARE_VOLUME_EXT_ENTRY    Hdr;
+  ///
+  /// The number of bytes of the FV that are in uses. The remaining
+  /// EFI_FIRMWARE_VOLUME_HEADER FvLength minus UsedSize bytes in
+  /// the FV must contain the value implied by EFI_FVB2_ERASE_POLARITY.
+  ///
+  UINT32                           UsedSize;
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY_USED_SIZE_TYPE;
+
 #endif
diff --git a/src/include/ipxe/efi/Pi/PiHob.h b/src/include/ipxe/efi/Pi/PiHob.h
index 2663b05..5ecdf32 100644
--- a/src/include/ipxe/efi/Pi/PiHob.h
+++ b/src/include/ipxe/efi/Pi/PiHob.h
@@ -1,24 +1,18 @@
 /** @file
   HOB related definitions in PI.
 
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
-  PI Version 1.4a
+  PI Version 1.6
 
 **/
 
 #ifndef __PI_HOB_H__
 #define __PI_HOB_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 //
 // HobType of EFI_HOB_GENERIC_HEADER.
@@ -33,6 +27,7 @@
 #define EFI_HOB_TYPE_FV2                  0x0009
 #define EFI_HOB_TYPE_LOAD_PEIM_UNUSED     0x000A
 #define EFI_HOB_TYPE_UEFI_CAPSULE         0x000B
+#define EFI_HOB_TYPE_FV3                  0x000C
 #define EFI_HOB_TYPE_UNUSED               0xFFFE
 #define EFI_HOB_TYPE_END_OF_HOB_LIST      0xFFFF
 
@@ -55,11 +50,10 @@
   UINT32    Reserved;
 } EFI_HOB_GENERIC_HEADER;
 
-
 ///
 /// Value of version  in EFI_HOB_HANDOFF_INFO_TABLE.
 ///
-#define EFI_HOB_HANDOFF_TABLE_VERSION 0x0009
+#define EFI_HOB_HANDOFF_TABLE_VERSION  0x0009
 
 ///
 /// Contains general state information used by the HOB producer phase.
@@ -69,39 +63,39 @@
   ///
   /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_HANDOFF.
   ///
-  EFI_HOB_GENERIC_HEADER  Header;
+  EFI_HOB_GENERIC_HEADER    Header;
   ///
   /// The version number pertaining to the PHIT HOB definition.
   /// This value is four bytes in length to provide an 8-byte aligned entry
   /// when it is combined with the 4-byte BootMode.
   ///
-  UINT32                  Version;
+  UINT32                    Version;
   ///
   /// The system boot mode as determined during the HOB producer phase.
   ///
-  EFI_BOOT_MODE           BootMode;
+  EFI_BOOT_MODE             BootMode;
   ///
   /// The highest address location of memory that is allocated for use by the HOB producer
   /// phase. This address must be 4-KB aligned to meet page restrictions of UEFI.
   ///
-  EFI_PHYSICAL_ADDRESS    EfiMemoryTop;
+  EFI_PHYSICAL_ADDRESS      EfiMemoryTop;
   ///
   /// The lowest address location of memory that is allocated for use by the HOB producer phase.
   ///
-  EFI_PHYSICAL_ADDRESS    EfiMemoryBottom;
+  EFI_PHYSICAL_ADDRESS      EfiMemoryBottom;
   ///
   /// The highest address location of free memory that is currently available
   /// for use by the HOB producer phase.
   ///
-  EFI_PHYSICAL_ADDRESS    EfiFreeMemoryTop;
+  EFI_PHYSICAL_ADDRESS      EfiFreeMemoryTop;
   ///
   /// The lowest address location of free memory that is available for use by the HOB producer phase.
   ///
-  EFI_PHYSICAL_ADDRESS    EfiFreeMemoryBottom;
+  EFI_PHYSICAL_ADDRESS      EfiFreeMemoryBottom;
   ///
   /// The end of the HOB list.
   ///
-  EFI_PHYSICAL_ADDRESS    EfiEndOfHobList;
+  EFI_PHYSICAL_ADDRESS      EfiEndOfHobList;
 } EFI_HOB_HANDOFF_INFO_TABLE;
 
 ///
@@ -117,31 +111,31 @@
   /// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0
   /// specification.
   ///
-  EFI_GUID              Name;
+  EFI_GUID                Name;
 
   ///
   /// The base address of memory allocated by this HOB. Type
   /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0
   /// specification.
   ///
-  EFI_PHYSICAL_ADDRESS  MemoryBaseAddress;
+  EFI_PHYSICAL_ADDRESS    MemoryBaseAddress;
 
   ///
   /// The length in bytes of memory allocated by this HOB.
   ///
-  UINT64                MemoryLength;
+  UINT64                  MemoryLength;
 
   ///
   /// Defines the type of memory allocated by this HOB. The memory type definition
   /// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined
   /// in AllocatePages() in the UEFI 2.0 specification.
   ///
-  EFI_MEMORY_TYPE       MemoryType;
+  EFI_MEMORY_TYPE         MemoryType;
 
   ///
   /// Padding for Itanium processor family
   ///
-  UINT8                 Reserved[4];
+  UINT8                   Reserved[4];
 } EFI_HOB_MEMORY_ALLOCATION_HEADER;
 
 ///
@@ -153,19 +147,18 @@
   ///
   /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
   ///
-  EFI_HOB_GENERIC_HEADER            Header;
+  EFI_HOB_GENERIC_HEADER              Header;
   ///
   /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
   /// various attributes of the logical memory allocation.
   ///
-  EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
+  EFI_HOB_MEMORY_ALLOCATION_HEADER    AllocDescriptor;
   //
   // Additional data pertaining to the "Name" Guid memory
   // may go here.
   //
 } EFI_HOB_MEMORY_ALLOCATION;
 
-
 ///
 /// Describes the memory stack that is produced by the HOB producer
 /// phase and upon which all post-memory-installed executable
@@ -175,12 +168,12 @@
   ///
   /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
   ///
-  EFI_HOB_GENERIC_HEADER            Header;
+  EFI_HOB_GENERIC_HEADER              Header;
   ///
   /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
   /// various attributes of the logical memory allocation.
   ///
-  EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
+  EFI_HOB_MEMORY_ALLOCATION_HEADER    AllocDescriptor;
 } EFI_HOB_MEMORY_ALLOCATION_STACK;
 
 ///
@@ -193,12 +186,12 @@
   ///
   /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
   ///
-  EFI_HOB_GENERIC_HEADER            Header;
+  EFI_HOB_GENERIC_HEADER              Header;
   ///
   /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
   /// various attributes of the logical memory allocation.
   ///
-  EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
+  EFI_HOB_MEMORY_ALLOCATION_HEADER    AllocDescriptor;
 } EFI_HOB_MEMORY_ALLOCATION_BSP_STORE;
 
 ///
@@ -208,22 +201,22 @@
   ///
   /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
   ///
-  EFI_HOB_GENERIC_HEADER            Header;
+  EFI_HOB_GENERIC_HEADER              Header;
   ///
   /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
   /// various attributes of the logical memory allocation.
   ///
-  EFI_HOB_MEMORY_ALLOCATION_HEADER  MemoryAllocationHeader;
+  EFI_HOB_MEMORY_ALLOCATION_HEADER    MemoryAllocationHeader;
   ///
   /// The GUID specifying the values of the firmware file system name
   /// that contains the HOB consumer phase component.
   ///
-  EFI_GUID                          ModuleName;
+  EFI_GUID                            ModuleName;
   ///
   /// The address of the memory-mapped firmware volume
   /// that contains the HOB consumer phase firmware file.
   ///
-  EFI_PHYSICAL_ADDRESS              EntryPoint;
+  EFI_PHYSICAL_ADDRESS                EntryPoint;
 } EFI_HOB_MEMORY_ALLOCATION_MODULE;
 
 ///
@@ -241,7 +234,16 @@
 #define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT  0x00000004
 #define EFI_RESOURCE_MEMORY_RESERVED        0x00000005
 #define EFI_RESOURCE_IO_RESERVED            0x00000006
-#define EFI_RESOURCE_MAX_MEMORY_TYPE        0x00000007
+//
+// BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED is defined for unaccepted memory.
+// But this defitinion has not been officially in the PI spec. Base
+// on the code-first we define BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED at
+// MdeModulePkg/Include/Pi/PrePiHob.h and update EFI_RESOURCE_MAX_MEMORY_TYPE
+// to 8. After BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED is officially published
+// in PI spec, we will re-visit here.
+//
+// #define BZ3937_EFI_RESOURCE_MEMORY_UNACCEPTED      0x00000007
+#define EFI_RESOURCE_MAX_MEMORY_TYPE  0x00000008
 
 ///
 /// A type of recount attribute type.
@@ -253,10 +255,10 @@
 //
 // The following attributes are used to describe settings
 //
-#define EFI_RESOURCE_ATTRIBUTE_PRESENT                  0x00000001
-#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED              0x00000002
-#define EFI_RESOURCE_ATTRIBUTE_TESTED                   0x00000004
-#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED           0x00000080
+#define EFI_RESOURCE_ATTRIBUTE_PRESENT         0x00000001
+#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED     0x00000002
+#define EFI_RESOURCE_ATTRIBUTE_TESTED          0x00000004
+#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED  0x00000080
 //
 // This is typically used as memory cacheability attribute today.
 // NOTE: Since PI spec 1.4, please use EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTED
@@ -264,9 +266,9 @@
 // means Memory cacheability attribute: The memory supports being programmed with
 // a writeprotected cacheable attribute.
 //
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED          0x00000100
-#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED      0x00000200
-#define EFI_RESOURCE_ATTRIBUTE_PERSISTENT               0x00800000
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED      0x00000100
+#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED  0x00000200
+#define EFI_RESOURCE_ATTRIBUTE_PERSISTENT           0x00800000
 //
 // The rest of the attributes are used to describe capabilities
 //
@@ -290,12 +292,12 @@
 // writes, and EFI_RESOURCE_ATTRIBUTE_WRITE_PROTEC TABLE means Memory cacheability attribute:
 // The memory supports being programmed with a writeprotected cacheable attribute.
 //
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTABLE        0x00200000
-#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTABLE    0x00400000
-#define EFI_RESOURCE_ATTRIBUTE_PERSISTABLE              0x01000000
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTABLE      0x00200000
+#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTABLE  0x00400000
+#define EFI_RESOURCE_ATTRIBUTE_PERSISTABLE            0x01000000
 
-#define EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTED      0x00040000
-#define EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE    0x00080000
+#define EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTED    0x00040000
+#define EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE  0x00080000
 
 //
 // Physical memory relative reliability attribute. This
@@ -303,7 +305,7 @@
 // memory in the system. If all memory has the same
 // reliability, then this bit is not used.
 //
-#define EFI_RESOURCE_ATTRIBUTE_MORE_RELIABLE            0x02000000
+#define EFI_RESOURCE_ATTRIBUTE_MORE_RELIABLE  0x02000000
 
 ///
 /// Describes the resource properties of all fixed,
@@ -314,28 +316,28 @@
   ///
   /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.
   ///
-  EFI_HOB_GENERIC_HEADER      Header;
+  EFI_HOB_GENERIC_HEADER         Header;
   ///
   /// A GUID representing the owner of the resource. This GUID is used by HOB
   /// consumer phase components to correlate device ownership of a resource.
   ///
-  EFI_GUID                    Owner;
+  EFI_GUID                       Owner;
   ///
   /// The resource type enumeration as defined by EFI_RESOURCE_TYPE.
   ///
-  EFI_RESOURCE_TYPE           ResourceType;
+  EFI_RESOURCE_TYPE              ResourceType;
   ///
   /// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.
   ///
-  EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
+  EFI_RESOURCE_ATTRIBUTE_TYPE    ResourceAttribute;
   ///
   /// The physical start address of the resource region.
   ///
-  EFI_PHYSICAL_ADDRESS        PhysicalStart;
+  EFI_PHYSICAL_ADDRESS           PhysicalStart;
   ///
   /// The number of bytes of the resource region.
   ///
-  UINT64                      ResourceLength;
+  UINT64                         ResourceLength;
 } EFI_HOB_RESOURCE_DESCRIPTOR;
 
 ///
@@ -346,11 +348,11 @@
   ///
   /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.
   ///
-  EFI_HOB_GENERIC_HEADER      Header;
+  EFI_HOB_GENERIC_HEADER    Header;
   ///
   /// A GUID that defines the contents of this HOB.
   ///
-  EFI_GUID                    Name;
+  EFI_GUID                  Name;
   //
   // Guid specific data goes here
   //
@@ -363,15 +365,15 @@
   ///
   /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_FV.
   ///
-  EFI_HOB_GENERIC_HEADER Header;
+  EFI_HOB_GENERIC_HEADER    Header;
   ///
   /// The physical memory-mapped base address of the firmware volume.
   ///
-  EFI_PHYSICAL_ADDRESS   BaseAddress;
+  EFI_PHYSICAL_ADDRESS      BaseAddress;
   ///
   /// The length in bytes of the firmware volume.
   ///
-  UINT64                 Length;
+  UINT64                    Length;
 } EFI_HOB_FIRMWARE_VOLUME;
 
 ///
@@ -382,25 +384,62 @@
   ///
   /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_FV2.
   ///
-  EFI_HOB_GENERIC_HEADER  Header;
+  EFI_HOB_GENERIC_HEADER    Header;
   ///
   /// The physical memory-mapped base address of the firmware volume.
   ///
-  EFI_PHYSICAL_ADDRESS    BaseAddress;
+  EFI_PHYSICAL_ADDRESS      BaseAddress;
   ///
   /// The length in bytes of the firmware volume.
   ///
-  UINT64                  Length;
+  UINT64                    Length;
   ///
   /// The name of the firmware volume.
   ///
-  EFI_GUID                FvName;
+  EFI_GUID                  FvName;
   ///
   /// The name of the firmware file that contained this firmware volume.
   ///
-  EFI_GUID                FileName;
+  EFI_GUID                  FileName;
 } EFI_HOB_FIRMWARE_VOLUME2;
 
+///
+/// Details the location of a firmware volume that was extracted
+/// from a file within another firmware volume.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_FV3.
+  ///
+  EFI_HOB_GENERIC_HEADER    Header;
+  ///
+  /// The physical memory-mapped base address of the firmware volume.
+  ///
+  EFI_PHYSICAL_ADDRESS      BaseAddress;
+  ///
+  /// The length in bytes of the firmware volume.
+  ///
+  UINT64                    Length;
+  ///
+  /// The authentication status.
+  ///
+  UINT32                    AuthenticationStatus;
+  ///
+  /// TRUE if the FV was extracted as a file within another firmware volume.
+  /// FALSE otherwise.
+  ///
+  BOOLEAN                   ExtractedFv;
+  ///
+  /// The name of the firmware volume.
+  /// Valid only if IsExtractedFv is TRUE.
+  ///
+  EFI_GUID                  FvName;
+  ///
+  /// The name of the firmware file that contained this firmware volume.
+  /// Valid only if IsExtractedFv is TRUE.
+  ///
+  EFI_GUID                  FileName;
+} EFI_HOB_FIRMWARE_VOLUME3;
 
 ///
 /// Describes processor information, such as address space and I/O space capabilities.
@@ -409,22 +448,21 @@
   ///
   /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_CPU.
   ///
-  EFI_HOB_GENERIC_HEADER  Header;
+  EFI_HOB_GENERIC_HEADER    Header;
   ///
   /// Identifies the maximum physical memory addressability of the processor.
   ///
-  UINT8                   SizeOfMemorySpace;
+  UINT8                     SizeOfMemorySpace;
   ///
   /// Identifies the maximum physical I/O addressability of the processor.
   ///
-  UINT8                   SizeOfIoSpace;
+  UINT8                     SizeOfIoSpace;
   ///
   /// This field will always be set to zero.
   ///
-  UINT8                   Reserved[6];
+  UINT8                     Reserved[6];
 } EFI_HOB_CPU;
 
-
 ///
 /// Describes pool memory allocations.
 ///
@@ -432,7 +470,7 @@
   ///
   /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_POOL.
   ///
-  EFI_HOB_GENERIC_HEADER  Header;
+  EFI_HOB_GENERIC_HEADER    Header;
 } EFI_HOB_MEMORY_POOL;
 
 ///
@@ -446,36 +484,36 @@
   ///
   /// The HOB generic header where Header.HobType = EFI_HOB_TYPE_UEFI_CAPSULE.
   ///
-  EFI_HOB_GENERIC_HEADER Header;
+  EFI_HOB_GENERIC_HEADER    Header;
 
   ///
   /// The physical memory-mapped base address of an UEFI capsule. This value is set to
   /// point to the base of the contiguous memory of the UEFI capsule.
   /// The length of the contiguous memory in bytes.
   ///
-  EFI_PHYSICAL_ADDRESS   BaseAddress;
-  UINT64                 Length;
+  EFI_PHYSICAL_ADDRESS      BaseAddress;
+  UINT64                    Length;
 } EFI_HOB_UEFI_CAPSULE;
 
 ///
 /// Union of all the possible HOB Types.
 ///
 typedef union {
-  EFI_HOB_GENERIC_HEADER              *Header;
-  EFI_HOB_HANDOFF_INFO_TABLE          *HandoffInformationTable;
-  EFI_HOB_MEMORY_ALLOCATION           *MemoryAllocation;
-  EFI_HOB_MEMORY_ALLOCATION_BSP_STORE *MemoryAllocationBspStore;
-  EFI_HOB_MEMORY_ALLOCATION_STACK     *MemoryAllocationStack;
-  EFI_HOB_MEMORY_ALLOCATION_MODULE    *MemoryAllocationModule;
-  EFI_HOB_RESOURCE_DESCRIPTOR         *ResourceDescriptor;
-  EFI_HOB_GUID_TYPE                   *Guid;
-  EFI_HOB_FIRMWARE_VOLUME             *FirmwareVolume;
-  EFI_HOB_FIRMWARE_VOLUME2            *FirmwareVolume2;
-  EFI_HOB_CPU                         *Cpu;
-  EFI_HOB_MEMORY_POOL                 *Pool;
-  EFI_HOB_UEFI_CAPSULE                *Capsule;
-  UINT8                               *Raw;
+  EFI_HOB_GENERIC_HEADER                 *Header;
+  EFI_HOB_HANDOFF_INFO_TABLE             *HandoffInformationTable;
+  EFI_HOB_MEMORY_ALLOCATION              *MemoryAllocation;
+  EFI_HOB_MEMORY_ALLOCATION_BSP_STORE    *MemoryAllocationBspStore;
+  EFI_HOB_MEMORY_ALLOCATION_STACK        *MemoryAllocationStack;
+  EFI_HOB_MEMORY_ALLOCATION_MODULE       *MemoryAllocationModule;
+  EFI_HOB_RESOURCE_DESCRIPTOR            *ResourceDescriptor;
+  EFI_HOB_GUID_TYPE                      *Guid;
+  EFI_HOB_FIRMWARE_VOLUME                *FirmwareVolume;
+  EFI_HOB_FIRMWARE_VOLUME2               *FirmwareVolume2;
+  EFI_HOB_FIRMWARE_VOLUME3               *FirmwareVolume3;
+  EFI_HOB_CPU                            *Cpu;
+  EFI_HOB_MEMORY_POOL                    *Pool;
+  EFI_HOB_UEFI_CAPSULE                   *Capsule;
+  UINT8                                  *Raw;
 } EFI_PEI_HOB_POINTERS;
 
-
 #endif
diff --git a/src/include/ipxe/efi/Pi/PiMultiPhase.h b/src/include/ipxe/efi/Pi/PiMultiPhase.h
index f35bb14..e631821 100644
--- a/src/include/ipxe/efi/Pi/PiMultiPhase.h
+++ b/src/include/ipxe/efi/Pi/PiMultiPhase.h
@@ -1,14 +1,8 @@
 /** @file
   Include file matches things in PI for multiple module types.
 
-Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   These elements are defined in UEFI Platform Initialization Specification 1.2.
@@ -18,7 +12,7 @@
 #ifndef __PI_MULTIPHASE_H__
 #define __PI_MULTIPHASE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Pi/PiFirmwareVolume.h>
 #include <ipxe/efi/Pi/PiFirmwareFile.h>
@@ -52,26 +46,26 @@
 /// If this value is returned by an API, it means the capability is not yet
 /// installed/available/ready to use.
 ///
-#define EFI_NOT_AVAILABLE_YET     DXE_ERROR (2)
+#define EFI_NOT_AVAILABLE_YET  DXE_ERROR (2)
 
 ///
 /// Success and warning codes reserved for use by PI.
 /// Supported 32-bit range is 0x20000000-0x3fffffff.
 /// Supported 64-bit range is 0x2000000000000000-0x3fffffffffffffff.
 ///
-#define PI_ENCODE_WARNING(a)                ((MAX_BIT >> 2) | (a))
+#define PI_ENCODE_WARNING(a)  ((MAX_BIT >> 2) | (a))
 
 ///
 /// Error codes reserved for use by PI.
 /// Supported 32-bit range is 0xa0000000-0xbfffffff.
 /// Supported 64-bit range is 0xa000000000000000-0xbfffffffffffffff.
 ///
-#define PI_ENCODE_ERROR(a)                  (MAX_BIT | (MAX_BIT >> 2) | (a))
+#define PI_ENCODE_ERROR(a)  (MAX_BIT | (MAX_BIT >> 2) | (a))
 
 ///
 /// Return status codes defined in SMM CIS.
 ///
-#define EFI_INTERRUPT_PENDING               PI_ENCODE_ERROR (0)
+#define EFI_INTERRUPT_PENDING  PI_ENCODE_ERROR (0)
 
 #define EFI_WARN_INTERRUPT_SOURCE_PENDING   PI_ENCODE_WARNING (0)
 #define EFI_WARN_INTERRUPT_SOURCE_QUIESCED  PI_ENCODE_WARNING (1)
@@ -89,51 +83,73 @@
 /// 1010 Image was signed, the signature was tested, and the signature failed the authentication test.
 ///
 ///@{
-#define EFI_AUTH_STATUS_PLATFORM_OVERRIDE   0x01
-#define EFI_AUTH_STATUS_IMAGE_SIGNED        0x02
-#define EFI_AUTH_STATUS_NOT_TESTED          0x04
-#define EFI_AUTH_STATUS_TEST_FAILED         0x08
-#define EFI_AUTH_STATUS_ALL                 0x0f
+#define EFI_AUTH_STATUS_PLATFORM_OVERRIDE  0x01
+#define EFI_AUTH_STATUS_IMAGE_SIGNED       0x02
+#define EFI_AUTH_STATUS_NOT_TESTED         0x04
+#define EFI_AUTH_STATUS_TEST_FAILED        0x08
+#define EFI_AUTH_STATUS_ALL                0x0f
 ///@}
 
 ///
-/// SMRAM states and capabilities
+/// MMRAM states and capabilities
 ///
-#define EFI_SMRAM_OPEN                  0x00000001
-#define EFI_SMRAM_CLOSED                0x00000002
-#define EFI_SMRAM_LOCKED                0x00000004
-#define EFI_CACHEABLE                   0x00000008
-#define EFI_ALLOCATED                   0x00000010
-#define EFI_NEEDS_TESTING               0x00000020
-#define EFI_NEEDS_ECC_INITIALIZATION    0x00000040
+#define EFI_MMRAM_OPEN                0x00000001
+#define EFI_MMRAM_CLOSED              0x00000002
+#define EFI_MMRAM_LOCKED              0x00000004
+#define EFI_CACHEABLE                 0x00000008
+#define EFI_ALLOCATED                 0x00000010
+#define EFI_NEEDS_TESTING             0x00000020
+#define EFI_NEEDS_ECC_INITIALIZATION  0x00000040
+
+#define EFI_SMRAM_OPEN    EFI_MMRAM_OPEN
+#define EFI_SMRAM_CLOSED  EFI_MMRAM_CLOSED
+#define EFI_SMRAM_LOCKED  EFI_MMRAM_LOCKED
 
 ///
-/// Structure describing a SMRAM region and its accessibility attributes.
+/// Structure describing a MMRAM region and its accessibility attributes.
 ///
 typedef struct {
   ///
-  /// Designates the physical address of the SMRAM in memory. This view of memory is
+  /// Designates the physical address of the MMRAM in memory. This view of memory is
   /// the same as seen by I/O-based agents, for example, but it may not be the address seen
   /// by the processors.
   ///
-  EFI_PHYSICAL_ADDRESS  PhysicalStart;
+  EFI_PHYSICAL_ADDRESS    PhysicalStart;
   ///
-  /// Designates the address of the SMRAM, as seen by software executing on the
+  /// Designates the address of the MMRAM, as seen by software executing on the
   /// processors. This address may or may not match PhysicalStart.
   ///
-  EFI_PHYSICAL_ADDRESS  CpuStart;
+  EFI_PHYSICAL_ADDRESS    CpuStart;
   ///
-  /// Describes the number of bytes in the SMRAM region.
+  /// Describes the number of bytes in the MMRAM region.
   ///
-  UINT64                PhysicalSize;
+  UINT64                  PhysicalSize;
   ///
-  /// Describes the accessibility attributes of the SMRAM.  These attributes include the
+  /// Describes the accessibility attributes of the MMRAM.  These attributes include the
   /// hardware state (e.g., Open/Closed/Locked), capability (e.g., cacheable), logical
   /// allocation (e.g., allocated), and pre-use initialization (e.g., needs testing/ECC
   /// initialization).
   ///
-  UINT64                RegionState;
-} EFI_SMRAM_DESCRIPTOR;
+  UINT64                  RegionState;
+} EFI_MMRAM_DESCRIPTOR;
+
+typedef EFI_MMRAM_DESCRIPTOR EFI_SMRAM_DESCRIPTOR;
+
+///
+/// Structure describing a MMRAM region which cannot be used for the MMRAM heap.
+///
+typedef struct _EFI_MM_RESERVED_MMRAM_REGION {
+  ///
+  /// Starting address of the reserved MMRAM area, as it appears while MMRAM is open.
+  /// Ignored if MmramReservedSize is 0.
+  ///
+  EFI_PHYSICAL_ADDRESS    MmramReservedStart;
+  ///
+  /// Number of bytes occupied by the reserved MMRAM area. A size of zero indicates the
+  /// last MMRAM area.
+  ///
+  UINT64                  MmramReservedSize;
+} EFI_MM_RESERVED_MMRAM_REGION;
 
 typedef enum {
   EFI_PCD_TYPE_8,
@@ -149,19 +165,19 @@
   /// The returned information associated with the requested TokenNumber. If
   /// TokenNumber is 0, then PcdType is set to EFI_PCD_TYPE_8.
   ///
-  EFI_PCD_TYPE      PcdType;
+  EFI_PCD_TYPE    PcdType;
   ///
   /// The size of the data in bytes associated with the TokenNumber specified. If
   /// TokenNumber is 0, then PcdSize is set 0.
   ///
-  UINTN             PcdSize;
+  UINTN           PcdSize;
   ///
   /// The null-terminated ASCII string associated with a given token. If the
   /// TokenNumber specified was 0, then this field corresponds to the null-terminated
   /// ASCII string associated with the token's namespace Guid. If NULL, there is no
   /// name associated with this request.
   ///
-  CHAR8             *PcdName;
+  CHAR8           *PcdName;
 } EFI_PCD_INFO;
 
 /**
@@ -178,4 +194,20 @@
   IN OUT VOID  *Buffer
   );
 
+/**
+  The function prototype for invoking a function on an Application Processor.
+
+  This definition is used by the UEFI MM MP Serices Protocol.
+
+  @param[in] ProcedureArgument    The pointer to private data buffer.
+
+  @retval EFI_SUCCESS             Excutive the procedure successfully
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_AP_PROCEDURE2)(
+  IN VOID  *ProcedureArgument
+  );
+
 #endif
diff --git a/src/include/ipxe/efi/Pi/PiS3BootScript.h b/src/include/ipxe/efi/Pi/PiS3BootScript.h
index 01cae15..f016e12 100644
--- a/src/include/ipxe/efi/Pi/PiS3BootScript.h
+++ b/src/include/ipxe/efi/Pi/PiS3BootScript.h
@@ -2,46 +2,40 @@
   This file contains the boot script defintions that are shared between the
   Boot Script Executor PPI and the Boot Script Save Protocol.
 
-  Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef _PI_S3_BOOT_SCRIPT_H_
 #define _PI_S3_BOOT_SCRIPT_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
-//*******************************************
+// *******************************************
 // EFI Boot Script Opcode definitions
-//*******************************************
-#define EFI_BOOT_SCRIPT_IO_WRITE_OPCODE                 0x00
-#define EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE            0x01
-#define EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE                0x02
-#define EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE           0x03
-#define EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE         0x04
-#define EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE    0x05
-#define EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE            0x06
-#define EFI_BOOT_SCRIPT_STALL_OPCODE                    0x07
-#define EFI_BOOT_SCRIPT_DISPATCH_OPCODE                 0x08
-#define EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE               0x09
-#define EFI_BOOT_SCRIPT_INFORMATION_OPCODE              0x0A
-#define EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE        0x0B
-#define EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE   0x0C
-#define EFI_BOOT_SCRIPT_IO_POLL_OPCODE                  0x0D
-#define EFI_BOOT_SCRIPT_MEM_POLL_OPCODE                 0x0E
-#define EFI_BOOT_SCRIPT_PCI_CONFIG_POLL_OPCODE          0x0F
-#define EFI_BOOT_SCRIPT_PCI_CONFIG2_POLL_OPCODE         0x10
+// *******************************************
+#define EFI_BOOT_SCRIPT_IO_WRITE_OPCODE                0x00
+#define EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE           0x01
+#define EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE               0x02
+#define EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE          0x03
+#define EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE        0x04
+#define EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE   0x05
+#define EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE           0x06
+#define EFI_BOOT_SCRIPT_STALL_OPCODE                   0x07
+#define EFI_BOOT_SCRIPT_DISPATCH_OPCODE                0x08
+#define EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE              0x09
+#define EFI_BOOT_SCRIPT_INFORMATION_OPCODE             0x0A
+#define EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE       0x0B
+#define EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE  0x0C
+#define EFI_BOOT_SCRIPT_IO_POLL_OPCODE                 0x0D
+#define EFI_BOOT_SCRIPT_MEM_POLL_OPCODE                0x0E
+#define EFI_BOOT_SCRIPT_PCI_CONFIG_POLL_OPCODE         0x0F
+#define EFI_BOOT_SCRIPT_PCI_CONFIG2_POLL_OPCODE        0x10
 
-//*******************************************
+// *******************************************
 // EFI_BOOT_SCRIPT_WIDTH
-//*******************************************
+// *******************************************
 typedef enum {
   EfiBootScriptWidthUint8,
   EfiBootScriptWidthUint16,
diff --git a/src/include/ipxe/efi/Pi/PiStatusCode.h b/src/include/ipxe/efi/Pi/PiStatusCode.h
index 5bef98f..4375f70 100644
--- a/src/include/ipxe/efi/Pi/PiStatusCode.h
+++ b/src/include/ipxe/efi/Pi/PiStatusCode.h
@@ -1,14 +1,8 @@
 /** @file
   StatusCode related definitions in PI.
 
-Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   These status codes are defined in UEFI Platform Initialization Specification 1.2,
@@ -19,7 +13,7 @@
 #ifndef __PI_STATUS_CODE_H__
 #define __PI_STATUS_CODE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 //
 // Required for IA32, X64, IPF, ARM and EBC defines for CPU exception types
@@ -29,7 +23,7 @@
 ///
 /// Status Code Type Definition.
 ///
-typedef UINT32  EFI_STATUS_CODE_TYPE;
+typedef UINT32 EFI_STATUS_CODE_TYPE;
 
 ///
 /// A Status Code Type is made up of the code type and severity.
@@ -37,9 +31,9 @@
 /// reserved for use by this specification.
 ///
 ///@{
-#define EFI_STATUS_CODE_TYPE_MASK     0x000000FF
-#define EFI_STATUS_CODE_SEVERITY_MASK 0xFF000000
-#define EFI_STATUS_CODE_RESERVED_MASK 0x00FFFF00
+#define EFI_STATUS_CODE_TYPE_MASK      0x000000FF
+#define EFI_STATUS_CODE_SEVERITY_MASK  0xFF000000
+#define EFI_STATUS_CODE_RESERVED_MASK  0x00FFFF00
 ///@}
 
 ///
@@ -48,9 +42,9 @@
 /// this specification.
 ///
 ///@{
-#define EFI_PROGRESS_CODE             0x00000001
-#define EFI_ERROR_CODE                0x00000002
-#define EFI_DEBUG_CODE                0x00000003
+#define EFI_PROGRESS_CODE  0x00000001
+#define EFI_ERROR_CODE     0x00000002
+#define EFI_DEBUG_CODE     0x00000003
 ///@}
 
 ///
@@ -63,10 +57,10 @@
 /// the bad data could be consumed by other drivers.
 ///
 ///@{
-#define EFI_ERROR_MINOR               0x40000000
-#define EFI_ERROR_MAJOR               0x80000000
-#define EFI_ERROR_UNRECOVERED         0x90000000
-#define EFI_ERROR_UNCONTAINED         0xa0000000
+#define EFI_ERROR_MINOR        0x40000000
+#define EFI_ERROR_MAJOR        0x80000000
+#define EFI_ERROR_UNRECOVERED  0x90000000
+#define EFI_ERROR_UNCONTAINED  0xa0000000
 ///@}
 
 ///
@@ -93,15 +87,15 @@
   ///
   /// The size of the structure. This is specified to enable future expansion.
   ///
-  UINT16    HeaderSize;
+  UINT16      HeaderSize;
   ///
   /// The size of the data in bytes. This does not include the size of the header structure.
   ///
-  UINT16    Size;
+  UINT16      Size;
   ///
   /// The GUID defining the type of the data.
   ///
-  EFI_GUID  Type;
+  EFI_GUID    Type;
 } EFI_STATUS_CODE_DATA;
 
 ///
@@ -110,8 +104,8 @@
 ///   - 0x1000-0x7FFF    Subclass Specific.
 ///   - 0x8000-0xFFFF    OEM specific.
 ///@{
-#define EFI_SUBCLASS_SPECIFIC 0x1000
-#define EFI_OEM_SPECIFIC      0x8000
+#define EFI_SUBCLASS_SPECIFIC  0x1000
+#define EFI_OEM_SPECIFIC       0x8000
 ///@}
 
 ///
@@ -141,13 +135,13 @@
 /// Values of 128-255 are reserved for OEM use.
 ///
 ///@{
-#define EFI_COMPUTING_UNIT_UNSPECIFIED        (EFI_COMPUTING_UNIT | 0x00000000)
-#define EFI_COMPUTING_UNIT_HOST_PROCESSOR     (EFI_COMPUTING_UNIT | 0x00010000)
-#define EFI_COMPUTING_UNIT_FIRMWARE_PROCESSOR (EFI_COMPUTING_UNIT | 0x00020000)
-#define EFI_COMPUTING_UNIT_IO_PROCESSOR       (EFI_COMPUTING_UNIT | 0x00030000)
-#define EFI_COMPUTING_UNIT_CACHE              (EFI_COMPUTING_UNIT | 0x00040000)
-#define EFI_COMPUTING_UNIT_MEMORY             (EFI_COMPUTING_UNIT | 0x00050000)
-#define EFI_COMPUTING_UNIT_CHIPSET            (EFI_COMPUTING_UNIT | 0x00060000)
+#define EFI_COMPUTING_UNIT_UNSPECIFIED         (EFI_COMPUTING_UNIT | 0x00000000)
+#define EFI_COMPUTING_UNIT_HOST_PROCESSOR      (EFI_COMPUTING_UNIT | 0x00010000)
+#define EFI_COMPUTING_UNIT_FIRMWARE_PROCESSOR  (EFI_COMPUTING_UNIT | 0x00020000)
+#define EFI_COMPUTING_UNIT_IO_PROCESSOR        (EFI_COMPUTING_UNIT | 0x00030000)
+#define EFI_COMPUTING_UNIT_CACHE               (EFI_COMPUTING_UNIT | 0x00040000)
+#define EFI_COMPUTING_UNIT_MEMORY              (EFI_COMPUTING_UNIT | 0x00050000)
+#define EFI_COMPUTING_UNIT_CHIPSET             (EFI_COMPUTING_UNIT | 0x00060000)
 ///@}
 
 ///
@@ -166,15 +160,15 @@
 ///
 /// Computing Unit Host Processor Subclass Progress Code definitions.
 ///@{
-#define EFI_CU_HP_PC_POWER_ON_INIT          (EFI_SUBCLASS_SPECIFIC | 0x00000000)
-#define EFI_CU_HP_PC_CACHE_INIT             (EFI_SUBCLASS_SPECIFIC | 0x00000001)
-#define EFI_CU_HP_PC_RAM_INIT               (EFI_SUBCLASS_SPECIFIC | 0x00000002)
-#define EFI_CU_HP_PC_MEMORY_CONTROLLER_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000003)
-#define EFI_CU_HP_PC_IO_INIT                (EFI_SUBCLASS_SPECIFIC | 0x00000004)
-#define EFI_CU_HP_PC_BSP_SELECT             (EFI_SUBCLASS_SPECIFIC | 0x00000005)
-#define EFI_CU_HP_PC_BSP_RESELECT           (EFI_SUBCLASS_SPECIFIC | 0x00000006)
-#define EFI_CU_HP_PC_AP_INIT                (EFI_SUBCLASS_SPECIFIC | 0x00000007)
-#define EFI_CU_HP_PC_SMM_INIT               (EFI_SUBCLASS_SPECIFIC | 0x00000008)
+#define EFI_CU_HP_PC_POWER_ON_INIT           (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_CU_HP_PC_CACHE_INIT              (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_CU_HP_PC_RAM_INIT                (EFI_SUBCLASS_SPECIFIC | 0x00000002)
+#define EFI_CU_HP_PC_MEMORY_CONTROLLER_INIT  (EFI_SUBCLASS_SPECIFIC | 0x00000003)
+#define EFI_CU_HP_PC_IO_INIT                 (EFI_SUBCLASS_SPECIFIC | 0x00000004)
+#define EFI_CU_HP_PC_BSP_SELECT              (EFI_SUBCLASS_SPECIFIC | 0x00000005)
+#define EFI_CU_HP_PC_BSP_RESELECT            (EFI_SUBCLASS_SPECIFIC | 0x00000006)
+#define EFI_CU_HP_PC_AP_INIT                 (EFI_SUBCLASS_SPECIFIC | 0x00000007)
+#define EFI_CU_HP_PC_SMM_INIT                (EFI_SUBCLASS_SPECIFIC | 0x00000008)
 ///@}
 
 //
@@ -189,8 +183,8 @@
 /// Computing Unit Cache Subclass Progress Code definitions.
 ///
 ///@{
-#define EFI_CU_CACHE_PC_PRESENCE_DETECT (EFI_SUBCLASS_SPECIFIC | 0x00000000)
-#define EFI_CU_CACHE_PC_CONFIGURATION   (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_CU_CACHE_PC_PRESENCE_DETECT  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_CU_CACHE_PC_CONFIGURATION    (EFI_SUBCLASS_SPECIFIC | 0x00000001)
 ///@}
 
 ///
@@ -213,52 +207,52 @@
 ///
 /// South Bridge initialization prior to memory detection.
 ///
-#define EFI_CHIPSET_PC_PEI_CAR_SB_INIT      (EFI_SUBCLASS_SPECIFIC|0x00000000)
+#define EFI_CHIPSET_PC_PEI_CAR_SB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000000)
 
 ///
 /// North Bridge initialization prior to memory detection.
 ///
-#define EFI_CHIPSET_PC_PEI_CAR_NB_INIT      (EFI_SUBCLASS_SPECIFIC|0x00000001)
+#define EFI_CHIPSET_PC_PEI_CAR_NB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000001)
 
 ///
 /// South Bridge initialization after memory detection.
 ///
-#define EFI_CHIPSET_PC_PEI_MEM_SB_INIT      (EFI_SUBCLASS_SPECIFIC|0x00000002)
+#define EFI_CHIPSET_PC_PEI_MEM_SB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000002)
 
 ///
 /// North Bridge initialization after memory detection.
 ///
-#define EFI_CHIPSET_PC_PEI_MEM_NB_INIT      (EFI_SUBCLASS_SPECIFIC|0x00000003)
+#define EFI_CHIPSET_PC_PEI_MEM_NB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000003)
 
 ///
 /// PCI Host Bridge DXE initialization.
 ///
-#define EFI_CHIPSET_PC_DXE_HB_INIT          (EFI_SUBCLASS_SPECIFIC|0x00000004)
+#define EFI_CHIPSET_PC_DXE_HB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000004)
 
 ///
 /// North Bridge DXE initialization.
 ///
-#define EFI_CHIPSET_PC_DXE_NB_INIT          (EFI_SUBCLASS_SPECIFIC|0x00000005)
+#define EFI_CHIPSET_PC_DXE_NB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000005)
 
 ///
 /// North Bridge specific SMM initialization in DXE.
 ///
-#define EFI_CHIPSET_PC_DXE_NB_SMM_INIT      (EFI_SUBCLASS_SPECIFIC|0x00000006)
+#define EFI_CHIPSET_PC_DXE_NB_SMM_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000006)
 
 ///
 /// Initialization of the South Bridge specific UEFI Runtime Services.
 ///
-#define EFI_CHIPSET_PC_DXE_SB_RT_INIT       (EFI_SUBCLASS_SPECIFIC|0x00000007)
+#define EFI_CHIPSET_PC_DXE_SB_RT_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000007)
 
 ///
 /// South Bridge DXE initialization
 ///
-#define EFI_CHIPSET_PC_DXE_SB_INIT          (EFI_SUBCLASS_SPECIFIC|0x00000008)
+#define EFI_CHIPSET_PC_DXE_SB_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000008)
 
 ///
 /// South Bridge specific SMM initialization in DXE.
 ///
-#define EFI_CHIPSET_PC_DXE_SB_SMM_INIT      (EFI_SUBCLASS_SPECIFIC|0x00000009)
+#define EFI_CHIPSET_PC_DXE_SB_SMM_INIT  (EFI_SUBCLASS_SPECIFIC|0x00000009)
 
 ///
 /// Initialization of the South Bridge devices.
@@ -305,9 +299,9 @@
 /// Computing Unit Firmware Processor Subclass Error Code definitions.
 ///
 ///@{
-#define EFI_CU_FP_EC_HARD_FAIL  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
-#define EFI_CU_FP_EC_SOFT_FAIL  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
-#define EFI_CU_FP_EC_COMM_ERROR (EFI_SUBCLASS_SPECIFIC | 0x00000002)
+#define EFI_CU_FP_EC_HARD_FAIL   (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_CU_FP_EC_SOFT_FAIL   (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_CU_FP_EC_COMM_ERROR  (EFI_SUBCLASS_SPECIFIC | 0x00000002)
 ///@}
 
 //
@@ -318,27 +312,27 @@
 /// Computing Unit Cache Subclass Error Code definitions.
 ///
 ///@{
-#define EFI_CU_CACHE_EC_INVALID_TYPE  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
-#define EFI_CU_CACHE_EC_INVALID_SPEED (EFI_SUBCLASS_SPECIFIC | 0x00000001)
-#define EFI_CU_CACHE_EC_INVALID_SIZE  (EFI_SUBCLASS_SPECIFIC | 0x00000002)
-#define EFI_CU_CACHE_EC_MISMATCH      (EFI_SUBCLASS_SPECIFIC | 0x00000003)
+#define EFI_CU_CACHE_EC_INVALID_TYPE   (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_CU_CACHE_EC_INVALID_SPEED  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_CU_CACHE_EC_INVALID_SIZE   (EFI_SUBCLASS_SPECIFIC | 0x00000002)
+#define EFI_CU_CACHE_EC_MISMATCH       (EFI_SUBCLASS_SPECIFIC | 0x00000003)
 ///@}
 
 ///
 /// Computing Unit Memory Subclass Error Code definitions.
 ///
 ///@{
-#define EFI_CU_MEMORY_EC_INVALID_TYPE   (EFI_SUBCLASS_SPECIFIC | 0x00000000)
-#define EFI_CU_MEMORY_EC_INVALID_SPEED  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
-#define EFI_CU_MEMORY_EC_CORRECTABLE    (EFI_SUBCLASS_SPECIFIC | 0x00000002)
-#define EFI_CU_MEMORY_EC_UNCORRECTABLE  (EFI_SUBCLASS_SPECIFIC | 0x00000003)
-#define EFI_CU_MEMORY_EC_SPD_FAIL       (EFI_SUBCLASS_SPECIFIC | 0x00000004)
-#define EFI_CU_MEMORY_EC_INVALID_SIZE   (EFI_SUBCLASS_SPECIFIC | 0x00000005)
-#define EFI_CU_MEMORY_EC_MISMATCH       (EFI_SUBCLASS_SPECIFIC | 0x00000006)
-#define EFI_CU_MEMORY_EC_S3_RESUME_FAIL (EFI_SUBCLASS_SPECIFIC | 0x00000007)
-#define EFI_CU_MEMORY_EC_UPDATE_FAIL    (EFI_SUBCLASS_SPECIFIC | 0x00000008)
-#define EFI_CU_MEMORY_EC_NONE_DETECTED  (EFI_SUBCLASS_SPECIFIC | 0x00000009)
-#define EFI_CU_MEMORY_EC_NONE_USEFUL    (EFI_SUBCLASS_SPECIFIC | 0x0000000A)
+#define EFI_CU_MEMORY_EC_INVALID_TYPE    (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_CU_MEMORY_EC_INVALID_SPEED   (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_CU_MEMORY_EC_CORRECTABLE     (EFI_SUBCLASS_SPECIFIC | 0x00000002)
+#define EFI_CU_MEMORY_EC_UNCORRECTABLE   (EFI_SUBCLASS_SPECIFIC | 0x00000003)
+#define EFI_CU_MEMORY_EC_SPD_FAIL        (EFI_SUBCLASS_SPECIFIC | 0x00000004)
+#define EFI_CU_MEMORY_EC_INVALID_SIZE    (EFI_SUBCLASS_SPECIFIC | 0x00000005)
+#define EFI_CU_MEMORY_EC_MISMATCH        (EFI_SUBCLASS_SPECIFIC | 0x00000006)
+#define EFI_CU_MEMORY_EC_S3_RESUME_FAIL  (EFI_SUBCLASS_SPECIFIC | 0x00000007)
+#define EFI_CU_MEMORY_EC_UPDATE_FAIL     (EFI_SUBCLASS_SPECIFIC | 0x00000008)
+#define EFI_CU_MEMORY_EC_NONE_DETECTED   (EFI_SUBCLASS_SPECIFIC | 0x00000009)
+#define EFI_CU_MEMORY_EC_NONE_USEFUL     (EFI_SUBCLASS_SPECIFIC | 0x0000000A)
 ///@}
 
 ///
@@ -348,6 +342,7 @@
 #define EFI_CHIPSET_EC_BAD_BATTERY      (EFI_SUBCLASS_SPECIFIC | 0x00000000)
 #define EFI_CHIPSET_EC_DXE_NB_ERROR     (EFI_SUBCLASS_SPECIFIC | 0x00000001)
 #define EFI_CHIPSET_EC_DXE_SB_ERROR     (EFI_SUBCLASS_SPECIFIC | 0x00000002)
+#define EFI_CHIPSET_EC_INTRUDER_DETECT  (EFI_SUBCLASS_SPECIFIC | 0x00000003)
 ///@}
 
 ///
@@ -369,6 +364,7 @@
 #define EFI_PERIPHERAL_AUDIO_OUTPUT     (EFI_PERIPHERAL | 0x000A0000)
 #define EFI_PERIPHERAL_LCD_DEVICE       (EFI_PERIPHERAL | 0x000B0000)
 #define EFI_PERIPHERAL_NETWORK          (EFI_PERIPHERAL | 0x000C0000)
+#define EFI_PERIPHERAL_DOCKING          (EFI_PERIPHERAL | 0x000D0000)
 ///@}
 
 ///
@@ -383,6 +379,7 @@
 #define EFI_P_PC_ENABLE           0x00000004
 #define EFI_P_PC_RECONFIG         0x00000005
 #define EFI_P_PC_DETECTED         0x00000006
+#define EFI_P_PC_REMOVED          0x00000007
 ///@}
 
 //
@@ -416,7 +413,7 @@
 /// Peripheral Class Serial Port Subclass Progress Code definitions.
 ///
 ///@{
-#define EFI_P_SERIAL_PORT_PC_CLEAR_BUFFER (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_P_SERIAL_PORT_PC_CLEAR_BUFFER  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
 ///@}
 
 //
@@ -472,15 +469,16 @@
 /// Peripheral Class Keyboard Subclass Error Code definitions.
 ///
 ///@{
-#define EFI_P_KEYBOARD_EC_LOCKED    (EFI_SUBCLASS_SPECIFIC | 0x00000000)
-#define EFI_P_KEYBOARD_EC_STUCK_KEY (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_P_KEYBOARD_EC_LOCKED       (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_P_KEYBOARD_EC_STUCK_KEY    (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_P_KEYBOARD_EC_BUFFER_FULL  (EFI_SUBCLASS_SPECIFIC | 0x00000002)
 ///@}
 
 ///
 /// Peripheral Class Mouse Subclass Error Code definitions.
 ///
 ///@{
-#define EFI_P_MOUSE_EC_LOCKED (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_P_MOUSE_EC_LOCKED  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
 ///@}
 
 //
@@ -549,13 +547,13 @@
 /// These are shared by all subclasses.
 ///
 ///@{
-#define EFI_IOB_PC_INIT     0x00000000
-#define EFI_IOB_PC_RESET    0x00000001
-#define EFI_IOB_PC_DISABLE  0x00000002
-#define EFI_IOB_PC_DETECT   0x00000003
-#define EFI_IOB_PC_ENABLE   0x00000004
-#define EFI_IOB_PC_RECONFIG 0x00000005
-#define EFI_IOB_PC_HOTPLUG  0x00000006
+#define EFI_IOB_PC_INIT      0x00000000
+#define EFI_IOB_PC_RESET     0x00000001
+#define EFI_IOB_PC_DISABLE   0x00000002
+#define EFI_IOB_PC_DETECT    0x00000003
+#define EFI_IOB_PC_ENABLE    0x00000004
+#define EFI_IOB_PC_RECONFIG  0x00000005
+#define EFI_IOB_PC_HOTPLUG   0x00000006
 ///@}
 
 //
@@ -643,8 +641,8 @@
 /// IO Bus Class PCI Subclass Error Code definitions.
 ///
 ///@{
-#define EFI_IOB_PCI_EC_PERR (EFI_SUBCLASS_SPECIFIC | 0x00000000)
-#define EFI_IOB_PCI_EC_SERR (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_IOB_PCI_EC_PERR  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_IOB_PCI_EC_SERR  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
 ///@}
 
 //
@@ -746,8 +744,8 @@
 /// Software Class SEC Subclass Progress Code definitions.
 ///
 ///@{
-#define EFI_SW_SEC_PC_ENTRY_POINT     (EFI_SUBCLASS_SPECIFIC | 0x00000000)
-#define EFI_SW_SEC_PC_HANDOFF_TO_NEXT (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_SW_SEC_PC_ENTRY_POINT      (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_SW_SEC_PC_HANDOFF_TO_NEXT  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
 ///@}
 
 ///
@@ -770,6 +768,7 @@
 #define EFI_SW_PEI_PC_RECOVERY_AUTO   (EFI_SUBCLASS_SPECIFIC | 0x00000004)
 #define EFI_SW_PEI_PC_S3_BOOT_SCRIPT  (EFI_SUBCLASS_SPECIFIC | 0x00000005)
 #define EFI_SW_PEI_PC_OS_WAKE         (EFI_SUBCLASS_SPECIFIC | 0x00000006)
+#define EFI_SW_PEI_PC_S3_STARTED      (EFI_SUBCLASS_SPECIFIC | 0x00000007)
 ///@}
 
 ///
@@ -787,11 +786,16 @@
 /// Software Class DXE BS Driver Subclass Progress Code definitions.
 ///
 ///@{
-#define EFI_SW_DXE_BS_PC_LEGACY_OPROM_INIT            (EFI_SUBCLASS_SPECIFIC | 0x00000000)
-#define EFI_SW_DXE_BS_PC_READY_TO_BOOT_EVENT          (EFI_SUBCLASS_SPECIFIC | 0x00000001)
-#define EFI_SW_DXE_BS_PC_LEGACY_BOOT_EVENT            (EFI_SUBCLASS_SPECIFIC | 0x00000002)
-#define EFI_SW_DXE_BS_PC_EXIT_BOOT_SERVICES_EVENT     (EFI_SUBCLASS_SPECIFIC | 0x00000003)
-#define EFI_SW_DXE_BS_PC_VIRTUAL_ADDRESS_CHANGE_EVENT (EFI_SUBCLASS_SPECIFIC | 0x00000004)
+#define EFI_SW_DXE_BS_PC_LEGACY_OPROM_INIT             (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_SW_DXE_BS_PC_READY_TO_BOOT_EVENT           (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_SW_DXE_BS_PC_LEGACY_BOOT_EVENT             (EFI_SUBCLASS_SPECIFIC | 0x00000002)
+#define EFI_SW_DXE_BS_PC_EXIT_BOOT_SERVICES_EVENT      (EFI_SUBCLASS_SPECIFIC | 0x00000003)
+#define EFI_SW_DXE_BS_PC_VIRTUAL_ADDRESS_CHANGE_EVENT  (EFI_SUBCLASS_SPECIFIC | 0x00000004)
+#define EFI_SW_DXE_BS_PC_VARIABLE_SERVICES_INIT        (EFI_SUBCLASS_SPECIFIC | 0x00000005)
+#define EFI_SW_DXE_BS_PC_VARIABLE_RECLAIM              (EFI_SUBCLASS_SPECIFIC | 0x00000006)
+#define EFI_SW_DXE_BS_PC_ATTEMPT_BOOT_ORDER_EVENT      (EFI_SUBCLASS_SPECIFIC | 0x00000007)
+#define EFI_SW_DXE_BS_PC_CONFIG_RESET                  (EFI_SUBCLASS_SPECIFIC | 0x00000008)
+#define EFI_SW_DXE_BS_PC_CSM_INIT                      (EFI_SUBCLASS_SPECIFIC | 0x00000009)
 ///@}
 
 //
@@ -981,6 +985,8 @@
 #define EFI_SW_EC_PWD_CLR_REQUEST         0x0000000F
 #define EFI_SW_EC_PWD_CLEARED             0x00000010
 #define EFI_SW_EC_EVENT_LOG_FULL          0x00000011
+#define EFI_SW_EC_WRITE_PROTECTED         0x00000012
+#define EFI_SW_EC_FV_CORRUPTED            0x00000013
 ///@}
 
 //
@@ -1004,24 +1010,25 @@
 /// Software Class PEI Module Subclass Error Code definitions.
 ///
 ///@{
-#define EFI_SW_PEI_EC_NO_RECOVERY_CAPSULE          (EFI_SUBCLASS_SPECIFIC | 0x00000000)
-#define EFI_SW_PEI_EC_INVALID_CAPSULE_DESCRIPTOR   (EFI_SUBCLASS_SPECIFIC | 0x00000001)
-#define EFI_SW_PEI_EC_S3_RESUME_PPI_NOT_FOUND      (EFI_SUBCLASS_SPECIFIC | 0x00000002)
-#define EFI_SW_PEI_EC_S3_BOOT_SCRIPT_ERROR         (EFI_SUBCLASS_SPECIFIC | 0x00000003)
-#define EFI_SW_PEI_EC_S3_OS_WAKE_ERROR             (EFI_SUBCLASS_SPECIFIC | 0x00000004)
-#define EFI_SW_PEI_EC_S3_RESUME_FAILED             (EFI_SUBCLASS_SPECIFIC | 0x00000005)
-#define EFI_SW_PEI_EC_RECOVERY_PPI_NOT_FOUND       (EFI_SUBCLASS_SPECIFIC | 0x00000006)
-#define EFI_SW_PEI_EC_RECOVERY_FAILED              (EFI_SUBCLASS_SPECIFIC | 0x00000007)
+#define EFI_SW_PEI_EC_NO_RECOVERY_CAPSULE         (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_SW_PEI_EC_INVALID_CAPSULE_DESCRIPTOR  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_SW_PEI_EC_S3_RESUME_PPI_NOT_FOUND     (EFI_SUBCLASS_SPECIFIC | 0x00000002)
+#define EFI_SW_PEI_EC_S3_BOOT_SCRIPT_ERROR        (EFI_SUBCLASS_SPECIFIC | 0x00000003)
+#define EFI_SW_PEI_EC_S3_OS_WAKE_ERROR            (EFI_SUBCLASS_SPECIFIC | 0x00000004)
+#define EFI_SW_PEI_EC_S3_RESUME_FAILED            (EFI_SUBCLASS_SPECIFIC | 0x00000005)
+#define EFI_SW_PEI_EC_RECOVERY_PPI_NOT_FOUND      (EFI_SUBCLASS_SPECIFIC | 0x00000006)
+#define EFI_SW_PEI_EC_RECOVERY_FAILED             (EFI_SUBCLASS_SPECIFIC | 0x00000007)
+#define EFI_SW_PEI_EC_S3_RESUME_ERROR             (EFI_SUBCLASS_SPECIFIC | 0x00000008)
+#define EFI_SW_PEI_EC_INVALID_CAPSULE             (EFI_SUBCLASS_SPECIFIC | 0x00000009)
 ///@}
 
 ///
 /// Software Class DXE Foundation Subclass Error Code definitions.
 ///
 ///@{
-#define EFI_SW_DXE_CORE_EC_NO_ARCH                (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_SW_DXE_CORE_EC_NO_ARCH  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
 ///@}
 
-
 ///
 /// Software Class DXE Boot Service Driver Subclass Error Code definitions.
 ///
@@ -1141,20 +1148,20 @@
 /// Software Class EFI DXE Service Subclass Error Code definitions.
 ///
 ///@{
-#define EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS   (EFI_SUBCLASS_SPECIFIC | 0x00000005)
-#define EFI_SW_DXE_BS_PC_VERIFYING_PASSWORD         (EFI_SUBCLASS_SPECIFIC | 0x00000006)
+#define EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS  (EFI_SUBCLASS_SPECIFIC | 0x00000005)
+#define EFI_SW_DXE_BS_PC_VERIFYING_PASSWORD        (EFI_SUBCLASS_SPECIFIC | 0x00000006)
 ///@}
 
 ///
 /// Software Class DXE RT Driver Subclass Progress Code definitions.
 ///
 ///@{
-#define EFI_SW_DXE_RT_PC_S0                         (EFI_SUBCLASS_SPECIFIC | 0x00000000)
-#define EFI_SW_DXE_RT_PC_S1                         (EFI_SUBCLASS_SPECIFIC | 0x00000001)
-#define EFI_SW_DXE_RT_PC_S2                         (EFI_SUBCLASS_SPECIFIC | 0x00000002)
-#define EFI_SW_DXE_RT_PC_S3                         (EFI_SUBCLASS_SPECIFIC | 0x00000003)
-#define EFI_SW_DXE_RT_PC_S4                         (EFI_SUBCLASS_SPECIFIC | 0x00000004)
-#define EFI_SW_DXE_RT_PC_S5                         (EFI_SUBCLASS_SPECIFIC | 0x00000005)
+#define EFI_SW_DXE_RT_PC_S0  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
+#define EFI_SW_DXE_RT_PC_S1  (EFI_SUBCLASS_SPECIFIC | 0x00000001)
+#define EFI_SW_DXE_RT_PC_S2  (EFI_SUBCLASS_SPECIFIC | 0x00000002)
+#define EFI_SW_DXE_RT_PC_S3  (EFI_SUBCLASS_SPECIFIC | 0x00000003)
+#define EFI_SW_DXE_RT_PC_S4  (EFI_SUBCLASS_SPECIFIC | 0x00000004)
+#define EFI_SW_DXE_RT_PC_S5  (EFI_SUBCLASS_SPECIFIC | 0x00000005)
 ///@}
 
 ///
@@ -1163,23 +1170,23 @@
 /// definitions in the EFI specification.
 ///
 ///@{
-#define EFI_SW_EC_X64_DIVIDE_ERROR                   EXCEPT_X64_DIVIDE_ERROR
-#define EFI_SW_EC_X64_DEBUG                          EXCEPT_X64_DEBUG
-#define EFI_SW_EC_X64_NMI                            EXCEPT_X64_NMI
-#define EFI_SW_EC_X64_BREAKPOINT                     EXCEPT_X64_BREAKPOINT
-#define EFI_SW_EC_X64_OVERFLOW                       EXCEPT_X64_OVERFLOW
-#define EFI_SW_EC_X64_BOUND                          EXCEPT_X64_BOUND
-#define EFI_SW_EC_X64_INVALID_OPCODE                 EXCEPT_X64_INVALID_OPCODE
-#define EFI_SW_EC_X64_DOUBLE_FAULT                   EXCEPT_X64_DOUBLE_FAULT
-#define EFI_SW_EC_X64_INVALID_TSS                    EXCEPT_X64_INVALID_TSS
-#define EFI_SW_EC_X64_SEG_NOT_PRESENT                EXCEPT_X64_SEG_NOT_PRESENT
-#define EFI_SW_EC_X64_STACK_FAULT                    EXCEPT_X64_STACK_FAULT
-#define EFI_SW_EC_X64_GP_FAULT                       EXCEPT_X64_GP_FAULT
-#define EFI_SW_EC_X64_PAGE_FAULT                     EXCEPT_X64_PAGE_FAULT
-#define EFI_SW_EC_X64_FP_ERROR                       EXCEPT_X64_FP_ERROR
-#define EFI_SW_EC_X64_ALIGNMENT_CHECK                EXCEPT_X64_ALIGNMENT_CHECK
-#define EFI_SW_EC_X64_MACHINE_CHECK                  EXCEPT_X64_MACHINE_CHECK
-#define EFI_SW_EC_X64_SIMD                           EXCEPT_X64_SIMD
+#define EFI_SW_EC_X64_DIVIDE_ERROR     EXCEPT_X64_DIVIDE_ERROR
+#define EFI_SW_EC_X64_DEBUG            EXCEPT_X64_DEBUG
+#define EFI_SW_EC_X64_NMI              EXCEPT_X64_NMI
+#define EFI_SW_EC_X64_BREAKPOINT       EXCEPT_X64_BREAKPOINT
+#define EFI_SW_EC_X64_OVERFLOW         EXCEPT_X64_OVERFLOW
+#define EFI_SW_EC_X64_BOUND            EXCEPT_X64_BOUND
+#define EFI_SW_EC_X64_INVALID_OPCODE   EXCEPT_X64_INVALID_OPCODE
+#define EFI_SW_EC_X64_DOUBLE_FAULT     EXCEPT_X64_DOUBLE_FAULT
+#define EFI_SW_EC_X64_INVALID_TSS      EXCEPT_X64_INVALID_TSS
+#define EFI_SW_EC_X64_SEG_NOT_PRESENT  EXCEPT_X64_SEG_NOT_PRESENT
+#define EFI_SW_EC_X64_STACK_FAULT      EXCEPT_X64_STACK_FAULT
+#define EFI_SW_EC_X64_GP_FAULT         EXCEPT_X64_GP_FAULT
+#define EFI_SW_EC_X64_PAGE_FAULT       EXCEPT_X64_PAGE_FAULT
+#define EFI_SW_EC_X64_FP_ERROR         EXCEPT_X64_FP_ERROR
+#define EFI_SW_EC_X64_ALIGNMENT_CHECK  EXCEPT_X64_ALIGNMENT_CHECK
+#define EFI_SW_EC_X64_MACHINE_CHECK    EXCEPT_X64_MACHINE_CHECK
+#define EFI_SW_EC_X64_SIMD             EXCEPT_X64_SIMD
 ///@}
 
 ///
@@ -1188,14 +1195,14 @@
 /// definitions in the EFI specification.
 ///
 ///@{
-#define EFI_SW_EC_ARM_RESET                          EXCEPT_ARM_RESET
-#define EFI_SW_EC_ARM_UNDEFINED_INSTRUCTION          EXCEPT_ARM_UNDEFINED_INSTRUCTION
-#define EFI_SW_EC_ARM_SOFTWARE_INTERRUPT             EXCEPT_ARM_SOFTWARE_INTERRUPT
-#define EFI_SW_EC_ARM_PREFETCH_ABORT                 EXCEPT_ARM_PREFETCH_ABORT
-#define EFI_SW_EC_ARM_DATA_ABORT                     EXCEPT_ARM_DATA_ABORT
-#define EFI_SW_EC_ARM_RESERVED                       EXCEPT_ARM_RESERVED
-#define EFI_SW_EC_ARM_IRQ                            EXCEPT_ARM_IRQ
-#define EFI_SW_EC_ARM_FIQ                            EXCEPT_ARM_FIQ
+#define EFI_SW_EC_ARM_RESET                  EXCEPT_ARM_RESET
+#define EFI_SW_EC_ARM_UNDEFINED_INSTRUCTION  EXCEPT_ARM_UNDEFINED_INSTRUCTION
+#define EFI_SW_EC_ARM_SOFTWARE_INTERRUPT     EXCEPT_ARM_SOFTWARE_INTERRUPT
+#define EFI_SW_EC_ARM_PREFETCH_ABORT         EXCEPT_ARM_PREFETCH_ABORT
+#define EFI_SW_EC_ARM_DATA_ABORT             EXCEPT_ARM_DATA_ABORT
+#define EFI_SW_EC_ARM_RESERVED               EXCEPT_ARM_RESERVED
+#define EFI_SW_EC_ARM_IRQ                    EXCEPT_ARM_IRQ
+#define EFI_SW_EC_ARM_FIQ                    EXCEPT_ARM_FIQ
 ///@}
 
 #endif
diff --git a/src/include/ipxe/efi/PiDxe.h b/src/include/ipxe/efi/PiDxe.h
index 9443368..698c139 100644
--- a/src/include/ipxe/efi/PiDxe.h
+++ b/src/include/ipxe/efi/PiDxe.h
@@ -2,21 +2,15 @@
 
   Root include file for Mde Package DXE_CORE, DXE, RUNTIME, SMM, SAL type modules.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __PI_DXE_H__
 #define __PI_DXE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Uefi/UefiBaseType.h>
 #include <ipxe/efi/Uefi/UefiSpec.h>
@@ -24,4 +18,3 @@
 #include <ipxe/efi/Pi/PiDxeCis.h>
 
 #endif
-
diff --git a/src/include/ipxe/efi/Protocol/AbsolutePointer.h b/src/include/ipxe/efi/Protocol/AbsolutePointer.h
index b20ca05..48810f9 100644
--- a/src/include/ipxe/efi/Protocol/AbsolutePointer.h
+++ b/src/include/ipxe/efi/Protocol/AbsolutePointer.h
@@ -2,34 +2,27 @@
   The file provides services that allow information about an
   absolute pointer device to be retrieved.
 
-  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  @par Revision Reference:
+  This Protocol was introduced in UEFI Specification 2.3.
 
 **/
 
 #ifndef __ABSOLUTE_POINTER_H__
 #define __ABSOLUTE_POINTER_H__
 
-FILE_LICENCE ( BSD3 );
-
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_ABSOLUTE_POINTER_PROTOCOL_GUID \
   { 0x8D59D32B, 0xC655, 0x4AE9, { 0x9B, 0x15, 0xF2, 0x59, 0x04, 0x99, 0x2A, 0x43 } }
 
-
 typedef struct _EFI_ABSOLUTE_POINTER_PROTOCOL EFI_ABSOLUTE_POINTER_PROTOCOL;
 
-
-//*******************************************************
+// *******************************************************
 // EFI_ABSOLUTE_POINTER_MODE
-//*******************************************************
-
+// *******************************************************
 
 /**
   The following data values in the EFI_ABSOLUTE_POINTER_MODE
@@ -37,31 +30,30 @@
   interface functions.
 **/
 typedef struct {
-  UINT64 AbsoluteMinX; ///< The Absolute Minimum of the device on the x-axis
-  UINT64 AbsoluteMinY; ///< The Absolute Minimum of the device on the y axis.
-  UINT64 AbsoluteMinZ; ///< The Absolute Minimum of the device on the z-axis
-  UINT64 AbsoluteMaxX; ///< The Absolute Maximum of the device on the x-axis. If 0, and the
-                       ///< AbsoluteMinX is 0, then the pointer device does not support a xaxis
-  UINT64 AbsoluteMaxY; ///< The Absolute Maximum of the device on the y -axis. If 0, and the
-                       ///< AbsoluteMinX is 0, then the pointer device does not support a yaxis.
-  UINT64 AbsoluteMaxZ; ///< The Absolute Maximum of the device on the z-axis. If 0 , and the
-                       ///< AbsoluteMinX is 0, then the pointer device does not support a zaxis
-  UINT32 Attributes;   ///< The following bits are set as needed (or'd together) to indicate the
-                       ///< capabilities of the device supported. The remaining bits are undefined
-                       ///< and should be 0
+  UINT64    AbsoluteMinX; ///< The Absolute Minimum of the device on the x-axis
+  UINT64    AbsoluteMinY; ///< The Absolute Minimum of the device on the y axis.
+  UINT64    AbsoluteMinZ; ///< The Absolute Minimum of the device on the z-axis
+  UINT64    AbsoluteMaxX; ///< The Absolute Maximum of the device on the x-axis. If 0, and the
+                          ///< AbsoluteMinX is 0, then the pointer device does not support a xaxis
+  UINT64    AbsoluteMaxY; ///< The Absolute Maximum of the device on the y -axis. If 0, and the
+                          ///< AbsoluteMinX is 0, then the pointer device does not support a yaxis.
+  UINT64    AbsoluteMaxZ; ///< The Absolute Maximum of the device on the z-axis. If 0 , and the
+                          ///< AbsoluteMinX is 0, then the pointer device does not support a zaxis
+  UINT32    Attributes;   ///< The following bits are set as needed (or'd together) to indicate the
+                          ///< capabilities of the device supported. The remaining bits are undefined
+                          ///< and should be 0
 } EFI_ABSOLUTE_POINTER_MODE;
 
 ///
 /// If set, indicates this device supports an alternate button input.
 ///
-#define EFI_ABSP_SupportsAltActive    0x00000001
+#define EFI_ABSP_SupportsAltActive  0x00000001
 
 ///
 /// If set, indicates this device returns pressure data in parameter CurrentZ.
 ///
 #define EFI_ABSP_SupportsPressureAsZ  0x00000002
 
-
 /**
   This function resets the pointer device hardware. As part of
   initialization process, the firmware/device will make a quick
@@ -92,7 +84,7 @@
 (EFIAPI *EFI_ABSOLUTE_POINTER_RESET)(
   IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,
   IN BOOLEAN                       ExtendedVerification
-);
+  );
 
 ///
 /// This bit is set if the touch sensor is active.
@@ -102,8 +94,7 @@
 ///
 /// This bit is set if the alt sensor, such as pen-side button, is active
 ///
-#define EFI_ABS_AltActive     0x00000002
-
+#define EFI_ABS_AltActive  0x00000002
 
 /**
   Definition of EFI_ABSOLUTE_POINTER_STATE.
@@ -115,7 +106,7 @@
   /// both 0, then this pointer device does not support an x-axis, and this field
   /// must be ignored.
   ///
-  UINT64 CurrentX;
+  UINT64    CurrentX;
 
   ///
   /// The unsigned position of the activation on the y axis. If the AboluteMinY
@@ -123,7 +114,7 @@
   /// both 0, then this pointer device does not support an y-axis, and this field
   /// must be ignored.
   ///
-  UINT64 CurrentY;
+  UINT64    CurrentY;
 
   ///
   /// The unsigned position of the activation on the z axis, or the pressure
@@ -131,13 +122,13 @@
   /// EFI_ABSOLUTE_POINTER_MODE structure are both 0, then this pointer device
   /// does not support an z-axis, and this field must be ignored.
   ///
-  UINT64 CurrentZ;
+  UINT64    CurrentZ;
 
   ///
   /// Bits are set to 1 in this structure item to indicate that device buttons are
   /// active.
   ///
-  UINT32 ActiveButtons;
+  UINT32    ActiveButtons;
 } EFI_ABSOLUTE_POINTER_STATE;
 
 /**
@@ -174,9 +165,8 @@
 EFI_STATUS
 (EFIAPI *EFI_ABSOLUTE_POINTER_GET_STATE)(
   IN      EFI_ABSOLUTE_POINTER_PROTOCOL  *This,
-  IN OUT  EFI_ABSOLUTE_POINTER_STATE     *State
-);
-
+  OUT  EFI_ABSOLUTE_POINTER_STATE        *State
+  );
 
 ///
 /// The EFI_ABSOLUTE_POINTER_PROTOCOL provides a set of services
@@ -187,21 +177,18 @@
 /// device. The service also provides certain data items describing the device.
 ///
 struct _EFI_ABSOLUTE_POINTER_PROTOCOL {
-  EFI_ABSOLUTE_POINTER_RESET      Reset;
-  EFI_ABSOLUTE_POINTER_GET_STATE  GetState;
+  EFI_ABSOLUTE_POINTER_RESET        Reset;
+  EFI_ABSOLUTE_POINTER_GET_STATE    GetState;
   ///
   /// Event to use with WaitForEvent() to wait for input from the pointer device.
   ///
-  EFI_EVENT                       WaitForInput;
+  EFI_EVENT                         WaitForInput;
   ///
   /// Pointer to EFI_ABSOLUTE_POINTER_MODE data.
   ///
-  EFI_ABSOLUTE_POINTER_MODE       *Mode;
+  EFI_ABSOLUTE_POINTER_MODE         *Mode;
 };
 
-
-extern EFI_GUID gEfiAbsolutePointerProtocolGuid;
-
+extern EFI_GUID  gEfiAbsolutePointerProtocolGuid;
 
 #endif
-
diff --git a/src/include/ipxe/efi/Protocol/AcpiTable.h b/src/include/ipxe/efi/Protocol/AcpiTable.h
index 798b13d..27a9873 100644
--- a/src/include/ipxe/efi/Protocol/AcpiTable.h
+++ b/src/include/ipxe/efi/Protocol/AcpiTable.h
@@ -2,26 +2,22 @@
   The file provides the protocol to install or remove an ACPI
   table from a platform.
 
-  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  @par Revision Reference:
+  This Protocol was introduced in UEFI Specification 2.3.
 
 **/
 
 #ifndef __ACPI_TABLE_H___
 #define __ACPI_TABLE_H___
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_ACPI_TABLE_PROTOCOL_GUID \
   { 0xffe06bdd, 0x6107, 0x46a6, { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c }}
 
-
 typedef struct _EFI_ACPI_TABLE_PROTOCOL EFI_ACPI_TABLE_PROTOCOL;
 
 /**
@@ -80,8 +76,7 @@
   IN   VOID                          *AcpiTableBuffer,
   IN   UINTN                         AcpiTableBufferSize,
   OUT  UINTN                         *TableKey
-);
-
+  );
 
 /**
 
@@ -112,18 +107,17 @@
 (EFIAPI *EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE)(
   IN  EFI_ACPI_TABLE_PROTOCOL       *This,
   IN  UINTN                         TableKey
-);
+  );
 
 ///
 /// The EFI_ACPI_TABLE_PROTOCOL provides the ability for a component
 /// to install and uninstall ACPI tables from a platform.
 ///
 struct _EFI_ACPI_TABLE_PROTOCOL {
-  EFI_ACPI_TABLE_INSTALL_ACPI_TABLE   InstallAcpiTable;
-  EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE UninstallAcpiTable;
+  EFI_ACPI_TABLE_INSTALL_ACPI_TABLE      InstallAcpiTable;
+  EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE    UninstallAcpiTable;
 };
 
-extern EFI_GUID gEfiAcpiTableProtocolGuid;
+extern EFI_GUID  gEfiAcpiTableProtocolGuid;
 
 #endif
-
diff --git a/src/include/ipxe/efi/Protocol/Arp.h b/src/include/ipxe/efi/Protocol/Arp.h
index 80921f9..0f60e3c 100644
--- a/src/include/ipxe/efi/Protocol/Arp.h
+++ b/src/include/ipxe/efi/Protocol/Arp.h
@@ -7,14 +7,8 @@
   The EFI ARP Protocol provides services to map IP network
   address to hardware address used by a data link protocol.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol was introduced in UEFI Specification 2.0.
@@ -24,7 +18,7 @@
 #ifndef __EFI_ARP_PROTOCOL_H__
 #define __EFI_ARP_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID \
   { \
@@ -42,51 +36,51 @@
   ///
   /// Length in bytes of this entry.
   ///
-  UINT32                      Size;
+  UINT32     Size;
 
   ///
   /// Set to TRUE if this entry is a "deny" entry.
   /// Set to FALSE if this entry is a "normal" entry.
   ///
-  BOOLEAN                     DenyFlag;
+  BOOLEAN    DenyFlag;
 
   ///
   /// Set to TRUE if this entry will not time out.
   /// Set to FALSE if this entry will time out.
   ///
-  BOOLEAN                     StaticFlag;
+  BOOLEAN    StaticFlag;
 
   ///
   /// 16-bit ARP hardware identifier number.
   ///
-  UINT16                      HwAddressType;
+  UINT16     HwAddressType;
 
   ///
   /// 16-bit protocol type number.
   ///
-  UINT16                      SwAddressType;
+  UINT16     SwAddressType;
 
   ///
   /// The length of the hardware address.
   ///
-  UINT8                       HwAddressLength;
+  UINT8      HwAddressLength;
 
   ///
   /// The length of the protocol address.
   ///
-  UINT8                       SwAddressLength;
+  UINT8      SwAddressLength;
 } EFI_ARP_FIND_DATA;
 
 typedef struct {
   ///
   /// 16-bit protocol type number in host byte order.
   ///
-  UINT16                    SwAddressType;
+  UINT16    SwAddressType;
 
   ///
   /// The length in bytes of the station's protocol address to register.
   ///
-  UINT8                     SwAddressLength;
+  UINT8     SwAddressLength;
 
   ///
   /// The pointer to the first byte of the protocol address to register. For
@@ -94,30 +88,29 @@
   /// StationAddress points to the first byte of this station's IP
   /// address stored in network byte order.
   ///
-  VOID                      *StationAddress;
+  VOID      *StationAddress;
 
   ///
   /// The timeout value in 100-ns units that is associated with each
   /// new dynamic ARP cache entry. If it is set to zero, the value is
   /// implementation-specific.
   ///
-  UINT32                    EntryTimeOut;
+  UINT32    EntryTimeOut;
 
   ///
   /// The number of retries before a MAC address is resolved. If it is
   /// set to zero, the value is implementation-specific.
   ///
-  UINT32                    RetryCount;
+  UINT32    RetryCount;
 
   ///
   /// The timeout value in 100-ns units that is used to wait for the ARP
   /// reply packet or the timeout value between two retries. Set to zero
   /// to use implementation-specific value.
   ///
-  UINT32                    RetryTimeOut;
+  UINT32    RetryTimeOut;
 } EFI_ARP_CONFIG_DATA;
 
-
 /**
   This function is used to assign a station address to the ARP cache for this instance
   of the ARP driver.
@@ -255,7 +248,6 @@
   IN BOOLEAN                Refresh
   );
 
-
 /**
   This function removes specified ARP cache entries.
 
@@ -371,17 +363,16 @@
 /// network hardware addresses.
 ///
 struct _EFI_ARP_PROTOCOL {
-  EFI_ARP_CONFIGURE         Configure;
-  EFI_ARP_ADD               Add;
-  EFI_ARP_FIND              Find;
-  EFI_ARP_DELETE            Delete;
-  EFI_ARP_FLUSH             Flush;
-  EFI_ARP_REQUEST           Request;
-  EFI_ARP_CANCEL            Cancel;
+  EFI_ARP_CONFIGURE    Configure;
+  EFI_ARP_ADD          Add;
+  EFI_ARP_FIND         Find;
+  EFI_ARP_DELETE       Delete;
+  EFI_ARP_FLUSH        Flush;
+  EFI_ARP_REQUEST      Request;
+  EFI_ARP_CANCEL       Cancel;
 };
 
-
-extern EFI_GUID gEfiArpServiceBindingProtocolGuid;
-extern EFI_GUID gEfiArpProtocolGuid;
+extern EFI_GUID  gEfiArpServiceBindingProtocolGuid;
+extern EFI_GUID  gEfiArpProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/BlockIo.h b/src/include/ipxe/efi/Protocol/BlockIo.h
index f45154b..5efaf6e 100644
--- a/src/include/ipxe/efi/Protocol/BlockIo.h
+++ b/src/include/ipxe/efi/Protocol/BlockIo.h
@@ -4,38 +4,32 @@
   The Block IO protocol is used to abstract block devices like hard drives,
   DVD-ROMs and floppy drives.
 
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __BLOCK_IO_H__
 #define __BLOCK_IO_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_BLOCK_IO_PROTOCOL_GUID \
   { \
     0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
   }
 
-typedef struct _EFI_BLOCK_IO_PROTOCOL  EFI_BLOCK_IO_PROTOCOL;
+typedef struct _EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO_PROTOCOL;
 
 ///
 /// Protocol GUID name defined in EFI1.1.
 ///
-#define BLOCK_IO_PROTOCOL       EFI_BLOCK_IO_PROTOCOL_GUID
+#define BLOCK_IO_PROTOCOL  EFI_BLOCK_IO_PROTOCOL_GUID
 
 ///
 /// Protocol defined in EFI1.1.
 ///
-typedef EFI_BLOCK_IO_PROTOCOL   EFI_BLOCK_IO;
+typedef EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO;
 
 /**
   Reset the Block Device.
@@ -137,84 +131,84 @@
   ///
   /// The curent media Id. If the media changes, this value is changed.
   ///
-  UINT32  MediaId;
+  UINT32     MediaId;
 
   ///
   /// TRUE if the media is removable; otherwise, FALSE.
   ///
-  BOOLEAN RemovableMedia;
+  BOOLEAN    RemovableMedia;
 
   ///
   /// TRUE if there is a media currently present in the device;
   /// othersise, FALSE. THis field shows the media present status
   /// as of the most recent ReadBlocks() or WriteBlocks() call.
   ///
-  BOOLEAN MediaPresent;
+  BOOLEAN    MediaPresent;
 
   ///
   /// TRUE if LBA 0 is the first block of a partition; otherwise
   /// FALSE. For media with only one partition this would be TRUE.
   ///
-  BOOLEAN LogicalPartition;
+  BOOLEAN    LogicalPartition;
 
   ///
   /// TRUE if the media is marked read-only otherwise, FALSE.
   /// This field shows the read-only status as of the most recent WriteBlocks () call.
   ///
-  BOOLEAN ReadOnly;
+  BOOLEAN    ReadOnly;
 
   ///
   /// TRUE if the WriteBlock () function caches write data.
   ///
-  BOOLEAN WriteCaching;
+  BOOLEAN    WriteCaching;
 
   ///
   /// The intrinsic block size of the device. If the media changes, then
   /// this field is updated.
   ///
-  UINT32  BlockSize;
+  UINT32     BlockSize;
 
   ///
   /// Supplies the alignment requirement for any buffer to read or write block(s).
   ///
-  UINT32  IoAlign;
+  UINT32     IoAlign;
 
   ///
   /// The last logical block address on the device.
   /// If the media changes, then this field is updated.
   ///
-  EFI_LBA LastBlock;
+  EFI_LBA    LastBlock;
 
   ///
   /// Only present if EFI_BLOCK_IO_PROTOCOL.Revision is greater than or equal to
   /// EFI_BLOCK_IO_PROTOCOL_REVISION2. Returns the first LBA is aligned to
   /// a physical block boundary.
   ///
-  EFI_LBA LowestAlignedLba;
+  EFI_LBA    LowestAlignedLba;
 
   ///
   /// Only present if EFI_BLOCK_IO_PROTOCOL.Revision is greater than or equal to
   /// EFI_BLOCK_IO_PROTOCOL_REVISION2. Returns the number of logical blocks
   /// per physical block.
   ///
-  UINT32 LogicalBlocksPerPhysicalBlock;
+  UINT32     LogicalBlocksPerPhysicalBlock;
 
   ///
   /// Only present if EFI_BLOCK_IO_PROTOCOL.Revision is greater than or equal to
   /// EFI_BLOCK_IO_PROTOCOL_REVISION3. Returns the optimal transfer length
   /// granularity as a number of logical blocks.
   ///
-  UINT32 OptimalTransferLengthGranularity;
+  UINT32     OptimalTransferLengthGranularity;
 } EFI_BLOCK_IO_MEDIA;
 
-#define EFI_BLOCK_IO_PROTOCOL_REVISION  0x00010000
-#define EFI_BLOCK_IO_PROTOCOL_REVISION2 0x00020001
-#define EFI_BLOCK_IO_PROTOCOL_REVISION3 0x00020031
+#define EFI_BLOCK_IO_PROTOCOL_REVISION   0x00010000
+#define EFI_BLOCK_IO_PROTOCOL_REVISION2  0x00020001
+#define EFI_BLOCK_IO_PROTOCOL_REVISION3  0x0002001F
 
 ///
 /// Revision defined in EFI1.1.
 ///
-#define EFI_BLOCK_IO_INTERFACE_REVISION   EFI_BLOCK_IO_PROTOCOL_REVISION
+#define EFI_BLOCK_IO_INTERFACE_REVISION  EFI_BLOCK_IO_PROTOCOL_REVISION
 
 ///
 ///  This protocol provides control over block devices.
@@ -225,19 +219,18 @@
   /// revisions must be backwards compatible. If a future version is not
   /// back wards compatible, it is not the same GUID.
   ///
-  UINT64              Revision;
+  UINT64                Revision;
   ///
   /// Pointer to the EFI_BLOCK_IO_MEDIA data for this device.
   ///
-  EFI_BLOCK_IO_MEDIA  *Media;
+  EFI_BLOCK_IO_MEDIA    *Media;
 
-  EFI_BLOCK_RESET     Reset;
-  EFI_BLOCK_READ      ReadBlocks;
-  EFI_BLOCK_WRITE     WriteBlocks;
-  EFI_BLOCK_FLUSH     FlushBlocks;
-
+  EFI_BLOCK_RESET       Reset;
+  EFI_BLOCK_READ        ReadBlocks;
+  EFI_BLOCK_WRITE       WriteBlocks;
+  EFI_BLOCK_FLUSH       FlushBlocks;
 };
 
-extern EFI_GUID gEfiBlockIoProtocolGuid;
+extern EFI_GUID  gEfiBlockIoProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/BlockIo2.h b/src/include/ipxe/efi/Protocol/BlockIo2.h
index 0b9cf8e..abc2f8a 100644
--- a/src/include/ipxe/efi/Protocol/BlockIo2.h
+++ b/src/include/ipxe/efi/Protocol/BlockIo2.h
@@ -5,21 +5,15 @@
   enables the ability to read and write data at a block level in a non-blocking
   manner.
 
-  Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __BLOCK_IO2_H__
 #define __BLOCK_IO2_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/BlockIo.h>
 
@@ -28,27 +22,25 @@
     0xa77b2472, 0xe282, 0x4e9f, {0xa2, 0x45, 0xc2, 0xc0, 0xe2, 0x7b, 0xbc, 0xc1} \
   }
 
-typedef struct _EFI_BLOCK_IO2_PROTOCOL  EFI_BLOCK_IO2_PROTOCOL;
+typedef struct _EFI_BLOCK_IO2_PROTOCOL EFI_BLOCK_IO2_PROTOCOL;
 
 /**
   The struct of Block IO2 Token.
 **/
 typedef struct {
-
   ///
   /// If Event is NULL, then blocking I/O is performed.If Event is not NULL and
   /// non-blocking I/O is supported, then non-blocking I/O is performed, and
   /// Event will be signaled when the read request is completed.
   ///
-  EFI_EVENT               Event;
+  EFI_EVENT     Event;
 
   ///
   /// Defines whether or not the signaled event encountered an error.
   ///
-  EFI_STATUS              TransactionStatus;
+  EFI_STATUS    TransactionStatus;
 } EFI_BLOCK_IO2_TOKEN;
 
-
 /**
   Reset the block device hardware.
 
@@ -64,7 +56,7 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI *EFI_BLOCK_RESET_EX) (
+(EFIAPI *EFI_BLOCK_RESET_EX)(
   IN EFI_BLOCK_IO2_PROTOCOL  *This,
   IN BOOLEAN                 ExtendedVerification
   );
@@ -82,7 +74,7 @@
   @param[in]       MediaId    Id of the media, changes every time the media is
                               replaced.
   @param[in]       Lba        The starting Logical Block Address to read from.
-  @param[in, out]  Token	    A pointer to the token associated with the transaction.
+  @param[in, out]  Token      A pointer to the token associated with the transaction.
   @param[in]       BufferSize Size of Buffer, must be a multiple of device block size.
   @param[out]      Buffer     A pointer to the destination buffer for the data. The
                               caller is responsible for either having implicit or
@@ -104,13 +96,13 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI *EFI_BLOCK_READ_EX) (
+(EFIAPI *EFI_BLOCK_READ_EX)(
   IN     EFI_BLOCK_IO2_PROTOCOL *This,
   IN     UINT32                 MediaId,
   IN     EFI_LBA                LBA,
   IN OUT EFI_BLOCK_IO2_TOKEN    *Token,
   IN     UINTN                  BufferSize,
-     OUT VOID                  *Buffer
+  OUT VOID                  *Buffer
   );
 
 /**
@@ -146,7 +138,7 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI *EFI_BLOCK_WRITE_EX) (
+(EFIAPI *EFI_BLOCK_WRITE_EX)(
   IN     EFI_BLOCK_IO2_PROTOCOL  *This,
   IN     UINT32                 MediaId,
   IN     EFI_LBA                LBA,
@@ -179,7 +171,7 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI *EFI_BLOCK_FLUSH_EX) (
+(EFIAPI *EFI_BLOCK_FLUSH_EX)(
   IN     EFI_BLOCK_IO2_PROTOCOL   *This,
   IN OUT EFI_BLOCK_IO2_TOKEN      *Token
   );
@@ -194,15 +186,14 @@
   /// A pointer to the EFI_BLOCK_IO_MEDIA data for this device.
   /// Type EFI_BLOCK_IO_MEDIA is defined in BlockIo.h.
   ///
-  EFI_BLOCK_IO_MEDIA      *Media;
+  EFI_BLOCK_IO_MEDIA    *Media;
 
-  EFI_BLOCK_RESET_EX      Reset;
-  EFI_BLOCK_READ_EX       ReadBlocksEx;
-  EFI_BLOCK_WRITE_EX      WriteBlocksEx;
-  EFI_BLOCK_FLUSH_EX      FlushBlocksEx;
+  EFI_BLOCK_RESET_EX    Reset;
+  EFI_BLOCK_READ_EX     ReadBlocksEx;
+  EFI_BLOCK_WRITE_EX    WriteBlocksEx;
+  EFI_BLOCK_FLUSH_EX    FlushBlocksEx;
 };
 
-extern EFI_GUID gEfiBlockIo2ProtocolGuid;
+extern EFI_GUID  gEfiBlockIo2ProtocolGuid;
 
 #endif
-
diff --git a/src/include/ipxe/efi/Protocol/BusSpecificDriverOverride.h b/src/include/ipxe/efi/Protocol/BusSpecificDriverOverride.h
index be92323..69d9b1d 100644
--- a/src/include/ipxe/efi/Protocol/BusSpecificDriverOverride.h
+++ b/src/include/ipxe/efi/Protocol/BusSpecificDriverOverride.h
@@ -6,21 +6,15 @@
   instance of this protocol for every PCI controller that has a PCI option ROM that contains one or
   more UEFI drivers. The protocol instance is attached to the handle of the PCI controller.
 
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_H_
 #define _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// Global ID for the Bus Specific Driver Override Protocol
@@ -30,7 +24,7 @@
     0x3bc1b285, 0x8a15, 0x4a82, {0xaa, 0xbf, 0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65 } \
   }
 
-typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL  EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL;
+typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL;
 
 //
 // Prototypes for the Bus Specific Driver Override Protocol
@@ -66,9 +60,9 @@
 /// drivers to controllers.
 ///
 struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL {
-  EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver;
+  EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER    GetDriver;
 };
 
-extern EFI_GUID gEfiBusSpecificDriverOverrideProtocolGuid;
+extern EFI_GUID  gEfiBusSpecificDriverOverrideProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/ComponentName.h b/src/include/ipxe/efi/Protocol/ComponentName.h
index 87b6d61..cd7f4d0 100644
--- a/src/include/ipxe/efi/Protocol/ComponentName.h
+++ b/src/include/ipxe/efi/Protocol/ComponentName.h
@@ -3,21 +3,15 @@
   This protocol is used to retrieve user readable names of EFI Drivers
   and controllers managed by EFI Drivers.
 
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __EFI_COMPONENT_NAME_H__
 #define __EFI_COMPONENT_NAME_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// The global ID for the Component Name Protocol.
@@ -27,8 +21,7 @@
     0x107a772c, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
   }
 
-typedef struct _EFI_COMPONENT_NAME_PROTOCOL  EFI_COMPONENT_NAME_PROTOCOL;
-
+typedef struct _EFI_COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME_PROTOCOL;
 
 /**
   Retrieves a Unicode string that is the user-readable name of the EFI Driver.
@@ -60,7 +53,6 @@
   OUT CHAR16                               **DriverName
   );
 
-
 /**
   Retrieves a Unicode string that is the user readable name of the controller
   that is being managed by an EFI Driver.
@@ -116,16 +108,16 @@
 /// and controllers managed by UEFI Drivers.
 ///
 struct _EFI_COMPONENT_NAME_PROTOCOL {
-  EFI_COMPONENT_NAME_GET_DRIVER_NAME      GetDriverName;
-  EFI_COMPONENT_NAME_GET_CONTROLLER_NAME  GetControllerName;
+  EFI_COMPONENT_NAME_GET_DRIVER_NAME        GetDriverName;
+  EFI_COMPONENT_NAME_GET_CONTROLLER_NAME    GetControllerName;
   ///
   /// A Null-terminated ASCII string that contains one or more
   /// ISO 639-2 language codes. This is the list of language codes
   /// that this protocol supports.
   ///
-  CHAR8                                   *SupportedLanguages;
+  CHAR8                                     *SupportedLanguages;
 };
 
-extern EFI_GUID gEfiComponentNameProtocolGuid;
+extern EFI_GUID  gEfiComponentNameProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/ComponentName2.h b/src/include/ipxe/efi/Protocol/ComponentName2.h
index 82d8b25..886c9eb 100644
--- a/src/include/ipxe/efi/Protocol/ComponentName2.h
+++ b/src/include/ipxe/efi/Protocol/ComponentName2.h
@@ -3,21 +3,15 @@
   This protocol is used to retrieve user readable names of drivers
   and controllers managed by UEFI Drivers.
 
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __EFI_COMPONENT_NAME2_H__
 #define __EFI_COMPONENT_NAME2_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// Global ID for the Component Name Protocol
@@ -25,8 +19,7 @@
 #define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
   {0x6a7a5cff, 0xe8d9, 0x4f70, { 0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14 } }
 
-typedef struct _EFI_COMPONENT_NAME2_PROTOCOL  EFI_COMPONENT_NAME2_PROTOCOL;
-
+typedef struct _EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL;
 
 /**
   Retrieves a string that is the user readable name of
@@ -72,7 +65,6 @@
   OUT CHAR16                               **DriverName
   );
 
-
 /**
   Retrieves a string that is the user readable name of
   the controller that is being managed by an EFI Driver.
@@ -156,8 +148,8 @@
 /// and controllers managed by UEFI Drivers.
 ///
 struct _EFI_COMPONENT_NAME2_PROTOCOL {
-  EFI_COMPONENT_NAME2_GET_DRIVER_NAME      GetDriverName;
-  EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME  GetControllerName;
+  EFI_COMPONENT_NAME2_GET_DRIVER_NAME        GetDriverName;
+  EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME    GetControllerName;
 
   ///
   /// A Null-terminated ASCII string array that contains one or more
@@ -166,9 +158,9 @@
   /// driver is up to the driver writer. SupportedLanguages is
   /// specified in RFC 4646 format.
   ///
-  CHAR8                                    *SupportedLanguages;
+  CHAR8    *SupportedLanguages;
 };
 
-extern EFI_GUID gEfiComponentName2ProtocolGuid;
+extern EFI_GUID  gEfiComponentName2ProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/DebugSupport.h b/src/include/ipxe/efi/Protocol/DebugSupport.h
index e2b4b20..1b28b0e 100644
--- a/src/include/ipxe/efi/Protocol/DebugSupport.h
+++ b/src/include/ipxe/efi/Protocol/DebugSupport.h
@@ -5,23 +5,18 @@
   The DebugSupport protocol is used by source level debuggers to abstract the
   processor and handle context save and restore operations.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>
+Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
 
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __DEBUG_SUPPORT_H__
 #define __DEBUG_SUPPORT_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/PeImage.h>
 
@@ -39,221 +34,221 @@
 /// Processor exception to be hooked.
 /// All exception types for IA32, X64, Itanium and EBC processors are defined.
 ///
-typedef INTN  EFI_EXCEPTION_TYPE;
+typedef INTN EFI_EXCEPTION_TYPE;
 
 ///
 ///  IA-32 processor exception types.
 ///
-#define EXCEPT_IA32_DIVIDE_ERROR    0
-#define EXCEPT_IA32_DEBUG           1
-#define EXCEPT_IA32_NMI             2
-#define EXCEPT_IA32_BREAKPOINT      3
-#define EXCEPT_IA32_OVERFLOW        4
-#define EXCEPT_IA32_BOUND           5
-#define EXCEPT_IA32_INVALID_OPCODE  6
-#define EXCEPT_IA32_DOUBLE_FAULT    8
-#define EXCEPT_IA32_INVALID_TSS     10
-#define EXCEPT_IA32_SEG_NOT_PRESENT 11
-#define EXCEPT_IA32_STACK_FAULT     12
-#define EXCEPT_IA32_GP_FAULT        13
-#define EXCEPT_IA32_PAGE_FAULT      14
-#define EXCEPT_IA32_FP_ERROR        16
-#define EXCEPT_IA32_ALIGNMENT_CHECK 17
-#define EXCEPT_IA32_MACHINE_CHECK   18
-#define EXCEPT_IA32_SIMD            19
+#define EXCEPT_IA32_DIVIDE_ERROR     0
+#define EXCEPT_IA32_DEBUG            1
+#define EXCEPT_IA32_NMI              2
+#define EXCEPT_IA32_BREAKPOINT       3
+#define EXCEPT_IA32_OVERFLOW         4
+#define EXCEPT_IA32_BOUND            5
+#define EXCEPT_IA32_INVALID_OPCODE   6
+#define EXCEPT_IA32_DOUBLE_FAULT     8
+#define EXCEPT_IA32_INVALID_TSS      10
+#define EXCEPT_IA32_SEG_NOT_PRESENT  11
+#define EXCEPT_IA32_STACK_FAULT      12
+#define EXCEPT_IA32_GP_FAULT         13
+#define EXCEPT_IA32_PAGE_FAULT       14
+#define EXCEPT_IA32_FP_ERROR         16
+#define EXCEPT_IA32_ALIGNMENT_CHECK  17
+#define EXCEPT_IA32_MACHINE_CHECK    18
+#define EXCEPT_IA32_SIMD             19
 
 ///
 /// FXSAVE_STATE.
 /// FP / MMX / XMM registers (see fxrstor instruction definition).
 ///
 typedef struct {
-  UINT16  Fcw;
-  UINT16  Fsw;
-  UINT16  Ftw;
-  UINT16  Opcode;
-  UINT32  Eip;
-  UINT16  Cs;
-  UINT16  Reserved1;
-  UINT32  DataOffset;
-  UINT16  Ds;
-  UINT8   Reserved2[10];
-  UINT8   St0Mm0[10], Reserved3[6];
-  UINT8   St1Mm1[10], Reserved4[6];
-  UINT8   St2Mm2[10], Reserved5[6];
-  UINT8   St3Mm3[10], Reserved6[6];
-  UINT8   St4Mm4[10], Reserved7[6];
-  UINT8   St5Mm5[10], Reserved8[6];
-  UINT8   St6Mm6[10], Reserved9[6];
-  UINT8   St7Mm7[10], Reserved10[6];
-  UINT8   Xmm0[16];
-  UINT8   Xmm1[16];
-  UINT8   Xmm2[16];
-  UINT8   Xmm3[16];
-  UINT8   Xmm4[16];
-  UINT8   Xmm5[16];
-  UINT8   Xmm6[16];
-  UINT8   Xmm7[16];
-  UINT8   Reserved11[14 * 16];
+  UINT16    Fcw;
+  UINT16    Fsw;
+  UINT16    Ftw;
+  UINT16    Opcode;
+  UINT32    Eip;
+  UINT16    Cs;
+  UINT16    Reserved1;
+  UINT32    DataOffset;
+  UINT16    Ds;
+  UINT8     Reserved2[10];
+  UINT8     St0Mm0[10], Reserved3[6];
+  UINT8     St1Mm1[10], Reserved4[6];
+  UINT8     St2Mm2[10], Reserved5[6];
+  UINT8     St3Mm3[10], Reserved6[6];
+  UINT8     St4Mm4[10], Reserved7[6];
+  UINT8     St5Mm5[10], Reserved8[6];
+  UINT8     St6Mm6[10], Reserved9[6];
+  UINT8     St7Mm7[10], Reserved10[6];
+  UINT8     Xmm0[16];
+  UINT8     Xmm1[16];
+  UINT8     Xmm2[16];
+  UINT8     Xmm3[16];
+  UINT8     Xmm4[16];
+  UINT8     Xmm5[16];
+  UINT8     Xmm6[16];
+  UINT8     Xmm7[16];
+  UINT8     Reserved11[14 * 16];
 } EFI_FX_SAVE_STATE_IA32;
 
 ///
 ///  IA-32 processor context definition.
 ///
 typedef struct {
-  UINT32                 ExceptionData;
-  EFI_FX_SAVE_STATE_IA32 FxSaveState;
-  UINT32                 Dr0;
-  UINT32                 Dr1;
-  UINT32                 Dr2;
-  UINT32                 Dr3;
-  UINT32                 Dr6;
-  UINT32                 Dr7;
-  UINT32                 Cr0;
-  UINT32                 Cr1;  /* Reserved */
-  UINT32                 Cr2;
-  UINT32                 Cr3;
-  UINT32                 Cr4;
-  UINT32                 Eflags;
-  UINT32                 Ldtr;
-  UINT32                 Tr;
-  UINT32                 Gdtr[2];
-  UINT32                 Idtr[2];
-  UINT32                 Eip;
-  UINT32                 Gs;
-  UINT32                 Fs;
-  UINT32                 Es;
-  UINT32                 Ds;
-  UINT32                 Cs;
-  UINT32                 Ss;
-  UINT32                 Edi;
-  UINT32                 Esi;
-  UINT32                 Ebp;
-  UINT32                 Esp;
-  UINT32                 Ebx;
-  UINT32                 Edx;
-  UINT32                 Ecx;
-  UINT32                 Eax;
+  UINT32                    ExceptionData;
+  EFI_FX_SAVE_STATE_IA32    FxSaveState;
+  UINT32                    Dr0;
+  UINT32                    Dr1;
+  UINT32                    Dr2;
+  UINT32                    Dr3;
+  UINT32                    Dr6;
+  UINT32                    Dr7;
+  UINT32                    Cr0;
+  UINT32                    Cr1; /* Reserved */
+  UINT32                    Cr2;
+  UINT32                    Cr3;
+  UINT32                    Cr4;
+  UINT32                    Eflags;
+  UINT32                    Ldtr;
+  UINT32                    Tr;
+  UINT32                    Gdtr[2];
+  UINT32                    Idtr[2];
+  UINT32                    Eip;
+  UINT32                    Gs;
+  UINT32                    Fs;
+  UINT32                    Es;
+  UINT32                    Ds;
+  UINT32                    Cs;
+  UINT32                    Ss;
+  UINT32                    Edi;
+  UINT32                    Esi;
+  UINT32                    Ebp;
+  UINT32                    Esp;
+  UINT32                    Ebx;
+  UINT32                    Edx;
+  UINT32                    Ecx;
+  UINT32                    Eax;
 } EFI_SYSTEM_CONTEXT_IA32;
 
 ///
 ///  x64 processor exception types.
 ///
-#define EXCEPT_X64_DIVIDE_ERROR    0
-#define EXCEPT_X64_DEBUG           1
-#define EXCEPT_X64_NMI             2
-#define EXCEPT_X64_BREAKPOINT      3
-#define EXCEPT_X64_OVERFLOW        4
-#define EXCEPT_X64_BOUND           5
-#define EXCEPT_X64_INVALID_OPCODE  6
-#define EXCEPT_X64_DOUBLE_FAULT    8
-#define EXCEPT_X64_INVALID_TSS     10
-#define EXCEPT_X64_SEG_NOT_PRESENT 11
-#define EXCEPT_X64_STACK_FAULT     12
-#define EXCEPT_X64_GP_FAULT        13
-#define EXCEPT_X64_PAGE_FAULT      14
-#define EXCEPT_X64_FP_ERROR        16
-#define EXCEPT_X64_ALIGNMENT_CHECK 17
-#define EXCEPT_X64_MACHINE_CHECK   18
-#define EXCEPT_X64_SIMD            19
+#define EXCEPT_X64_DIVIDE_ERROR     0
+#define EXCEPT_X64_DEBUG            1
+#define EXCEPT_X64_NMI              2
+#define EXCEPT_X64_BREAKPOINT       3
+#define EXCEPT_X64_OVERFLOW         4
+#define EXCEPT_X64_BOUND            5
+#define EXCEPT_X64_INVALID_OPCODE   6
+#define EXCEPT_X64_DOUBLE_FAULT     8
+#define EXCEPT_X64_INVALID_TSS      10
+#define EXCEPT_X64_SEG_NOT_PRESENT  11
+#define EXCEPT_X64_STACK_FAULT      12
+#define EXCEPT_X64_GP_FAULT         13
+#define EXCEPT_X64_PAGE_FAULT       14
+#define EXCEPT_X64_FP_ERROR         16
+#define EXCEPT_X64_ALIGNMENT_CHECK  17
+#define EXCEPT_X64_MACHINE_CHECK    18
+#define EXCEPT_X64_SIMD             19
 
 ///
 /// FXSAVE_STATE.
 /// FP / MMX / XMM registers (see fxrstor instruction definition).
 ///
 typedef struct {
-  UINT16  Fcw;
-  UINT16  Fsw;
-  UINT16  Ftw;
-  UINT16  Opcode;
-  UINT64  Rip;
-  UINT64  DataOffset;
-  UINT8   Reserved1[8];
-  UINT8   St0Mm0[10], Reserved2[6];
-  UINT8   St1Mm1[10], Reserved3[6];
-  UINT8   St2Mm2[10], Reserved4[6];
-  UINT8   St3Mm3[10], Reserved5[6];
-  UINT8   St4Mm4[10], Reserved6[6];
-  UINT8   St5Mm5[10], Reserved7[6];
-  UINT8   St6Mm6[10], Reserved8[6];
-  UINT8   St7Mm7[10], Reserved9[6];
-  UINT8   Xmm0[16];
-  UINT8   Xmm1[16];
-  UINT8   Xmm2[16];
-  UINT8   Xmm3[16];
-  UINT8   Xmm4[16];
-  UINT8   Xmm5[16];
-  UINT8   Xmm6[16];
-  UINT8   Xmm7[16];
+  UINT16    Fcw;
+  UINT16    Fsw;
+  UINT16    Ftw;
+  UINT16    Opcode;
+  UINT64    Rip;
+  UINT64    DataOffset;
+  UINT8     Reserved1[8];
+  UINT8     St0Mm0[10], Reserved2[6];
+  UINT8     St1Mm1[10], Reserved3[6];
+  UINT8     St2Mm2[10], Reserved4[6];
+  UINT8     St3Mm3[10], Reserved5[6];
+  UINT8     St4Mm4[10], Reserved6[6];
+  UINT8     St5Mm5[10], Reserved7[6];
+  UINT8     St6Mm6[10], Reserved8[6];
+  UINT8     St7Mm7[10], Reserved9[6];
+  UINT8     Xmm0[16];
+  UINT8     Xmm1[16];
+  UINT8     Xmm2[16];
+  UINT8     Xmm3[16];
+  UINT8     Xmm4[16];
+  UINT8     Xmm5[16];
+  UINT8     Xmm6[16];
+  UINT8     Xmm7[16];
   //
   // NOTE: UEFI 2.0 spec definition as follows.
   //
-  UINT8   Reserved11[14 * 16];
+  UINT8     Reserved11[14 * 16];
 } EFI_FX_SAVE_STATE_X64;
 
 ///
 ///  x64 processor context definition.
 ///
 typedef struct {
-  UINT64                ExceptionData;
-  EFI_FX_SAVE_STATE_X64 FxSaveState;
-  UINT64                Dr0;
-  UINT64                Dr1;
-  UINT64                Dr2;
-  UINT64                Dr3;
-  UINT64                Dr6;
-  UINT64                Dr7;
-  UINT64                Cr0;
-  UINT64                Cr1;  /* Reserved */
-  UINT64                Cr2;
-  UINT64                Cr3;
-  UINT64                Cr4;
-  UINT64                Cr8;
-  UINT64                Rflags;
-  UINT64                Ldtr;
-  UINT64                Tr;
-  UINT64                Gdtr[2];
-  UINT64                Idtr[2];
-  UINT64                Rip;
-  UINT64                Gs;
-  UINT64                Fs;
-  UINT64                Es;
-  UINT64                Ds;
-  UINT64                Cs;
-  UINT64                Ss;
-  UINT64                Rdi;
-  UINT64                Rsi;
-  UINT64                Rbp;
-  UINT64                Rsp;
-  UINT64                Rbx;
-  UINT64                Rdx;
-  UINT64                Rcx;
-  UINT64                Rax;
-  UINT64                R8;
-  UINT64                R9;
-  UINT64                R10;
-  UINT64                R11;
-  UINT64                R12;
-  UINT64                R13;
-  UINT64                R14;
-  UINT64                R15;
+  UINT64                   ExceptionData;
+  EFI_FX_SAVE_STATE_X64    FxSaveState;
+  UINT64                   Dr0;
+  UINT64                   Dr1;
+  UINT64                   Dr2;
+  UINT64                   Dr3;
+  UINT64                   Dr6;
+  UINT64                   Dr7;
+  UINT64                   Cr0;
+  UINT64                   Cr1; /* Reserved */
+  UINT64                   Cr2;
+  UINT64                   Cr3;
+  UINT64                   Cr4;
+  UINT64                   Cr8;
+  UINT64                   Rflags;
+  UINT64                   Ldtr;
+  UINT64                   Tr;
+  UINT64                   Gdtr[2];
+  UINT64                   Idtr[2];
+  UINT64                   Rip;
+  UINT64                   Gs;
+  UINT64                   Fs;
+  UINT64                   Es;
+  UINT64                   Ds;
+  UINT64                   Cs;
+  UINT64                   Ss;
+  UINT64                   Rdi;
+  UINT64                   Rsi;
+  UINT64                   Rbp;
+  UINT64                   Rsp;
+  UINT64                   Rbx;
+  UINT64                   Rdx;
+  UINT64                   Rcx;
+  UINT64                   Rax;
+  UINT64                   R8;
+  UINT64                   R9;
+  UINT64                   R10;
+  UINT64                   R11;
+  UINT64                   R12;
+  UINT64                   R13;
+  UINT64                   R14;
+  UINT64                   R15;
 } EFI_SYSTEM_CONTEXT_X64;
 
 ///
 ///  Itanium Processor Family Exception types.
 ///
-#define EXCEPT_IPF_VHTP_TRANSLATION       0
-#define EXCEPT_IPF_INSTRUCTION_TLB        1
-#define EXCEPT_IPF_DATA_TLB               2
-#define EXCEPT_IPF_ALT_INSTRUCTION_TLB    3
-#define EXCEPT_IPF_ALT_DATA_TLB           4
-#define EXCEPT_IPF_DATA_NESTED_TLB        5
-#define EXCEPT_IPF_INSTRUCTION_KEY_MISSED 6
-#define EXCEPT_IPF_DATA_KEY_MISSED        7
-#define EXCEPT_IPF_DIRTY_BIT              8
-#define EXCEPT_IPF_INSTRUCTION_ACCESS_BIT 9
-#define EXCEPT_IPF_DATA_ACCESS_BIT        10
-#define EXCEPT_IPF_BREAKPOINT             11
-#define EXCEPT_IPF_EXTERNAL_INTERRUPT     12
+#define EXCEPT_IPF_VHTP_TRANSLATION        0
+#define EXCEPT_IPF_INSTRUCTION_TLB         1
+#define EXCEPT_IPF_DATA_TLB                2
+#define EXCEPT_IPF_ALT_INSTRUCTION_TLB     3
+#define EXCEPT_IPF_ALT_DATA_TLB            4
+#define EXCEPT_IPF_DATA_NESTED_TLB         5
+#define EXCEPT_IPF_INSTRUCTION_KEY_MISSED  6
+#define EXCEPT_IPF_DATA_KEY_MISSED         7
+#define EXCEPT_IPF_DIRTY_BIT               8
+#define EXCEPT_IPF_INSTRUCTION_ACCESS_BIT  9
+#define EXCEPT_IPF_DATA_ACCESS_BIT         10
+#define EXCEPT_IPF_BREAKPOINT              11
+#define EXCEPT_IPF_EXTERNAL_INTERRUPT      12
 //
 // 13 - 19 reserved
 //
@@ -279,9 +274,9 @@
 //
 // 37 - 44 reserved
 //
-#define EXCEPT_IPF_IA32_EXCEPTION 45
-#define EXCEPT_IPF_IA32_INTERCEPT 46
-#define EXCEPT_IPF_IA32_INTERRUPT 47
+#define EXCEPT_IPF_IA32_EXCEPTION  45
+#define EXCEPT_IPF_IA32_INTERCEPT  46
+#define EXCEPT_IPF_IA32_INTERRUPT  47
 
 ///
 ///  IPF processor context definition.
@@ -291,337 +286,480 @@
   // The first reserved field is necessary to preserve alignment for the correct
   // bits in UNAT and to insure F2 is 16 byte aligned.
   //
-  UINT64  Reserved;
-  UINT64  R1;
-  UINT64  R2;
-  UINT64  R3;
-  UINT64  R4;
-  UINT64  R5;
-  UINT64  R6;
-  UINT64  R7;
-  UINT64  R8;
-  UINT64  R9;
-  UINT64  R10;
-  UINT64  R11;
-  UINT64  R12;
-  UINT64  R13;
-  UINT64  R14;
-  UINT64  R15;
-  UINT64  R16;
-  UINT64  R17;
-  UINT64  R18;
-  UINT64  R19;
-  UINT64  R20;
-  UINT64  R21;
-  UINT64  R22;
-  UINT64  R23;
-  UINT64  R24;
-  UINT64  R25;
-  UINT64  R26;
-  UINT64  R27;
-  UINT64  R28;
-  UINT64  R29;
-  UINT64  R30;
-  UINT64  R31;
+  UINT64    Reserved;
+  UINT64    R1;
+  UINT64    R2;
+  UINT64    R3;
+  UINT64    R4;
+  UINT64    R5;
+  UINT64    R6;
+  UINT64    R7;
+  UINT64    R8;
+  UINT64    R9;
+  UINT64    R10;
+  UINT64    R11;
+  UINT64    R12;
+  UINT64    R13;
+  UINT64    R14;
+  UINT64    R15;
+  UINT64    R16;
+  UINT64    R17;
+  UINT64    R18;
+  UINT64    R19;
+  UINT64    R20;
+  UINT64    R21;
+  UINT64    R22;
+  UINT64    R23;
+  UINT64    R24;
+  UINT64    R25;
+  UINT64    R26;
+  UINT64    R27;
+  UINT64    R28;
+  UINT64    R29;
+  UINT64    R30;
+  UINT64    R31;
 
-  UINT64  F2[2];
-  UINT64  F3[2];
-  UINT64  F4[2];
-  UINT64  F5[2];
-  UINT64  F6[2];
-  UINT64  F7[2];
-  UINT64  F8[2];
-  UINT64  F9[2];
-  UINT64  F10[2];
-  UINT64  F11[2];
-  UINT64  F12[2];
-  UINT64  F13[2];
-  UINT64  F14[2];
-  UINT64  F15[2];
-  UINT64  F16[2];
-  UINT64  F17[2];
-  UINT64  F18[2];
-  UINT64  F19[2];
-  UINT64  F20[2];
-  UINT64  F21[2];
-  UINT64  F22[2];
-  UINT64  F23[2];
-  UINT64  F24[2];
-  UINT64  F25[2];
-  UINT64  F26[2];
-  UINT64  F27[2];
-  UINT64  F28[2];
-  UINT64  F29[2];
-  UINT64  F30[2];
-  UINT64  F31[2];
+  UINT64    F2[2];
+  UINT64    F3[2];
+  UINT64    F4[2];
+  UINT64    F5[2];
+  UINT64    F6[2];
+  UINT64    F7[2];
+  UINT64    F8[2];
+  UINT64    F9[2];
+  UINT64    F10[2];
+  UINT64    F11[2];
+  UINT64    F12[2];
+  UINT64    F13[2];
+  UINT64    F14[2];
+  UINT64    F15[2];
+  UINT64    F16[2];
+  UINT64    F17[2];
+  UINT64    F18[2];
+  UINT64    F19[2];
+  UINT64    F20[2];
+  UINT64    F21[2];
+  UINT64    F22[2];
+  UINT64    F23[2];
+  UINT64    F24[2];
+  UINT64    F25[2];
+  UINT64    F26[2];
+  UINT64    F27[2];
+  UINT64    F28[2];
+  UINT64    F29[2];
+  UINT64    F30[2];
+  UINT64    F31[2];
 
-  UINT64  Pr;
+  UINT64    Pr;
 
-  UINT64  B0;
-  UINT64  B1;
-  UINT64  B2;
-  UINT64  B3;
-  UINT64  B4;
-  UINT64  B5;
-  UINT64  B6;
-  UINT64  B7;
+  UINT64    B0;
+  UINT64    B1;
+  UINT64    B2;
+  UINT64    B3;
+  UINT64    B4;
+  UINT64    B5;
+  UINT64    B6;
+  UINT64    B7;
 
   //
   // application registers
   //
-  UINT64  ArRsc;
-  UINT64  ArBsp;
-  UINT64  ArBspstore;
-  UINT64  ArRnat;
+  UINT64    ArRsc;
+  UINT64    ArBsp;
+  UINT64    ArBspstore;
+  UINT64    ArRnat;
 
-  UINT64  ArFcr;
+  UINT64    ArFcr;
 
-  UINT64  ArEflag;
-  UINT64  ArCsd;
-  UINT64  ArSsd;
-  UINT64  ArCflg;
-  UINT64  ArFsr;
-  UINT64  ArFir;
-  UINT64  ArFdr;
+  UINT64    ArEflag;
+  UINT64    ArCsd;
+  UINT64    ArSsd;
+  UINT64    ArCflg;
+  UINT64    ArFsr;
+  UINT64    ArFir;
+  UINT64    ArFdr;
 
-  UINT64  ArCcv;
+  UINT64    ArCcv;
 
-  UINT64  ArUnat;
+  UINT64    ArUnat;
 
-  UINT64  ArFpsr;
+  UINT64    ArFpsr;
 
-  UINT64  ArPfs;
-  UINT64  ArLc;
-  UINT64  ArEc;
+  UINT64    ArPfs;
+  UINT64    ArLc;
+  UINT64    ArEc;
 
   //
   // control registers
   //
-  UINT64  CrDcr;
-  UINT64  CrItm;
-  UINT64  CrIva;
-  UINT64  CrPta;
-  UINT64  CrIpsr;
-  UINT64  CrIsr;
-  UINT64  CrIip;
-  UINT64  CrIfa;
-  UINT64  CrItir;
-  UINT64  CrIipa;
-  UINT64  CrIfs;
-  UINT64  CrIim;
-  UINT64  CrIha;
+  UINT64    CrDcr;
+  UINT64    CrItm;
+  UINT64    CrIva;
+  UINT64    CrPta;
+  UINT64    CrIpsr;
+  UINT64    CrIsr;
+  UINT64    CrIip;
+  UINT64    CrIfa;
+  UINT64    CrItir;
+  UINT64    CrIipa;
+  UINT64    CrIfs;
+  UINT64    CrIim;
+  UINT64    CrIha;
 
   //
   // debug registers
   //
-  UINT64  Dbr0;
-  UINT64  Dbr1;
-  UINT64  Dbr2;
-  UINT64  Dbr3;
-  UINT64  Dbr4;
-  UINT64  Dbr5;
-  UINT64  Dbr6;
-  UINT64  Dbr7;
+  UINT64    Dbr0;
+  UINT64    Dbr1;
+  UINT64    Dbr2;
+  UINT64    Dbr3;
+  UINT64    Dbr4;
+  UINT64    Dbr5;
+  UINT64    Dbr6;
+  UINT64    Dbr7;
 
-  UINT64  Ibr0;
-  UINT64  Ibr1;
-  UINT64  Ibr2;
-  UINT64  Ibr3;
-  UINT64  Ibr4;
-  UINT64  Ibr5;
-  UINT64  Ibr6;
-  UINT64  Ibr7;
+  UINT64    Ibr0;
+  UINT64    Ibr1;
+  UINT64    Ibr2;
+  UINT64    Ibr3;
+  UINT64    Ibr4;
+  UINT64    Ibr5;
+  UINT64    Ibr6;
+  UINT64    Ibr7;
 
   //
   // virtual registers - nat bits for R1-R31
   //
-  UINT64  IntNat;
-
+  UINT64    IntNat;
 } EFI_SYSTEM_CONTEXT_IPF;
 
 ///
 ///  EBC processor exception types.
 ///
-#define EXCEPT_EBC_UNDEFINED            0
-#define EXCEPT_EBC_DIVIDE_ERROR         1
-#define EXCEPT_EBC_DEBUG                2
-#define EXCEPT_EBC_BREAKPOINT           3
-#define EXCEPT_EBC_OVERFLOW             4
-#define EXCEPT_EBC_INVALID_OPCODE       5   ///< Opcode out of range.
-#define EXCEPT_EBC_STACK_FAULT          6
-#define EXCEPT_EBC_ALIGNMENT_CHECK      7
-#define EXCEPT_EBC_INSTRUCTION_ENCODING 8   ///< Malformed instruction.
-#define EXCEPT_EBC_BAD_BREAK            9   ///< BREAK 0 or undefined BREAK.
-#define EXCEPT_EBC_STEP                 10  ///< To support debug stepping.
+#define EXCEPT_EBC_UNDEFINED             0
+#define EXCEPT_EBC_DIVIDE_ERROR          1
+#define EXCEPT_EBC_DEBUG                 2
+#define EXCEPT_EBC_BREAKPOINT            3
+#define EXCEPT_EBC_OVERFLOW              4
+#define EXCEPT_EBC_INVALID_OPCODE        5  ///< Opcode out of range.
+#define EXCEPT_EBC_STACK_FAULT           6
+#define EXCEPT_EBC_ALIGNMENT_CHECK       7
+#define EXCEPT_EBC_INSTRUCTION_ENCODING  8  ///< Malformed instruction.
+#define EXCEPT_EBC_BAD_BREAK             9  ///< BREAK 0 or undefined BREAK.
+#define EXCEPT_EBC_STEP                  10 ///< To support debug stepping.
 ///
 /// For coding convenience, define the maximum valid EBC exception.
 ///
-#define MAX_EBC_EXCEPTION EXCEPT_EBC_STEP
+#define MAX_EBC_EXCEPTION  EXCEPT_EBC_STEP
 
 ///
 ///  EBC processor context definition.
 ///
 typedef struct {
-  UINT64  R0;
-  UINT64  R1;
-  UINT64  R2;
-  UINT64  R3;
-  UINT64  R4;
-  UINT64  R5;
-  UINT64  R6;
-  UINT64  R7;
-  UINT64  Flags;
-  UINT64  ControlFlags;
-  UINT64  Ip;
+  UINT64    R0;
+  UINT64    R1;
+  UINT64    R2;
+  UINT64    R3;
+  UINT64    R4;
+  UINT64    R5;
+  UINT64    R6;
+  UINT64    R7;
+  UINT64    Flags;
+  UINT64    ControlFlags;
+  UINT64    Ip;
 } EFI_SYSTEM_CONTEXT_EBC;
 
-
-
 ///
 ///  ARM processor exception types.
 ///
-#define EXCEPT_ARM_RESET                    0
-#define EXCEPT_ARM_UNDEFINED_INSTRUCTION    1
-#define EXCEPT_ARM_SOFTWARE_INTERRUPT       2
-#define EXCEPT_ARM_PREFETCH_ABORT           3
-#define EXCEPT_ARM_DATA_ABORT               4
-#define EXCEPT_ARM_RESERVED                 5
-#define EXCEPT_ARM_IRQ                      6
-#define EXCEPT_ARM_FIQ                      7
+#define EXCEPT_ARM_RESET                  0
+#define EXCEPT_ARM_UNDEFINED_INSTRUCTION  1
+#define EXCEPT_ARM_SOFTWARE_INTERRUPT     2
+#define EXCEPT_ARM_PREFETCH_ABORT         3
+#define EXCEPT_ARM_DATA_ABORT             4
+#define EXCEPT_ARM_RESERVED               5
+#define EXCEPT_ARM_IRQ                    6
+#define EXCEPT_ARM_FIQ                    7
 
 ///
 /// For coding convenience, define the maximum valid ARM exception.
 ///
-#define MAX_ARM_EXCEPTION EXCEPT_ARM_FIQ
+#define MAX_ARM_EXCEPTION  EXCEPT_ARM_FIQ
 
 ///
 ///  ARM processor context definition.
 ///
 typedef struct {
-  UINT32  R0;
-  UINT32  R1;
-  UINT32  R2;
-  UINT32  R3;
-  UINT32  R4;
-  UINT32  R5;
-  UINT32  R6;
-  UINT32  R7;
-  UINT32  R8;
-  UINT32  R9;
-  UINT32  R10;
-  UINT32  R11;
-  UINT32  R12;
-  UINT32  SP;
-  UINT32  LR;
-  UINT32  PC;
-  UINT32  CPSR;
-  UINT32  DFSR;
-  UINT32  DFAR;
-  UINT32  IFSR;
-  UINT32  IFAR;
+  UINT32    R0;
+  UINT32    R1;
+  UINT32    R2;
+  UINT32    R3;
+  UINT32    R4;
+  UINT32    R5;
+  UINT32    R6;
+  UINT32    R7;
+  UINT32    R8;
+  UINT32    R9;
+  UINT32    R10;
+  UINT32    R11;
+  UINT32    R12;
+  UINT32    SP;
+  UINT32    LR;
+  UINT32    PC;
+  UINT32    CPSR;
+  UINT32    DFSR;
+  UINT32    DFAR;
+  UINT32    IFSR;
+  UINT32    IFAR;
 } EFI_SYSTEM_CONTEXT_ARM;
 
-
 ///
 ///  AARCH64 processor exception types.
 ///
-#define EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS    0
-#define EXCEPT_AARCH64_IRQ                       1
-#define EXCEPT_AARCH64_FIQ                       2
-#define EXCEPT_AARCH64_SERROR                    3
+#define EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS  0
+#define EXCEPT_AARCH64_IRQ                     1
+#define EXCEPT_AARCH64_FIQ                     2
+#define EXCEPT_AARCH64_SERROR                  3
 
 ///
 /// For coding convenience, define the maximum valid ARM exception.
 ///
-#define MAX_AARCH64_EXCEPTION EXCEPT_AARCH64_SERROR
+#define MAX_AARCH64_EXCEPTION  EXCEPT_AARCH64_SERROR
 
 typedef struct {
   // General Purpose Registers
-  UINT64  X0;
-  UINT64  X1;
-  UINT64  X2;
-  UINT64  X3;
-  UINT64  X4;
-  UINT64  X5;
-  UINT64  X6;
-  UINT64  X7;
-  UINT64  X8;
-  UINT64  X9;
-  UINT64  X10;
-  UINT64  X11;
-  UINT64  X12;
-  UINT64  X13;
-  UINT64  X14;
-  UINT64  X15;
-  UINT64  X16;
-  UINT64  X17;
-  UINT64  X18;
-  UINT64  X19;
-  UINT64  X20;
-  UINT64  X21;
-  UINT64  X22;
-  UINT64  X23;
-  UINT64  X24;
-  UINT64  X25;
-  UINT64  X26;
-  UINT64  X27;
-  UINT64  X28;
-  UINT64  FP;   // x29 - Frame pointer
-  UINT64  LR;   // x30 - Link Register
-  UINT64  SP;   // x31 - Stack pointer
+  UINT64    X0;
+  UINT64    X1;
+  UINT64    X2;
+  UINT64    X3;
+  UINT64    X4;
+  UINT64    X5;
+  UINT64    X6;
+  UINT64    X7;
+  UINT64    X8;
+  UINT64    X9;
+  UINT64    X10;
+  UINT64    X11;
+  UINT64    X12;
+  UINT64    X13;
+  UINT64    X14;
+  UINT64    X15;
+  UINT64    X16;
+  UINT64    X17;
+  UINT64    X18;
+  UINT64    X19;
+  UINT64    X20;
+  UINT64    X21;
+  UINT64    X22;
+  UINT64    X23;
+  UINT64    X24;
+  UINT64    X25;
+  UINT64    X26;
+  UINT64    X27;
+  UINT64    X28;
+  UINT64    FP; // x29 - Frame pointer
+  UINT64    LR; // x30 - Link Register
+  UINT64    SP; // x31 - Stack pointer
 
   // FP/SIMD Registers
-  UINT64  V0[2];
-  UINT64  V1[2];
-  UINT64  V2[2];
-  UINT64  V3[2];
-  UINT64  V4[2];
-  UINT64  V5[2];
-  UINT64  V6[2];
-  UINT64  V7[2];
-  UINT64  V8[2];
-  UINT64  V9[2];
-  UINT64  V10[2];
-  UINT64  V11[2];
-  UINT64  V12[2];
-  UINT64  V13[2];
-  UINT64  V14[2];
-  UINT64  V15[2];
-  UINT64  V16[2];
-  UINT64  V17[2];
-  UINT64  V18[2];
-  UINT64  V19[2];
-  UINT64  V20[2];
-  UINT64  V21[2];
-  UINT64  V22[2];
-  UINT64  V23[2];
-  UINT64  V24[2];
-  UINT64  V25[2];
-  UINT64  V26[2];
-  UINT64  V27[2];
-  UINT64  V28[2];
-  UINT64  V29[2];
-  UINT64  V30[2];
-  UINT64  V31[2];
+  UINT64    V0[2];
+  UINT64    V1[2];
+  UINT64    V2[2];
+  UINT64    V3[2];
+  UINT64    V4[2];
+  UINT64    V5[2];
+  UINT64    V6[2];
+  UINT64    V7[2];
+  UINT64    V8[2];
+  UINT64    V9[2];
+  UINT64    V10[2];
+  UINT64    V11[2];
+  UINT64    V12[2];
+  UINT64    V13[2];
+  UINT64    V14[2];
+  UINT64    V15[2];
+  UINT64    V16[2];
+  UINT64    V17[2];
+  UINT64    V18[2];
+  UINT64    V19[2];
+  UINT64    V20[2];
+  UINT64    V21[2];
+  UINT64    V22[2];
+  UINT64    V23[2];
+  UINT64    V24[2];
+  UINT64    V25[2];
+  UINT64    V26[2];
+  UINT64    V27[2];
+  UINT64    V28[2];
+  UINT64    V29[2];
+  UINT64    V30[2];
+  UINT64    V31[2];
 
-  UINT64  ELR;  // Exception Link Register
-  UINT64  SPSR; // Saved Processor Status Register
-  UINT64  FPSR; // Floating Point Status Register
-  UINT64  ESR;  // Exception syndrome register
-  UINT64  FAR;  // Fault Address Register
+  UINT64    ELR;  // Exception Link Register
+  UINT64    SPSR; // Saved Processor Status Register
+  UINT64    FPSR; // Floating Point Status Register
+  UINT64    ESR;  // Exception syndrome register
+  UINT64    FAR;  // Fault Address Register
 } EFI_SYSTEM_CONTEXT_AARCH64;
 
+///
+/// RISC-V processor exception types.
+///
+#define EXCEPT_RISCV_INST_MISALIGNED               0
+#define EXCEPT_RISCV_INST_ACCESS_FAULT             1
+#define EXCEPT_RISCV_ILLEGAL_INST                  2
+#define EXCEPT_RISCV_BREAKPOINT                    3
+#define EXCEPT_RISCV_LOAD_ADDRESS_MISALIGNED       4
+#define EXCEPT_RISCV_LOAD_ACCESS_FAULT             5
+#define EXCEPT_RISCV_STORE_AMO_ADDRESS_MISALIGNED  6
+#define EXCEPT_RISCV_STORE_AMO_ACCESS_FAULT        7
+#define EXCEPT_RISCV_ENV_CALL_FROM_UMODE           8
+#define EXCEPT_RISCV_ENV_CALL_FROM_SMODE           9
+#define EXCEPT_RISCV_ENV_CALL_FROM_HMODE           10
+#define EXCEPT_RISCV_ENV_CALL_FROM_MMODE           11
+
+#define EXCEPT_RISCV_SOFTWARE_INT  0x0
+#define EXCEPT_RISCV_TIMER_INT     0x1
+
+typedef struct {
+  UINT64    X0;
+  UINT64    X1;
+  UINT64    X2;
+  UINT64    X3;
+  UINT64    X4;
+  UINT64    X5;
+  UINT64    X6;
+  UINT64    X7;
+  UINT64    X8;
+  UINT64    X9;
+  UINT64    X10;
+  UINT64    X11;
+  UINT64    X12;
+  UINT64    X13;
+  UINT64    X14;
+  UINT64    X15;
+  UINT64    X16;
+  UINT64    X17;
+  UINT64    X18;
+  UINT64    X19;
+  UINT64    X20;
+  UINT64    X21;
+  UINT64    X22;
+  UINT64    X23;
+  UINT64    X24;
+  UINT64    X25;
+  UINT64    X26;
+  UINT64    X27;
+  UINT64    X28;
+  UINT64    X29;
+  UINT64    X30;
+  UINT64    X31;
+} EFI_SYSTEM_CONTEXT_RISCV64;
+
+//
+// LoongArch processor exception types.
+//
+#define EXCEPT_LOONGARCH_INT   0
+#define EXCEPT_LOONGARCH_PIL   1
+#define EXCEPT_LOONGARCH_PIS   2
+#define EXCEPT_LOONGARCH_PIF   3
+#define EXCEPT_LOONGARCH_PME   4
+#define EXCEPT_LOONGARCH_PNR   5
+#define EXCEPT_LOONGARCH_PNX   6
+#define EXCEPT_LOONGARCH_PPI   7
+#define EXCEPT_LOONGARCH_ADE   8
+#define EXCEPT_LOONGARCH_ALE   9
+#define EXCEPT_LOONGARCH_BCE   10
+#define EXCEPT_LOONGARCH_SYS   11
+#define EXCEPT_LOONGARCH_BRK   12
+#define EXCEPT_LOONGARCH_INE   13
+#define EXCEPT_LOONGARCH_IPE   14
+#define EXCEPT_LOONGARCH_FPD   15
+#define EXCEPT_LOONGARCH_SXD   16
+#define EXCEPT_LOONGARCH_ASXD  17
+#define EXCEPT_LOONGARCH_FPE   18
+#define EXCEPT_LOONGARCH_TBR   64 // For code only, there is no such type in the ISA spec, the TLB refill is defined for an independent exception.
+
+//
+// LoongArch processor Interrupt types.
+//
+#define EXCEPT_LOONGARCH_INT_SIP0   0
+#define EXCEPT_LOONGARCH_INT_SIP1   1
+#define EXCEPT_LOONGARCH_INT_IP0    2
+#define EXCEPT_LOONGARCH_INT_IP1    3
+#define EXCEPT_LOONGARCH_INT_IP2    4
+#define EXCEPT_LOONGARCH_INT_IP3    5
+#define EXCEPT_LOONGARCH_INT_IP4    6
+#define EXCEPT_LOONGARCH_INT_IP5    7
+#define EXCEPT_LOONGARCH_INT_IP6    8
+#define EXCEPT_LOONGARCH_INT_IP7    9
+#define EXCEPT_LOONGARCH_INT_PMC    10
+#define EXCEPT_LOONGARCH_INT_TIMER  11
+#define EXCEPT_LOONGARCH_INT_IPI    12
+
+//
+// For coding convenience, define the maximum valid
+// LoongArch interrupt.
+//
+#define MAX_LOONGARCH_INTERRUPT  14
+
+typedef struct {
+  UINT64    R0;
+  UINT64    R1;
+  UINT64    R2;
+  UINT64    R3;
+  UINT64    R4;
+  UINT64    R5;
+  UINT64    R6;
+  UINT64    R7;
+  UINT64    R8;
+  UINT64    R9;
+  UINT64    R10;
+  UINT64    R11;
+  UINT64    R12;
+  UINT64    R13;
+  UINT64    R14;
+  UINT64    R15;
+  UINT64    R16;
+  UINT64    R17;
+  UINT64    R18;
+  UINT64    R19;
+  UINT64    R20;
+  UINT64    R21;
+  UINT64    R22;
+  UINT64    R23;
+  UINT64    R24;
+  UINT64    R25;
+  UINT64    R26;
+  UINT64    R27;
+  UINT64    R28;
+  UINT64    R29;
+  UINT64    R30;
+  UINT64    R31;
+
+  UINT64    CRMD;  // CuRrent MoDe information
+  UINT64    PRMD;  // PRe-exception MoDe information
+  UINT64    EUEN;  // Extended component Unit ENable
+  UINT64    MISC;  // MISCellaneous controller
+  UINT64    ECFG;  // Exception ConFiGuration
+  UINT64    ESTAT; // Exception STATus
+  UINT64    ERA;   // Exception Return Address
+  UINT64    BADV;  // BAD Virtual address
+  UINT64    BADI;  // BAD Instruction
+} EFI_SYSTEM_CONTEXT_LOONGARCH64;
 
 ///
 /// Universal EFI_SYSTEM_CONTEXT definition.
 ///
 typedef union {
-  EFI_SYSTEM_CONTEXT_EBC  *SystemContextEbc;
-  EFI_SYSTEM_CONTEXT_IA32 *SystemContextIa32;
-  EFI_SYSTEM_CONTEXT_X64  *SystemContextX64;
-  EFI_SYSTEM_CONTEXT_IPF  *SystemContextIpf;
-  EFI_SYSTEM_CONTEXT_ARM  *SystemContextArm;
-  EFI_SYSTEM_CONTEXT_AARCH64  *SystemContextAArch64;
+  EFI_SYSTEM_CONTEXT_EBC            *SystemContextEbc;
+  EFI_SYSTEM_CONTEXT_IA32           *SystemContextIa32;
+  EFI_SYSTEM_CONTEXT_X64            *SystemContextX64;
+  EFI_SYSTEM_CONTEXT_IPF            *SystemContextIpf;
+  EFI_SYSTEM_CONTEXT_ARM            *SystemContextArm;
+  EFI_SYSTEM_CONTEXT_AARCH64        *SystemContextAArch64;
+  EFI_SYSTEM_CONTEXT_RISCV64        *SystemContextRiscV64;
+  EFI_SYSTEM_CONTEXT_LOONGARCH64    *SystemContextLoongArch64;
 } EFI_SYSTEM_CONTEXT;
 
 //
@@ -658,15 +796,14 @@
 /// Machine type definition
 ///
 typedef enum {
-  IsaIa32 = IMAGE_FILE_MACHINE_I386,           ///< 0x014C
-  IsaX64  = IMAGE_FILE_MACHINE_X64,            ///< 0x8664
-  IsaIpf  = IMAGE_FILE_MACHINE_IA64,           ///< 0x0200
-  IsaEbc  = IMAGE_FILE_MACHINE_EBC,            ///< 0x0EBC
-  IsaArm  = IMAGE_FILE_MACHINE_ARMTHUMB_MIXED, ///< 0x01c2
-  IsaAArch64  = IMAGE_FILE_MACHINE_ARM64       ///< 0xAA64
+  IsaIa32    = IMAGE_FILE_MACHINE_I386,           ///< 0x014C
+  IsaX64     = IMAGE_FILE_MACHINE_X64,            ///< 0x8664
+  IsaIpf     = IMAGE_FILE_MACHINE_IA64,           ///< 0x0200
+  IsaEbc     = IMAGE_FILE_MACHINE_EBC,            ///< 0x0EBC
+  IsaArm     = IMAGE_FILE_MACHINE_ARMTHUMB_MIXED, ///< 0x01c2
+  IsaAArch64 = IMAGE_FILE_MACHINE_ARM64           ///< 0xAA64
 } EFI_INSTRUCTION_SET_ARCHITECTURE;
 
-
 //
 // DebugSupport member function definitions
 //
@@ -768,13 +905,13 @@
   ///
   /// Declares the processor architecture for this instance of the EFI Debug Support protocol.
   ///
-  EFI_INSTRUCTION_SET_ARCHITECTURE  Isa;
-  EFI_GET_MAXIMUM_PROCESSOR_INDEX   GetMaximumProcessorIndex;
-  EFI_REGISTER_PERIODIC_CALLBACK    RegisterPeriodicCallback;
-  EFI_REGISTER_EXCEPTION_CALLBACK   RegisterExceptionCallback;
-  EFI_INVALIDATE_INSTRUCTION_CACHE  InvalidateInstructionCache;
+  EFI_INSTRUCTION_SET_ARCHITECTURE    Isa;
+  EFI_GET_MAXIMUM_PROCESSOR_INDEX     GetMaximumProcessorIndex;
+  EFI_REGISTER_PERIODIC_CALLBACK      RegisterPeriodicCallback;
+  EFI_REGISTER_EXCEPTION_CALLBACK     RegisterExceptionCallback;
+  EFI_INVALIDATE_INSTRUCTION_CACHE    InvalidateInstructionCache;
 };
 
-extern EFI_GUID gEfiDebugSupportProtocolGuid;
+extern EFI_GUID  gEfiDebugSupportProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/DevicePath.h b/src/include/ipxe/efi/Protocol/DevicePath.h
index d406b28..3256d55 100644
--- a/src/include/ipxe/efi/Protocol/DevicePath.h
+++ b/src/include/ipxe/efi/Protocol/DevicePath.h
@@ -5,21 +5,15 @@
   from a software point of view. The path must persist from boot to boot, so
   it can not contain things like PCI bus numbers that change from boot to boot.
 
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __EFI_DEVICE_PATH_PROTOCOL_H__
 #define __EFI_DEVICE_PATH_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Guid/PcAnsi.h>
 #include <ipxe/efi/IndustryStandard/Bluetooth.h>
@@ -49,97 +43,96 @@
   that make up the Device Path.
 **/
 typedef struct {
-  UINT8 Type;       ///< 0x01 Hardware Device Path.
+  UINT8    Type;    ///< 0x01 Hardware Device Path.
                     ///< 0x02 ACPI Device Path.
                     ///< 0x03 Messaging Device Path.
                     ///< 0x04 Media Device Path.
                     ///< 0x05 BIOS Boot Specification Device Path.
                     ///< 0x7F End of Hardware Device Path.
 
-  UINT8 SubType;    ///< Varies by Type
+  UINT8    SubType; ///< Varies by Type
                     ///< 0xFF End Entire Device Path, or
                     ///< 0x01 End This Instance of a Device Path and start a new
                     ///< Device Path.
 
-  UINT8 Length[2];  ///< Specific Device Path data. Type and Sub-Type define
-                    ///< type of data. Size of data is included in Length.
-
+  UINT8    Length[2]; ///< Specific Device Path data. Type and Sub-Type define
+                      ///< type of data. Size of data is included in Length.
 } EFI_DEVICE_PATH_PROTOCOL;
 
 ///
 /// Device Path protocol definition for backward-compatible with EFI1.1.
 ///
-typedef EFI_DEVICE_PATH_PROTOCOL  EFI_DEVICE_PATH;
+typedef EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH;
 
 ///
 /// Hardware Device Paths.
 ///
-#define HARDWARE_DEVICE_PATH      0x01
+#define HARDWARE_DEVICE_PATH  0x01
 
 ///
 /// PCI Device Path SubType.
 ///
-#define HW_PCI_DP                 0x01
+#define HW_PCI_DP  0x01
 
 ///
 /// PCI Device Path.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// PCI Function Number.
   ///
-  UINT8                           Function;
+  UINT8                       Function;
   ///
   /// PCI Device Number.
   ///
-  UINT8                           Device;
+  UINT8                       Device;
 } PCI_DEVICE_PATH;
 
 ///
 /// PCCARD Device Path SubType.
 ///
-#define HW_PCCARD_DP              0x02
+#define HW_PCCARD_DP  0x02
 
 ///
 /// PCCARD Device Path.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Function Number (0 = First Function).
   ///
-  UINT8                           FunctionNumber;
+  UINT8                       FunctionNumber;
 } PCCARD_DEVICE_PATH;
 
 ///
 /// Memory Mapped Device Path SubType.
 ///
-#define HW_MEMMAP_DP              0x03
+#define HW_MEMMAP_DP  0x03
 
 ///
 /// Memory Mapped Device Path.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// EFI_MEMORY_TYPE
   ///
-  UINT32                          MemoryType;
+  UINT32                      MemoryType;
   ///
   /// Starting Memory Address.
   ///
-  EFI_PHYSICAL_ADDRESS            StartingAddress;
+  EFI_PHYSICAL_ADDRESS        StartingAddress;
   ///
   /// Ending Memory Address.
   ///
-  EFI_PHYSICAL_ADDRESS            EndingAddress;
+  EFI_PHYSICAL_ADDRESS        EndingAddress;
 } MEMMAP_DEVICE_PATH;
 
 ///
 /// Hardware Vendor Device Path SubType.
 ///
-#define HW_VENDOR_DP              0x04
+#define HW_VENDOR_DP  0x04
 
 ///
 /// The Vendor Device Path allows the creation of vendor-defined Device Paths. A vendor must
@@ -147,11 +140,11 @@
 /// contents on the n bytes that follow in the Vendor Device Path node.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Vendor-assigned GUID that defines the data that follows.
   ///
-  EFI_GUID                        Guid;
+  EFI_GUID                    Guid;
   ///
   /// Vendor-defined variable size data.
   ///
@@ -160,56 +153,56 @@
 ///
 /// Controller Device Path SubType.
 ///
-#define HW_CONTROLLER_DP          0x05
+#define HW_CONTROLLER_DP  0x05
 
 ///
 /// Controller Device Path.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Controller number.
   ///
-  UINT32                          ControllerNumber;
+  UINT32                      ControllerNumber;
 } CONTROLLER_DEVICE_PATH;
 
 ///
 /// BMC Device Path SubType.
 ///
-#define HW_BMC_DP                 0x06
+#define HW_BMC_DP  0x06
 
 ///
 /// BMC Device Path.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Interface Type.
   ///
-  UINT8                           InterfaceType;
+  UINT8                       InterfaceType;
   ///
   /// Base Address.
   ///
-  UINT8                           BaseAddress[8];
+  UINT8                       BaseAddress[8];
 } BMC_DEVICE_PATH;
 
 ///
 /// ACPI Device Paths.
 ///
-#define ACPI_DEVICE_PATH          0x02
+#define ACPI_DEVICE_PATH  0x02
 
 ///
 /// ACPI Device Path SubType.
 ///
-#define ACPI_DP                   0x01
+#define ACPI_DP  0x01
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Device's PnP hardware ID stored in a numeric 32-bit
   /// compressed EISA-type ID. This value must match the
   /// corresponding _HID in the ACPI name space.
   ///
-  UINT32                          HID;
+  UINT32                      HID;
   ///
   /// Unique ID that is required by ACPI if two devices have the
   /// same _HID. This value must also match the corresponding
@@ -217,34 +210,34 @@
   /// numeric value type of _UID is supported. Thus, strings must
   /// not be used for the _UID in the ACPI name space.
   ///
-  UINT32                          UID;
+  UINT32                      UID;
 } ACPI_HID_DEVICE_PATH;
 
 ///
 /// Expanded ACPI Device Path SubType.
 ///
-#define ACPI_EXTENDED_DP          0x02
+#define ACPI_EXTENDED_DP  0x02
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Device's PnP hardware ID stored in a numeric 32-bit
   /// compressed EISA-type ID. This value must match the
   /// corresponding _HID in the ACPI name space.
   ///
-  UINT32                          HID;
+  UINT32                      HID;
   ///
   /// Unique ID that is required by ACPI if two devices have the
   /// same _HID. This value must also match the corresponding
   /// _UID/_HID pair in the ACPI name space.
   ///
-  UINT32                          UID;
+  UINT32                      UID;
   ///
   /// Device's compatible PnP hardware ID stored in a numeric
   /// 32-bit compressed EISA-type ID. This value must match at
   /// least one of the compatible device IDs returned by the
   /// corresponding _CID in the ACPI name space.
   ///
-  UINT32                          CID;
+  UINT32                      CID;
   ///
   /// Optional variable length _HIDSTR.
   /// Optional variable length _UIDSTR.
@@ -259,18 +252,18 @@
 //   bits[31:16] - binary number
 //    Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
 //
-#define PNP_EISA_ID_CONST         0x41d0
-#define EISA_ID(_Name, _Num)      ((UINT32)((_Name) | (_Num) << 16))
-#define EISA_PNP_ID(_PNPId)       (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
-#define EFI_PNP_ID(_PNPId)        (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
+#define PNP_EISA_ID_CONST  0x41d0
+#define EISA_ID(_Name, _Num)  ((UINT32)((_Name) | (_Num) << 16))
+#define EISA_PNP_ID(_PNPId)   (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
+#define EFI_PNP_ID(_PNPId)    (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
 
-#define PNP_EISA_ID_MASK          0xffff
-#define EISA_ID_TO_NUM(_Id)       ((_Id) >> 16)
+#define PNP_EISA_ID_MASK  0xffff
+#define EISA_ID_TO_NUM(_Id)  ((_Id) >> 16)
 
 ///
 /// ACPI _ADR Device Path SubType.
 ///
-#define ACPI_ADR_DP               0x03
+#define ACPI_ADR_DP  0x03
 
 ///
 /// The _ADR device path is used to contain video output device attributes to support the Graphics
@@ -278,18 +271,33 @@
 /// devices are displaying the same output.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// _ADR value. For video output devices the value of this
   /// field comes from Table B-2 of the ACPI 3.0 specification. At
   /// least one _ADR value is required.
   ///
-  UINT32                          ADR;
+  UINT32                      ADR;
   //
   // This device path may optionally contain more than one _ADR entry.
   //
 } ACPI_ADR_DEVICE_PATH;
 
+///
+/// ACPI NVDIMM Device Path SubType.
+///
+#define ACPI_NVDIMM_DP  0x04
+///
+///
+typedef struct {
+  EFI_DEVICE_PATH_PROTOCOL    Header;
+  ///
+  /// NFIT Device Handle, the _ADR of the NVDIMM device.
+  /// The value of this field comes from Section 9.20.3 of the ACPI 6.2A specification.
+  ///
+  UINT32                      NFITDeviceHandle;
+} ACPI_NVDIMM_DEVICE_PATH;
+
 #define ACPI_ADR_DISPLAY_TYPE_OTHER             0
 #define ACPI_ADR_DISPLAY_TYPE_VGA               1
 #define ACPI_ADR_DISPLAY_TYPE_TV                2
@@ -312,171 +320,171 @@
 /// system. This Device Path can describe physical messaging information like SCSI ID, or abstract
 /// information like networking protocol IP addresses.
 ///
-#define MESSAGING_DEVICE_PATH     0x03
+#define MESSAGING_DEVICE_PATH  0x03
 
 ///
 /// ATAPI Device Path SubType
 ///
-#define MSG_ATAPI_DP              0x01
+#define MSG_ATAPI_DP  0x01
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Set to zero for primary, or one for secondary.
   ///
-  UINT8                           PrimarySecondary;
+  UINT8                       PrimarySecondary;
   ///
   /// Set to zero for master, or one for slave mode.
   ///
-  UINT8                           SlaveMaster;
+  UINT8                       SlaveMaster;
   ///
   /// Logical Unit Number.
   ///
-  UINT16                          Lun;
+  UINT16                      Lun;
 } ATAPI_DEVICE_PATH;
 
 ///
 /// SCSI Device Path SubType.
 ///
-#define MSG_SCSI_DP               0x02
+#define MSG_SCSI_DP  0x02
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Target ID on the SCSI bus (PUN).
   ///
-  UINT16                          Pun;
+  UINT16                      Pun;
   ///
   /// Logical Unit Number (LUN).
   ///
-  UINT16                          Lun;
+  UINT16                      Lun;
 } SCSI_DEVICE_PATH;
 
 ///
 /// Fibre Channel SubType.
 ///
-#define MSG_FIBRECHANNEL_DP       0x03
+#define MSG_FIBRECHANNEL_DP  0x03
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Reserved for the future.
   ///
-  UINT32                          Reserved;
+  UINT32                      Reserved;
   ///
   /// Fibre Channel World Wide Number.
   ///
-  UINT64                          WWN;
+  UINT64                      WWN;
   ///
   /// Fibre Channel Logical Unit Number.
   ///
-  UINT64                          Lun;
+  UINT64                      Lun;
 } FIBRECHANNEL_DEVICE_PATH;
 
 ///
 /// Fibre Channel Ex SubType.
 ///
-#define MSG_FIBRECHANNELEX_DP     0x15
+#define MSG_FIBRECHANNELEX_DP  0x15
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Reserved for the future.
   ///
-  UINT32                          Reserved;
+  UINT32                      Reserved;
   ///
   /// 8 byte array containing Fibre Channel End Device Port Name.
   ///
-  UINT8                           WWN[8];
+  UINT8                       WWN[8];
   ///
   /// 8 byte array containing Fibre Channel Logical Unit Number.
   ///
-  UINT8                           Lun[8];
+  UINT8                       Lun[8];
 } FIBRECHANNELEX_DEVICE_PATH;
 
 ///
 /// 1394 Device Path SubType
 ///
-#define MSG_1394_DP               0x04
+#define MSG_1394_DP  0x04
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Reserved for the future.
   ///
-  UINT32                          Reserved;
+  UINT32                      Reserved;
   ///
   /// 1394 Global Unique ID (GUID).
   ///
-  UINT64                          Guid;
+  UINT64                      Guid;
 } F1394_DEVICE_PATH;
 
 ///
 /// USB Device Path SubType.
 ///
-#define MSG_USB_DP                0x05
+#define MSG_USB_DP  0x05
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL      Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// USB Parent Port Number.
   ///
-  UINT8                         ParentPortNumber;
+  UINT8                       ParentPortNumber;
   ///
   /// USB Interface Number.
   ///
-  UINT8                         InterfaceNumber;
+  UINT8                       InterfaceNumber;
 } USB_DEVICE_PATH;
 
 ///
 /// USB Class Device Path SubType.
 ///
-#define MSG_USB_CLASS_DP          0x0f
+#define MSG_USB_CLASS_DP  0x0f
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL      Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Vendor ID assigned by USB-IF. A value of 0xFFFF will
   /// match any Vendor ID.
   ///
-  UINT16                        VendorId;
+  UINT16                      VendorId;
   ///
   /// Product ID assigned by USB-IF. A value of 0xFFFF will
   /// match any Product ID.
   ///
-  UINT16                        ProductId;
+  UINT16                      ProductId;
   ///
   /// The class code assigned by the USB-IF. A value of 0xFF
   /// will match any class code.
   ///
-  UINT8                         DeviceClass;
+  UINT8                       DeviceClass;
   ///
   /// The subclass code assigned by the USB-IF. A value of
   /// 0xFF will match any subclass code.
   ///
-  UINT8                         DeviceSubClass;
+  UINT8                       DeviceSubClass;
   ///
   /// The protocol code assigned by the USB-IF. A value of
   /// 0xFF will match any protocol code.
   ///
-  UINT8                         DeviceProtocol;
+  UINT8                       DeviceProtocol;
 } USB_CLASS_DEVICE_PATH;
 
 ///
 /// USB WWID Device Path SubType.
 ///
-#define MSG_USB_WWID_DP           0x10
+#define MSG_USB_WWID_DP  0x10
 
 ///
 /// This device path describes a USB device using its serial number.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL      Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// USB interface number.
   ///
-  UINT16                        InterfaceNumber;
+  UINT16                      InterfaceNumber;
   ///
   /// USB vendor id of the device.
   ///
-  UINT16                        VendorId;
+  UINT16                      VendorId;
   ///
   /// USB product id of the device.
   ///
-  UINT16                        ProductId;
+  UINT16                      ProductId;
   ///
   /// Last 64-or-fewer UTF-16 characters of the USB
   /// serial number. The length of the string is
@@ -491,136 +499,136 @@
 ///
 #define MSG_DEVICE_LOGICAL_UNIT_DP  0x11
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL      Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Logical Unit Number for the interface.
   ///
-  UINT8                         Lun;
+  UINT8                       Lun;
 } DEVICE_LOGICAL_UNIT_DEVICE_PATH;
 
 ///
 /// SATA Device Path SubType.
 ///
-#define MSG_SATA_DP               0x12
+#define MSG_SATA_DP  0x12
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// The HBA port number that facilitates the connection to the
   /// device or a port multiplier. The value 0xFFFF is reserved.
   ///
-  UINT16                          HBAPortNumber;
+  UINT16                      HBAPortNumber;
   ///
   /// The Port multiplier port number that facilitates the connection
   /// to the device. Must be set to 0xFFFF if the device is directly
   /// connected to the HBA.
   ///
-  UINT16                          PortMultiplierPortNumber;
+  UINT16                      PortMultiplierPortNumber;
   ///
   /// Logical Unit Number.
   ///
-  UINT16                          Lun;
+  UINT16                      Lun;
 } SATA_DEVICE_PATH;
 
 ///
 /// Flag for if the device is directly connected to the HBA.
 ///
-#define SATA_HBA_DIRECT_CONNECT_FLAG 0x8000
+#define SATA_HBA_DIRECT_CONNECT_FLAG  0x8000
 
 ///
 /// I2O Device Path SubType.
 ///
-#define MSG_I2O_DP                0x06
+#define MSG_I2O_DP  0x06
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Target ID (TID) for a device.
   ///
-  UINT32                          Tid;
+  UINT32                      Tid;
 } I2O_DEVICE_PATH;
 
 ///
 /// MAC Address Device Path SubType.
 ///
-#define MSG_MAC_ADDR_DP           0x0b
+#define MSG_MAC_ADDR_DP  0x0b
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// The MAC address for a network interface padded with 0s.
   ///
-  EFI_MAC_ADDRESS                 MacAddress;
+  EFI_MAC_ADDRESS             MacAddress;
   ///
   /// Network interface type(i.e. 802.3, FDDI).
   ///
-  UINT8                           IfType;
+  UINT8                       IfType;
 } MAC_ADDR_DEVICE_PATH;
 
 ///
 /// IPv4 Device Path SubType
 ///
-#define MSG_IPv4_DP               0x0c
+#define MSG_IPv4_DP  0x0c
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// The local IPv4 address.
   ///
-  EFI_IPv4_ADDRESS                LocalIpAddress;
+  EFI_IPv4_ADDRESS            LocalIpAddress;
   ///
   /// The remote IPv4 address.
   ///
-  EFI_IPv4_ADDRESS                RemoteIpAddress;
+  EFI_IPv4_ADDRESS            RemoteIpAddress;
   ///
   /// The local port number.
   ///
-  UINT16                          LocalPort;
+  UINT16                      LocalPort;
   ///
   /// The remote port number.
   ///
-  UINT16                          RemotePort;
+  UINT16                      RemotePort;
   ///
   /// The network protocol(i.e. UDP, TCP).
   ///
-  UINT16                          Protocol;
+  UINT16                      Protocol;
   ///
   /// 0x00 - The Source IP Address was assigned though DHCP.
   /// 0x01 - The Source IP Address is statically bound.
   ///
-  BOOLEAN                         StaticIpAddress;
+  BOOLEAN                     StaticIpAddress;
   ///
   /// The gateway IP address
   ///
-  EFI_IPv4_ADDRESS                GatewayIpAddress;
+  EFI_IPv4_ADDRESS            GatewayIpAddress;
   ///
   /// The subnet mask
   ///
-  EFI_IPv4_ADDRESS                SubnetMask;
+  EFI_IPv4_ADDRESS            SubnetMask;
 } IPv4_DEVICE_PATH;
 
 ///
 /// IPv6 Device Path SubType.
 ///
-#define MSG_IPv6_DP               0x0d
+#define MSG_IPv6_DP  0x0d
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// The local IPv6 address.
   ///
-  EFI_IPv6_ADDRESS                LocalIpAddress;
+  EFI_IPv6_ADDRESS            LocalIpAddress;
   ///
   /// The remote IPv6 address.
   ///
-  EFI_IPv6_ADDRESS                RemoteIpAddress;
+  EFI_IPv6_ADDRESS            RemoteIpAddress;
   ///
   /// The local port number.
   ///
-  UINT16                          LocalPort;
+  UINT16                      LocalPort;
   ///
   /// The remote port number.
   ///
-  UINT16                          RemotePort;
+  UINT16                      RemotePort;
   ///
   /// The network protocol(i.e. UDP, TCP).
   ///
-  UINT16                          Protocol;
+  UINT16                      Protocol;
   ///
   /// 0x00 - The Local IP Address was manually configured.
   /// 0x01 - The Local IP Address is assigned through IPv6
@@ -628,23 +636,23 @@
   /// 0x02 - The Local IP Address is assigned through IPv6
   /// stateful configuration.
   ///
-  UINT8                           IpAddressOrigin;
+  UINT8                       IpAddressOrigin;
   ///
   /// The prefix length
   ///
-  UINT8                           PrefixLength;
+  UINT8                       PrefixLength;
   ///
   /// The gateway IP address
   ///
-  EFI_IPv6_ADDRESS                GatewayIpAddress;
+  EFI_IPv6_ADDRESS            GatewayIpAddress;
 } IPv6_DEVICE_PATH;
 
 ///
 /// InfiniBand Device Path SubType.
 ///
-#define MSG_INFINIBAND_DP         0x09
+#define MSG_INFINIBAND_DP  0x09
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Flags to help identify/manage InfiniBand device path elements:
   /// Bit 0 - IOC/Service (0b = IOC, 1b = Service).
@@ -654,24 +662,24 @@
   /// Bit 4 - Network Protocol.
   /// All other bits are reserved.
   ///
-  UINT32                          ResourceFlags;
+  UINT32    ResourceFlags;
   ///
   /// 128-bit Global Identifier for remote fabric port.
   ///
-  UINT8                           PortGid[16];
+  UINT8     PortGid[16];
   ///
   /// 64-bit unique identifier to remote IOC or server process.
   /// Interpretation of field specified by Resource Flags (bit 0).
   ///
-  UINT64                          ServiceId;
+  UINT64    ServiceId;
   ///
   /// 64-bit persistent ID of remote IOC port.
   ///
-  UINT64                          TargetPortId;
+  UINT64    TargetPortId;
   ///
   /// 64-bit persistent ID of remote device.
   ///
-  UINT64                          DeviceId;
+  UINT64    DeviceId;
 } INFINIBAND_DEVICE_PATH;
 
 #define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE                0x01
@@ -683,23 +691,23 @@
 ///
 /// UART Device Path SubType.
 ///
-#define MSG_UART_DP               0x0e
+#define MSG_UART_DP  0x0e
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Reserved.
   ///
-  UINT32                          Reserved;
+  UINT32                      Reserved;
   ///
   /// The baud rate setting for the UART style device. A value of 0
   /// means that the device's default baud rate will be used.
   ///
-  UINT64                          BaudRate;
+  UINT64                      BaudRate;
   ///
   /// The number of data bits for the UART style device. A value
   /// of 0 means that the device's default number of data bits will be used.
   ///
-  UINT8                           DataBits;
+  UINT8                       DataBits;
   ///
   /// The parity setting for the UART style device.
   /// Parity 0x00 - Default Parity.
@@ -709,7 +717,7 @@
   /// Parity 0x04 - Mark Parity.
   /// Parity 0x05 - Space Parity.
   ///
-  UINT8                           Parity;
+  UINT8    Parity;
   ///
   /// The number of stop bits for the UART style device.
   /// Stop Bits 0x00 - Default Stop Bits.
@@ -717,177 +725,205 @@
   /// Stop Bits 0x02 - 1.5 Stop Bits.
   /// Stop Bits 0x03 - 2 Stop Bits.
   ///
-  UINT8                           StopBits;
+  UINT8    StopBits;
 } UART_DEVICE_PATH;
 
+///
+/// NVDIMM Namespace Device Path SubType.
+///
+#define NVDIMM_NAMESPACE_DP  0x20
+typedef struct {
+  EFI_DEVICE_PATH_PROTOCOL    Header;
+  ///
+  /// Namespace unique label identifier UUID.
+  ///
+  EFI_GUID                    Uuid;
+} NVDIMM_NAMESPACE_DEVICE_PATH;
+
 //
 // Use VENDOR_DEVICE_PATH struct
 //
-#define MSG_VENDOR_DP             0x0a
-typedef VENDOR_DEVICE_PATH        VENDOR_DEFINED_DEVICE_PATH;
+#define MSG_VENDOR_DP  0x0a
+typedef VENDOR_DEVICE_PATH VENDOR_DEFINED_DEVICE_PATH;
 
-#define DEVICE_PATH_MESSAGING_PC_ANSI     EFI_PC_ANSI_GUID
-#define DEVICE_PATH_MESSAGING_VT_100      EFI_VT_100_GUID
-#define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID
-#define DEVICE_PATH_MESSAGING_VT_UTF8     EFI_VT_UTF8_GUID
+#define DEVICE_PATH_MESSAGING_PC_ANSI      EFI_PC_ANSI_GUID
+#define DEVICE_PATH_MESSAGING_VT_100       EFI_VT_100_GUID
+#define DEVICE_PATH_MESSAGING_VT_100_PLUS  EFI_VT_100_PLUS_GUID
+#define DEVICE_PATH_MESSAGING_VT_UTF8      EFI_VT_UTF8_GUID
 
 ///
 /// A new device path node is defined to declare flow control characteristics.
 /// UART Flow Control Messaging Device Path
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL GUID.
   ///
-  EFI_GUID                        Guid;
+  EFI_GUID                    Guid;
   ///
   /// Bitmap of supported flow control types.
   /// Bit 0 set indicates hardware flow control.
   /// Bit 1 set indicates Xon/Xoff flow control.
   /// All other bits are reserved and are clear.
   ///
-  UINT32                          FlowControlMap;
+  UINT32                      FlowControlMap;
 } UART_FLOW_CONTROL_DEVICE_PATH;
 
-#define UART_FLOW_CONTROL_HARDWARE         0x00000001
-#define UART_FLOW_CONTROL_XON_XOFF         0x00000010
+#define UART_FLOW_CONTROL_HARDWARE  0x00000001
+#define UART_FLOW_CONTROL_XON_XOFF  0x00000010
 
-#define DEVICE_PATH_MESSAGING_SAS          EFI_SAS_DEVICE_PATH_GUID
+#define DEVICE_PATH_MESSAGING_SAS  EFI_SAS_DEVICE_PATH_GUID
 ///
 /// Serial Attached SCSI (SAS) Device Path.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// DEVICE_PATH_MESSAGING_SAS GUID.
   ///
-  EFI_GUID                        Guid;
+  EFI_GUID                    Guid;
   ///
   /// Reserved for future use.
   ///
-  UINT32                          Reserved;
+  UINT32                      Reserved;
   ///
   /// SAS Address for Serial Attached SCSI Target.
   ///
-  UINT64                          SasAddress;
+  UINT64                      SasAddress;
   ///
   /// SAS Logical Unit Number.
   ///
-  UINT64                          Lun;
+  UINT64                      Lun;
   ///
   /// More Information about the device and its interconnect.
   ///
-  UINT16                          DeviceTopology;
+  UINT16                      DeviceTopology;
   ///
   /// Relative Target Port (RTP).
   ///
-  UINT16                          RelativeTargetPort;
+  UINT16                      RelativeTargetPort;
 } SAS_DEVICE_PATH;
 
 ///
 /// Serial Attached SCSI (SAS) Ex Device Path SubType
 ///
-#define MSG_SASEX_DP              0x16
+#define MSG_SASEX_DP  0x16
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// 8-byte array of the SAS Address for Serial Attached SCSI Target Port.
   ///
-  UINT8                           SasAddress[8];
+  UINT8                       SasAddress[8];
   ///
   /// 8-byte array of the SAS Logical Unit Number.
   ///
-  UINT8                           Lun[8];
+  UINT8                       Lun[8];
   ///
   /// More Information about the device and its interconnect.
   ///
-  UINT16                          DeviceTopology;
+  UINT16                      DeviceTopology;
   ///
   /// Relative Target Port (RTP).
   ///
-  UINT16                          RelativeTargetPort;
+  UINT16                      RelativeTargetPort;
 } SASEX_DEVICE_PATH;
 
 ///
 /// NvmExpress Namespace Device Path SubType.
 ///
-#define MSG_NVME_NAMESPACE_DP     0x17
+#define MSG_NVME_NAMESPACE_DP  0x17
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT32                          NamespaceId;
-  UINT64                          NamespaceUuid;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
+  UINT32                      NamespaceId;
+  UINT64                      NamespaceUuid;
 } NVME_NAMESPACE_DEVICE_PATH;
 
 ///
+/// DNS Device Path SubType
+///
+#define MSG_DNS_DP  0x1F
+typedef struct {
+  EFI_DEVICE_PATH_PROTOCOL    Header;
+  ///
+  /// Indicates the DNS server address is IPv4 or IPv6 address.
+  ///
+  UINT8                       IsIPv6;
+  ///
+  /// Instance of the DNS server address.
+  ///
+  EFI_IP_ADDRESS              DnsServerIp[];
+} DNS_DEVICE_PATH;
+
+///
 /// Uniform Resource Identifiers (URI) Device Path SubType
 ///
-#define MSG_URI_DP                0x18
+#define MSG_URI_DP  0x18
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Instance of the URI pursuant to RFC 3986.
   ///
-  CHAR8                           Uri[];
+  CHAR8                       Uri[];
 } URI_DEVICE_PATH;
 
 ///
 /// Universal Flash Storage (UFS) Device Path SubType.
 ///
-#define MSG_UFS_DP                0x19
+#define MSG_UFS_DP  0x19
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Target ID on the UFS bus (PUN).
   ///
-  UINT8                           Pun;
+  UINT8                       Pun;
   ///
   /// Logical Unit Number (LUN).
   ///
-  UINT8                           Lun;
+  UINT8                       Lun;
 } UFS_DEVICE_PATH;
 
 ///
 /// SD (Secure Digital) Device Path SubType.
 ///
-#define MSG_SD_DP                 0x1A
+#define MSG_SD_DP  0x1A
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT8                           SlotNumber;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
+  UINT8                       SlotNumber;
 } SD_DEVICE_PATH;
 
 ///
 /// EMMC (Embedded MMC) Device Path SubType.
 ///
-#define MSG_EMMC_DP                 0x1D
+#define MSG_EMMC_DP  0x1D
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
-  UINT8                           SlotNumber;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
+  UINT8                       SlotNumber;
 } EMMC_DEVICE_PATH;
 
 ///
 /// iSCSI Device Path SubType
 ///
-#define MSG_ISCSI_DP              0x13
+#define MSG_ISCSI_DP  0x13
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Network Protocol (0 = TCP, 1+ = reserved).
   ///
-  UINT16                          NetworkProtocol;
+  UINT16                      NetworkProtocol;
   ///
   /// iSCSI Login Options.
   ///
-  UINT16                          LoginOption;
+  UINT16                      LoginOption;
   ///
   /// iSCSI Logical Unit Number.
   ///
-  UINT64                          Lun;
+  UINT64                      Lun;
   ///
   /// iSCSI Target Portal group tag the initiator intends
   /// to establish a session with.
   ///
-  UINT16                          TargetPortalGroupTag;
+  UINT16                      TargetPortalGroupTag;
   ///
   /// iSCSI NodeTarget Name. The length of the name
   /// is determined by subtracting the offset of this field from Length.
@@ -895,81 +931,90 @@
   /// CHAR8                        iSCSI Target Name.
 } ISCSI_DEVICE_PATH;
 
-#define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST             0x0000
-#define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C   0x0002
-#define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST               0x0000
-#define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C     0x0008
-#define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP              0x0000
-#define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON               0x1000
-#define ISCSI_LOGIN_OPTION_CHAP_BI                      0x0000
-#define ISCSI_LOGIN_OPTION_CHAP_UNI                     0x2000
+#define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST            0x0000
+#define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C  0x0002
+#define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST              0x0000
+#define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C    0x0008
+#define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP             0x0000
+#define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON              0x1000
+#define ISCSI_LOGIN_OPTION_CHAP_BI                     0x0000
+#define ISCSI_LOGIN_OPTION_CHAP_UNI                    0x2000
 
 ///
 /// VLAN Device Path SubType.
 ///
-#define MSG_VLAN_DP               0x14
+#define MSG_VLAN_DP  0x14
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// VLAN identifier (0-4094).
   ///
-  UINT16                          VlanId;
+  UINT16                      VlanId;
 } VLAN_DEVICE_PATH;
 
 ///
 /// Bluetooth Device Path SubType.
 ///
-#define MSG_BLUETOOTH_DP     0x1b
+#define MSG_BLUETOOTH_DP  0x1b
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// 48bit Bluetooth device address.
   ///
-  BLUETOOTH_ADDRESS               BD_ADDR;
+  BLUETOOTH_ADDRESS           BD_ADDR;
 } BLUETOOTH_DEVICE_PATH;
 
 ///
 /// Wi-Fi Device Path SubType.
 ///
-#define MSG_WIFI_DP               0x1C
+#define MSG_WIFI_DP  0x1C
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Service set identifier. A 32-byte octets string.
   ///
-  UINT8                           SSId[32];
+  UINT8                       SSId[32];
 } WIFI_DEVICE_PATH;
 
+///
+/// Bluetooth LE Device Path SubType.
+///
+#define MSG_BLUETOOTH_LE_DP  0x1E
+typedef struct {
+  EFI_DEVICE_PATH_PROTOCOL    Header;
+  BLUETOOTH_LE_ADDRESS        Address;
+} BLUETOOTH_LE_DEVICE_PATH;
+
 //
 // Media Device Path
 //
-#define MEDIA_DEVICE_PATH         0x04
+#define MEDIA_DEVICE_PATH  0x04
 
 ///
 /// Hard Drive Media Device Path SubType.
 ///
-#define MEDIA_HARDDRIVE_DP        0x01
+#define MEDIA_HARDDRIVE_DP  0x01
 
 ///
 /// The Hard Drive Media Device Path is used to represent a partition on a hard drive.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Describes the entry in a partition table, starting with entry 1.
   /// Partition number zero represents the entire device. Valid
   /// partition numbers for a MBR partition are [1, 4]. Valid
   /// partition numbers for a GPT partition are [1, NumberOfPartitionEntries].
   ///
-  UINT32                          PartitionNumber;
+  UINT32                      PartitionNumber;
   ///
   /// Starting LBA of the partition on the hard drive.
   ///
-  UINT64                          PartitionStart;
+  UINT64                      PartitionStart;
   ///
   /// Size of the partition in units of Logical Blocks.
   ///
-  UINT64                          PartitionSize;
+  UINT64                      PartitionSize;
   ///
   /// Signature unique to this partition:
   /// If SignatureType is 0, this field has to be initialized with 16 zeros.
@@ -977,68 +1022,68 @@
   /// The other 12 bytes are initialized with zeros.
   /// If SignatureType is 2, this field contains a 16 byte signature.
   ///
-  UINT8                           Signature[16];
+  UINT8                       Signature[16];
   ///
   /// Partition Format: (Unused values reserved).
   /// 0x01 - PC-AT compatible legacy MBR.
   /// 0x02 - GUID Partition Table.
   ///
-  UINT8                           MBRType;
+  UINT8                       MBRType;
   ///
   /// Type of Disk Signature: (Unused values reserved).
   /// 0x00 - No Disk Signature.
   /// 0x01 - 32-bit signature from address 0x1b8 of the type 0x01 MBR.
   /// 0x02 - GUID signature.
   ///
-  UINT8                           SignatureType;
+  UINT8                       SignatureType;
 } HARDDRIVE_DEVICE_PATH;
 
-#define MBR_TYPE_PCAT             0x01
-#define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
+#define MBR_TYPE_PCAT                        0x01
+#define MBR_TYPE_EFI_PARTITION_TABLE_HEADER  0x02
 
-#define NO_DISK_SIGNATURE         0x00
-#define SIGNATURE_TYPE_MBR        0x01
-#define SIGNATURE_TYPE_GUID       0x02
+#define NO_DISK_SIGNATURE    0x00
+#define SIGNATURE_TYPE_MBR   0x01
+#define SIGNATURE_TYPE_GUID  0x02
 
 ///
 /// CD-ROM Media Device Path SubType.
 ///
-#define MEDIA_CDROM_DP            0x02
+#define MEDIA_CDROM_DP  0x02
 
 ///
 /// The CD-ROM Media Device Path is used to define a system partition that exists on a CD-ROM.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Boot Entry number from the Boot Catalog. The Initial/Default entry is defined as zero.
   ///
-  UINT32                          BootEntry;
+  UINT32                      BootEntry;
   ///
   /// Starting RBA of the partition on the medium. CD-ROMs use Relative logical Block Addressing.
   ///
-  UINT64                          PartitionStart;
+  UINT64                      PartitionStart;
   ///
   /// Size of the partition in units of Blocks, also called Sectors.
   ///
-  UINT64                          PartitionSize;
+  UINT64                      PartitionSize;
 } CDROM_DEVICE_PATH;
 
 //
 // Use VENDOR_DEVICE_PATH struct
 //
-#define MEDIA_VENDOR_DP           0x03  ///< Media vendor device path subtype.
+#define MEDIA_VENDOR_DP  0x03           ///< Media vendor device path subtype.
 
 ///
 /// File Path Media Device Path SubType
 ///
-#define MEDIA_FILEPATH_DP         0x04
+#define MEDIA_FILEPATH_DP  0x04
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// A NULL-terminated Path string including directory and file names.
   ///
-  CHAR16                          PathName[1];
+  CHAR16                      PathName[1];
 } FILEPATH_DEVICE_PATH;
 
 #define SIZE_OF_FILEPATH_DEVICE_PATH  OFFSET_OF(FILEPATH_DEVICE_PATH,PathName)
@@ -1046,7 +1091,7 @@
 ///
 /// Media Protocol Device Path SubType.
 ///
-#define MEDIA_PROTOCOL_DP         0x05
+#define MEDIA_PROTOCOL_DP  0x05
 
 ///
 /// The Media Protocol Device Path is used to denote the protocol that is being
@@ -1054,157 +1099,156 @@
 /// Many protocols are inherent to the style of device path.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// The ID of the protocol.
   ///
-  EFI_GUID                        Protocol;
+  EFI_GUID                    Protocol;
 } MEDIA_PROTOCOL_DEVICE_PATH;
 
 ///
 /// PIWG Firmware File SubType.
 ///
-#define MEDIA_PIWG_FW_FILE_DP     0x06
+#define MEDIA_PIWG_FW_FILE_DP  0x06
 
 ///
 /// This device path is used by systems implementing the UEFI PI Specification 1.0 to describe a firmware file.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Firmware file name
   ///
-  EFI_GUID                        FvFileName;
+  EFI_GUID                    FvFileName;
 } MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
 
 ///
 /// PIWG Firmware Volume Device Path SubType.
 ///
-#define MEDIA_PIWG_FW_VOL_DP      0x07
+#define MEDIA_PIWG_FW_VOL_DP  0x07
 
 ///
 /// This device path is used by systems implementing the UEFI PI Specification 1.0 to describe a firmware volume.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Firmware volume name.
   ///
-  EFI_GUID                        FvName;
+  EFI_GUID                    FvName;
 } MEDIA_FW_VOL_DEVICE_PATH;
 
 ///
 /// Media relative offset range device path.
 ///
-#define MEDIA_RELATIVE_OFFSET_RANGE_DP 0x08
+#define MEDIA_RELATIVE_OFFSET_RANGE_DP  0x08
 
 ///
 /// Used to describe the offset range of media relative.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL  Header;
-  UINT32                    Reserved;
-  UINT64                    StartingOffset;
-  UINT64                    EndingOffset;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
+  UINT32                      Reserved;
+  UINT64                      StartingOffset;
+  UINT64                      EndingOffset;
 } MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH;
 
 ///
 /// This GUID defines a RAM Disk supporting a raw disk format in volatile memory.
 ///
-#define EFI_VIRTUAL_DISK_GUID               EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE
+#define EFI_VIRTUAL_DISK_GUID  EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE
 
-extern  EFI_GUID                            gEfiVirtualDiskGuid;
+extern  EFI_GUID  gEfiVirtualDiskGuid;
 
 ///
 /// This GUID defines a RAM Disk supporting an ISO image in volatile memory.
 ///
-#define EFI_VIRTUAL_CD_GUID                 EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE
+#define EFI_VIRTUAL_CD_GUID  EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE
 
-extern  EFI_GUID                            gEfiVirtualCdGuid;
+extern  EFI_GUID  gEfiVirtualCdGuid;
 
 ///
 /// This GUID defines a RAM Disk supporting a raw disk format in persistent memory.
 ///
-#define EFI_PERSISTENT_VIRTUAL_DISK_GUID    EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT
+#define EFI_PERSISTENT_VIRTUAL_DISK_GUID  EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT
 
-extern  EFI_GUID                            gEfiPersistentVirtualDiskGuid;
+extern  EFI_GUID  gEfiPersistentVirtualDiskGuid;
 
 ///
 /// This GUID defines a RAM Disk supporting an ISO image in persistent memory.
 ///
-#define EFI_PERSISTENT_VIRTUAL_CD_GUID      EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT
+#define EFI_PERSISTENT_VIRTUAL_CD_GUID  EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT
 
-extern  EFI_GUID                            gEfiPersistentVirtualCdGuid;
+extern  EFI_GUID  gEfiPersistentVirtualCdGuid;
 
 ///
 /// Media ram disk device path.
 ///
-#define MEDIA_RAM_DISK_DP         0x09
+#define MEDIA_RAM_DISK_DP  0x09
 
 ///
 /// Used to describe the ram disk device path.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Starting Memory Address.
   ///
-  UINT32                          StartingAddr[2];
+  UINT32                      StartingAddr[2];
   ///
   /// Ending Memory Address.
   ///
-  UINT32                          EndingAddr[2];
+  UINT32                      EndingAddr[2];
   ///
   /// GUID that defines the type of the RAM Disk.
   ///
-  EFI_GUID                        TypeGuid;
+  EFI_GUID                    TypeGuid;
   ///
   /// RAM Diskinstance number, if supported. The default value is zero.
   ///
-  UINT16                          Instance;
+  UINT16                      Instance;
 } MEDIA_RAM_DISK_DEVICE_PATH;
 
 ///
 /// BIOS Boot Specification Device Path.
 ///
-#define BBS_DEVICE_PATH           0x05
+#define BBS_DEVICE_PATH  0x05
 
 ///
 /// BIOS Boot Specification Device Path SubType.
 ///
-#define BBS_BBS_DP                0x01
+#define BBS_BBS_DP  0x01
 
 ///
 /// This Device Path is used to describe the booting of non-EFI-aware operating systems.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_PROTOCOL        Header;
+  EFI_DEVICE_PATH_PROTOCOL    Header;
   ///
   /// Device Type as defined by the BIOS Boot Specification.
   ///
-  UINT16                          DeviceType;
+  UINT16                      DeviceType;
   ///
   /// Status Flags as defined by the BIOS Boot Specification.
   ///
-  UINT16                          StatusFlag;
+  UINT16                      StatusFlag;
   ///
   /// Null-terminated ASCII string that describes the boot device to a user.
   ///
-  CHAR8                           String[1];
+  CHAR8                       String[1];
 } BBS_BBS_DEVICE_PATH;
 
 //
 // DeviceType definitions - from BBS specification
 //
-#define BBS_TYPE_FLOPPY           0x01
-#define BBS_TYPE_HARDDRIVE        0x02
-#define BBS_TYPE_CDROM            0x03
-#define BBS_TYPE_PCMCIA           0x04
-#define BBS_TYPE_USB              0x05
-#define BBS_TYPE_EMBEDDED_NETWORK 0x06
-#define BBS_TYPE_BEV              0x80
-#define BBS_TYPE_UNKNOWN          0xFF
-
+#define BBS_TYPE_FLOPPY            0x01
+#define BBS_TYPE_HARDDRIVE         0x02
+#define BBS_TYPE_CDROM             0x03
+#define BBS_TYPE_PCMCIA            0x04
+#define BBS_TYPE_USB               0x05
+#define BBS_TYPE_EMBEDDED_NETWORK  0x06
+#define BBS_TYPE_BEV               0x80
+#define BBS_TYPE_UNKNOWN           0xFF
 
 ///
 /// Union of all possible Device Paths and pointers to Device Paths.
@@ -1245,6 +1289,7 @@
   SAS_DEVICE_PATH                            Sas;
   SASEX_DEVICE_PATH                          SasEx;
   NVME_NAMESPACE_DEVICE_PATH                 NvmeNamespace;
+  DNS_DEVICE_PATH                            Dns;
   URI_DEVICE_PATH                            Uri;
   BLUETOOTH_DEVICE_PATH                      Bluetooth;
   WIFI_DEVICE_PATH                           WiFi;
@@ -1264,8 +1309,6 @@
   BBS_BBS_DEVICE_PATH                        Bbs;
 } EFI_DEV_PATH;
 
-
-
 typedef union {
   EFI_DEVICE_PATH_PROTOCOL                   *DevPath;
   PCI_DEVICE_PATH                            *Pci;
@@ -1302,6 +1345,7 @@
   SAS_DEVICE_PATH                            *Sas;
   SASEX_DEVICE_PATH                          *SasEx;
   NVME_NAMESPACE_DEVICE_PATH                 *NvmeNamespace;
+  DNS_DEVICE_PATH                            *Dns;
   URI_DEVICE_PATH                            *Uri;
   BLUETOOTH_DEVICE_PATH                      *Bluetooth;
   WIFI_DEVICE_PATH                           *WiFi;
@@ -1324,10 +1368,10 @@
 
 #pragma pack()
 
-#define END_DEVICE_PATH_TYPE                 0x7f
-#define END_ENTIRE_DEVICE_PATH_SUBTYPE       0xFF
-#define END_INSTANCE_DEVICE_PATH_SUBTYPE     0x01
+#define END_DEVICE_PATH_TYPE              0x7f
+#define END_ENTIRE_DEVICE_PATH_SUBTYPE    0xFF
+#define END_INSTANCE_DEVICE_PATH_SUBTYPE  0x01
 
-extern EFI_GUID gEfiDevicePathProtocolGuid;
+extern EFI_GUID  gEfiDevicePathProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/DevicePathToText.h b/src/include/ipxe/efi/Protocol/DevicePathToText.h
index edca965..2f591b9 100644
--- a/src/include/ipxe/efi/Protocol/DevicePathToText.h
+++ b/src/include/ipxe/efi/Protocol/DevicePathToText.h
@@ -2,21 +2,15 @@
   EFI_DEVICE_PATH_TO_TEXT_PROTOCOL as defined in UEFI 2.0.
   This protocol provides service to convert device nodes and paths to text.
 
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __DEVICE_PATH_TO_TEXT_PROTOCOL_H__
 #define __DEVICE_PATH_TO_TEXT_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// Device Path To Text protocol
@@ -42,7 +36,7 @@
 
 **/
 typedef
-CHAR16*
+CHAR16 *
 (EFIAPI *EFI_DEVICE_PATH_TO_TEXT_NODE)(
   IN CONST EFI_DEVICE_PATH_PROTOCOL   *DeviceNode,
   IN BOOLEAN                          DisplayOnly,
@@ -65,7 +59,7 @@
 
 **/
 typedef
-CHAR16*
+CHAR16 *
 (EFIAPI *EFI_DEVICE_PATH_TO_TEXT_PATH)(
   IN CONST EFI_DEVICE_PATH_PROTOCOL   *DevicePath,
   IN BOOLEAN                          DisplayOnly,
@@ -76,12 +70,10 @@
 /// This protocol converts device paths and device nodes to text.
 ///
 typedef struct {
-  EFI_DEVICE_PATH_TO_TEXT_NODE        ConvertDeviceNodeToText;
-  EFI_DEVICE_PATH_TO_TEXT_PATH        ConvertDevicePathToText;
+  EFI_DEVICE_PATH_TO_TEXT_NODE    ConvertDeviceNodeToText;
+  EFI_DEVICE_PATH_TO_TEXT_PATH    ConvertDevicePathToText;
 } EFI_DEVICE_PATH_TO_TEXT_PROTOCOL;
 
-extern EFI_GUID gEfiDevicePathToTextProtocolGuid;
+extern EFI_GUID  gEfiDevicePathToTextProtocolGuid;
 
 #endif
-
-
diff --git a/src/include/ipxe/efi/Protocol/Dhcp4.h b/src/include/ipxe/efi/Protocol/Dhcp4.h
index 560ee32..1e7e27b 100644
--- a/src/include/ipxe/efi/Protocol/Dhcp4.h
+++ b/src/include/ipxe/efi/Protocol/Dhcp4.h
@@ -4,14 +4,8 @@
   These protocols are used to collect configuration information for the EFI IPv4 Protocol
   drivers and to provide DHCPv4 server and PXE boot server discovery services.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol was introduced in UEFI Specification 2.0.
@@ -21,7 +15,7 @@
 #ifndef __EFI_DHCP4_PROTOCOL_H__
 #define __EFI_DHCP4_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_DHCP4_PROTOCOL_GUID \
   { \
@@ -35,151 +29,146 @@
 
 typedef struct _EFI_DHCP4_PROTOCOL EFI_DHCP4_PROTOCOL;
 
-
 #pragma pack(1)
 typedef struct {
   ///
   /// DHCP option code.
   ///
-  UINT8               OpCode;
+  UINT8    OpCode;
   ///
   /// Length of the DHCP option data. Not present if OpCode is 0 or 255.
   ///
-  UINT8               Length;
+  UINT8    Length;
   ///
   /// Start of the DHCP option data. Not present if OpCode is 0 or 255 or if Length is zero.
   ///
-  UINT8               Data[1];
+  UINT8    Data[1];
 } EFI_DHCP4_PACKET_OPTION;
 #pragma pack()
 
-
 #pragma pack(1)
 ///
 /// EFI_DHCP4_PACKET defines the format of DHCPv4 packets. See RFC 2131 for more information.
 ///
 typedef struct {
-  UINT8             OpCode;
-  UINT8             HwType;
-  UINT8             HwAddrLen;
-  UINT8             Hops;
-  UINT32            Xid;
-  UINT16            Seconds;
-  UINT16            Reserved;
-  EFI_IPv4_ADDRESS  ClientAddr;       ///< Client IP address from client.
-  EFI_IPv4_ADDRESS  YourAddr;         ///< Client IP address from server.
-  EFI_IPv4_ADDRESS  ServerAddr;       ///< IP address of next server in bootstrap.
-  EFI_IPv4_ADDRESS  GatewayAddr;      ///< Relay agent IP address.
-  UINT8             ClientHwAddr[16]; ///< Client hardware address.
-  CHAR8             ServerName[64];
-  CHAR8             BootFileName[128];
-}EFI_DHCP4_HEADER;
+  UINT8               OpCode;
+  UINT8               HwType;
+  UINT8               HwAddrLen;
+  UINT8               Hops;
+  UINT32              Xid;
+  UINT16              Seconds;
+  UINT16              Reserved;
+  EFI_IPv4_ADDRESS    ClientAddr;       ///< Client IP address from client.
+  EFI_IPv4_ADDRESS    YourAddr;         ///< Client IP address from server.
+  EFI_IPv4_ADDRESS    ServerAddr;       ///< IP address of next server in bootstrap.
+  EFI_IPv4_ADDRESS    GatewayAddr;      ///< Relay agent IP address.
+  UINT8               ClientHwAddr[16]; ///< Client hardware address.
+  CHAR8               ServerName[64];
+  CHAR8               BootFileName[128];
+} EFI_DHCP4_HEADER;
 #pragma pack()
 
-
 #pragma pack(1)
 typedef struct {
   ///
   /// Size of the EFI_DHCP4_PACKET buffer.
   ///
-  UINT32              Size;
+  UINT32    Size;
   ///
   /// Length of the EFI_DHCP4_PACKET from the first byte of the Header field
   /// to the last byte of the Option[] field.
   ///
-  UINT32              Length;
+  UINT32    Length;
 
   struct {
     ///
     /// DHCP packet header.
     ///
-    EFI_DHCP4_HEADER  Header;
+    EFI_DHCP4_HEADER    Header;
     ///
     /// DHCP magik cookie in network byte order.
     ///
-    UINT32            Magik;
+    UINT32              Magik;
     ///
     /// Start of the DHCP packed option data.
     ///
-    UINT8             Option[1];
+    UINT8               Option[1];
   } Dhcp4;
 } EFI_DHCP4_PACKET;
 #pragma pack()
 
-
 typedef enum {
   ///
   /// The EFI DHCPv4 Protocol driver is stopped.
   ///
-  Dhcp4Stopped        = 0x0,
+  Dhcp4Stopped = 0x0,
   ///
   /// The EFI DHCPv4 Protocol driver is inactive.
   ///
-  Dhcp4Init           = 0x1,
+  Dhcp4Init = 0x1,
   ///
   /// The EFI DHCPv4 Protocol driver is collecting DHCP offer packets from DHCP servers.
   ///
-  Dhcp4Selecting      = 0x2,
+  Dhcp4Selecting = 0x2,
   ///
   /// The EFI DHCPv4 Protocol driver has sent the request to the DHCP server and is waiting for a response.
   ///
-  Dhcp4Requesting     = 0x3,
+  Dhcp4Requesting = 0x3,
   ///
   /// The DHCP configuration has completed.
   ///
-  Dhcp4Bound          = 0x4,
+  Dhcp4Bound = 0x4,
   ///
   /// The DHCP configuration is being renewed and another request has
   /// been sent out, but it has not received a response from the server yet.
   ///
-  Dhcp4Renewing       = 0x5,
+  Dhcp4Renewing = 0x5,
   ///
   /// The DHCP configuration has timed out and the EFI DHCPv4
   /// Protocol driver is trying to extend the lease time.
   ///
-  Dhcp4Rebinding      = 0x6,
+  Dhcp4Rebinding = 0x6,
   ///
   /// The EFI DHCPv4 Protocol driver was initialized with a previously
   /// allocated or known IP address.
   ///
-  Dhcp4InitReboot     = 0x7,
+  Dhcp4InitReboot = 0x7,
   ///
   /// The EFI DHCPv4 Protocol driver is seeking to reuse the previously
   /// allocated IP address by sending a request to the DHCP server.
   ///
-  Dhcp4Rebooting      = 0x8
+  Dhcp4Rebooting = 0x8
 } EFI_DHCP4_STATE;
 
-
-typedef enum{
+typedef enum {
   ///
   /// The packet to start the configuration sequence is about to be sent.
   ///
-  Dhcp4SendDiscover   = 0x01,
+  Dhcp4SendDiscover = 0x01,
   ///
   /// A reply packet was just received.
   ///
-  Dhcp4RcvdOffer      = 0x02,
+  Dhcp4RcvdOffer = 0x02,
   ///
   /// It is time for Dhcp4Callback to select an offer.
   ///
-  Dhcp4SelectOffer    = 0x03,
+  Dhcp4SelectOffer = 0x03,
   ///
   /// A request packet is about to be sent.
   ///
-  Dhcp4SendRequest    = 0x04,
+  Dhcp4SendRequest = 0x04,
   ///
   /// A DHCPACK packet was received and will be passed to Dhcp4Callback.
   ///
-  Dhcp4RcvdAck        = 0x05,
+  Dhcp4RcvdAck = 0x05,
   ///
   /// A DHCPNAK packet was received and will be passed to Dhcp4Callback.
   ///
-  Dhcp4RcvdNak        = 0x06,
+  Dhcp4RcvdNak = 0x06,
   ///
   /// A decline packet is about to be sent.
   ///
-  Dhcp4SendDecline    = 0x07,
+  Dhcp4SendDecline = 0x07,
   ///
   /// The DHCP configuration process has completed. No packet is associated with this event.
   ///
@@ -188,7 +177,7 @@
   /// It is time to enter the Dhcp4Renewing state and to contact the server
   /// that originally issued the network address. No packet is associated with this event.
   ///
-  Dhcp4EnterRenewing  = 0x09,
+  Dhcp4EnterRenewing = 0x09,
   ///
   /// It is time to enter the Dhcp4Rebinding state and to contact any server.
   /// No packet is associated with this event.
@@ -199,13 +188,13 @@
   /// the user released the configuration, or a DHCPNAK packet was received in
   /// the Dhcp4Renewing or Dhcp4Rebinding state. No packet is associated with this event.
   ///
-  Dhcp4AddressLost    = 0x0b,
+  Dhcp4AddressLost = 0x0b,
   ///
   /// The DHCP process failed because a DHCPNAK packet was received or the user
   /// aborted the DHCP process at a time when the configuration was not available yet.
   /// No packet is associated with this event.
   ///
-  Dhcp4Fail           = 0x0c
+  Dhcp4Fail = 0x0c
 } EFI_DHCP4_EVENT;
 
 /**
@@ -257,25 +246,25 @@
   /// event and waiting for a response during the Dhcp4RcvdOffer event.
   /// Set to zero to use the default try counts and timeout values.
   ///
-  UINT32                      DiscoverTryCount;
+  UINT32                     DiscoverTryCount;
   ///
   /// The maximum amount of time (in seconds) to wait for returned packets in each
   /// of the retries. Timeout values of zero will default to a timeout value
   /// of one second. Set to NULL to use default timeout values.
   ///
-  UINT32                      *DiscoverTimeout;
+  UINT32                     *DiscoverTimeout;
   ///
   /// The number of times to try sending a packet during the Dhcp4SendRequest event
   /// and waiting for a response during the Dhcp4RcvdAck event before accepting
   /// failure. Set to zero to use the default try counts and timeout values.
   ///
-  UINT32                      RequestTryCount;
+  UINT32                     RequestTryCount;
   ///
   /// The maximum amount of time (in seconds) to wait for return packets in each of the retries.
   /// Timeout values of zero will default to a timeout value of one second.
   /// Set to NULL to use default timeout values.
   ///
-  UINT32                      *RequestTimeout;
+  UINT32                     *RequestTimeout;
   ///
   /// For a DHCPDISCOVER, setting this parameter to the previously allocated IP
   /// address will cause the EFI DHCPv4 Protocol driver to enter the Dhcp4InitReboot state.
@@ -283,20 +272,20 @@
   /// For a DHCPINFORM this parameter should be set to the client network address
   /// which was assigned to the client during a DHCPDISCOVER.
   ///
-  EFI_IPv4_ADDRESS            ClientAddress;
+  EFI_IPv4_ADDRESS           ClientAddress;
   ///
   /// The callback function to intercept various events that occurred in
   /// the DHCP configuration process. Set to NULL to ignore all those events.
   ///
-  EFI_DHCP4_CALLBACK          Dhcp4Callback;
+  EFI_DHCP4_CALLBACK         Dhcp4Callback;
   ///
   /// The pointer to the context that will be passed to Dhcp4Callback when it is called.
   ///
-  VOID                        *CallbackContext;
+  VOID                       *CallbackContext;
   ///
   /// Number of DHCP options in the OptionList.
   ///
-  UINT32                      OptionCount;
+  UINT32                     OptionCount;
   ///
   /// List of DHCP options to be included in every packet that is sent during the
   /// Dhcp4SendDiscover event. Pad options are appended automatically by DHCP driver
@@ -304,122 +293,118 @@
   /// ignored by the driver. OptionList can be freed after EFI_DHCP4_PROTOCOL.Configure()
   /// returns. Ignored if OptionCount is zero.
   ///
-  EFI_DHCP4_PACKET_OPTION     **OptionList;
+  EFI_DHCP4_PACKET_OPTION    **OptionList;
 } EFI_DHCP4_CONFIG_DATA;
 
-
 typedef struct {
   ///
   /// The EFI DHCPv4 Protocol driver operating state.
   ///
-  EFI_DHCP4_STATE             State;
+  EFI_DHCP4_STATE          State;
   ///
   /// The configuration data of the current EFI DHCPv4 Protocol driver instance.
   ///
-  EFI_DHCP4_CONFIG_DATA       ConfigData;
+  EFI_DHCP4_CONFIG_DATA    ConfigData;
   ///
   /// The client IP address that was acquired from the DHCP server. If it is zero,
   /// the DHCP acquisition has not completed yet and the following fields in this structure are undefined.
   ///
-  EFI_IPv4_ADDRESS            ClientAddress;
+  EFI_IPv4_ADDRESS         ClientAddress;
   ///
   /// The local hardware address.
   ///
-  EFI_MAC_ADDRESS             ClientMacAddress;
+  EFI_MAC_ADDRESS          ClientMacAddress;
   ///
   /// The server IP address that is providing the DHCP service to this client.
   ///
-  EFI_IPv4_ADDRESS            ServerAddress;
+  EFI_IPv4_ADDRESS         ServerAddress;
   ///
   /// The router IP address that was acquired from the DHCP server.
   /// May be zero if the server does not offer this address.
   ///
-  EFI_IPv4_ADDRESS            RouterAddress;
+  EFI_IPv4_ADDRESS         RouterAddress;
   ///
   /// The subnet mask of the connected network that was acquired from the DHCP server.
   ///
-  EFI_IPv4_ADDRESS            SubnetMask;
+  EFI_IPv4_ADDRESS         SubnetMask;
   ///
   /// The lease time (in 1-second units) of the configured IP address.
   /// The value 0xFFFFFFFF means that the lease time is infinite.
   /// A default lease of 7 days is used if the DHCP server does not provide a value.
   ///
-  UINT32                      LeaseTime;
+  UINT32                   LeaseTime;
   ///
   /// The cached latest DHCPACK or DHCPNAK or BOOTP REPLY packet. May be NULL if no packet is cached.
   ///
-  EFI_DHCP4_PACKET            *ReplyPacket;
+  EFI_DHCP4_PACKET         *ReplyPacket;
 } EFI_DHCP4_MODE_DATA;
 
-
 typedef struct {
   ///
   /// Alternate listening address. It can be a unicast, multicast, or broadcast address.
   ///
-  EFI_IPv4_ADDRESS            ListenAddress;
+  EFI_IPv4_ADDRESS    ListenAddress;
   ///
   /// The subnet mask of above listening unicast/broadcast IP address.
   /// Ignored if ListenAddress is a multicast address.
   ///
-  EFI_IPv4_ADDRESS            SubnetMask;
+  EFI_IPv4_ADDRESS    SubnetMask;
   ///
   /// Alternate station source (or listening) port number.
   /// If zero, then the default station port number (68) will be used.
   ///
-  UINT16                      ListenPort;
+  UINT16              ListenPort;
 } EFI_DHCP4_LISTEN_POINT;
 
-
 typedef struct {
   ///
   /// The completion status of transmitting and receiving.
   ///
-  EFI_STATUS              Status;
+  EFI_STATUS                Status;
   ///
   /// If not NULL, the event that will be signaled when the collection process
   /// completes. If NULL, this function will busy-wait until the collection process competes.
   ///
-  EFI_EVENT               CompletionEvent;
+  EFI_EVENT                 CompletionEvent;
   ///
   /// The pointer to the server IP address. This address may be a unicast, multicast, or broadcast address.
   ///
-  EFI_IPv4_ADDRESS        RemoteAddress;
+  EFI_IPv4_ADDRESS          RemoteAddress;
   ///
   /// The server listening port number. If zero, the default server listening port number (67) will be used.
   ///
-  UINT16                  RemotePort;
+  UINT16                    RemotePort;
   ///
   /// The pointer to the gateway address to override the existing setting.
   ///
-  EFI_IPv4_ADDRESS        GatewayAddress;
+  EFI_IPv4_ADDRESS          GatewayAddress;
   ///
   /// The number of entries in ListenPoints. If zero, the default station address and port number 68 are used.
   ///
-  UINT32                  ListenPointCount;
+  UINT32                    ListenPointCount;
   ///
   /// An array of station address and port number pairs that are used as receiving filters.
   /// The first entry is also used as the source address and source port of the outgoing packet.
   ///
-  EFI_DHCP4_LISTEN_POINT  *ListenPoints;
+  EFI_DHCP4_LISTEN_POINT    *ListenPoints;
   ///
   /// The number of seconds to collect responses. Zero is invalid.
   ///
-  UINT32                  TimeoutValue;
+  UINT32                    TimeoutValue;
   ///
   /// The pointer to the packet to be transmitted.
   ///
-  EFI_DHCP4_PACKET        *Packet;
+  EFI_DHCP4_PACKET          *Packet;
   ///
   /// Number of received packets.
   ///
-  UINT32                  ResponseCount;
+  UINT32                    ResponseCount;
   ///
   /// The pointer to the allocated list of received packets.
   ///
-  EFI_DHCP4_PACKET        *ResponseList;
+  EFI_DHCP4_PACKET          *ResponseList;
 } EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN;
 
-
 /**
   Returns the current operating mode and cached data packet for the EFI DHCPv4 Protocol driver.
 
@@ -495,7 +480,6 @@
   IN EFI_DHCP4_CONFIG_DATA    *Dhcp4CfgData  OPTIONAL
   );
 
-
 /**
   Starts the DHCP configuration process.
 
@@ -685,7 +669,6 @@
   OUT EFI_DHCP4_PACKET        **NewPacket
   );
 
-
 /**
   Transmits a DHCP formatted packet and optionally waits for responses.
 
@@ -718,7 +701,6 @@
   IN EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN  *Token
   );
 
-
 /**
   Parses the packed DHCP option data.
 
@@ -765,18 +747,18 @@
 /// and to provide DHCPv4 server and PXE boot server discovery services.
 ///
 struct _EFI_DHCP4_PROTOCOL {
-  EFI_DHCP4_GET_MODE_DATA      GetModeData;
-  EFI_DHCP4_CONFIGURE          Configure;
-  EFI_DHCP4_START              Start;
-  EFI_DHCP4_RENEW_REBIND       RenewRebind;
-  EFI_DHCP4_RELEASE            Release;
-  EFI_DHCP4_STOP               Stop;
-  EFI_DHCP4_BUILD              Build;
-  EFI_DHCP4_TRANSMIT_RECEIVE   TransmitReceive;
-  EFI_DHCP4_PARSE              Parse;
+  EFI_DHCP4_GET_MODE_DATA       GetModeData;
+  EFI_DHCP4_CONFIGURE           Configure;
+  EFI_DHCP4_START               Start;
+  EFI_DHCP4_RENEW_REBIND        RenewRebind;
+  EFI_DHCP4_RELEASE             Release;
+  EFI_DHCP4_STOP                Stop;
+  EFI_DHCP4_BUILD               Build;
+  EFI_DHCP4_TRANSMIT_RECEIVE    TransmitReceive;
+  EFI_DHCP4_PARSE               Parse;
 };
 
-extern EFI_GUID gEfiDhcp4ProtocolGuid;
-extern EFI_GUID gEfiDhcp4ServiceBindingProtocolGuid;
+extern EFI_GUID  gEfiDhcp4ProtocolGuid;
+extern EFI_GUID  gEfiDhcp4ServiceBindingProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/DiskIo.h b/src/include/ipxe/efi/Protocol/DiskIo.h
index 1b47ce5..c5ce5d3 100644
--- a/src/include/ipxe/efi/Protocol/DiskIo.h
+++ b/src/include/ipxe/efi/Protocol/DiskIo.h
@@ -5,21 +5,15 @@
   oriented devices. The Disk IO protocol is intended to layer on top of the
   Block IO protocol.
 
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __DISK_IO_H__
 #define __DISK_IO_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_DISK_IO_PROTOCOL_GUID \
   { \
@@ -36,7 +30,7 @@
 ///
 /// Protocol defined in EFI1.1.
 ///
-typedef EFI_DISK_IO_PROTOCOL  EFI_DISK_IO;
+typedef EFI_DISK_IO_PROTOCOL EFI_DISK_IO;
 
 /**
   Read BufferSize bytes from Offset into Buffer.
@@ -93,7 +87,7 @@
   IN VOID                         *Buffer
   );
 
-#define EFI_DISK_IO_PROTOCOL_REVISION 0x00010000
+#define EFI_DISK_IO_PROTOCOL_REVISION  0x00010000
 
 ///
 /// Revision defined in EFI1.1
@@ -109,11 +103,11 @@
   /// revisions must be backwards compatible. If a future version is not
   /// backwards compatible, it is not the same GUID.
   ///
-  UINT64          Revision;
-  EFI_DISK_READ   ReadDisk;
-  EFI_DISK_WRITE  WriteDisk;
+  UINT64            Revision;
+  EFI_DISK_READ     ReadDisk;
+  EFI_DISK_WRITE    WriteDisk;
 };
 
-extern EFI_GUID gEfiDiskIoProtocolGuid;
+extern EFI_GUID  gEfiDiskIoProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/DriverBinding.h b/src/include/ipxe/efi/Protocol/DriverBinding.h
index 1f464a7..3c20275 100644
--- a/src/include/ipxe/efi/Protocol/DriverBinding.h
+++ b/src/include/ipxe/efi/Protocol/DriverBinding.h
@@ -4,21 +4,15 @@
   This protocol is produced by every driver that follows the UEFI Driver Model,
   and it is the central component that allows drivers and controllers to be managed.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __EFI_DRIVER_BINDING_H__
 #define __EFI_DRIVER_BINDING_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// The global ID for the ControllerHandle Driver Protocol.
@@ -28,7 +22,7 @@
     0x18a031ab, 0xb443, 0x4d1a, {0xa5, 0xc0, 0xc, 0x9, 0x26, 0x1e, 0x9f, 0x71 } \
   }
 
-typedef struct _EFI_DRIVER_BINDING_PROTOCOL  EFI_DRIVER_BINDING_PROTOCOL;
+typedef struct _EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL;
 
 /**
   Tests to see if this driver supports a given controller. If a child device is provided,
@@ -163,9 +157,9 @@
 /// If a controller is supported, then it also provides routines to start and stop the controller.
 ///
 struct _EFI_DRIVER_BINDING_PROTOCOL {
-  EFI_DRIVER_BINDING_SUPPORTED  Supported;
-  EFI_DRIVER_BINDING_START      Start;
-  EFI_DRIVER_BINDING_STOP       Stop;
+  EFI_DRIVER_BINDING_SUPPORTED    Supported;
+  EFI_DRIVER_BINDING_START        Start;
+  EFI_DRIVER_BINDING_STOP         Stop;
 
   ///
   /// The version number of the UEFI driver that produced the
@@ -179,13 +173,13 @@
   /// platform/OEM specific drivers. The Version values of 0x10-
   /// 0xffffffef are reserved for IHV-developed drivers.
   ///
-  UINT32                        Version;
+  UINT32        Version;
 
   ///
   /// The image handle of the UEFI driver that produced this instance
   /// of the EFI_DRIVER_BINDING_PROTOCOL.
   ///
-  EFI_HANDLE                    ImageHandle;
+  EFI_HANDLE    ImageHandle;
 
   ///
   /// The handle on which this instance of the
@@ -195,9 +189,9 @@
   /// EFI_DRIVER_BINDING_PROTOCOL, this value may not be
   /// the same as ImageHandle.
   ///
-  EFI_HANDLE                    DriverBindingHandle;
+  EFI_HANDLE    DriverBindingHandle;
 };
 
-extern EFI_GUID gEfiDriverBindingProtocolGuid;
+extern EFI_GUID  gEfiDriverBindingProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/FormBrowser2.h b/src/include/ipxe/efi/Protocol/FormBrowser2.h
index 8033a11..b1c0d20 100644
--- a/src/include/ipxe/efi/Protocol/FormBrowser2.h
+++ b/src/include/ipxe/efi/Protocol/FormBrowser2.h
@@ -4,31 +4,22 @@
   The EFI_FORM_BROWSER2_PROTOCOL is the interface to call for drivers to
   leverage the EFI configuration driver interface.
 
-Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __EFI_FORM_BROWSER2_H__
 #define __EFI_FORM_BROWSER2_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Guid/HiiPlatformSetupFormset.h>
 
 #define EFI_FORM_BROWSER2_PROTOCOL_GUID \
   {0xb9d4c360, 0xbcfb, 0x4f9b, {0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58 }}
 
-
-typedef struct _EFI_FORM_BROWSER2_PROTOCOL   EFI_FORM_BROWSER2_PROTOCOL;
-
-
+typedef struct _EFI_FORM_BROWSER2_PROTOCOL EFI_FORM_BROWSER2_PROTOCOL;
 
 /**
 
@@ -49,24 +40,23 @@
                       window will end.
 **/
 typedef struct {
-  UINTN   LeftColumn;
-  UINTN   RightColumn;
-  UINTN   TopRow;
-  UINTN   BottomRow;
+  UINTN    LeftColumn;
+  UINTN    RightColumn;
+  UINTN    TopRow;
+  UINTN    BottomRow;
 } EFI_SCREEN_DESCRIPTOR;
 
 typedef UINTN EFI_BROWSER_ACTION_REQUEST;
 
-#define EFI_BROWSER_ACTION_REQUEST_NONE   0
-#define EFI_BROWSER_ACTION_REQUEST_RESET  1
-#define EFI_BROWSER_ACTION_REQUEST_SUBMIT 2
-#define EFI_BROWSER_ACTION_REQUEST_EXIT   3
-#define EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT  4
-#define EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT 5
-#define EFI_BROWSER_ACTION_REQUEST_FORM_APPLY        6
-#define EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD      7
-#define EFI_BROWSER_ACTION_REQUEST_RECONNECT         8
-
+#define EFI_BROWSER_ACTION_REQUEST_NONE               0
+#define EFI_BROWSER_ACTION_REQUEST_RESET              1
+#define EFI_BROWSER_ACTION_REQUEST_SUBMIT             2
+#define EFI_BROWSER_ACTION_REQUEST_EXIT               3
+#define EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT   4
+#define EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT  5
+#define EFI_BROWSER_ACTION_REQUEST_FORM_APPLY         6
+#define EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD       7
+#define EFI_BROWSER_ACTION_REQUEST_RECONNECT          8
 
 /**
   Initialize the browser to display the specified configuration forms.
@@ -110,12 +100,11 @@
   IN CONST  EFI_FORM_BROWSER2_PROTOCOL  *This,
   IN        EFI_HII_HANDLE              *Handle,
   IN        UINTN                      HandleCount,
-  IN        EFI_GUID                   *FormSetGuid, OPTIONAL
-  IN        EFI_FORM_ID                FormId, OPTIONAL
-  IN CONST  EFI_SCREEN_DESCRIPTOR      *ScreenDimensions, OPTIONAL
+  IN        EFI_GUID                   *FormSetGuid  OPTIONAL,
+  IN        EFI_FORM_ID                FormId  OPTIONAL,
+  IN CONST  EFI_SCREEN_DESCRIPTOR      *ScreenDimensions  OPTIONAL,
   OUT       EFI_BROWSER_ACTION_REQUEST *ActionRequest  OPTIONAL
-);
-
+  );
 
 /**
   This function is called by a callback handler to retrieve uncommitted state data from the browser.
@@ -163,20 +152,19 @@
   IN OUT    UINTN                     *ResultsDataSize,
   IN OUT    EFI_STRING                ResultsData,
   IN CONST  BOOLEAN                   RetrieveData,
-  IN CONST  EFI_GUID                  *VariableGuid, OPTIONAL
+  IN CONST  EFI_GUID                  *VariableGuid  OPTIONAL,
   IN CONST  CHAR16                    *VariableName OPTIONAL
-);
+  );
 
 ///
 /// This interface will allow the caller to direct the configuration
 /// driver to use either the HII database or use the passed-in packet of data.
 ///
 struct _EFI_FORM_BROWSER2_PROTOCOL {
-  EFI_SEND_FORM2         SendForm;
-  EFI_BROWSER_CALLBACK2  BrowserCallback;
-} ;
+  EFI_SEND_FORM2           SendForm;
+  EFI_BROWSER_CALLBACK2    BrowserCallback;
+};
 
-extern EFI_GUID gEfiFormBrowser2ProtocolGuid;
+extern EFI_GUID  gEfiFormBrowser2ProtocolGuid;
 
 #endif
-
diff --git a/src/include/ipxe/efi/Protocol/GraphicsOutput.h b/src/include/ipxe/efi/Protocol/GraphicsOutput.h
index 98ca8c9..b89315c 100644
--- a/src/include/ipxe/efi/Protocol/GraphicsOutput.h
+++ b/src/include/ipxe/efi/Protocol/GraphicsOutput.h
@@ -3,21 +3,15 @@
 
   Abstraction of a very simple graphics device.
 
-  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __GRAPHICS_OUTPUT_H__
 #define __GRAPHICS_OUTPUT_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
   { \
@@ -27,10 +21,10 @@
 typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL;
 
 typedef struct {
-  UINT32            RedMask;
-  UINT32            GreenMask;
-  UINT32            BlueMask;
-  UINT32            ReservedMask;
+  UINT32    RedMask;
+  UINT32    GreenMask;
+  UINT32    BlueMask;
+  UINT32    ReservedMask;
 } EFI_PIXEL_BITMASK;
 
 typedef enum {
@@ -69,29 +63,29 @@
   /// The version of this data structure. A value of zero represents the
   /// EFI_GRAPHICS_OUTPUT_MODE_INFORMATION structure as defined in this specification.
   ///
-  UINT32                     Version;
+  UINT32                       Version;
   ///
   /// The size of video screen in pixels in the X dimension.
   ///
-  UINT32                     HorizontalResolution;
+  UINT32                       HorizontalResolution;
   ///
   /// The size of video screen in pixels in the Y dimension.
   ///
-  UINT32                     VerticalResolution;
+  UINT32                       VerticalResolution;
   ///
   /// Enumeration that defines the physical format of the pixel. A value of PixelBltOnly
   /// implies that a linear frame buffer is not available for this mode.
   ///
-  EFI_GRAPHICS_PIXEL_FORMAT  PixelFormat;
+  EFI_GRAPHICS_PIXEL_FORMAT    PixelFormat;
   ///
   /// This bit-mask is only valid if PixelFormat is set to PixelPixelBitMask.
   /// A bit being set defines what bits are used for what purpose such as Red, Green, Blue, or Reserved.
   ///
-  EFI_PIXEL_BITMASK          PixelInformation;
+  EFI_PIXEL_BITMASK            PixelInformation;
   ///
   /// Defines the number of pixel elements per video memory line.
   ///
-  UINT32                     PixelsPerScanLine;
+  UINT32                       PixelsPerScanLine;
 } EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
 
 /**
@@ -137,15 +131,15 @@
   );
 
 typedef struct {
-  UINT8 Blue;
-  UINT8 Green;
-  UINT8 Red;
-  UINT8 Reserved;
+  UINT8    Blue;
+  UINT8    Green;
+  UINT8    Red;
+  UINT8    Reserved;
 } EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
 
 typedef union {
-  EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel;
-  UINT32                        Raw;
+  EFI_GRAPHICS_OUTPUT_BLT_PIXEL    Pixel;
+  UINT32                           Raw;
 } EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION;
 
 ///
@@ -218,7 +212,7 @@
 EFI_STATUS
 (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT)(
   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL            *This,
-  IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL           *BltBuffer,   OPTIONAL
+  IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL           *BltBuffer    OPTIONAL,
   IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION       BltOperation,
   IN  UINTN                                   SourceX,
   IN  UINTN                                   SourceY,
@@ -233,29 +227,29 @@
   ///
   /// The number of modes supported by QueryMode() and SetMode().
   ///
-  UINT32                                 MaxMode;
+  UINT32                                  MaxMode;
   ///
   /// Current Mode of the graphics device. Valid mode numbers are 0 to MaxMode -1.
   ///
-  UINT32                                 Mode;
+  UINT32                                  Mode;
   ///
   /// Pointer to read-only EFI_GRAPHICS_OUTPUT_MODE_INFORMATION data.
   ///
-  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION   *Info;
+  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION    *Info;
   ///
   /// Size of Info structure in bytes.
   ///
-  UINTN                                  SizeOfInfo;
+  UINTN                                   SizeOfInfo;
   ///
   /// Base address of graphics linear frame buffer.
   /// Offset zero in FrameBufferBase represents the upper left pixel of the display.
   ///
-  EFI_PHYSICAL_ADDRESS                   FrameBufferBase;
+  EFI_PHYSICAL_ADDRESS                    FrameBufferBase;
   ///
   /// Amount of frame buffer needed to support the active mode as defined by
   /// PixelsPerScanLine xVerticalResolution x PixelElementSize.
   ///
-  UINTN                                  FrameBufferSize;
+  UINTN                                   FrameBufferSize;
 } EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
 
 ///
@@ -264,15 +258,15 @@
 /// frame buffer is also exposed so software can write directly to the video hardware.
 ///
 struct _EFI_GRAPHICS_OUTPUT_PROTOCOL {
-  EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE  QueryMode;
-  EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE    SetMode;
-  EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT         Blt;
+  EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE    QueryMode;
+  EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE      SetMode;
+  EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT           Blt;
   ///
   /// Pointer to EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE data.
   ///
-  EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE        *Mode;
+  EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE          *Mode;
 };
 
-extern EFI_GUID gEfiGraphicsOutputProtocolGuid;
+extern EFI_GUID  gEfiGraphicsOutputProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/HiiConfigAccess.h b/src/include/ipxe/efi/Protocol/HiiConfigAccess.h
index df90805..beae082 100644
--- a/src/include/ipxe/efi/Protocol/HiiConfigAccess.h
+++ b/src/include/ipxe/efi/Protocol/HiiConfigAccess.h
@@ -5,44 +5,40 @@
   This protocol is published by drivers providing and requesting
   configuration data from HII. It may only be invoked by HII.
 
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  @par Revision Reference:
+  This Protocol was introduced in UEFI Specification 2.1.
 
 **/
 
-
 #ifndef __EFI_HII_CONFIG_ACCESS_H__
 #define __EFI_HII_CONFIG_ACCESS_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/FormBrowser2.h>
 
 #define EFI_HII_CONFIG_ACCESS_PROTOCOL_GUID  \
   { 0x330d4706, 0xf2a0, 0x4e4f, { 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85 } }
 
-typedef struct _EFI_HII_CONFIG_ACCESS_PROTOCOL  EFI_HII_CONFIG_ACCESS_PROTOCOL;
+typedef struct _EFI_HII_CONFIG_ACCESS_PROTOCOL EFI_HII_CONFIG_ACCESS_PROTOCOL;
 
 typedef UINTN EFI_BROWSER_ACTION;
 
-#define EFI_BROWSER_ACTION_CHANGING   0
-#define EFI_BROWSER_ACTION_CHANGED    1
-#define EFI_BROWSER_ACTION_RETRIEVE   2
-#define EFI_BROWSER_ACTION_FORM_OPEN  3
-#define EFI_BROWSER_ACTION_FORM_CLOSE 4
-#define EFI_BROWSER_ACTION_SUBMITTED  5
-#define EFI_BROWSER_ACTION_DEFAULT_STANDARD      0x1000
-#define EFI_BROWSER_ACTION_DEFAULT_MANUFACTURING 0x1001
-#define EFI_BROWSER_ACTION_DEFAULT_SAFE          0x1002
-#define EFI_BROWSER_ACTION_DEFAULT_PLATFORM      0x2000
-#define EFI_BROWSER_ACTION_DEFAULT_HARDWARE      0x3000
-#define EFI_BROWSER_ACTION_DEFAULT_FIRMWARE      0x4000
+#define EFI_BROWSER_ACTION_CHANGING               0
+#define EFI_BROWSER_ACTION_CHANGED                1
+#define EFI_BROWSER_ACTION_RETRIEVE               2
+#define EFI_BROWSER_ACTION_FORM_OPEN              3
+#define EFI_BROWSER_ACTION_FORM_CLOSE             4
+#define EFI_BROWSER_ACTION_SUBMITTED              5
+#define EFI_BROWSER_ACTION_DEFAULT_STANDARD       0x1000
+#define EFI_BROWSER_ACTION_DEFAULT_MANUFACTURING  0x1001
+#define EFI_BROWSER_ACTION_DEFAULT_SAFE           0x1002
+#define EFI_BROWSER_ACTION_DEFAULT_PLATFORM       0x2000
+#define EFI_BROWSER_ACTION_DEFAULT_HARDWARE       0x3000
+#define EFI_BROWSER_ACTION_DEFAULT_FIRMWARE       0x4000
 
 /**
 
@@ -114,13 +110,12 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI * EFI_HII_ACCESS_EXTRACT_CONFIG)(
+(EFIAPI *EFI_HII_ACCESS_EXTRACT_CONFIG)(
   IN CONST  EFI_HII_CONFIG_ACCESS_PROTOCOL  *This,
   IN CONST  EFI_STRING                      Request,
   OUT       EFI_STRING                      *Progress,
   OUT       EFI_STRING                      *Results
-);
-
+  );
 
 /**
 
@@ -164,11 +159,11 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI * EFI_HII_ACCESS_ROUTE_CONFIG)(
+(EFIAPI *EFI_HII_ACCESS_ROUTE_CONFIG)(
   IN CONST  EFI_HII_CONFIG_ACCESS_PROTOCOL  *This,
   IN CONST  EFI_STRING                      Configuration,
   OUT       EFI_STRING                      *Progress
-);
+  );
 
 /**
 
@@ -205,7 +200,7 @@
   IN OUT EFI_IFR_TYPE_VALUE                     *Value,
   OUT    EFI_BROWSER_ACTION_REQUEST             *ActionRequest
   )
-  ;
+;
 
 ///
 /// This protocol provides a callable interface between the HII and
@@ -213,13 +208,11 @@
 /// to publish this protocol.
 ///
 struct _EFI_HII_CONFIG_ACCESS_PROTOCOL {
-  EFI_HII_ACCESS_EXTRACT_CONFIG     ExtractConfig;
-  EFI_HII_ACCESS_ROUTE_CONFIG       RouteConfig;
-  EFI_HII_ACCESS_FORM_CALLBACK      Callback;
-} ;
+  EFI_HII_ACCESS_EXTRACT_CONFIG    ExtractConfig;
+  EFI_HII_ACCESS_ROUTE_CONFIG      RouteConfig;
+  EFI_HII_ACCESS_FORM_CALLBACK     Callback;
+};
 
-extern EFI_GUID gEfiHiiConfigAccessProtocolGuid;
+extern EFI_GUID  gEfiHiiConfigAccessProtocolGuid;
 
 #endif
-
-
diff --git a/src/include/ipxe/efi/Protocol/HiiDatabase.h b/src/include/ipxe/efi/Protocol/HiiDatabase.h
index e070d29..d077b11 100644
--- a/src/include/ipxe/efi/Protocol/HiiDatabase.h
+++ b/src/include/ipxe/efi/Protocol/HiiDatabase.h
@@ -2,38 +2,34 @@
   The file provides Database manager for HII-related data
   structures.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  @par Revision Reference:
+  This Protocol was introduced in UEFI Specification 2.1.
 
 **/
 
 #ifndef __HII_DATABASE_H__
 #define __HII_DATABASE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_HII_DATABASE_PROTOCOL_GUID \
   { 0xef9fc172, 0xa1b2, 0x4693, { 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42 } }
 
-
 typedef struct _EFI_HII_DATABASE_PROTOCOL EFI_HII_DATABASE_PROTOCOL;
 
-
 ///
 /// EFI_HII_DATABASE_NOTIFY_TYPE.
 ///
-typedef UINTN   EFI_HII_DATABASE_NOTIFY_TYPE;
+typedef UINTN EFI_HII_DATABASE_NOTIFY_TYPE;
 
-#define EFI_HII_DATABASE_NOTIFY_NEW_PACK    0x00000001
-#define EFI_HII_DATABASE_NOTIFY_REMOVE_PACK 0x00000002
-#define EFI_HII_DATABASE_NOTIFY_EXPORT_PACK 0x00000004
-#define EFI_HII_DATABASE_NOTIFY_ADD_PACK    0x00000008
+#define EFI_HII_DATABASE_NOTIFY_NEW_PACK     0x00000001
+#define EFI_HII_DATABASE_NOTIFY_REMOVE_PACK  0x00000002
+#define EFI_HII_DATABASE_NOTIFY_EXPORT_PACK  0x00000004
+#define EFI_HII_DATABASE_NOTIFY_ADD_PACK     0x00000008
+
 /**
 
   Functions which are registered to receive notification of
@@ -68,7 +64,7 @@
   IN CONST  EFI_HII_PACKAGE_HEADER        *Package,
   IN        EFI_HII_HANDLE                 Handle,
   IN        EFI_HII_DATABASE_NOTIFY_TYPE  NotifyType
-);
+  );
 
 /**
 
@@ -108,10 +104,9 @@
 (EFIAPI *EFI_HII_DATABASE_NEW_PACK)(
   IN CONST  EFI_HII_DATABASE_PROTOCOL   *This,
   IN CONST  EFI_HII_PACKAGE_LIST_HEADER *PackageList,
-  IN        EFI_HANDLE                  DriverHandle, OPTIONAL
+  IN        EFI_HANDLE                  DriverHandle  OPTIONAL,
   OUT       EFI_HII_HANDLE               *Handle
-);
-
+  );
 
 /**
 
@@ -137,8 +132,7 @@
 (EFIAPI *EFI_HII_DATABASE_REMOVE_PACK)(
   IN CONST  EFI_HII_DATABASE_PROTOCOL *This,
   IN        EFI_HII_HANDLE             Handle
-);
-
+  );
 
 /**
 
@@ -186,8 +180,7 @@
   IN CONST  EFI_HII_DATABASE_PROTOCOL   *This,
   IN        EFI_HII_HANDLE               Handle,
   IN CONST  EFI_HII_PACKAGE_LIST_HEADER *PackageList
-);
-
+  );
 
 /**
 
@@ -240,7 +233,7 @@
   IN CONST  EFI_GUID                  *PackageGuid,
   IN OUT    UINTN                     *HandleBufferLength,
   OUT       EFI_HII_HANDLE            *Handle
-);
+  );
 
 /**
 
@@ -290,8 +283,7 @@
   IN        EFI_HII_HANDLE                 Handle,
   IN OUT    UINTN                          *BufferSize,
   OUT       EFI_HII_PACKAGE_LIST_HEADER    *Buffer
-);
-
+  );
 
 /**
 
@@ -353,8 +345,7 @@
   IN        EFI_HII_DATABASE_NOTIFY       PackageNotifyFn,
   IN        EFI_HII_DATABASE_NOTIFY_TYPE  NotifyType,
   OUT       EFI_HANDLE                    *NotifyHandle
-);
-
+  );
 
 /**
 
@@ -376,8 +367,7 @@
 (EFIAPI *EFI_HII_DATABASE_UNREGISTER_NOTIFY)(
   IN CONST  EFI_HII_DATABASE_PROTOCOL *This,
   IN        EFI_HANDLE                NotificationHandle
-);
-
+  );
 
 /**
 
@@ -417,8 +407,7 @@
   IN CONST  EFI_HII_DATABASE_PROTOCOL *This,
   IN OUT    UINT16                    *KeyGuidBufferLength,
   OUT       EFI_GUID                  *KeyGuidBuffer
-);
-
+  );
 
 /**
 
@@ -453,7 +442,7 @@
   IN CONST  EFI_GUID                  *KeyGuid,
   IN OUT UINT16                       *KeyboardLayoutLength,
   OUT       EFI_HII_KEYBOARD_LAYOUT   *KeyboardLayout
-);
+  );
 
 /**
 
@@ -480,7 +469,7 @@
 (EFIAPI *EFI_HII_SET_KEYBOARD_LAYOUT)(
   IN CONST  EFI_HII_DATABASE_PROTOCOL *This,
   IN CONST  EFI_GUID                  *KeyGuid
-);
+  );
 
 /**
 
@@ -507,27 +496,25 @@
   IN CONST  EFI_HII_DATABASE_PROTOCOL *This,
   IN        EFI_HII_HANDLE             PackageListHandle,
   OUT       EFI_HANDLE                *DriverHandle
-);
+  );
 
 ///
 /// Database manager for HII-related data structures.
 ///
 struct _EFI_HII_DATABASE_PROTOCOL {
-  EFI_HII_DATABASE_NEW_PACK           NewPackageList;
-  EFI_HII_DATABASE_REMOVE_PACK        RemovePackageList;
-  EFI_HII_DATABASE_UPDATE_PACK        UpdatePackageList;
-  EFI_HII_DATABASE_LIST_PACKS         ListPackageLists;
-  EFI_HII_DATABASE_EXPORT_PACKS       ExportPackageLists;
-  EFI_HII_DATABASE_REGISTER_NOTIFY    RegisterPackageNotify;
-  EFI_HII_DATABASE_UNREGISTER_NOTIFY  UnregisterPackageNotify;
-  EFI_HII_FIND_KEYBOARD_LAYOUTS       FindKeyboardLayouts;
-  EFI_HII_GET_KEYBOARD_LAYOUT         GetKeyboardLayout;
-  EFI_HII_SET_KEYBOARD_LAYOUT         SetKeyboardLayout;
-  EFI_HII_DATABASE_GET_PACK_HANDLE    GetPackageListHandle;
+  EFI_HII_DATABASE_NEW_PACK             NewPackageList;
+  EFI_HII_DATABASE_REMOVE_PACK          RemovePackageList;
+  EFI_HII_DATABASE_UPDATE_PACK          UpdatePackageList;
+  EFI_HII_DATABASE_LIST_PACKS           ListPackageLists;
+  EFI_HII_DATABASE_EXPORT_PACKS         ExportPackageLists;
+  EFI_HII_DATABASE_REGISTER_NOTIFY      RegisterPackageNotify;
+  EFI_HII_DATABASE_UNREGISTER_NOTIFY    UnregisterPackageNotify;
+  EFI_HII_FIND_KEYBOARD_LAYOUTS         FindKeyboardLayouts;
+  EFI_HII_GET_KEYBOARD_LAYOUT           GetKeyboardLayout;
+  EFI_HII_SET_KEYBOARD_LAYOUT           SetKeyboardLayout;
+  EFI_HII_DATABASE_GET_PACK_HANDLE      GetPackageListHandle;
 };
 
-extern EFI_GUID gEfiHiiDatabaseProtocolGuid;
+extern EFI_GUID  gEfiHiiDatabaseProtocolGuid;
 
 #endif
-
-
diff --git a/src/include/ipxe/efi/Protocol/HiiFont.h b/src/include/ipxe/efi/Protocol/HiiFont.h
index f2b72dc..248f13e 100644
--- a/src/include/ipxe/efi/Protocol/HiiFont.h
+++ b/src/include/ipxe/efi/Protocol/HiiFont.h
@@ -1,21 +1,18 @@
 /** @file
   The file provides services to retrieve font information.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  @par Revision Reference:
+  This Protocol was introduced in UEFI Specification 2.1.
 
 **/
 
 #ifndef __HII_FONT_H__
 #define __HII_FONT_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/GraphicsOutput.h>
 #include <ipxe/efi/Protocol/HiiImage.h>
@@ -25,21 +22,21 @@
 
 typedef struct _EFI_HII_FONT_PROTOCOL EFI_HII_FONT_PROTOCOL;
 
-typedef VOID    *EFI_FONT_HANDLE;
+typedef VOID *EFI_FONT_HANDLE;
 
 ///
 /// EFI_HII_OUT_FLAGS.
 ///
-typedef UINT32  EFI_HII_OUT_FLAGS;
+typedef UINT32 EFI_HII_OUT_FLAGS;
 
-#define EFI_HII_OUT_FLAG_CLIP         0x00000001
-#define EFI_HII_OUT_FLAG_WRAP         0x00000002
-#define EFI_HII_OUT_FLAG_CLIP_CLEAN_Y 0x00000004
-#define EFI_HII_OUT_FLAG_CLIP_CLEAN_X 0x00000008
-#define EFI_HII_OUT_FLAG_TRANSPARENT  0x00000010
-#define EFI_HII_IGNORE_IF_NO_GLYPH    0x00000020
-#define EFI_HII_IGNORE_LINE_BREAK     0x00000040
-#define EFI_HII_DIRECT_TO_SCREEN      0x00000080
+#define EFI_HII_OUT_FLAG_CLIP          0x00000001
+#define EFI_HII_OUT_FLAG_WRAP          0x00000002
+#define EFI_HII_OUT_FLAG_CLIP_CLEAN_Y  0x00000004
+#define EFI_HII_OUT_FLAG_CLIP_CLEAN_X  0x00000008
+#define EFI_HII_OUT_FLAG_TRANSPARENT   0x00000010
+#define EFI_HII_IGNORE_IF_NO_GLYPH     0x00000020
+#define EFI_HII_IGNORE_LINE_BREAK      0x00000040
+#define EFI_HII_DIRECT_TO_SCREEN       0x00000080
 
 /**
   Definition of EFI_HII_ROW_INFO.
@@ -48,26 +45,26 @@
   ///
   /// The index of the first character in the string which is displayed on the line.
   ///
-  UINTN   StartIndex;
+  UINTN    StartIndex;
   ///
   /// The index of the last character in the string which is displayed on the line.
   /// If this is the same as StartIndex, then no characters are displayed.
   ///
-  UINTN   EndIndex;
-  UINTN   LineHeight; ///< The height of the line, in pixels.
-  UINTN   LineWidth;  ///< The width of the text on the line, in pixels.
+  UINTN    EndIndex;
+  UINTN    LineHeight; ///< The height of the line, in pixels.
+  UINTN    LineWidth;  ///< The width of the text on the line, in pixels.
 
   ///
   /// The font baseline offset in pixels from the bottom of the row, or 0 if none.
   ///
-  UINTN   BaselineOffset;
+  UINTN    BaselineOffset;
 } EFI_HII_ROW_INFO;
 
 ///
 /// Font info flag. All flags (FONT, SIZE, STYLE, and COLOR) are defined.
 /// They are defined as EFI_FONT_INFO_***
 ///
-typedef UINT32  EFI_FONT_INFO_MASK;
+typedef UINT32 EFI_FONT_INFO_MASK;
 
 #define EFI_FONT_INFO_SYS_FONT        0x00000001
 #define EFI_FONT_INFO_SYS_SIZE        0x00000002
@@ -84,9 +81,9 @@
 // EFI_FONT_INFO
 //
 typedef struct {
-  EFI_HII_FONT_STYLE FontStyle;
-  UINT16             FontSize;      ///< character cell height in pixels
-  CHAR16             FontName[1];
+  EFI_HII_FONT_STYLE    FontStyle;
+  UINT16                FontSize;   ///< character cell height in pixels
+  CHAR16                FontName[1];
 } EFI_FONT_INFO;
 
 /**
@@ -102,10 +99,10 @@
   font requested and the font available.
 **/
 typedef struct _EFI_FONT_DISPLAY_INFO {
-  EFI_GRAPHICS_OUTPUT_BLT_PIXEL ForegroundColor;
-  EFI_GRAPHICS_OUTPUT_BLT_PIXEL BackgroundColor;
-  EFI_FONT_INFO_MASK            FontInfoMask;
-  EFI_FONT_INFO                 FontInfo;
+  EFI_GRAPHICS_OUTPUT_BLT_PIXEL    ForegroundColor;
+  EFI_GRAPHICS_OUTPUT_BLT_PIXEL    BackgroundColor;
+  EFI_FONT_INFO_MASK               FontInfoMask;
+  EFI_FONT_INFO                    FontInfo;
 } EFI_FONT_DISPLAY_INFO;
 
 /**
@@ -225,9 +222,7 @@
   OUT       EFI_HII_ROW_INFO      **RowInfoArray OPTIONAL,
   OUT       UINTN                 *RowInfoArraySize OPTIONAL,
   OUT       UINTN                 *ColumnInfoArray OPTIONAL
-);
-
-
+  );
 
 /**
 
@@ -363,8 +358,7 @@
   OUT       EFI_HII_ROW_INFO      **RowInfoArray    OPTIONAL,
   OUT       UINTN                 *RowInfoArraySize OPTIONAL,
   OUT       UINTN                 *ColumnInfoArray  OPTIONAL
-);
-
+  );
 
 /**
 
@@ -408,7 +402,7 @@
   IN CONST  EFI_FONT_DISPLAY_INFO *StringInfo,
   OUT       EFI_IMAGE_OUTPUT      **Blt,
   OUT       UINTN                 *Baseline OPTIONAL
-);
+  );
 
 /**
 
@@ -452,23 +446,21 @@
 (EFIAPI *EFI_HII_GET_FONT_INFO)(
   IN CONST  EFI_HII_FONT_PROTOCOL *This,
   IN OUT    EFI_FONT_HANDLE       *FontHandle,
-  IN CONST  EFI_FONT_DISPLAY_INFO *StringInfoIn, OPTIONAL
+  IN CONST  EFI_FONT_DISPLAY_INFO *StringInfoIn  OPTIONAL,
   OUT       EFI_FONT_DISPLAY_INFO **StringInfoOut,
   IN CONST  EFI_STRING            String OPTIONAL
-);
+  );
 
 ///
 /// The protocol provides the service to retrieve the font informations.
 ///
 struct _EFI_HII_FONT_PROTOCOL {
-  EFI_HII_STRING_TO_IMAGE     StringToImage;
-  EFI_HII_STRING_ID_TO_IMAGE  StringIdToImage;
-  EFI_HII_GET_GLYPH           GetGlyph;
-  EFI_HII_GET_FONT_INFO       GetFontInfo;
+  EFI_HII_STRING_TO_IMAGE       StringToImage;
+  EFI_HII_STRING_ID_TO_IMAGE    StringIdToImage;
+  EFI_HII_GET_GLYPH             GetGlyph;
+  EFI_HII_GET_FONT_INFO         GetFontInfo;
 };
 
-extern EFI_GUID gEfiHiiFontProtocolGuid;
-
+extern EFI_GUID  gEfiHiiFontProtocolGuid;
 
 #endif
-
diff --git a/src/include/ipxe/efi/Protocol/HiiImage.h b/src/include/ipxe/efi/Protocol/HiiImage.h
index ba934a9..20fd725 100644
--- a/src/include/ipxe/efi/Protocol/HiiImage.h
+++ b/src/include/ipxe/efi/Protocol/HiiImage.h
@@ -1,21 +1,18 @@
 /** @file
   The file provides services to access to images in the images database.
 
-  Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  @par Revision Reference:
+  This Protocol was introduced in UEFI Specification 2.1.
 
 **/
 
 #ifndef __HII_IMAGE_H__
 #define __HII_IMAGE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/GraphicsOutput.h>
 
@@ -24,11 +21,10 @@
 
 typedef struct _EFI_HII_IMAGE_PROTOCOL EFI_HII_IMAGE_PROTOCOL;
 
-
 ///
 /// Flags in EFI_IMAGE_INPUT
 ///
-#define EFI_IMAGE_TRANSPARENT 0x00000001
+#define EFI_IMAGE_TRANSPARENT  0x00000001
 
 /**
 
@@ -49,13 +45,12 @@
 
 **/
 typedef struct _EFI_IMAGE_INPUT {
-  UINT32                          Flags;
-  UINT16                          Width;
-  UINT16                          Height;
-  EFI_GRAPHICS_OUTPUT_BLT_PIXEL   *Bitmap;
+  UINT32                           Flags;
+  UINT16                           Width;
+  UINT16                           Height;
+  EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *Bitmap;
 } EFI_IMAGE_INPUT;
 
-
 /**
 
   This function adds the image Image to the group of images
@@ -88,7 +83,7 @@
   IN        EFI_HII_HANDLE          PackageList,
   OUT       EFI_IMAGE_ID            *ImageId,
   IN CONST  EFI_IMAGE_INPUT         *Image
-);
+  );
 
 /**
 
@@ -130,7 +125,7 @@
   IN        EFI_HII_HANDLE          PackageList,
   IN        EFI_IMAGE_ID            ImageId,
   OUT       EFI_IMAGE_INPUT         *Image
-);
+  );
 
 /**
 
@@ -161,14 +156,13 @@
   IN        EFI_HII_HANDLE          PackageList,
   IN        EFI_IMAGE_ID            ImageId,
   IN CONST  EFI_IMAGE_INPUT         *Image
-);
-
+  );
 
 ///
 /// EFI_HII_DRAW_FLAGS describes how the image is to be drawn.
 /// These flags are defined as EFI_HII_DRAW_FLAG_***
 ///
-typedef UINT32  EFI_HII_DRAW_FLAGS;
+typedef UINT32 EFI_HII_DRAW_FLAGS;
 
 #define EFI_HII_DRAW_FLAG_CLIP          0x00000001
 #define EFI_HII_DRAW_FLAG_TRANSPARENT   0x00000030
@@ -193,15 +187,14 @@
 
 **/
 typedef struct _EFI_IMAGE_OUTPUT {
-  UINT16  Width;
-  UINT16  Height;
+  UINT16    Width;
+  UINT16    Height;
   union {
-    EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Bitmap;
-    EFI_GRAPHICS_OUTPUT_PROTOCOL  *Screen;
+    EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *Bitmap;
+    EFI_GRAPHICS_OUTPUT_PROTOCOL     *Screen;
   } Image;
 } EFI_IMAGE_OUTPUT;
 
-
 /**
 
   This function renders an image to a bitmap or the screen using
@@ -258,7 +251,7 @@
   IN OUT    EFI_IMAGE_OUTPUT        **Blt,
   IN        UINTN                   BltX,
   IN        UINTN                   BltY
-);
+  );
 
 /**
 
@@ -330,29 +323,26 @@
 typedef
 EFI_STATUS
 (EFIAPI *EFI_HII_DRAW_IMAGE_ID)(
-IN CONST  EFI_HII_IMAGE_PROTOCOL  *This,
-IN        EFI_HII_DRAW_FLAGS      Flags,
-IN        EFI_HII_HANDLE          PackageList,
-IN        EFI_IMAGE_ID            ImageId,
-IN OUT    EFI_IMAGE_OUTPUT        **Blt,
-IN        UINTN                   BltX,
-IN        UINTN                   BltY
-);
-
+  IN CONST  EFI_HII_IMAGE_PROTOCOL  *This,
+  IN        EFI_HII_DRAW_FLAGS      Flags,
+  IN        EFI_HII_HANDLE          PackageList,
+  IN        EFI_IMAGE_ID            ImageId,
+  IN OUT    EFI_IMAGE_OUTPUT        **Blt,
+  IN        UINTN                   BltX,
+  IN        UINTN                   BltY
+  );
 
 ///
 /// Services to access to images in the images database.
 ///
 struct _EFI_HII_IMAGE_PROTOCOL {
-  EFI_HII_NEW_IMAGE     NewImage;
-  EFI_HII_GET_IMAGE     GetImage;
-  EFI_HII_SET_IMAGE     SetImage;
-  EFI_HII_DRAW_IMAGE    DrawImage;
-  EFI_HII_DRAW_IMAGE_ID DrawImageId;
+  EFI_HII_NEW_IMAGE        NewImage;
+  EFI_HII_GET_IMAGE        GetImage;
+  EFI_HII_SET_IMAGE        SetImage;
+  EFI_HII_DRAW_IMAGE       DrawImage;
+  EFI_HII_DRAW_IMAGE_ID    DrawImageId;
 };
 
-extern EFI_GUID gEfiHiiImageProtocolGuid;
+extern EFI_GUID  gEfiHiiImageProtocolGuid;
 
 #endif
-
-
diff --git a/src/include/ipxe/efi/Protocol/Ip4.h b/src/include/ipxe/efi/Protocol/Ip4.h
index f174c0c..0455c7b 100644
--- a/src/include/ipxe/efi/Protocol/Ip4.h
+++ b/src/include/ipxe/efi/Protocol/Ip4.h
@@ -10,14 +10,8 @@
   Protocol (ICMP) and may include support for the Internet Group Management
   Protocol (IGMP).
 
-Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol is introduced in UEFI Specification 2.0.
@@ -27,7 +21,7 @@
 #ifndef __EFI_IP4_PROTOCOL_H__
 #define __EFI_IP4_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/ManagedNetwork.h>
 
@@ -48,9 +42,9 @@
 /// The definition in here is only present to provide backwards compatability.
 ///
 typedef struct {
-  EFI_HANDLE              InstanceHandle;
-  EFI_IPv4_ADDRESS        Ip4Address;
-  EFI_IPv4_ADDRESS        SubnetMask;
+  EFI_HANDLE          InstanceHandle;
+  EFI_IPv4_ADDRESS    Ip4Address;
+  EFI_IPv4_ADDRESS    SubnetMask;
 } EFI_IP4_ADDRESS_PAIR;
 
 ///
@@ -68,182 +62,178 @@
   /// The default IPv4 protocol packets to send and receive. Ignored
   /// when AcceptPromiscuous is TRUE.
   ///
-  UINT8                   DefaultProtocol;
+  UINT8               DefaultProtocol;
   ///
   /// Set to TRUE to receive all IPv4 packets that get through the receive filters.
   /// Set to FALSE to receive only the DefaultProtocol IPv4
   /// packets that get through the receive filters.
   ///
-  BOOLEAN                 AcceptAnyProtocol;
+  BOOLEAN             AcceptAnyProtocol;
   ///
   /// Set to TRUE to receive ICMP error report packets. Ignored when
   /// AcceptPromiscuous or AcceptAnyProtocol is TRUE.
   ///
-  BOOLEAN                 AcceptIcmpErrors;
+  BOOLEAN             AcceptIcmpErrors;
   ///
   /// Set to TRUE to receive broadcast IPv4 packets. Ignored when
   /// AcceptPromiscuous is TRUE.
   /// Set to FALSE to stop receiving broadcast IPv4 packets.
   ///
-  BOOLEAN                 AcceptBroadcast;
+  BOOLEAN             AcceptBroadcast;
   ///
   /// Set to TRUE to receive all IPv4 packets that are sent to any
   /// hardware address or any protocol address.
   /// Set to FALSE to stop receiving all promiscuous IPv4 packets
   ///
-  BOOLEAN                 AcceptPromiscuous;
+  BOOLEAN             AcceptPromiscuous;
   ///
   /// Set to TRUE to use the default IPv4 address and default routing table.
   ///
-  BOOLEAN                 UseDefaultAddress;
+  BOOLEAN             UseDefaultAddress;
   ///
   /// The station IPv4 address that will be assigned to this EFI IPv4Protocol instance.
   ///
-  EFI_IPv4_ADDRESS        StationAddress;
+  EFI_IPv4_ADDRESS    StationAddress;
   ///
   /// The subnet address mask that is associated with the station address.
   ///
-  EFI_IPv4_ADDRESS        SubnetMask;
+  EFI_IPv4_ADDRESS    SubnetMask;
   ///
   /// TypeOfService field in transmitted IPv4 packets.
   ///
-  UINT8                   TypeOfService;
+  UINT8               TypeOfService;
   ///
   /// TimeToLive field in transmitted IPv4 packets.
   ///
-  UINT8                   TimeToLive;
+  UINT8               TimeToLive;
   ///
   /// State of the DoNotFragment bit in transmitted IPv4 packets.
   ///
-  BOOLEAN                 DoNotFragment;
+  BOOLEAN             DoNotFragment;
   ///
   /// Set to TRUE to send and receive unformatted packets. The other
   /// IPv4 receive filters are still applied. Fragmentation is disabled for RawData mode.
   ///
-  BOOLEAN                 RawData;
+  BOOLEAN             RawData;
   ///
   /// The timer timeout value (number of microseconds) for the
   /// receive timeout event to be associated with each assembled
   /// packet. Zero means do not drop assembled packets.
   ///
-  UINT32                  ReceiveTimeout;
+  UINT32              ReceiveTimeout;
   ///
   /// The timer timeout value (number of microseconds) for the
   /// transmit timeout event to be associated with each outgoing
   /// packet. Zero means do not drop outgoing packets.
   ///
-  UINT32                  TransmitTimeout;
+  UINT32              TransmitTimeout;
 } EFI_IP4_CONFIG_DATA;
 
-
 typedef struct {
-  EFI_IPv4_ADDRESS        SubnetAddress;
-  EFI_IPv4_ADDRESS        SubnetMask;
-  EFI_IPv4_ADDRESS        GatewayAddress;
+  EFI_IPv4_ADDRESS    SubnetAddress;
+  EFI_IPv4_ADDRESS    SubnetMask;
+  EFI_IPv4_ADDRESS    GatewayAddress;
 } EFI_IP4_ROUTE_TABLE;
 
 typedef struct {
-  UINT8                   Type;
-  UINT8                   Code;
+  UINT8    Type;
+  UINT8    Code;
 } EFI_IP4_ICMP_TYPE;
 
 typedef struct {
   ///
   /// Set to TRUE after this EFI IPv4 Protocol instance has been successfully configured.
   ///
-  BOOLEAN                 IsStarted;
+  BOOLEAN                IsStarted;
   ///
   /// The maximum packet size, in bytes, of the packet which the upper layer driver could feed.
   ///
-  UINT32                  MaxPacketSize;
+  UINT32                 MaxPacketSize;
   ///
   /// Current configuration settings.
   ///
-  EFI_IP4_CONFIG_DATA     ConfigData;
+  EFI_IP4_CONFIG_DATA    ConfigData;
   ///
   /// Set to TRUE when the EFI IPv4 Protocol instance has a station address and subnet mask.
   ///
-  BOOLEAN                 IsConfigured;
+  BOOLEAN                IsConfigured;
   ///
   /// Number of joined multicast groups.
   ///
-  UINT32                  GroupCount;
+  UINT32                 GroupCount;
   ///
   /// List of joined multicast group addresses.
   ///
-  EFI_IPv4_ADDRESS        *GroupTable;
+  EFI_IPv4_ADDRESS       *GroupTable;
   ///
   /// Number of entries in the routing table.
   ///
-  UINT32                  RouteCount;
+  UINT32                 RouteCount;
   ///
   /// Routing table entries.
   ///
-  EFI_IP4_ROUTE_TABLE     *RouteTable;
+  EFI_IP4_ROUTE_TABLE    *RouteTable;
   ///
   /// Number of entries in the supported ICMP types list.
   ///
-  UINT32                  IcmpTypeCount;
+  UINT32                 IcmpTypeCount;
   ///
   /// Array of ICMP types and codes that are supported by this EFI IPv4 Protocol driver
   ///
-  EFI_IP4_ICMP_TYPE       *IcmpTypeList;
+  EFI_IP4_ICMP_TYPE      *IcmpTypeList;
 } EFI_IP4_MODE_DATA;
 
 #pragma pack(1)
 
 typedef struct {
-  UINT8                   HeaderLength:4;
-  UINT8                   Version:4;
-  UINT8                   TypeOfService;
-  UINT16                  TotalLength;
-  UINT16                  Identification;
-  UINT16                  Fragmentation;
-  UINT8                   TimeToLive;
-  UINT8                   Protocol;
-  UINT16                  Checksum;
-  EFI_IPv4_ADDRESS        SourceAddress;
-  EFI_IPv4_ADDRESS        DestinationAddress;
+  UINT8               HeaderLength : 4;
+  UINT8               Version      : 4;
+  UINT8               TypeOfService;
+  UINT16              TotalLength;
+  UINT16              Identification;
+  UINT16              Fragmentation;
+  UINT8               TimeToLive;
+  UINT8               Protocol;
+  UINT16              Checksum;
+  EFI_IPv4_ADDRESS    SourceAddress;
+  EFI_IPv4_ADDRESS    DestinationAddress;
 } EFI_IP4_HEADER;
 #pragma pack()
 
-
 typedef struct {
-  UINT32                  FragmentLength;
-  VOID                    *FragmentBuffer;
+  UINT32    FragmentLength;
+  VOID      *FragmentBuffer;
 } EFI_IP4_FRAGMENT_DATA;
 
-
 typedef struct {
-  EFI_TIME               TimeStamp;
-  EFI_EVENT              RecycleSignal;
-  UINT32                 HeaderLength;
-  EFI_IP4_HEADER         *Header;
-  UINT32                 OptionsLength;
-  VOID                   *Options;
-  UINT32                 DataLength;
-  UINT32                 FragmentCount;
-  EFI_IP4_FRAGMENT_DATA  FragmentTable[1];
+  EFI_TIME                 TimeStamp;
+  EFI_EVENT                RecycleSignal;
+  UINT32                   HeaderLength;
+  EFI_IP4_HEADER           *Header;
+  UINT32                   OptionsLength;
+  VOID                     *Options;
+  UINT32                   DataLength;
+  UINT32                   FragmentCount;
+  EFI_IP4_FRAGMENT_DATA    FragmentTable[1];
 } EFI_IP4_RECEIVE_DATA;
 
-
 typedef struct {
-  EFI_IPv4_ADDRESS       SourceAddress;
-  EFI_IPv4_ADDRESS       GatewayAddress;
-  UINT8                  Protocol;
-  UINT8                  TypeOfService;
-  UINT8                  TimeToLive;
-  BOOLEAN                DoNotFragment;
+  EFI_IPv4_ADDRESS    SourceAddress;
+  EFI_IPv4_ADDRESS    GatewayAddress;
+  UINT8               Protocol;
+  UINT8               TypeOfService;
+  UINT8               TimeToLive;
+  BOOLEAN             DoNotFragment;
 } EFI_IP4_OVERRIDE_DATA;
 
 typedef struct {
-  EFI_IPv4_ADDRESS       DestinationAddress;
-  EFI_IP4_OVERRIDE_DATA  *OverrideData;      //OPTIONAL
-  UINT32                 OptionsLength;      //OPTIONAL
-  VOID                   *OptionsBuffer;     //OPTIONAL
-  UINT32                 TotalDataLength;
-  UINT32                 FragmentCount;
-  EFI_IP4_FRAGMENT_DATA  FragmentTable[1];
+  EFI_IPv4_ADDRESS         DestinationAddress;
+  EFI_IP4_OVERRIDE_DATA    *OverrideData;    // OPTIONAL
+  UINT32                   OptionsLength;    // OPTIONAL
+  VOID                     *OptionsBuffer;   // OPTIONAL
+  UINT32                   TotalDataLength;
+  UINT32                   FragmentCount;
+  EFI_IP4_FRAGMENT_DATA    FragmentTable[1];
 } EFI_IP4_TRANSMIT_DATA;
 
 typedef struct {
@@ -253,21 +243,21 @@
   /// EFI_NOTIFY_SIGNAL. The Task Priority Level (TPL) of
   /// Event must be lower than or equal to TPL_CALLBACK.
   ///
-  EFI_EVENT                Event;
+  EFI_EVENT     Event;
   ///
   /// The status that is returned to the caller at the end of the operation
   /// to indicate whether this operation completed successfully.
   ///
-  EFI_STATUS               Status;
+  EFI_STATUS    Status;
   union {
     ///
     /// When this token is used for receiving, RxData is a pointer to the EFI_IP4_RECEIVE_DATA.
     ///
-    EFI_IP4_RECEIVE_DATA   *RxData;
+    EFI_IP4_RECEIVE_DATA     *RxData;
     ///
     /// When this token is used for transmitting, TxData is a pointer to the EFI_IP4_TRANSMIT_DATA.
     ///
-    EFI_IP4_TRANSMIT_DATA  *TxData;
+    EFI_IP4_TRANSMIT_DATA    *TxData;
   } Packet;
 } EFI_IP4_COMPLETION_TOKEN;
 
@@ -598,17 +588,17 @@
 /// used by drivers, daemons, and applications to transmit and receive network packets.
 ///
 struct _EFI_IP4_PROTOCOL {
-  EFI_IP4_GET_MODE_DATA        GetModeData;
-  EFI_IP4_CONFIGURE            Configure;
-  EFI_IP4_GROUPS               Groups;
-  EFI_IP4_ROUTES               Routes;
-  EFI_IP4_TRANSMIT             Transmit;
-  EFI_IP4_RECEIVE              Receive;
-  EFI_IP4_CANCEL               Cancel;
-  EFI_IP4_POLL                 Poll;
+  EFI_IP4_GET_MODE_DATA    GetModeData;
+  EFI_IP4_CONFIGURE        Configure;
+  EFI_IP4_GROUPS           Groups;
+  EFI_IP4_ROUTES           Routes;
+  EFI_IP4_TRANSMIT         Transmit;
+  EFI_IP4_RECEIVE          Receive;
+  EFI_IP4_CANCEL           Cancel;
+  EFI_IP4_POLL             Poll;
 };
 
-extern EFI_GUID gEfiIp4ServiceBindingProtocolGuid;
-extern EFI_GUID gEfiIp4ProtocolGuid;
+extern EFI_GUID  gEfiIp4ServiceBindingProtocolGuid;
+extern EFI_GUID  gEfiIp4ProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/Ip4Config.h b/src/include/ipxe/efi/Protocol/Ip4Config.h
index 227ae03..ff47fd2 100644
--- a/src/include/ipxe/efi/Protocol/Ip4Config.h
+++ b/src/include/ipxe/efi/Protocol/Ip4Config.h
@@ -2,23 +2,18 @@
   This file provides a definition of the EFI IPv4 Configuration
   Protocol.
 
-Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol is introduced in UEFI Specification 2.0.
 
 **/
+
 #ifndef __EFI_IP4CONFIG_PROTOCOL_H__
 #define __EFI_IP4CONFIG_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/Ip4.h>
 
@@ -44,23 +39,22 @@
   ///
   /// Default station IP address, stored in network byte order.
   ///
-  EFI_IPv4_ADDRESS             StationAddress;
+  EFI_IPv4_ADDRESS       StationAddress;
   ///
   /// Default subnet mask, stored in network byte order.
   ///
-  EFI_IPv4_ADDRESS             SubnetMask;
+  EFI_IPv4_ADDRESS       SubnetMask;
   ///
   /// Number of entries in the following RouteTable. May be zero.
   ///
-  UINT32                       RouteTableSize;
+  UINT32                 RouteTableSize;
   ///
   /// Default routing table data (stored in network byte order).
   /// Ignored if RouteTableSize is zero.
   ///
-  EFI_IP4_ROUTE_TABLE          *RouteTable;
+  EFI_IP4_ROUTE_TABLE    *RouteTable;
 } EFI_IP4_IPCONFIG_DATA;
 
-
 /**
   Starts running the configuration policy for the EFI IPv4 Protocol driver.
 
@@ -174,11 +168,11 @@
 /// configurations for the EFI IPv4 Protocol driver.
 ///
 struct _EFI_IP4_CONFIG_PROTOCOL {
-  EFI_IP4_CONFIG_START         Start;
-  EFI_IP4_CONFIG_STOP          Stop;
-  EFI_IP4_CONFIG_GET_DATA      GetData;
+  EFI_IP4_CONFIG_START       Start;
+  EFI_IP4_CONFIG_STOP        Stop;
+  EFI_IP4_CONFIG_GET_DATA    GetData;
 };
 
-extern EFI_GUID gEfiIp4ConfigProtocolGuid;
+extern EFI_GUID  gEfiIp4ConfigProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/LoadFile.h b/src/include/ipxe/efi/Protocol/LoadFile.h
index ba80fdc..034b22b 100644
--- a/src/include/ipxe/efi/Protocol/LoadFile.h
+++ b/src/include/ipxe/efi/Protocol/LoadFile.h
@@ -7,21 +7,15 @@
 
   UEFI 2.0 can boot from any device that produces a LoadFile protocol.
 
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __EFI_LOAD_FILE_PROTOCOL_H__
 #define __EFI_LOAD_FILE_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_LOAD_FILE_PROTOCOL_GUID \
   { \
@@ -31,14 +25,14 @@
 ///
 /// Protocol Guid defined by EFI1.1.
 ///
-#define LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL_GUID
+#define LOAD_FILE_PROTOCOL  EFI_LOAD_FILE_PROTOCOL_GUID
 
 typedef struct _EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL;
 
 ///
 /// Backward-compatible with EFI1.1
 ///
-typedef EFI_LOAD_FILE_PROTOCOL  EFI_LOAD_FILE_INTERFACE;
+typedef EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_INTERFACE;
 
 /**
   Causes the driver to load a specified file.
@@ -82,9 +76,9 @@
 /// The EFI_LOAD_FILE_PROTOCOL is a simple protocol used to obtain files from arbitrary devices.
 ///
 struct _EFI_LOAD_FILE_PROTOCOL {
-  EFI_LOAD_FILE LoadFile;
+  EFI_LOAD_FILE    LoadFile;
 };
 
-extern EFI_GUID gEfiLoadFileProtocolGuid;
+extern EFI_GUID  gEfiLoadFileProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/LoadFile2.h b/src/include/ipxe/efi/Protocol/LoadFile2.h
index 6cb26ff..2cb155d 100644
--- a/src/include/ipxe/efi/Protocol/LoadFile2.h
+++ b/src/include/ipxe/efi/Protocol/LoadFile2.h
@@ -7,21 +7,15 @@
 
   UEFI 2.0 can boot from any device that produces a LoadFile protocol.
 
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __EFI_LOAD_FILE2_PROTOCOL_H__
 #define __EFI_LOAD_FILE2_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_LOAD_FILE2_PROTOCOL_GUID \
   { \
@@ -31,11 +25,10 @@
 ///
 /// Protocol Guid defined by UEFI2.1.
 ///
-#define LOAD_FILE2_PROTOCOL EFI_LOAD_FILE2_PROTOCOL_GUID
+#define LOAD_FILE2_PROTOCOL  EFI_LOAD_FILE2_PROTOCOL_GUID
 
 typedef struct _EFI_LOAD_FILE2_PROTOCOL EFI_LOAD_FILE2_PROTOCOL;
 
-
 /**
   Causes the driver to load a specified file.
 
@@ -79,9 +72,9 @@
 /// The EFI_LOAD_FILE_PROTOCOL is a simple protocol used to obtain files from arbitrary devices.
 ///
 struct _EFI_LOAD_FILE2_PROTOCOL {
-  EFI_LOAD_FILE2 LoadFile;
+  EFI_LOAD_FILE2    LoadFile;
 };
 
-extern EFI_GUID gEfiLoadFile2ProtocolGuid;
+extern EFI_GUID  gEfiLoadFile2ProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/LoadedImage.h b/src/include/ipxe/efi/Protocol/LoadedImage.h
index cbe4103..db331b8 100755
--- a/src/include/ipxe/efi/Protocol/LoadedImage.h
+++ b/src/include/ipxe/efi/Protocol/LoadedImage.h
@@ -4,21 +4,15 @@
   Every EFI driver and application is passed an image handle when it is loaded.
   This image handle will contain a Loaded Image Protocol.
 
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __LOADED_IMAGE_PROTOCOL_H__
 #define __LOADED_IMAGE_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_LOADED_IMAGE_PROTOCOL_GUID \
   { \
@@ -33,7 +27,7 @@
 ///
 /// Protocol GUID defined in EFI1.1.
 ///
-#define LOADED_IMAGE_PROTOCOL   EFI_LOADED_IMAGE_PROTOCOL_GUID
+#define LOADED_IMAGE_PROTOCOL  EFI_LOADED_IMAGE_PROTOCOL_GUID
 
 ///
 /// EFI_SYSTEM_TABLE & EFI_IMAGE_UNLOAD are defined in EfiApi.h
@@ -43,40 +37,40 @@
 ///
 /// Revision defined in EFI1.1.
 ///
-#define EFI_LOADED_IMAGE_INFORMATION_REVISION    EFI_LOADED_IMAGE_PROTOCOL_REVISION
+#define EFI_LOADED_IMAGE_INFORMATION_REVISION  EFI_LOADED_IMAGE_PROTOCOL_REVISION
 
 ///
 /// Can be used on any image handle to obtain information about the loaded image.
 ///
 typedef struct {
-  UINT32            Revision;       ///< Defines the revision of the EFI_LOADED_IMAGE_PROTOCOL structure.
-                                    ///< All future revisions will be backward compatible to the current revision.
-  EFI_HANDLE        ParentHandle;   ///< Parent image's image handle. NULL if the image is loaded directly from
-                                    ///< the firmware's boot manager.
-  EFI_SYSTEM_TABLE  *SystemTable;   ///< the image's EFI system table pointer.
+  UINT32                      Revision;     ///< Defines the revision of the EFI_LOADED_IMAGE_PROTOCOL structure.
+                                            ///< All future revisions will be backward compatible to the current revision.
+  EFI_HANDLE                  ParentHandle; ///< Parent image's image handle. NULL if the image is loaded directly from
+                                            ///< the firmware's boot manager.
+  EFI_SYSTEM_TABLE            *SystemTable; ///< the image's EFI system table pointer.
 
   //
   // Source location of image
   //
-  EFI_HANDLE        DeviceHandle;   ///< The device handle that the EFI Image was loaded from.
-  EFI_DEVICE_PATH_PROTOCOL  *FilePath;  ///< A pointer to the file path portion specific to DeviceHandle
-                                        ///< that the EFI Image was loaded from.
-  VOID              *Reserved;      ///< Reserved. DO NOT USE.
+  EFI_HANDLE                  DeviceHandle; ///< The device handle that the EFI Image was loaded from.
+  EFI_DEVICE_PATH_PROTOCOL    *FilePath;    ///< A pointer to the file path portion specific to DeviceHandle
+                                            ///< that the EFI Image was loaded from.
+  VOID                        *Reserved;    ///< Reserved. DO NOT USE.
 
   //
   // Images load options
   //
-  UINT32            LoadOptionsSize;///< The size in bytes of LoadOptions.
-  VOID              *LoadOptions;   ///< A pointer to the image's binary load options.
+  UINT32                      LoadOptionsSize; ///< The size in bytes of LoadOptions.
+  VOID                        *LoadOptions;    ///< A pointer to the image's binary load options.
 
   //
   // Location of where image was loaded
   //
-  VOID              *ImageBase;     ///< The base address at which the image was loaded.
-  UINT64            ImageSize;      ///< The size in bytes of the loaded image.
-  EFI_MEMORY_TYPE   ImageCodeType;  ///< The memory type that the code sections were loaded as.
-  EFI_MEMORY_TYPE   ImageDataType;  ///< The memory type that the data sections were loaded as.
-  EFI_IMAGE_UNLOAD  Unload;
+  VOID                        *ImageBase;    ///< The base address at which the image was loaded.
+  UINT64                      ImageSize;     ///< The size in bytes of the loaded image.
+  EFI_MEMORY_TYPE             ImageCodeType; ///< The memory type that the code sections were loaded as.
+  EFI_MEMORY_TYPE             ImageDataType; ///< The memory type that the data sections were loaded as.
+  EFI_IMAGE_UNLOAD            Unload;
 } EFI_LOADED_IMAGE_PROTOCOL;
 
 //
@@ -84,7 +78,7 @@
 //
 typedef EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE;
 
-extern EFI_GUID gEfiLoadedImageProtocolGuid;
-extern EFI_GUID gEfiLoadedImageDevicePathProtocolGuid;
+extern EFI_GUID  gEfiLoadedImageProtocolGuid;
+extern EFI_GUID  gEfiLoadedImageDevicePathProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/ManagedNetwork.h b/src/include/ipxe/efi/Protocol/ManagedNetwork.h
index 2bd0922..44a27ed 100644
--- a/src/include/ipxe/efi/Protocol/ManagedNetwork.h
+++ b/src/include/ipxe/efi/Protocol/ManagedNetwork.h
@@ -2,14 +2,8 @@
   EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL as defined in UEFI 2.0.
   EFI_MANAGED_NETWORK_PROTOCOL as defined in UEFI 2.0.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol is introduced in UEFI Specification 2.0
@@ -19,7 +13,7 @@
 #ifndef __EFI_MANAGED_NETWORK_PROTOCOL_H__
 #define __EFI_MANAGED_NETWORK_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/SimpleNetwork.h>
 
@@ -92,38 +86,37 @@
 } EFI_MANAGED_NETWORK_CONFIG_DATA;
 
 typedef struct {
-  EFI_TIME      Timestamp;
-  EFI_EVENT     RecycleEvent;
-  UINT32        PacketLength;
-  UINT32        HeaderLength;
-  UINT32        AddressLength;
-  UINT32        DataLength;
-  BOOLEAN       BroadcastFlag;
-  BOOLEAN       MulticastFlag;
-  BOOLEAN       PromiscuousFlag;
-  UINT16        ProtocolType;
-  VOID          *DestinationAddress;
-  VOID          *SourceAddress;
-  VOID          *MediaHeader;
-  VOID          *PacketData;
+  EFI_TIME     Timestamp;
+  EFI_EVENT    RecycleEvent;
+  UINT32       PacketLength;
+  UINT32       HeaderLength;
+  UINT32       AddressLength;
+  UINT32       DataLength;
+  BOOLEAN      BroadcastFlag;
+  BOOLEAN      MulticastFlag;
+  BOOLEAN      PromiscuousFlag;
+  UINT16       ProtocolType;
+  VOID         *DestinationAddress;
+  VOID         *SourceAddress;
+  VOID         *MediaHeader;
+  VOID         *PacketData;
 } EFI_MANAGED_NETWORK_RECEIVE_DATA;
 
 typedef struct {
-  UINT32        FragmentLength;
-  VOID          *FragmentBuffer;
+  UINT32    FragmentLength;
+  VOID      *FragmentBuffer;
 } EFI_MANAGED_NETWORK_FRAGMENT_DATA;
 
 typedef struct {
-  EFI_MAC_ADDRESS                   *DestinationAddress; //OPTIONAL
-  EFI_MAC_ADDRESS                   *SourceAddress;      //OPTIONAL
-  UINT16                            ProtocolType;        //OPTIONAL
-  UINT32                            DataLength;
-  UINT16                            HeaderLength;        //OPTIONAL
-  UINT16                            FragmentCount;
-  EFI_MANAGED_NETWORK_FRAGMENT_DATA FragmentTable[1];
+  EFI_MAC_ADDRESS                      *DestinationAddress; // OPTIONAL
+  EFI_MAC_ADDRESS                      *SourceAddress;      // OPTIONAL
+  UINT16                               ProtocolType;        // OPTIONAL
+  UINT32                               DataLength;
+  UINT16                               HeaderLength;     // OPTIONAL
+  UINT16                               FragmentCount;
+  EFI_MANAGED_NETWORK_FRAGMENT_DATA    FragmentTable[1];
 } EFI_MANAGED_NETWORK_TRANSMIT_DATA;
 
-
 typedef struct {
   ///
   /// This Event will be signaled after the Status field is updated
@@ -131,21 +124,21 @@
   /// EFI_NOTIFY_SIGNAL. The Task Priority Level (TPL) of
   /// Event must be lower than or equal to TPL_CALLBACK.
   ///
-  EFI_EVENT                             Event;
+  EFI_EVENT     Event;
   ///
   /// The status that is returned to the caller at the end of the operation
   /// to indicate whether this operation completed successfully.
   ///
-  EFI_STATUS                            Status;
+  EFI_STATUS    Status;
   union {
     ///
     /// When this token is used for receiving, RxData is a pointer to the EFI_MANAGED_NETWORK_RECEIVE_DATA.
     ///
-    EFI_MANAGED_NETWORK_RECEIVE_DATA    *RxData;
+    EFI_MANAGED_NETWORK_RECEIVE_DATA     *RxData;
     ///
     /// When this token is used for transmitting, TxData is a pointer to the EFI_MANAGED_NETWORK_TRANSMIT_DATA.
     ///
-    EFI_MANAGED_NETWORK_TRANSMIT_DATA   *TxData;
+    EFI_MANAGED_NETWORK_TRANSMIT_DATA    *TxData;
   } Packet;
 } EFI_MANAGED_NETWORK_COMPLETION_TOKEN;
 
@@ -306,7 +299,6 @@
   IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN  *Token
   );
 
-
 /**
   Aborts an asynchronous transmit or receive request.
 
@@ -358,17 +350,17 @@
 /// perform raw (unformatted) asynchronous network packet I/O.
 ///
 struct _EFI_MANAGED_NETWORK_PROTOCOL {
-  EFI_MANAGED_NETWORK_GET_MODE_DATA       GetModeData;
-  EFI_MANAGED_NETWORK_CONFIGURE           Configure;
-  EFI_MANAGED_NETWORK_MCAST_IP_TO_MAC     McastIpToMac;
-  EFI_MANAGED_NETWORK_GROUPS              Groups;
-  EFI_MANAGED_NETWORK_TRANSMIT            Transmit;
-  EFI_MANAGED_NETWORK_RECEIVE             Receive;
-  EFI_MANAGED_NETWORK_CANCEL              Cancel;
-  EFI_MANAGED_NETWORK_POLL                Poll;
+  EFI_MANAGED_NETWORK_GET_MODE_DATA      GetModeData;
+  EFI_MANAGED_NETWORK_CONFIGURE          Configure;
+  EFI_MANAGED_NETWORK_MCAST_IP_TO_MAC    McastIpToMac;
+  EFI_MANAGED_NETWORK_GROUPS             Groups;
+  EFI_MANAGED_NETWORK_TRANSMIT           Transmit;
+  EFI_MANAGED_NETWORK_RECEIVE            Receive;
+  EFI_MANAGED_NETWORK_CANCEL             Cancel;
+  EFI_MANAGED_NETWORK_POLL               Poll;
 };
 
-extern EFI_GUID gEfiManagedNetworkServiceBindingProtocolGuid;
-extern EFI_GUID gEfiManagedNetworkProtocolGuid;
+extern EFI_GUID  gEfiManagedNetworkServiceBindingProtocolGuid;
+extern EFI_GUID  gEfiManagedNetworkProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/Mtftp4.h b/src/include/ipxe/efi/Protocol/Mtftp4.h
index bc0a839..4890c8a 100644
--- a/src/include/ipxe/efi/Protocol/Mtftp4.h
+++ b/src/include/ipxe/efi/Protocol/Mtftp4.h
@@ -1,14 +1,8 @@
 /** @file
   EFI Multicast Trivial File Transfer Protocol Definition
 
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol is introduced in UEFI Specification 2.0
@@ -18,7 +12,7 @@
 #ifndef __EFI_MTFTP4_PROTOCOL_H__
 #define __EFI_MTFTP4_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID \
   { \
@@ -30,21 +24,21 @@
     0x78247c57, 0x63db, 0x4708, {0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b } \
   }
 
-typedef struct _EFI_MTFTP4_PROTOCOL EFI_MTFTP4_PROTOCOL;
-typedef struct _EFI_MTFTP4_TOKEN EFI_MTFTP4_TOKEN;
+typedef struct _EFI_MTFTP4_PROTOCOL  EFI_MTFTP4_PROTOCOL;
+typedef struct _EFI_MTFTP4_TOKEN     EFI_MTFTP4_TOKEN;
 
 //
-//MTFTP4 packet opcode definition
+// MTFTP4 packet opcode definition
 //
-#define EFI_MTFTP4_OPCODE_RRQ                     1
-#define EFI_MTFTP4_OPCODE_WRQ                     2
-#define EFI_MTFTP4_OPCODE_DATA                    3
-#define EFI_MTFTP4_OPCODE_ACK                     4
-#define EFI_MTFTP4_OPCODE_ERROR                   5
-#define EFI_MTFTP4_OPCODE_OACK                    6
-#define EFI_MTFTP4_OPCODE_DIR                     7
-#define EFI_MTFTP4_OPCODE_DATA8                   8
-#define EFI_MTFTP4_OPCODE_ACK8                    9
+#define EFI_MTFTP4_OPCODE_RRQ    1
+#define EFI_MTFTP4_OPCODE_WRQ    2
+#define EFI_MTFTP4_OPCODE_DATA   3
+#define EFI_MTFTP4_OPCODE_ACK    4
+#define EFI_MTFTP4_OPCODE_ERROR  5
+#define EFI_MTFTP4_OPCODE_OACK   6
+#define EFI_MTFTP4_OPCODE_DIR    7
+#define EFI_MTFTP4_OPCODE_DATA8  8
+#define EFI_MTFTP4_OPCODE_ACK8   9
 
 //
 // MTFTP4 error code definition
@@ -65,80 +59,80 @@
 #pragma pack(1)
 
 typedef struct {
-  UINT16                  OpCode;
-  UINT8                   Filename[1];
+  UINT16    OpCode;
+  UINT8     Filename[1];
 } EFI_MTFTP4_REQ_HEADER;
 
 typedef struct {
-  UINT16                  OpCode;
-  UINT8                   Data[1];
+  UINT16    OpCode;
+  UINT8     Data[1];
 } EFI_MTFTP4_OACK_HEADER;
 
 typedef struct {
-  UINT16                  OpCode;
-  UINT16                  Block;
-  UINT8                   Data[1];
+  UINT16    OpCode;
+  UINT16    Block;
+  UINT8     Data[1];
 } EFI_MTFTP4_DATA_HEADER;
 
 typedef struct {
-  UINT16                  OpCode;
-  UINT16                  Block[1];
+  UINT16    OpCode;
+  UINT16    Block[1];
 } EFI_MTFTP4_ACK_HEADER;
 
 typedef struct {
-  UINT16                  OpCode;
-  UINT64                  Block;
-  UINT8                   Data[1];
+  UINT16    OpCode;
+  UINT64    Block;
+  UINT8     Data[1];
 } EFI_MTFTP4_DATA8_HEADER;
 
 typedef struct {
-  UINT16                  OpCode;
-  UINT64                  Block[1];
+  UINT16    OpCode;
+  UINT64    Block[1];
 } EFI_MTFTP4_ACK8_HEADER;
 
 typedef struct {
-  UINT16                  OpCode;
-  UINT16                  ErrorCode;
-  UINT8                   ErrorMessage[1];
+  UINT16    OpCode;
+  UINT16    ErrorCode;
+  UINT8     ErrorMessage[1];
 } EFI_MTFTP4_ERROR_HEADER;
 
 typedef union {
   ///
   /// Type of packets as defined by the MTFTPv4 packet opcodes.
   ///
-  UINT16                  OpCode;
+  UINT16                     OpCode;
   ///
   /// Read request packet header.
   ///
-  EFI_MTFTP4_REQ_HEADER   Rrq;
+  EFI_MTFTP4_REQ_HEADER      Rrq;
   ///
   /// Write request packet header.
   ///
-  EFI_MTFTP4_REQ_HEADER   Wrq;
+  EFI_MTFTP4_REQ_HEADER      Wrq;
   ///
   /// Option acknowledge packet header.
   ///
-  EFI_MTFTP4_OACK_HEADER  Oack;
+  EFI_MTFTP4_OACK_HEADER     Oack;
   ///
   /// Data packet header.
   ///
-  EFI_MTFTP4_DATA_HEADER  Data;
+  EFI_MTFTP4_DATA_HEADER     Data;
   ///
   /// Acknowledgement packet header.
   ///
-  EFI_MTFTP4_ACK_HEADER   Ack;
+  EFI_MTFTP4_ACK_HEADER      Ack;
   ///
   /// Data packet header with big block number.
   ///
-  EFI_MTFTP4_DATA8_HEADER Data8;
+  EFI_MTFTP4_DATA8_HEADER    Data8;
   ///
   /// Acknowledgement header with big block num.
   ///
-  EFI_MTFTP4_ACK8_HEADER  Ack8;
+  EFI_MTFTP4_ACK8_HEADER     Ack8;
   ///
   /// Error packet header.
   ///
-  EFI_MTFTP4_ERROR_HEADER Error;
+  EFI_MTFTP4_ERROR_HEADER    Error;
 } EFI_MTFTP4_PACKET;
 
 #pragma pack()
@@ -147,39 +141,36 @@
 /// MTFTP4 option definition.
 ///
 typedef struct {
-  UINT8                   *OptionStr;
-  UINT8                   *ValueStr;
+  UINT8    *OptionStr;
+  UINT8    *ValueStr;
 } EFI_MTFTP4_OPTION;
 
-
 typedef struct {
-  BOOLEAN                 UseDefaultSetting;
-  EFI_IPv4_ADDRESS        StationIp;
-  EFI_IPv4_ADDRESS        SubnetMask;
-  UINT16                  LocalPort;
-  EFI_IPv4_ADDRESS        GatewayIp;
-  EFI_IPv4_ADDRESS        ServerIp;
-  UINT16                  InitialServerPort;
-  UINT16                  TryCount;
-  UINT16                  TimeoutValue;
+  BOOLEAN             UseDefaultSetting;
+  EFI_IPv4_ADDRESS    StationIp;
+  EFI_IPv4_ADDRESS    SubnetMask;
+  UINT16              LocalPort;
+  EFI_IPv4_ADDRESS    GatewayIp;
+  EFI_IPv4_ADDRESS    ServerIp;
+  UINT16              InitialServerPort;
+  UINT16              TryCount;
+  UINT16              TimeoutValue;
 } EFI_MTFTP4_CONFIG_DATA;
 
-
 typedef struct {
-  EFI_MTFTP4_CONFIG_DATA  ConfigData;
-  UINT8                   SupportedOptionCount;
-  UINT8                   **SupportedOptoins;
-  UINT8                   UnsupportedOptionCount;
-  UINT8                   **UnsupportedOptoins;
+  EFI_MTFTP4_CONFIG_DATA    ConfigData;
+  UINT8                     SupportedOptionCount;
+  UINT8                     **SupportedOptoins;
+  UINT8                     UnsupportedOptionCount;
+  UINT8                     **UnsupportedOptoins;
 } EFI_MTFTP4_MODE_DATA;
 
-
 typedef struct {
-  EFI_IPv4_ADDRESS        GatewayIp;
-  EFI_IPv4_ADDRESS        ServerIp;
-  UINT16                  ServerPort;
-  UINT16                  TryCount;
-  UINT16                  TimeoutValue;
+  EFI_IPv4_ADDRESS    GatewayIp;
+  EFI_IPv4_ADDRESS    ServerIp;
+  UINT16              ServerPort;
+  UINT16              TryCount;
+  UINT16              TimeoutValue;
 } EFI_MTFTP4_OVERRIDE_DATA;
 
 //
@@ -258,7 +249,6 @@
   OUT VOID                **Buffer
   );
 
-
 /**
   Submits an asynchronous interrupt transfer to an interrupt endpoint of a USB device.
 
@@ -277,7 +267,6 @@
   OUT EFI_MTFTP4_MODE_DATA    *ModeData
   );
 
-
 /**
   Initializes, changes, or resets the default operational setting for this
   EFI MTFTPv4 Protocol driver instance.
@@ -307,7 +296,6 @@
   IN EFI_MTFTP4_CONFIG_DATA    *MtftpConfigData OPTIONAL
   );
 
-
 /**
   Gets information about a file from an MTFTPv4 server.
 
@@ -397,7 +385,6 @@
   OUT EFI_MTFTP4_OPTION        **OptionList OPTIONAL
   );
 
-
 /**
   Downloads a file from an MTFTPv4 server.
 
@@ -428,8 +415,6 @@
   IN EFI_MTFTP4_TOKEN          *Token
   );
 
-
-
 /**
   Sends a file to an MTFTPv4 server.
 
@@ -458,7 +443,6 @@
   IN EFI_MTFTP4_TOKEN          *Token
   );
 
-
 /**
   Downloads a data file "directory" from an MTFTPv4 server. May be unsupported in some EFI
   implementations.
@@ -530,7 +514,7 @@
   /// The status that is returned to the caller at the end of the operation
   /// to indicate whether this operation completed successfully.
   ///
-  EFI_STATUS                  Status;
+  EFI_STATUS                     Status;
   ///
   /// The event that will be signaled when the operation completes. If
   /// set to NULL, the corresponding function will wait until the read or
@@ -538,58 +522,57 @@
   /// EVT_NOTIFY_SIGNAL. The Task Priority Level (TPL) of
   /// Event must be lower than or equal to TPL_CALLBACK.
   ///
-  EFI_EVENT                   Event;
+  EFI_EVENT                      Event;
   ///
   /// If not NULL, the data that will be used to override the existing configure data.
   ///
-  EFI_MTFTP4_OVERRIDE_DATA    *OverrideData;
+  EFI_MTFTP4_OVERRIDE_DATA       *OverrideData;
   ///
   /// The pointer to the null-terminated ASCII file name string.
   ///
-  UINT8                       *Filename;
+  UINT8                          *Filename;
   ///
   /// The pointer to the null-terminated ASCII mode string. If NULL, "octet" is used.
   ///
-  UINT8                       *ModeStr;
+  UINT8                          *ModeStr;
   ///
   /// Number of option/value string pairs.
   ///
-  UINT32                      OptionCount;
+  UINT32                         OptionCount;
   ///
   /// The pointer to an array of option/value string pairs. Ignored if OptionCount is zero.
   ///
-  EFI_MTFTP4_OPTION           *OptionList;
+  EFI_MTFTP4_OPTION              *OptionList;
   ///
   /// The size of the data buffer.
   ///
-  UINT64                      BufferSize;
+  UINT64                         BufferSize;
   ///
   /// The pointer to the data buffer. Data that is downloaded from the
   /// MTFTPv4 server is stored here. Data that is uploaded to the
   /// MTFTPv4 server is read from here. Ignored if BufferSize is zero.
   ///
-  VOID                        *Buffer;
+  VOID                           *Buffer;
   ///
   /// The pointer to the context that will be used by CheckPacket,
   /// TimeoutCallback and PacketNeeded.
   ///
-  VOID                        *Context;
+  VOID                           *Context;
   ///
   /// The pointer to the callback function to check the contents of the received packet.
   ///
-  EFI_MTFTP4_CHECK_PACKET     CheckPacket;
+  EFI_MTFTP4_CHECK_PACKET        CheckPacket;
   ///
   /// The pointer to the function to be called when a timeout occurs.
   ///
-  EFI_MTFTP4_TIMEOUT_CALLBACK TimeoutCallback;
+  EFI_MTFTP4_TIMEOUT_CALLBACK    TimeoutCallback;
   ///
   /// The pointer to the function to provide the needed packet contents.
   ///
-  EFI_MTFTP4_PACKET_NEEDED    PacketNeeded;
+  EFI_MTFTP4_PACKET_NEEDED       PacketNeeded;
 };
 
-extern EFI_GUID gEfiMtftp4ServiceBindingProtocolGuid;
-extern EFI_GUID gEfiMtftp4ProtocolGuid;
+extern EFI_GUID  gEfiMtftp4ServiceBindingProtocolGuid;
+extern EFI_GUID  gEfiMtftp4ProtocolGuid;
 
 #endif
-
diff --git a/src/include/ipxe/efi/Protocol/NetworkInterfaceIdentifier.h b/src/include/ipxe/efi/Protocol/NetworkInterfaceIdentifier.h
index 5adedd8..1ce13f2 100644
--- a/src/include/ipxe/efi/Protocol/NetworkInterfaceIdentifier.h
+++ b/src/include/ipxe/efi/Protocol/NetworkInterfaceIdentifier.h
@@ -1,14 +1,8 @@
 /** @file
   EFI Network Interface Identifier Protocol.
 
-Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol is introduced in EFI Specification 1.10.
@@ -18,7 +12,7 @@
 #ifndef __EFI_NETWORK_INTERFACE_IDENTIFER_H__
 #define __EFI_NETWORK_INTERFACE_IDENTIFER_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 //
 // GUID retired from UEFI Specification 2.1b
@@ -39,53 +33,51 @@
 //
 // Revision defined in UEFI Specification 2.4
 //
-#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION    0x00020000
-
+#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION  0x00020000
 
 ///
 /// Revision defined in EFI1.1.
 ///
-#define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION   EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION
+#define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION  EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION
 
 ///
 /// Forward reference for pure ANSI compatability.
 ///
-typedef struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL  EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL;
+typedef struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL;
 
 ///
 /// Protocol defined in EFI1.1.
 ///
-typedef EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL   EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE;
+typedef EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE;
 
 ///
 /// An optional protocol that is used to describe details about the software
 /// layer that is used to produce the Simple Network Protocol.
 ///
 struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL {
-  UINT64    Revision;   ///< The revision of the EFI_NETWORK_INTERFACE_IDENTIFIER protocol.
-  UINT64    Id;         ///< The address of the first byte of the identifying structure for this network
-                        ///< interface. This is only valid when the network interface is started
-                        ///< (see Start()). When the network interface is not started, this field is set to zero.
-  UINT64    ImageAddr;  ///< The address of the first byte of the identifying structure for this
-                        ///< network interface.  This is set to zero if there is no structure.
-  UINT32    ImageSize;  ///< The size of unrelocated network interface image.
-  CHAR8     StringId[4];///< A four-character ASCII string that is sent in the class identifier field of
-                        ///< option 60 in DHCP. For a Type of EfiNetworkInterfaceUndi, this field is UNDI.
-  UINT8     Type;       ///< Network interface type. This will be set to one of the values
-                        ///< in EFI_NETWORK_INTERFACE_TYPE.
-  UINT8     MajorVer;   ///< Major version number.
-  UINT8     MinorVer;   ///< Minor version number.
-  BOOLEAN   Ipv6Supported; ///< TRUE if the network interface supports IPv6; otherwise FALSE.
-  UINT16    IfNum;      ///< The network interface number that is being identified by this Network
-                        ///< Interface Identifier Protocol. This field must be less than or
-                        ///< equal to the (IFcnt | IFcntExt <<8 ) fields in the !PXE structure.
-
+  UINT64     Revision;      ///< The revision of the EFI_NETWORK_INTERFACE_IDENTIFIER protocol.
+  UINT64     Id;            ///< The address of the first byte of the identifying structure for this network
+                            ///< interface. This is only valid when the network interface is started
+                            ///< (see Start()). When the network interface is not started, this field is set to zero.
+  UINT64     ImageAddr;     ///< The address of the first byte of the identifying structure for this
+                            ///< network interface.  This is set to zero if there is no structure.
+  UINT32     ImageSize;     ///< The size of unrelocated network interface image.
+  CHAR8      StringId[4];   ///< A four-character ASCII string that is sent in the class identifier field of
+                            ///< option 60 in DHCP. For a Type of EfiNetworkInterfaceUndi, this field is UNDI.
+  UINT8      Type;          ///< Network interface type. This will be set to one of the values
+                            ///< in EFI_NETWORK_INTERFACE_TYPE.
+  UINT8      MajorVer;      ///< Major version number.
+  UINT8      MinorVer;      ///< Minor version number.
+  BOOLEAN    Ipv6Supported; ///< TRUE if the network interface supports IPv6; otherwise FALSE.
+  UINT16     IfNum;         ///< The network interface number that is being identified by this Network
+                            ///< Interface Identifier Protocol. This field must be less than or
+                            ///< equal to the (IFcnt | IFcntExt <<8 ) fields in the !PXE structure.
 };
 
 ///
-///*******************************************************
+/// *******************************************************
 /// EFI_NETWORK_INTERFACE_TYPE
-///*******************************************************
+/// *******************************************************
 ///
 typedef enum {
   EfiNetworkInterfaceUndi = 1
@@ -94,27 +86,27 @@
 ///
 /// Forward reference for pure ANSI compatability.
 ///
-typedef struct undiconfig_table  UNDI_CONFIG_TABLE;
+typedef struct undiconfig_table UNDI_CONFIG_TABLE;
 
 ///
 /// The format of the configuration table for UNDI
 ///
 struct undiconfig_table {
-  UINT32             NumberOfInterfaces;    ///< The number of NIC devices
+  UINT32               NumberOfInterfaces;  ///< The number of NIC devices
                                             ///< that this UNDI controls.
-  UINT32             reserved;
-  UNDI_CONFIG_TABLE  *nextlink;             ///< A pointer to the next UNDI
+  UINT32               reserved;
+  UNDI_CONFIG_TABLE    *nextlink;           ///< A pointer to the next UNDI
                                             ///< configuration table.
   ///
   /// The length of this array is given in the NumberOfInterfaces field.
   ///
   struct {
-    VOID             *NII_InterfacePointer; ///< Pointer to the NII interface structure.
-    VOID             *DevicePathPointer;    ///< Pointer to the device path for this NIC.
+    VOID    *NII_InterfacePointer;          ///< Pointer to the NII interface structure.
+    VOID    *DevicePathPointer;             ///< Pointer to the device path for this NIC.
   } NII_entry[1];
 };
 
-extern EFI_GUID gEfiNetworkInterfaceIdentifierProtocolGuid;
-extern EFI_GUID gEfiNetworkInterfaceIdentifierProtocolGuid_31;
+extern EFI_GUID  gEfiNetworkInterfaceIdentifierProtocolGuid;
+extern EFI_GUID  gEfiNetworkInterfaceIdentifierProtocolGuid_31;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/PciIo.h b/src/include/ipxe/efi/Protocol/PciIo.h
index 97f65e1..c733925 100644
--- a/src/include/ipxe/efi/Protocol/PciIo.h
+++ b/src/include/ipxe/efi/Protocol/PciIo.h
@@ -2,21 +2,15 @@
   EFI PCI I/O Protocol provides the basic Memory, I/O, PCI configuration,
   and DMA interfaces that a driver uses to access its PCI controller.
 
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __PCI_IO_H__
 #define __PCI_IO_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// Global ID for the PCI I/O Protocol
@@ -26,7 +20,7 @@
     0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x2, 0x9a } \
   }
 
-typedef struct _EFI_PCI_IO_PROTOCOL  EFI_PCI_IO_PROTOCOL;
+typedef struct _EFI_PCI_IO_PROTOCOL EFI_PCI_IO_PROTOCOL;
 
 ///
 /// *******************************************************
@@ -34,7 +28,7 @@
 /// *******************************************************
 ///
 typedef enum {
-  EfiPciIoWidthUint8      = 0,
+  EfiPciIoWidthUint8 = 0,
   EfiPciIoWidthUint16,
   EfiPciIoWidthUint32,
   EfiPciIoWidthUint64,
@@ -52,30 +46,30 @@
 //
 // Complete PCI address generater
 //
-#define EFI_PCI_IO_PASS_THROUGH_BAR               0xff    ///< Special BAR that passes a memory or I/O cycle through unchanged
-#define EFI_PCI_IO_ATTRIBUTE_MASK                 0x077f  ///< All the following I/O and Memory cycles
-#define EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO   0x0001  ///< I/O cycles 0x0000-0x00FF (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_ISA_IO               0x0002  ///< I/O cycles 0x0100-0x03FF or greater (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO       0x0004  ///< I/O cycles 0x3C6, 0x3C8, 0x3C9 (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY           0x0008  ///< MEM cycles 0xA0000-0xBFFFF (24 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_VGA_IO               0x0010  ///< I/O cycles 0x3B0-0x3BB and 0x3C0-0x3DF (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO       0x0020  ///< I/O cycles 0x1F0-0x1F7, 0x3F6, 0x3F7 (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO     0x0040  ///< I/O cycles 0x170-0x177, 0x376, 0x377 (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080  ///< Map a memory range so writes are combined
-#define EFI_PCI_IO_ATTRIBUTE_IO                   0x0100  ///< Enable the I/O decode bit in the PCI Config Header
-#define EFI_PCI_IO_ATTRIBUTE_MEMORY               0x0200  ///< Enable the Memory decode bit in the PCI Config Header
-#define EFI_PCI_IO_ATTRIBUTE_BUS_MASTER           0x0400  ///< Enable the DMA bit in the PCI Config Header
-#define EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED        0x0800  ///< Map a memory range so all r/w accesses are cached
-#define EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE       0x1000  ///< Disable a memory range
-#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE      0x2000  ///< Clear for an add-in PCI Device
-#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM         0x4000  ///< Clear for a physical PCI Option ROM accessed through ROM BAR
-#define EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE   0x8000  ///< Clear for PCI controllers that can not genrate a DAC
-#define EFI_PCI_IO_ATTRIBUTE_ISA_IO_16            0x10000 ///< I/O cycles 0x0100-0x03FF or greater (16 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16    0x20000 ///< I/O cycles 0x3C6, 0x3C8, 0x3C9 (16 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_VGA_IO_16            0x40000 ///< I/O cycles 0x3B0-0x3BB and 0x3C0-0x3DF (16 bit decode)
+#define EFI_PCI_IO_PASS_THROUGH_BAR                0xff    ///< Special BAR that passes a memory or I/O cycle through unchanged
+#define EFI_PCI_IO_ATTRIBUTE_MASK                  0x077f  ///< All the following I/O and Memory cycles
+#define EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO    0x0001  ///< I/O cycles 0x0000-0x00FF (10 bit decode)
+#define EFI_PCI_IO_ATTRIBUTE_ISA_IO                0x0002  ///< I/O cycles 0x0100-0x03FF or greater (10 bit decode)
+#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO        0x0004  ///< I/O cycles 0x3C6, 0x3C8, 0x3C9 (10 bit decode)
+#define EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY            0x0008  ///< MEM cycles 0xA0000-0xBFFFF (24 bit decode)
+#define EFI_PCI_IO_ATTRIBUTE_VGA_IO                0x0010  ///< I/O cycles 0x3B0-0x3BB and 0x3C0-0x3DF (10 bit decode)
+#define EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO        0x0020  ///< I/O cycles 0x1F0-0x1F7, 0x3F6, 0x3F7 (10 bit decode)
+#define EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO      0x0040  ///< I/O cycles 0x170-0x177, 0x376, 0x377 (10 bit decode)
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE  0x0080  ///< Map a memory range so writes are combined
+#define EFI_PCI_IO_ATTRIBUTE_IO                    0x0100  ///< Enable the I/O decode bit in the PCI Config Header
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY                0x0200  ///< Enable the Memory decode bit in the PCI Config Header
+#define EFI_PCI_IO_ATTRIBUTE_BUS_MASTER            0x0400  ///< Enable the DMA bit in the PCI Config Header
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED         0x0800  ///< Map a memory range so all r/w accesses are cached
+#define EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE        0x1000  ///< Disable a memory range
+#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE       0x2000  ///< Clear for an add-in PCI Device
+#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM          0x4000  ///< Clear for a physical PCI Option ROM accessed through ROM BAR
+#define EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE    0x8000  ///< Clear for PCI controllers that can not genrate a DAC
+#define EFI_PCI_IO_ATTRIBUTE_ISA_IO_16             0x10000 ///< I/O cycles 0x0100-0x03FF or greater (16 bit decode)
+#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16     0x20000 ///< I/O cycles 0x3C6, 0x3C8, 0x3C9 (16 bit decode)
+#define EFI_PCI_IO_ATTRIBUTE_VGA_IO_16             0x40000 ///< I/O cycles 0x3B0-0x3BB and 0x3C0-0x3DF (16 bit decode)
 
-#define EFI_PCI_DEVICE_ENABLE                     (EFI_PCI_IO_ATTRIBUTE_IO | EFI_PCI_IO_ATTRIBUTE_MEMORY | EFI_PCI_IO_ATTRIBUTE_BUS_MASTER)
-#define EFI_VGA_DEVICE_ENABLE                     (EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO | EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY | EFI_PCI_IO_ATTRIBUTE_VGA_IO | EFI_PCI_IO_ATTRIBUTE_IO)
+#define EFI_PCI_DEVICE_ENABLE  (EFI_PCI_IO_ATTRIBUTE_IO | EFI_PCI_IO_ATTRIBUTE_MEMORY | EFI_PCI_IO_ATTRIBUTE_BUS_MASTER)
+#define EFI_VGA_DEVICE_ENABLE  (EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO | EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY | EFI_PCI_IO_ATTRIBUTE_VGA_IO | EFI_PCI_IO_ATTRIBUTE_IO)
 
 ///
 /// *******************************************************
@@ -198,11 +192,11 @@
   ///
   /// Read PCI controller registers in the PCI memory or I/O space.
   ///
-  EFI_PCI_IO_PROTOCOL_IO_MEM  Read;
+  EFI_PCI_IO_PROTOCOL_IO_MEM    Read;
   ///
   /// Write PCI controller registers in the PCI memory or I/O space.
   ///
-  EFI_PCI_IO_PROTOCOL_IO_MEM  Write;
+  EFI_PCI_IO_PROTOCOL_IO_MEM    Write;
 } EFI_PCI_IO_PROTOCOL_ACCESS;
 
 /**
@@ -237,11 +231,11 @@
   ///
   /// Read PCI controller registers in PCI configuration space.
   ///
-  EFI_PCI_IO_PROTOCOL_CONFIG  Read;
+  EFI_PCI_IO_PROTOCOL_CONFIG    Read;
   ///
   /// Write PCI controller registers in PCI configuration space.
   ///
-  EFI_PCI_IO_PROTOCOL_CONFIG  Write;
+  EFI_PCI_IO_PROTOCOL_CONFIG    Write;
 } EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS;
 
 /**
@@ -333,7 +327,7 @@
 
 /**
   Allocates pages that are suitable for an EfiPciIoOperationBusMasterCommonBuffer
-  mapping.
+  or EfiPciOperationBusMasterCommonBuffer64 mapping.
 
   @param  This                  A pointer to the EFI_PCI_IO_PROTOCOL instance.
   @param  Type                  This parameter is not used and must be ignored.
@@ -346,7 +340,7 @@
 
   @retval EFI_SUCCESS           The requested memory pages were allocated.
   @retval EFI_UNSUPPORTED       Attributes is unsupported. The only legal attribute bits are
-                                MEMORY_WRITE_COMBINE and MEMORY_CACHED.
+                                MEMORY_WRITE_COMBINE, MEMORY_CACHED and DUAL_ADDRESS_CYCLE.
   @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
   @retval EFI_OUT_OF_RESOURCES  The memory pages could not be allocated.
 
@@ -459,25 +453,24 @@
                                 base address for resource range. The legal range for this field is 0..5.
   @param  Supports              A pointer to the mask of attributes that this PCI controller supports
                                 setting for this BAR with SetBarAttributes().
-  @param  Resources             A pointer to the ACPI 2.0 resource descriptors that describe the current
+  @param  Resources             A pointer to the resource descriptors that describe the current
                                 configuration of this BAR of the PCI controller.
 
   @retval EFI_SUCCESS           If Supports is not NULL, then the attributes that the PCI
                                 controller supports are returned in Supports. If Resources
-                                is not NULL, then the ACPI 2.0 resource descriptors that the PCI
+                                is not NULL, then the resource descriptors that the PCI
                                 controller is currently using are returned in Resources.
   @retval EFI_INVALID_PARAMETER Both Supports and Attributes are NULL.
   @retval EFI_UNSUPPORTED       BarIndex not valid for this PCI controller.
   @retval EFI_OUT_OF_RESOURCES  There are not enough resources available to allocate
                                 Resources.
-
 **/
 typedef
 EFI_STATUS
 (EFIAPI *EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES)(
   IN EFI_PCI_IO_PROTOCOL             *This,
   IN  UINT8                          BarIndex,
-  OUT UINT64                         *Supports, OPTIONAL
+  OUT UINT64                         *Supports  OPTIONAL,
   OUT VOID                           **Resources OPTIONAL
   );
 
@@ -523,26 +516,26 @@
 /// retrieve the EFI_PCI_IO_PROTOCOL instance that is associated with the PCI controller.
 ///
 struct _EFI_PCI_IO_PROTOCOL {
-  EFI_PCI_IO_PROTOCOL_POLL_IO_MEM         PollMem;
-  EFI_PCI_IO_PROTOCOL_POLL_IO_MEM         PollIo;
-  EFI_PCI_IO_PROTOCOL_ACCESS              Mem;
-  EFI_PCI_IO_PROTOCOL_ACCESS              Io;
-  EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS       Pci;
-  EFI_PCI_IO_PROTOCOL_COPY_MEM            CopyMem;
-  EFI_PCI_IO_PROTOCOL_MAP                 Map;
-  EFI_PCI_IO_PROTOCOL_UNMAP               Unmap;
-  EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER     AllocateBuffer;
-  EFI_PCI_IO_PROTOCOL_FREE_BUFFER         FreeBuffer;
-  EFI_PCI_IO_PROTOCOL_FLUSH               Flush;
-  EFI_PCI_IO_PROTOCOL_GET_LOCATION        GetLocation;
-  EFI_PCI_IO_PROTOCOL_ATTRIBUTES          Attributes;
-  EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES  GetBarAttributes;
-  EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES  SetBarAttributes;
+  EFI_PCI_IO_PROTOCOL_POLL_IO_MEM           PollMem;
+  EFI_PCI_IO_PROTOCOL_POLL_IO_MEM           PollIo;
+  EFI_PCI_IO_PROTOCOL_ACCESS                Mem;
+  EFI_PCI_IO_PROTOCOL_ACCESS                Io;
+  EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS         Pci;
+  EFI_PCI_IO_PROTOCOL_COPY_MEM              CopyMem;
+  EFI_PCI_IO_PROTOCOL_MAP                   Map;
+  EFI_PCI_IO_PROTOCOL_UNMAP                 Unmap;
+  EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER       AllocateBuffer;
+  EFI_PCI_IO_PROTOCOL_FREE_BUFFER           FreeBuffer;
+  EFI_PCI_IO_PROTOCOL_FLUSH                 Flush;
+  EFI_PCI_IO_PROTOCOL_GET_LOCATION          GetLocation;
+  EFI_PCI_IO_PROTOCOL_ATTRIBUTES            Attributes;
+  EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES    GetBarAttributes;
+  EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES    SetBarAttributes;
 
   ///
   /// The size, in bytes, of the ROM image.
   ///
-  UINT64                                  RomSize;
+  UINT64                                    RomSize;
 
   ///
   /// A pointer to the in memory copy of the ROM image. The PCI Bus Driver is responsible
@@ -552,9 +545,9 @@
   /// The Attributes() function can be used to determine from which of these two sources
   /// the RomImage buffer was initialized.
   ///
-  VOID                                    *RomImage;
+  VOID    *RomImage;
 };
 
-extern EFI_GUID gEfiPciIoProtocolGuid;
+extern EFI_GUID  gEfiPciIoProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/PciRootBridgeIo.h b/src/include/ipxe/efi/Protocol/PciRootBridgeIo.h
index b9c80f5..b6a4780 100644
--- a/src/include/ipxe/efi/Protocol/PciRootBridgeIo.h
+++ b/src/include/ipxe/efi/Protocol/PciRootBridgeIo.h
@@ -5,21 +5,15 @@
   and PCI Configuration cycles on a PCI Root Bridge. It also provides services to perform
   defferent types of bus mastering DMA.
 
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __PCI_ROOT_BRIDGE_IO_H__
 #define __PCI_ROOT_BRIDGE_IO_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Library/BaseLib.h>
 
@@ -28,7 +22,7 @@
     0x2f707ebb, 0x4a1a, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
   }
 
-typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL;
+typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL;
 
 ///
 /// *******************************************************
@@ -90,24 +84,24 @@
   EfiPciOperationMaximum
 } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION;
 
-#define EFI_PCI_ATTRIBUTE_ISA_MOTHERBOARD_IO          0x0001
-#define EFI_PCI_ATTRIBUTE_ISA_IO                      0x0002
-#define EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO              0x0004
-#define EFI_PCI_ATTRIBUTE_VGA_MEMORY                  0x0008
-#define EFI_PCI_ATTRIBUTE_VGA_IO                      0x0010
-#define EFI_PCI_ATTRIBUTE_IDE_PRIMARY_IO              0x0020
-#define EFI_PCI_ATTRIBUTE_IDE_SECONDARY_IO            0x0040
-#define EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE        0x0080
-#define EFI_PCI_ATTRIBUTE_MEMORY_CACHED               0x0800
-#define EFI_PCI_ATTRIBUTE_MEMORY_DISABLE              0x1000
-#define EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE          0x8000
-#define EFI_PCI_ATTRIBUTE_ISA_IO_16                   0x10000
-#define EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO_16           0x20000
-#define EFI_PCI_ATTRIBUTE_VGA_IO_16                   0x40000
+#define EFI_PCI_ATTRIBUTE_ISA_MOTHERBOARD_IO    0x0001
+#define EFI_PCI_ATTRIBUTE_ISA_IO                0x0002
+#define EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO        0x0004
+#define EFI_PCI_ATTRIBUTE_VGA_MEMORY            0x0008
+#define EFI_PCI_ATTRIBUTE_VGA_IO                0x0010
+#define EFI_PCI_ATTRIBUTE_IDE_PRIMARY_IO        0x0020
+#define EFI_PCI_ATTRIBUTE_IDE_SECONDARY_IO      0x0040
+#define EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE  0x0080
+#define EFI_PCI_ATTRIBUTE_MEMORY_CACHED         0x0800
+#define EFI_PCI_ATTRIBUTE_MEMORY_DISABLE        0x1000
+#define EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE    0x8000
+#define EFI_PCI_ATTRIBUTE_ISA_IO_16             0x10000
+#define EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO_16     0x20000
+#define EFI_PCI_ATTRIBUTE_VGA_IO_16             0x40000
 
-#define EFI_PCI_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER   (EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE | EFI_PCI_ATTRIBUTE_MEMORY_CACHED | EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE)
+#define EFI_PCI_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER  (EFI_PCI_ATTRIBUTE_MEMORY_WRITE_COMBINE | EFI_PCI_ATTRIBUTE_MEMORY_CACHED | EFI_PCI_ATTRIBUTE_DUAL_ADDRESS_CYCLE)
 
-#define EFI_PCI_ATTRIBUTE_INVALID_FOR_ALLOCATE_BUFFER (~EFI_PCI_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER)
+#define EFI_PCI_ATTRIBUTE_INVALID_FOR_ALLOCATE_BUFFER  (~EFI_PCI_ATTRIBUTE_VALID_FOR_ALLOCATE_BUFFER)
 
 #define EFI_PCI_ADDRESS(bus, dev, func, reg) \
   (UINT64) ( \
@@ -117,11 +111,11 @@
   (((UINTN) (reg)) < 256 ? ((UINTN) (reg)) : (UINT64) (LShiftU64 ((UINT64) (reg), 32))))
 
 typedef struct {
-  UINT8   Register;
-  UINT8   Function;
-  UINT8   Device;
-  UINT8   Bus;
-  UINT32  ExtendedRegister;
+  UINT8     Register;
+  UINT8     Function;
+  UINT8     Device;
+  UINT8     Bus;
+  UINT32    ExtendedRegister;
 } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS;
 
 /**
@@ -183,11 +177,11 @@
   ///
   /// Read PCI controller registers in the PCI root bridge memory space.
   ///
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM  Read;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM    Read;
   ///
   /// Write PCI controller registers in the PCI root bridge memory space.
   ///
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM  Write;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_IO_MEM    Write;
 } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS;
 
 /**
@@ -389,11 +383,11 @@
   );
 
 /**
-  Retrieves the current resource settings of this PCI root bridge in the form of a set of ACPI 2.0
+  Retrieves the current resource settings of this PCI root bridge in the form of a set of ACPI
   resource descriptors.
 
   @param  This                  A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.
-  @param  Resources             A pointer to the ACPI 2.0 resource descriptors that describe the current
+  @param  Resources             A pointer to the resource descriptors that describe the current
                                 configuration of this PCI root bridge.
 
   @retval EFI_SUCCESS           The current configuration of this PCI root bridge was returned in
@@ -417,28 +411,28 @@
   ///
   /// The EFI_HANDLE of the PCI Host Bridge of which this PCI Root Bridge is a member.
   ///
-  EFI_HANDLE                                      ParentHandle;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM     PollMem;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM     PollIo;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS          Mem;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS          Io;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS          Pci;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_COPY_MEM        CopyMem;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_MAP             Map;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_UNMAP           Unmap;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FREE_BUFFER     FreeBuffer;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FLUSH           Flush;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GET_ATTRIBUTES  GetAttributes;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_SET_ATTRIBUTES  SetAttributes;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION   Configuration;
+  EFI_HANDLE                                         ParentHandle;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM        PollMem;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_POLL_IO_MEM        PollIo;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS             Mem;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS             Io;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ACCESS             Pci;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_COPY_MEM           CopyMem;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_MAP                Map;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_UNMAP              Unmap;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_ALLOCATE_BUFFER    AllocateBuffer;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FREE_BUFFER        FreeBuffer;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_FLUSH              Flush;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GET_ATTRIBUTES     GetAttributes;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_SET_ATTRIBUTES     SetAttributes;
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION      Configuration;
 
   ///
   /// The segment number that this PCI root bridge resides.
   ///
-  UINT32                                          SegmentNumber;
+  UINT32                                             SegmentNumber;
 };
 
-extern EFI_GUID gEfiPciRootBridgeIoProtocolGuid;
+extern EFI_GUID  gEfiPciRootBridgeIoProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/PxeBaseCode.h b/src/include/ipxe/efi/Protocol/PxeBaseCode.h
index 2644798..20efd72 100644
--- a/src/include/ipxe/efi/Protocol/PxeBaseCode.h
+++ b/src/include/ipxe/efi/Protocol/PxeBaseCode.h
@@ -2,23 +2,21 @@
   EFI PXE Base Code Protocol definitions, which is used to access PXE-compatible
   devices for network access and network booting.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
+Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>
 
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol is introduced in EFI Specification 1.10.
 
 **/
+
 #ifndef __PXE_BASE_CODE_PROTOCOL_H__
 #define __PXE_BASE_CODE_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// PXE Base Code protocol.
@@ -28,94 +26,94 @@
     0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
   }
 
-typedef struct _EFI_PXE_BASE_CODE_PROTOCOL  EFI_PXE_BASE_CODE_PROTOCOL;
+typedef struct _EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE_PROTOCOL;
 
 ///
 /// Protocol defined in EFI1.1.
 ///
-typedef EFI_PXE_BASE_CODE_PROTOCOL  EFI_PXE_BASE_CODE;
+typedef EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE;
 
 ///
 /// Default IP TTL and ToS.
 ///
-#define DEFAULT_TTL 16
-#define DEFAULT_ToS 0
+#define DEFAULT_TTL  16
+#define DEFAULT_ToS  0
 
 ///
 /// ICMP error format.
 ///
 typedef struct {
-  UINT8   Type;
-  UINT8   Code;
-  UINT16  Checksum;
+  UINT8     Type;
+  UINT8     Code;
+  UINT16    Checksum;
   union {
-    UINT32  reserved;
-    UINT32  Mtu;
-    UINT32  Pointer;
+    UINT32    reserved;
+    UINT32    Mtu;
+    UINT32    Pointer;
     struct {
-      UINT16  Identifier;
-      UINT16  Sequence;
+      UINT16    Identifier;
+      UINT16    Sequence;
     } Echo;
   } u;
-  UINT8 Data[494];
+  UINT8    Data[494];
 } EFI_PXE_BASE_CODE_ICMP_ERROR;
 
 ///
 /// TFTP error format.
 ///
 typedef struct {
-  UINT8 ErrorCode;
-  CHAR8 ErrorString[127];
+  UINT8    ErrorCode;
+  CHAR8    ErrorString[127];
 } EFI_PXE_BASE_CODE_TFTP_ERROR;
 
 ///
 /// IP Receive Filter definitions.
 ///
-#define EFI_PXE_BASE_CODE_MAX_IPCNT 8
+#define EFI_PXE_BASE_CODE_MAX_IPCNT  8
 
 ///
 /// IP Receive Filter structure.
 ///
 typedef struct {
-  UINT8           Filters;
-  UINT8           IpCnt;
-  UINT16          reserved;
-  EFI_IP_ADDRESS  IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];
+  UINT8             Filters;
+  UINT8             IpCnt;
+  UINT16            reserved;
+  EFI_IP_ADDRESS    IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];
 } EFI_PXE_BASE_CODE_IP_FILTER;
 
-#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP            0x0001
-#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST             0x0002
-#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS           0x0004
-#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008
+#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP             0x0001
+#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST              0x0002
+#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS            0x0004
+#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST  0x0008
 
 ///
 /// ARP cache entries.
 ///
 typedef struct {
-  EFI_IP_ADDRESS  IpAddr;
-  EFI_MAC_ADDRESS MacAddr;
+  EFI_IP_ADDRESS     IpAddr;
+  EFI_MAC_ADDRESS    MacAddr;
 } EFI_PXE_BASE_CODE_ARP_ENTRY;
 
 ///
 /// ARP route table entries.
 ///
 typedef struct {
-  EFI_IP_ADDRESS  IpAddr;
-  EFI_IP_ADDRESS  SubnetMask;
-  EFI_IP_ADDRESS  GwAddr;
+  EFI_IP_ADDRESS    IpAddr;
+  EFI_IP_ADDRESS    SubnetMask;
+  EFI_IP_ADDRESS    GwAddr;
 } EFI_PXE_BASE_CODE_ROUTE_ENTRY;
 
 //
 // UDP definitions
 //
-typedef UINT16  EFI_PXE_BASE_CODE_UDP_PORT;
+typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
 
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP    0x0001
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT  0x0002
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP   0x0004
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER    0x0010
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT  0x0020
+#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP     0x0001
+#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT   0x0002
+#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP    0x0004
+#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT  0x0008
+#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER     0x0010
+#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT   0x0020
 
 //
 // Discover() definitions
@@ -142,7 +140,7 @@
 // 32768 through 65279 are for vendor use
 // 65280 through 65534 are reserved
 //
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST   65535
+#define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST  65535
 
 #define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK     0x7FFF
 #define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL  0x0000
@@ -154,39 +152,40 @@
 // http://www.ietf.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml
 //
 #if defined (MDE_CPU_IA32)
-#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE    0x0006
-#elif defined (MDE_CPU_IPF)
-#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE    0x0002
+#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE  0x0006
 #elif defined (MDE_CPU_X64)
-#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE    0x0007
+#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE  0x0007
 #elif defined (MDE_CPU_ARM)
-#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE    0x000A
+#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE  0x000A
 #elif defined (MDE_CPU_AARCH64)
-#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE    0x000B
+#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE  0x000B
+#elif defined (MDE_CPU_RISCV64)
+#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE  0x001B
+#elif defined (MDE_CPU_LOONGARCH64)
+#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE  0x0027
 #endif
 
-
 ///
 /// Discover() server list structure.
 ///
 typedef struct {
-  UINT16          Type;
-  BOOLEAN         AcceptAnyResponse;
-  UINT8           Reserved;
-  EFI_IP_ADDRESS  IpAddr;
+  UINT16            Type;
+  BOOLEAN           AcceptAnyResponse;
+  UINT8             Reserved;
+  EFI_IP_ADDRESS    IpAddr;
 } EFI_PXE_BASE_CODE_SRVLIST;
 
 ///
 /// Discover() information override structure.
 ///
 typedef struct {
-  BOOLEAN                   UseMCast;
-  BOOLEAN                   UseBCast;
-  BOOLEAN                   UseUCast;
-  BOOLEAN                   MustUseList;
-  EFI_IP_ADDRESS            ServerMCastIp;
-  UINT16                    IpCnt;
-  EFI_PXE_BASE_CODE_SRVLIST SrvList[1];
+  BOOLEAN                      UseMCast;
+  BOOLEAN                      UseBCast;
+  BOOLEAN                      UseUCast;
+  BOOLEAN                      MustUseList;
+  EFI_IP_ADDRESS               ServerMCastIp;
+  UINT16                       IpCnt;
+  EFI_PXE_BASE_CODE_SRVLIST    SrvList[1];
 } EFI_PXE_BASE_CODE_DISCOVER_INFO;
 
 ///
@@ -210,58 +209,58 @@
 /// perform the "get file size" and "read directory" operations of MTFTP.
 ///
 typedef struct {
-  EFI_IP_ADDRESS              MCastIp;
-  EFI_PXE_BASE_CODE_UDP_PORT  CPort;
-  EFI_PXE_BASE_CODE_UDP_PORT  SPort;
-  UINT16                      ListenTimeout;
-  UINT16                      TransmitTimeout;
+  EFI_IP_ADDRESS                MCastIp;
+  EFI_PXE_BASE_CODE_UDP_PORT    CPort;
+  EFI_PXE_BASE_CODE_UDP_PORT    SPort;
+  UINT16                        ListenTimeout;
+  UINT16                        TransmitTimeout;
 } EFI_PXE_BASE_CODE_MTFTP_INFO;
 
 ///
 /// DHCPV4 Packet structure.
 ///
 typedef struct {
-  UINT8   BootpOpcode;
-  UINT8   BootpHwType;
-  UINT8   BootpHwAddrLen;
-  UINT8   BootpGateHops;
-  UINT32  BootpIdent;
-  UINT16  BootpSeconds;
-  UINT16  BootpFlags;
-  UINT8   BootpCiAddr[4];
-  UINT8   BootpYiAddr[4];
-  UINT8   BootpSiAddr[4];
-  UINT8   BootpGiAddr[4];
-  UINT8   BootpHwAddr[16];
-  UINT8   BootpSrvName[64];
-  UINT8   BootpBootFile[128];
-  UINT32  DhcpMagik;
-  UINT8   DhcpOptions[56];
+  UINT8     BootpOpcode;
+  UINT8     BootpHwType;
+  UINT8     BootpHwAddrLen;
+  UINT8     BootpGateHops;
+  UINT32    BootpIdent;
+  UINT16    BootpSeconds;
+  UINT16    BootpFlags;
+  UINT8     BootpCiAddr[4];
+  UINT8     BootpYiAddr[4];
+  UINT8     BootpSiAddr[4];
+  UINT8     BootpGiAddr[4];
+  UINT8     BootpHwAddr[16];
+  UINT8     BootpSrvName[64];
+  UINT8     BootpBootFile[128];
+  UINT32    DhcpMagik;
+  UINT8     DhcpOptions[56];
 } EFI_PXE_BASE_CODE_DHCPV4_PACKET;
 
 ///
 /// DHCPV6 Packet structure.
 ///
 typedef struct {
-  UINT32  MessageType:8;
-  UINT32  TransactionId:24;
-  UINT8   DhcpOptions[1024];
+  UINT32    MessageType   : 8;
+  UINT32    TransactionId : 24;
+  UINT8     DhcpOptions[1024];
 } EFI_PXE_BASE_CODE_DHCPV6_PACKET;
 
 ///
 /// Packet structure.
 ///
 typedef union {
-  UINT8                           Raw[1472];
-  EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4;
-  EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6;
+  UINT8                              Raw[1472];
+  EFI_PXE_BASE_CODE_DHCPV4_PACKET    Dhcpv4;
+  EFI_PXE_BASE_CODE_DHCPV6_PACKET    Dhcpv6;
 } EFI_PXE_BASE_CODE_PACKET;
 
 //
 // PXE Base Code Mode structure
 //
-#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES   8
-#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8
+#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES    8
+#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES  8
 
 ///
 /// EFI_PXE_BASE_CODE_MODE.
@@ -270,40 +269,40 @@
 /// EFI_PXE_BASE_CODE_PROTOCOL functions.
 ///
 typedef struct {
-  BOOLEAN                       Started;
-  BOOLEAN                       Ipv6Available;
-  BOOLEAN                       Ipv6Supported;
-  BOOLEAN                       UsingIpv6;
-  BOOLEAN                       BisSupported;
-  BOOLEAN                       BisDetected;
-  BOOLEAN                       AutoArp;
-  BOOLEAN                       SendGUID;
-  BOOLEAN                       DhcpDiscoverValid;
-  BOOLEAN                       DhcpAckReceived;
-  BOOLEAN                       ProxyOfferReceived;
-  BOOLEAN                       PxeDiscoverValid;
-  BOOLEAN                       PxeReplyReceived;
-  BOOLEAN                       PxeBisReplyReceived;
-  BOOLEAN                       IcmpErrorReceived;
-  BOOLEAN                       TftpErrorReceived;
-  BOOLEAN                       MakeCallbacks;
-  UINT8                         TTL;
-  UINT8                         ToS;
-  EFI_IP_ADDRESS                StationIp;
-  EFI_IP_ADDRESS                SubnetMask;
-  EFI_PXE_BASE_CODE_PACKET      DhcpDiscover;
-  EFI_PXE_BASE_CODE_PACKET      DhcpAck;
-  EFI_PXE_BASE_CODE_PACKET      ProxyOffer;
-  EFI_PXE_BASE_CODE_PACKET      PxeDiscover;
-  EFI_PXE_BASE_CODE_PACKET      PxeReply;
-  EFI_PXE_BASE_CODE_PACKET      PxeBisReply;
-  EFI_PXE_BASE_CODE_IP_FILTER   IpFilter;
-  UINT32                        ArpCacheEntries;
-  EFI_PXE_BASE_CODE_ARP_ENTRY   ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
-  UINT32                        RouteTableEntries;
-  EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
-  EFI_PXE_BASE_CODE_ICMP_ERROR  IcmpError;
-  EFI_PXE_BASE_CODE_TFTP_ERROR  TftpError;
+  BOOLEAN                          Started;
+  BOOLEAN                          Ipv6Available;
+  BOOLEAN                          Ipv6Supported;
+  BOOLEAN                          UsingIpv6;
+  BOOLEAN                          BisSupported;
+  BOOLEAN                          BisDetected;
+  BOOLEAN                          AutoArp;
+  BOOLEAN                          SendGUID;
+  BOOLEAN                          DhcpDiscoverValid;
+  BOOLEAN                          DhcpAckReceived;
+  BOOLEAN                          ProxyOfferReceived;
+  BOOLEAN                          PxeDiscoverValid;
+  BOOLEAN                          PxeReplyReceived;
+  BOOLEAN                          PxeBisReplyReceived;
+  BOOLEAN                          IcmpErrorReceived;
+  BOOLEAN                          TftpErrorReceived;
+  BOOLEAN                          MakeCallbacks;
+  UINT8                            TTL;
+  UINT8                            ToS;
+  EFI_IP_ADDRESS                   StationIp;
+  EFI_IP_ADDRESS                   SubnetMask;
+  EFI_PXE_BASE_CODE_PACKET         DhcpDiscover;
+  EFI_PXE_BASE_CODE_PACKET         DhcpAck;
+  EFI_PXE_BASE_CODE_PACKET         ProxyOffer;
+  EFI_PXE_BASE_CODE_PACKET         PxeDiscover;
+  EFI_PXE_BASE_CODE_PACKET         PxeReply;
+  EFI_PXE_BASE_CODE_PACKET         PxeBisReply;
+  EFI_PXE_BASE_CODE_IP_FILTER      IpFilter;
+  UINT32                           ArpCacheEntries;
+  EFI_PXE_BASE_CODE_ARP_ENTRY      ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
+  UINT32                           RouteTableEntries;
+  EFI_PXE_BASE_CODE_ROUTE_ENTRY    RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
+  EFI_PXE_BASE_CODE_ICMP_ERROR     IcmpError;
+  EFI_PXE_BASE_CODE_TFTP_ERROR     TftpError;
 } EFI_PXE_BASE_CODE_MODE;
 
 //
@@ -627,11 +626,11 @@
   IN UINT16                                    OpFlags,
   IN EFI_IP_ADDRESS                            *DestIp,
   IN EFI_PXE_BASE_CODE_UDP_PORT                *DestPort,
-  IN EFI_IP_ADDRESS                            *GatewayIp,  OPTIONAL
-  IN EFI_IP_ADDRESS                            *SrcIp,      OPTIONAL
-  IN OUT EFI_PXE_BASE_CODE_UDP_PORT            *SrcPort,    OPTIONAL
-  IN UINTN                                     *HeaderSize, OPTIONAL
-  IN VOID                                      *HeaderPtr,  OPTIONAL
+  IN EFI_IP_ADDRESS                            *GatewayIp   OPTIONAL,
+  IN EFI_IP_ADDRESS                            *SrcIp       OPTIONAL,
+  IN OUT EFI_PXE_BASE_CODE_UDP_PORT            *SrcPort     OPTIONAL,
+  IN UINTN                                     *HeaderSize  OPTIONAL,
+  IN VOID                                      *HeaderPtr   OPTIONAL,
   IN UINTN                                     *BufferSize,
   IN VOID                                      *BufferPtr
   );
@@ -679,12 +678,12 @@
 (EFIAPI *EFI_PXE_BASE_CODE_UDP_READ)(
   IN EFI_PXE_BASE_CODE_PROTOCOL                *This,
   IN UINT16                                    OpFlags,
-  IN OUT EFI_IP_ADDRESS                        *DestIp,     OPTIONAL
-  IN OUT EFI_PXE_BASE_CODE_UDP_PORT            *DestPort,   OPTIONAL
-  IN OUT EFI_IP_ADDRESS                        *SrcIp,      OPTIONAL
-  IN OUT EFI_PXE_BASE_CODE_UDP_PORT            *SrcPort,    OPTIONAL
-  IN UINTN                                     *HeaderSize, OPTIONAL
-  IN VOID                                      *HeaderPtr,  OPTIONAL
+  IN OUT EFI_IP_ADDRESS                        *DestIp      OPTIONAL,
+  IN OUT EFI_PXE_BASE_CODE_UDP_PORT            *DestPort    OPTIONAL,
+  IN OUT EFI_IP_ADDRESS                        *SrcIp       OPTIONAL,
+  IN OUT EFI_PXE_BASE_CODE_UDP_PORT            *SrcPort     OPTIONAL,
+  IN UINTN                                     *HeaderSize  OPTIONAL,
+  IN VOID                                      *HeaderPtr   OPTIONAL,
   IN OUT UINTN                                 *BufferSize,
   IN VOID                                      *BufferPtr
   );
@@ -801,10 +800,10 @@
 EFI_STATUS
 (EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS)(
   IN EFI_PXE_BASE_CODE_PROTOCOL            *This,
-  IN BOOLEAN                               *NewAutoArp,     OPTIONAL
-  IN BOOLEAN                               *NewSendGUID,    OPTIONAL
-  IN UINT8                                 *NewTTL,         OPTIONAL
-  IN UINT8                                 *NewToS,         OPTIONAL
+  IN BOOLEAN                               *NewAutoArp      OPTIONAL,
+  IN BOOLEAN                               *NewSendGUID     OPTIONAL,
+  IN UINT8                                 *NewTTL          OPTIONAL,
+  IN UINT8                                 *NewToS          OPTIONAL,
   IN BOOLEAN                               *NewMakeCallback OPTIONAL
   );
 
@@ -835,7 +834,7 @@
 EFI_STATUS
 (EFIAPI *EFI_PXE_BASE_CODE_SET_STATION_IP)(
   IN EFI_PXE_BASE_CODE_PROTOCOL            *This,
-  IN EFI_IP_ADDRESS                        *NewStationIp,   OPTIONAL
+  IN EFI_IP_ADDRESS                        *NewStationIp    OPTIONAL,
   IN EFI_IP_ADDRESS                        *NewSubnetMask   OPTIONAL
   );
 
@@ -874,24 +873,24 @@
 EFI_STATUS
 (EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS)(
   IN EFI_PXE_BASE_CODE_PROTOCOL            *This,
-  BOOLEAN                                  *NewDhcpDiscoverValid,   OPTIONAL
-  BOOLEAN                                  *NewDhcpAckReceived,     OPTIONAL
-  BOOLEAN                                  *NewProxyOfferReceived,  OPTIONAL
-  BOOLEAN                                  *NewPxeDiscoverValid,    OPTIONAL
-  BOOLEAN                                  *NewPxeReplyReceived,    OPTIONAL
-  BOOLEAN                                  *NewPxeBisReplyReceived, OPTIONAL
-  IN EFI_PXE_BASE_CODE_PACKET              *NewDhcpDiscover,        OPTIONAL
-  IN EFI_PXE_BASE_CODE_PACKET              *NewDhcpAck,             OPTIONAL
-  IN EFI_PXE_BASE_CODE_PACKET              *NewProxyOffer,          OPTIONAL
-  IN EFI_PXE_BASE_CODE_PACKET              *NewPxeDiscover,         OPTIONAL
-  IN EFI_PXE_BASE_CODE_PACKET              *NewPxeReply,            OPTIONAL
+  BOOLEAN                                  *NewDhcpDiscoverValid    OPTIONAL,
+  BOOLEAN                                  *NewDhcpAckReceived      OPTIONAL,
+  BOOLEAN                                  *NewProxyOfferReceived   OPTIONAL,
+  BOOLEAN                                  *NewPxeDiscoverValid     OPTIONAL,
+  BOOLEAN                                  *NewPxeReplyReceived     OPTIONAL,
+  BOOLEAN                                  *NewPxeBisReplyReceived  OPTIONAL,
+  IN EFI_PXE_BASE_CODE_PACKET              *NewDhcpDiscover         OPTIONAL,
+  IN EFI_PXE_BASE_CODE_PACKET              *NewDhcpAck              OPTIONAL,
+  IN EFI_PXE_BASE_CODE_PACKET              *NewProxyOffer           OPTIONAL,
+  IN EFI_PXE_BASE_CODE_PACKET              *NewPxeDiscover          OPTIONAL,
+  IN EFI_PXE_BASE_CODE_PACKET              *NewPxeReply             OPTIONAL,
   IN EFI_PXE_BASE_CODE_PACKET              *NewPxeBisReply          OPTIONAL
   );
 
 //
 // PXE Base Code Protocol structure
 //
-#define EFI_PXE_BASE_CODE_PROTOCOL_REVISION   0x00010000
+#define EFI_PXE_BASE_CODE_PROTOCOL_REVISION  0x00010000
 
 //
 // Revision defined in EFI1.1
@@ -912,25 +911,25 @@
   ///  be backwards compatible. If a future version is not backwards compatible
   ///  it is not the same GUID.
   ///
-  UINT64                            Revision;
-  EFI_PXE_BASE_CODE_START           Start;
-  EFI_PXE_BASE_CODE_STOP            Stop;
-  EFI_PXE_BASE_CODE_DHCP            Dhcp;
-  EFI_PXE_BASE_CODE_DISCOVER        Discover;
-  EFI_PXE_BASE_CODE_MTFTP           Mtftp;
-  EFI_PXE_BASE_CODE_UDP_WRITE       UdpWrite;
-  EFI_PXE_BASE_CODE_UDP_READ        UdpRead;
-  EFI_PXE_BASE_CODE_SET_IP_FILTER   SetIpFilter;
-  EFI_PXE_BASE_CODE_ARP             Arp;
-  EFI_PXE_BASE_CODE_SET_PARAMETERS  SetParameters;
-  EFI_PXE_BASE_CODE_SET_STATION_IP  SetStationIp;
-  EFI_PXE_BASE_CODE_SET_PACKETS     SetPackets;
+  UINT64                              Revision;
+  EFI_PXE_BASE_CODE_START             Start;
+  EFI_PXE_BASE_CODE_STOP              Stop;
+  EFI_PXE_BASE_CODE_DHCP              Dhcp;
+  EFI_PXE_BASE_CODE_DISCOVER          Discover;
+  EFI_PXE_BASE_CODE_MTFTP             Mtftp;
+  EFI_PXE_BASE_CODE_UDP_WRITE         UdpWrite;
+  EFI_PXE_BASE_CODE_UDP_READ          UdpRead;
+  EFI_PXE_BASE_CODE_SET_IP_FILTER     SetIpFilter;
+  EFI_PXE_BASE_CODE_ARP               Arp;
+  EFI_PXE_BASE_CODE_SET_PARAMETERS    SetParameters;
+  EFI_PXE_BASE_CODE_SET_STATION_IP    SetStationIp;
+  EFI_PXE_BASE_CODE_SET_PACKETS       SetPackets;
   ///
   /// The pointer to the EFI_PXE_BASE_CODE_MODE data for this device.
   ///
-  EFI_PXE_BASE_CODE_MODE            *Mode;
+  EFI_PXE_BASE_CODE_MODE              *Mode;
 };
 
-extern EFI_GUID gEfiPxeBaseCodeProtocolGuid;
+extern EFI_GUID  gEfiPxeBaseCodeProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/Rng.h b/src/include/ipxe/efi/Protocol/Rng.h
index f04efbb..87c5c0e 100644
--- a/src/include/ipxe/efi/Protocol/Rng.h
+++ b/src/include/ipxe/efi/Protocol/Rng.h
@@ -3,21 +3,15 @@
   The UEFI Random Number Generator Protocol is used to provide random bits for use
   in applications, or entropy for seeding other random number generators.
 
-Copyright (c) 2013, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __EFI_RNG_PROTOCOL_H__
 #define __EFI_RNG_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// Global ID for the Random Number Generator Protocol
@@ -101,7 +95,7 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI *EFI_RNG_GET_INFO) (
+(EFIAPI *EFI_RNG_GET_INFO)(
   IN EFI_RNG_PROTOCOL             *This,
   IN OUT UINTN                    *RNGAlgorithmListSize,
   OUT EFI_RNG_ALGORITHM           *RNGAlgorithmList
@@ -131,9 +125,9 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI *EFI_RNG_GET_RNG) (
+(EFIAPI *EFI_RNG_GET_RNG)(
   IN EFI_RNG_PROTOCOL            *This,
-  IN EFI_RNG_ALGORITHM           *RNGAlgorithm, OPTIONAL
+  IN EFI_RNG_ALGORITHM           *RNGAlgorithm  OPTIONAL,
   IN UINTN                       RNGValueLength,
   OUT UINT8                      *RNGValue
   );
@@ -143,16 +137,16 @@
 /// applications, or entropy for seeding other random number generators.
 ///
 struct _EFI_RNG_PROTOCOL {
-  EFI_RNG_GET_INFO                GetInfo;
-  EFI_RNG_GET_RNG                 GetRNG;
+  EFI_RNG_GET_INFO    GetInfo;
+  EFI_RNG_GET_RNG     GetRNG;
 };
 
-extern EFI_GUID gEfiRngProtocolGuid;
-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  gEfiRngProtocolGuid;
+extern EFI_GUID  gEfiRngAlgorithmSp80090Hash256Guid;
+extern EFI_GUID  gEfiRngAlgorithmSp80090Hmac256Guid;
+extern EFI_GUID  gEfiRngAlgorithmSp80090Ctr256Guid;
+extern EFI_GUID  gEfiRngAlgorithmX9313DesGuid;
+extern EFI_GUID  gEfiRngAlgorithmX931AesGuid;
+extern EFI_GUID  gEfiRngAlgorithmRaw;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/SerialIo.h b/src/include/ipxe/efi/Protocol/SerialIo.h
index 130a6ec..1e44a21 100644
--- a/src/include/ipxe/efi/Protocol/SerialIo.h
+++ b/src/include/ipxe/efi/Protocol/SerialIo.h
@@ -4,27 +4,26 @@
   Abstraction of a basic serial device. Targeted at 16550 UART, but
   could be much more generic.
 
-  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __SERIAL_IO_PROTOCOL_H__
 #define __SERIAL_IO_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_SERIAL_IO_PROTOCOL_GUID \
   { \
     0xBB25CF6F, 0xF1D4, 0x11D2, {0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD } \
   }
 
+#define EFI_SERIAL_TERMINAL_DEVICE_TYPE_GUID \
+  { \
+    0X6AD9A60F, 0X5815, 0X4C7C, { 0X8A, 0X10, 0X50, 0X53, 0XD2, 0XBF, 0X7A, 0X1B } \
+  }
+
 ///
 /// Protocol GUID defined in EFI1.1.
 ///
@@ -32,11 +31,10 @@
 
 typedef struct _EFI_SERIAL_IO_PROTOCOL EFI_SERIAL_IO_PROTOCOL;
 
-
 ///
 /// Backward-compatible with EFI1.1.
 ///
-typedef EFI_SERIAL_IO_PROTOCOL  SERIAL_IO_INTERFACE;
+typedef EFI_SERIAL_IO_PROTOCOL SERIAL_IO_INTERFACE;
 
 ///
 /// Parity type that is computed or checked as each character is transmitted or received. If the
@@ -83,13 +81,14 @@
 //
 // Read Write
 //
-#define EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE     0x00001000
-#define EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE     0x00002000
-#define EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE 0x00004000
+#define EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE      0x00001000
+#define EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE      0x00002000
+#define EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE  0x00004000
 
 //
 // Serial IO Member Functions
 //
+
 /**
   Reset the serial device.
 
@@ -127,8 +126,9 @@
                            value of DefaultStopBits will use the device's default number of
                            stop bits.
 
-  @retval EFI_SUCCESS      The device was reset.
-  @retval EFI_DEVICE_ERROR The serial device could not be reset.
+  @retval EFI_SUCCESS           The device was reset.
+  @retval EFI_INVALID_PARAMETER One or more attributes has an unsupported value.
+  @retval EFI_DEVICE_ERROR      The serial device is not functioning correctly.
 
 **/
 typedef
@@ -256,21 +256,22 @@
 
 **/
 typedef struct {
-  UINT32  ControlMask;
+  UINT32    ControlMask;
 
   //
   // current Attributes
   //
-  UINT32  Timeout;
-  UINT64  BaudRate;
-  UINT32  ReceiveFifoDepth;
-  UINT32  DataBits;
-  UINT32  Parity;
-  UINT32  StopBits;
+  UINT32    Timeout;
+  UINT64    BaudRate;
+  UINT32    ReceiveFifoDepth;
+  UINT32    DataBits;
+  UINT32    Parity;
+  UINT32    StopBits;
 } EFI_SERIAL_IO_MODE;
 
-#define EFI_SERIAL_IO_PROTOCOL_REVISION    0x00010000
-#define SERIAL_IO_INTERFACE_REVISION  EFI_SERIAL_IO_PROTOCOL_REVISION
+#define EFI_SERIAL_IO_PROTOCOL_REVISION     0x00010000
+#define EFI_SERIAL_IO_PROTOCOL_REVISION1p1  0x00010001
+#define SERIAL_IO_INTERFACE_REVISION        EFI_SERIAL_IO_PROTOCOL_REVISION
 
 ///
 /// The Serial I/O protocol is used to communicate with UART-style serial devices.
@@ -283,19 +284,28 @@
   /// must be backwards compatible. If a future version is not backwards compatible,
   /// it is not the same GUID.
   ///
-  UINT32                      Revision;
-  EFI_SERIAL_RESET            Reset;
-  EFI_SERIAL_SET_ATTRIBUTES   SetAttributes;
-  EFI_SERIAL_SET_CONTROL_BITS SetControl;
-  EFI_SERIAL_GET_CONTROL_BITS GetControl;
-  EFI_SERIAL_WRITE            Write;
-  EFI_SERIAL_READ             Read;
+  UINT32                         Revision;
+  EFI_SERIAL_RESET               Reset;
+  EFI_SERIAL_SET_ATTRIBUTES      SetAttributes;
+  EFI_SERIAL_SET_CONTROL_BITS    SetControl;
+  EFI_SERIAL_GET_CONTROL_BITS    GetControl;
+  EFI_SERIAL_WRITE               Write;
+  EFI_SERIAL_READ                Read;
   ///
   /// Pointer to SERIAL_IO_MODE data.
   ///
-  EFI_SERIAL_IO_MODE          *Mode;
+  EFI_SERIAL_IO_MODE             *Mode;
+  ///
+  /// Pointer to a GUID identifying the device connected to the serial port.
+  /// This field is NULL when the protocol is installed by the serial port
+  /// driver and may be populated by a platform driver for a serial port
+  /// with a known device attached. The field will remain NULL if there is
+  /// no platform serial device identification information available.
+  ///
+  CONST EFI_GUID                 *DeviceTypeGuid; // Revision 1.1
 };
 
-extern EFI_GUID gEfiSerialIoProtocolGuid;
+extern EFI_GUID  gEfiSerialIoProtocolGuid;
+extern EFI_GUID  gEfiSerialTerminalDeviceTypeGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/SimpleFileSystem.h b/src/include/ipxe/efi/Protocol/SimpleFileSystem.h
index b6bacfd..62edb2a 100644
--- a/src/include/ipxe/efi/Protocol/SimpleFileSystem.h
+++ b/src/include/ipxe/efi/Protocol/SimpleFileSystem.h
@@ -7,42 +7,36 @@
 
   UEFI 2.0 can boot from any valid EFI image contained in a SimpleFileSystem.
 
-Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __SIMPLE_FILE_SYSTEM_H__
 #define __SIMPLE_FILE_SYSTEM_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
   { \
     0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
   }
 
-typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL;
+typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL EFI_SIMPLE_FILE_SYSTEM_PROTOCOL;
 
-typedef struct _EFI_FILE_PROTOCOL         EFI_FILE_PROTOCOL;
-typedef struct _EFI_FILE_PROTOCOL         *EFI_FILE_HANDLE;
+typedef struct _EFI_FILE_PROTOCOL EFI_FILE_PROTOCOL;
+typedef struct _EFI_FILE_PROTOCOL *EFI_FILE_HANDLE;
 
 ///
 /// Protocol GUID name defined in EFI1.1.
 ///
-#define SIMPLE_FILE_SYSTEM_PROTOCOL       EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID
+#define SIMPLE_FILE_SYSTEM_PROTOCOL  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID
 
 ///
 /// Protocol name defined in EFI1.1.
 ///
-typedef EFI_SIMPLE_FILE_SYSTEM_PROTOCOL   EFI_FILE_IO_INTERFACE;
-typedef EFI_FILE_PROTOCOL                 EFI_FILE;
+typedef EFI_SIMPLE_FILE_SYSTEM_PROTOCOL EFI_FILE_IO_INTERFACE;
+typedef EFI_FILE_PROTOCOL               EFI_FILE;
 
 /**
   Open the root directory on a volume.
@@ -84,8 +78,8 @@
   /// specified by this specification is 0x00010000. All future revisions
   /// must be backwards compatible.
   ///
-  UINT64                                      Revision;
-  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME OpenVolume;
+  UINT64                                         Revision;
+  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_OPEN_VOLUME    OpenVolume;
 };
 
 /**
@@ -138,13 +132,13 @@
 //
 // File attributes
 //
-#define EFI_FILE_READ_ONLY  0x0000000000000001ULL
-#define EFI_FILE_HIDDEN     0x0000000000000002ULL
-#define EFI_FILE_SYSTEM     0x0000000000000004ULL
-#define EFI_FILE_RESERVED   0x0000000000000008ULL
-#define EFI_FILE_DIRECTORY  0x0000000000000010ULL
-#define EFI_FILE_ARCHIVE    0x0000000000000020ULL
-#define EFI_FILE_VALID_ATTR 0x0000000000000037ULL
+#define EFI_FILE_READ_ONLY   0x0000000000000001ULL
+#define EFI_FILE_HIDDEN      0x0000000000000002ULL
+#define EFI_FILE_SYSTEM      0x0000000000000004ULL
+#define EFI_FILE_RESERVED    0x0000000000000008ULL
+#define EFI_FILE_DIRECTORY   0x0000000000000010ULL
+#define EFI_FILE_ARCHIVE     0x0000000000000020ULL
+#define EFI_FILE_VALID_ATTR  0x0000000000000037ULL
 
 /**
   Closes a specified file handle.
@@ -373,12 +367,12 @@
   // The caller must be prepared to handle the case where the callback associated with Event
   // occurs before the original asynchronous I/O request call returns.
   //
-  EFI_EVENT                   Event;
+  EFI_EVENT     Event;
 
   //
   // Defines whether or not the signaled event encountered an error.
   //
-  EFI_STATUS                  Status;
+  EFI_STATUS    Status;
 
   //
   // For OpenEx():  Not Used, ignored.
@@ -388,7 +382,7 @@
   //                In both cases, the size is measured in bytes.
   // For FlushEx(): Not used, ignored.
   //
-  UINTN                       BufferSize;
+  UINTN    BufferSize;
 
   //
   // For OpenEx():  Not Used, ignored.
@@ -396,7 +390,7 @@
   // For WriteEx(): The buffer of data to write.
   // For FlushEx(): Not Used, ignored.
   //
-  VOID                        *Buffer;
+  VOID     *Buffer;
 } EFI_FILE_IO_TOKEN;
 
 /**
@@ -442,7 +436,6 @@
   IN OUT EFI_FILE_IO_TOKEN    *Token
   );
 
-
 /**
   Reads data from a file.
 
@@ -461,11 +454,10 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI *EFI_FILE_READ_EX) (
+(EFIAPI *EFI_FILE_READ_EX)(
   IN EFI_FILE_PROTOCOL        *This,
   IN OUT EFI_FILE_IO_TOKEN    *Token
-);
-
+  );
 
 /**
   Writes data to a file.
@@ -488,10 +480,10 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI *EFI_FILE_WRITE_EX) (
+(EFIAPI *EFI_FILE_WRITE_EX)(
   IN EFI_FILE_PROTOCOL        *This,
   IN OUT EFI_FILE_IO_TOKEN    *Token
-);
+  );
 
 /**
   Flushes all modified data associated with a file to a device.
@@ -514,19 +506,19 @@
 **/
 typedef
 EFI_STATUS
-(EFIAPI *EFI_FILE_FLUSH_EX) (
+(EFIAPI *EFI_FILE_FLUSH_EX)(
   IN EFI_FILE_PROTOCOL        *This,
   IN OUT EFI_FILE_IO_TOKEN    *Token
   );
 
-#define EFI_FILE_PROTOCOL_REVISION        0x00010000
-#define EFI_FILE_PROTOCOL_REVISION2       0x00020000
-#define EFI_FILE_PROTOCOL_LATEST_REVISION EFI_FILE_PROTOCOL_REVISION2
+#define EFI_FILE_PROTOCOL_REVISION         0x00010000
+#define EFI_FILE_PROTOCOL_REVISION2        0x00020000
+#define EFI_FILE_PROTOCOL_LATEST_REVISION  EFI_FILE_PROTOCOL_REVISION2
 
 //
 // Revision defined in EFI1.1.
 //
-#define EFI_FILE_REVISION   EFI_FILE_PROTOCOL_REVISION
+#define EFI_FILE_REVISION  EFI_FILE_PROTOCOL_REVISION
 
 ///
 /// The EFI_FILE_PROTOCOL provides file IO access to supported file systems.
@@ -541,24 +533,23 @@
   /// by this specification is EFI_FILE_PROTOCOL_LATEST_REVISION.
   /// Future versions are required to be backward compatible to version 1.0.
   ///
-  UINT64                Revision;
-  EFI_FILE_OPEN         Open;
-  EFI_FILE_CLOSE        Close;
-  EFI_FILE_DELETE       Delete;
-  EFI_FILE_READ         Read;
-  EFI_FILE_WRITE        Write;
-  EFI_FILE_GET_POSITION GetPosition;
-  EFI_FILE_SET_POSITION SetPosition;
-  EFI_FILE_GET_INFO     GetInfo;
-  EFI_FILE_SET_INFO     SetInfo;
-  EFI_FILE_FLUSH        Flush;
-  EFI_FILE_OPEN_EX      OpenEx;
-  EFI_FILE_READ_EX      ReadEx;
-  EFI_FILE_WRITE_EX     WriteEx;
-  EFI_FILE_FLUSH_EX     FlushEx;
+  UINT64                   Revision;
+  EFI_FILE_OPEN            Open;
+  EFI_FILE_CLOSE           Close;
+  EFI_FILE_DELETE          Delete;
+  EFI_FILE_READ            Read;
+  EFI_FILE_WRITE           Write;
+  EFI_FILE_GET_POSITION    GetPosition;
+  EFI_FILE_SET_POSITION    SetPosition;
+  EFI_FILE_GET_INFO        GetInfo;
+  EFI_FILE_SET_INFO        SetInfo;
+  EFI_FILE_FLUSH           Flush;
+  EFI_FILE_OPEN_EX         OpenEx;
+  EFI_FILE_READ_EX         ReadEx;
+  EFI_FILE_WRITE_EX        WriteEx;
+  EFI_FILE_FLUSH_EX        FlushEx;
 };
 
-
-extern EFI_GUID gEfiSimpleFileSystemProtocolGuid;
+extern EFI_GUID  gEfiSimpleFileSystemProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/SimpleNetwork.h b/src/include/ipxe/efi/Protocol/SimpleNetwork.h
index 2faa668..141ab88 100644
--- a/src/include/ipxe/efi/Protocol/SimpleNetwork.h
+++ b/src/include/ipxe/efi/Protocol/SimpleNetwork.h
@@ -9,14 +9,8 @@
   MCast - MultiCast
   ...
 
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol is introduced in EFI Specification 1.10.
@@ -26,20 +20,19 @@
 #ifndef __SIMPLE_NETWORK_H__
 #define __SIMPLE_NETWORK_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_SIMPLE_NETWORK_PROTOCOL_GUID \
   { \
     0xA19832B9, 0xAC25, 0x11D3, {0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D } \
   }
 
-typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL  EFI_SIMPLE_NETWORK_PROTOCOL;
-
+typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL EFI_SIMPLE_NETWORK_PROTOCOL;
 
 ///
 /// Protocol defined in EFI1.1.
 ///
-typedef EFI_SIMPLE_NETWORK_PROTOCOL   EFI_SIMPLE_NETWORK;
+typedef EFI_SIMPLE_NETWORK_PROTOCOL EFI_SIMPLE_NETWORK;
 
 ///
 /// Simple Network Protocol data structures.
@@ -49,99 +42,99 @@
   /// Total number of frames received.  Includes frames with errors and
   /// dropped frames.
   ///
-  UINT64  RxTotalFrames;
+  UINT64    RxTotalFrames;
 
   ///
   /// Number of valid frames received and copied into receive buffers.
   ///
-  UINT64  RxGoodFrames;
+  UINT64    RxGoodFrames;
 
   ///
   /// Number of frames below the minimum length for the media.
   /// This would be <64 for ethernet.
   ///
-  UINT64  RxUndersizeFrames;
+  UINT64    RxUndersizeFrames;
 
   ///
   /// Number of frames longer than the maxminum length for the
   /// media.  This would be >1500 for ethernet.
   ///
-  UINT64  RxOversizeFrames;
+  UINT64    RxOversizeFrames;
 
   ///
   /// Valid frames that were dropped because receive buffers were full.
   ///
-  UINT64  RxDroppedFrames;
+  UINT64    RxDroppedFrames;
 
   ///
   /// Number of valid unicast frames received and not dropped.
   ///
-  UINT64  RxUnicastFrames;
+  UINT64    RxUnicastFrames;
 
   ///
   /// Number of valid broadcast frames received and not dropped.
   ///
-  UINT64  RxBroadcastFrames;
+  UINT64    RxBroadcastFrames;
 
   ///
   /// Number of valid mutlicast frames received and not dropped.
   ///
-  UINT64  RxMulticastFrames;
+  UINT64    RxMulticastFrames;
 
   ///
   /// Number of frames w/ CRC or alignment errors.
   ///
-  UINT64  RxCrcErrorFrames;
+  UINT64    RxCrcErrorFrames;
 
   ///
   /// Total number of bytes received.  Includes frames with errors
   /// and dropped frames.
   //
-  UINT64  RxTotalBytes;
+  UINT64    RxTotalBytes;
 
   ///
   /// Transmit statistics.
   ///
-  UINT64  TxTotalFrames;
-  UINT64  TxGoodFrames;
-  UINT64  TxUndersizeFrames;
-  UINT64  TxOversizeFrames;
-  UINT64  TxDroppedFrames;
-  UINT64  TxUnicastFrames;
-  UINT64  TxBroadcastFrames;
-  UINT64  TxMulticastFrames;
-  UINT64  TxCrcErrorFrames;
-  UINT64  TxTotalBytes;
+  UINT64    TxTotalFrames;
+  UINT64    TxGoodFrames;
+  UINT64    TxUndersizeFrames;
+  UINT64    TxOversizeFrames;
+  UINT64    TxDroppedFrames;
+  UINT64    TxUnicastFrames;
+  UINT64    TxBroadcastFrames;
+  UINT64    TxMulticastFrames;
+  UINT64    TxCrcErrorFrames;
+  UINT64    TxTotalBytes;
 
   ///
   /// Number of collisions detection on this subnet.
   ///
-  UINT64  Collisions;
+  UINT64    Collisions;
 
   ///
   /// Number of frames destined for unsupported protocol.
   ///
-  UINT64  UnsupportedProtocol;
+  UINT64    UnsupportedProtocol;
 
   ///
   /// Number of valid frames received that were duplicated.
   ///
-  UINT64  RxDuplicatedFrames;
+  UINT64    RxDuplicatedFrames;
 
   ///
   /// Number of encrypted frames received that failed to decrypt.
   ///
-  UINT64  RxDecryptErrorFrames;
+  UINT64    RxDecryptErrorFrames;
 
   ///
   /// Number of frames that failed to transmit after exceeding the retry limit.
   ///
-  UINT64  TxErrorFrames;
+  UINT64    TxErrorFrames;
 
   ///
   /// Number of frames transmitted successfully after more than one attempt.
   ///
-  UINT64  TxRetryFrames;
+  UINT64    TxRetryFrames;
 } EFI_NETWORK_STATISTICS;
 
 ///
@@ -162,97 +155,98 @@
 #define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS            0x08
 #define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST  0x10
 
-#define EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT              0x01
-#define EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT             0x02
-#define EFI_SIMPLE_NETWORK_COMMAND_INTERRUPT              0x04
-#define EFI_SIMPLE_NETWORK_SOFTWARE_INTERRUPT             0x08
+#define EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT   0x01
+#define EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT  0x02
+#define EFI_SIMPLE_NETWORK_COMMAND_INTERRUPT   0x04
+#define EFI_SIMPLE_NETWORK_SOFTWARE_INTERRUPT  0x08
 
-#define MAX_MCAST_FILTER_CNT                              16
+#define MAX_MCAST_FILTER_CNT  16
 typedef struct {
   ///
   /// Reports the current state of the network interface.
   ///
-  UINT32          State;
+  UINT32             State;
   ///
   /// The size, in bytes, of the network interface's HW address.
   ///
-  UINT32          HwAddressSize;
+  UINT32             HwAddressSize;
   ///
   /// The size, in bytes, of the network interface's media header.
   ///
-  UINT32          MediaHeaderSize;
+  UINT32             MediaHeaderSize;
   ///
   /// The maximum size, in bytes, of the packets supported by the network interface.
   ///
-  UINT32          MaxPacketSize;
+  UINT32             MaxPacketSize;
   ///
   /// The size, in bytes, of the NVRAM device attached to the network interface.
   ///
-  UINT32          NvRamSize;
+  UINT32             NvRamSize;
   ///
   /// The size that must be used for all NVRAM reads and writes. The
   /// start address for NVRAM read and write operations and the total
   /// length of those operations, must be a multiple of this value. The
   /// legal values for this field are 0, 1, 2, 4, and 8.
   ///
-  UINT32          NvRamAccessSize;
+  UINT32             NvRamAccessSize;
   ///
   /// The multicast receive filter settings supported by the network interface.
   ///
-  UINT32          ReceiveFilterMask;
+  UINT32             ReceiveFilterMask;
   ///
   /// The current multicast receive filter settings.
   ///
-  UINT32          ReceiveFilterSetting;
+  UINT32             ReceiveFilterSetting;
   ///
   /// The maximum number of multicast address receive filters supported by the driver.
   ///
-  UINT32          MaxMCastFilterCount;
+  UINT32             MaxMCastFilterCount;
   ///
   /// The current number of multicast address receive filters.
   ///
-  UINT32          MCastFilterCount;
+  UINT32             MCastFilterCount;
   ///
   /// Array containing the addresses of the current multicast address receive filters.
   ///
-  EFI_MAC_ADDRESS MCastFilter[MAX_MCAST_FILTER_CNT];
+  EFI_MAC_ADDRESS    MCastFilter[MAX_MCAST_FILTER_CNT];
   ///
   /// The current HW MAC address for the network interface.
   ///
-  EFI_MAC_ADDRESS CurrentAddress;
+  EFI_MAC_ADDRESS    CurrentAddress;
   ///
   /// The current HW MAC address for broadcast packets.
   ///
-  EFI_MAC_ADDRESS BroadcastAddress;
+  EFI_MAC_ADDRESS    BroadcastAddress;
   ///
   /// The permanent HW MAC address for the network interface.
   ///
-  EFI_MAC_ADDRESS PermanentAddress;
+  EFI_MAC_ADDRESS    PermanentAddress;
   ///
   /// The interface type of the network interface.
   ///
-  UINT8           IfType;
+  UINT8              IfType;
   ///
   /// TRUE if the HW MAC address can be changed.
   ///
-  BOOLEAN         MacAddressChangeable;
+  BOOLEAN            MacAddressChangeable;
   ///
   /// TRUE if the network interface can transmit more than one packet at a time.
   ///
-  BOOLEAN         MultipleTxSupported;
+  BOOLEAN            MultipleTxSupported;
   ///
   /// TRUE if the presence of media can be determined; otherwise FALSE.
   ///
-  BOOLEAN         MediaPresentSupported;
+  BOOLEAN            MediaPresentSupported;
   ///
   /// TRUE if media are connected to the network interface; otherwise FALSE.
   ///
-  BOOLEAN         MediaPresent;
+  BOOLEAN            MediaPresent;
 } EFI_SIMPLE_NETWORK_MODE;
 
 //
 // Protocol Member Functions
 //
+
 /**
   Changes the state of a network interface from "stopped" to "started".
 
@@ -640,7 +634,7 @@
 //
 // Revision defined in EFI1.1
 //
-#define EFI_SIMPLE_NETWORK_INTERFACE_REVISION   EFI_SIMPLE_NETWORK_PROTOCOL_REVISION
+#define EFI_SIMPLE_NETWORK_INTERFACE_REVISION  EFI_SIMPLE_NETWORK_PROTOCOL_REVISION
 
 ///
 /// The EFI_SIMPLE_NETWORK_PROTOCOL protocol is used to initialize access
@@ -654,30 +648,30 @@
   /// be backwards compatible. If a future version is not backwards compatible
   /// it is not the same GUID.
   ///
-  UINT64                              Revision;
-  EFI_SIMPLE_NETWORK_START            Start;
-  EFI_SIMPLE_NETWORK_STOP             Stop;
-  EFI_SIMPLE_NETWORK_INITIALIZE       Initialize;
-  EFI_SIMPLE_NETWORK_RESET            Reset;
-  EFI_SIMPLE_NETWORK_SHUTDOWN         Shutdown;
-  EFI_SIMPLE_NETWORK_RECEIVE_FILTERS  ReceiveFilters;
-  EFI_SIMPLE_NETWORK_STATION_ADDRESS  StationAddress;
-  EFI_SIMPLE_NETWORK_STATISTICS       Statistics;
-  EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC  MCastIpToMac;
-  EFI_SIMPLE_NETWORK_NVDATA           NvData;
-  EFI_SIMPLE_NETWORK_GET_STATUS       GetStatus;
-  EFI_SIMPLE_NETWORK_TRANSMIT         Transmit;
-  EFI_SIMPLE_NETWORK_RECEIVE          Receive;
+  UINT64                                Revision;
+  EFI_SIMPLE_NETWORK_START              Start;
+  EFI_SIMPLE_NETWORK_STOP               Stop;
+  EFI_SIMPLE_NETWORK_INITIALIZE         Initialize;
+  EFI_SIMPLE_NETWORK_RESET              Reset;
+  EFI_SIMPLE_NETWORK_SHUTDOWN           Shutdown;
+  EFI_SIMPLE_NETWORK_RECEIVE_FILTERS    ReceiveFilters;
+  EFI_SIMPLE_NETWORK_STATION_ADDRESS    StationAddress;
+  EFI_SIMPLE_NETWORK_STATISTICS         Statistics;
+  EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC    MCastIpToMac;
+  EFI_SIMPLE_NETWORK_NVDATA             NvData;
+  EFI_SIMPLE_NETWORK_GET_STATUS         GetStatus;
+  EFI_SIMPLE_NETWORK_TRANSMIT           Transmit;
+  EFI_SIMPLE_NETWORK_RECEIVE            Receive;
   ///
   /// Event used with WaitForEvent() to wait for a packet to be received.
   ///
-  EFI_EVENT                           WaitForPacket;
+  EFI_EVENT                             WaitForPacket;
   ///
   /// Pointer to the EFI_SIMPLE_NETWORK_MODE data for the device.
   ///
-  EFI_SIMPLE_NETWORK_MODE             *Mode;
+  EFI_SIMPLE_NETWORK_MODE               *Mode;
 };
 
-extern EFI_GUID gEfiSimpleNetworkProtocolGuid;
+extern EFI_GUID  gEfiSimpleNetworkProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/SimplePointer.h b/src/include/ipxe/efi/Protocol/SimplePointer.h
index 3b1e305..45ddf8d 100644
--- a/src/include/ipxe/efi/Protocol/SimplePointer.h
+++ b/src/include/ipxe/efi/Protocol/SimplePointer.h
@@ -3,28 +3,22 @@
 
   Abstraction of a very simple pointer device like a mouse or trackball.
 
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __SIMPLE_POINTER_H__
 #define __SIMPLE_POINTER_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_SIMPLE_POINTER_PROTOCOL_GUID \
   { \
     0x31878c87, 0xb75, 0x11d5, {0x9a, 0x4f, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
   }
 
-typedef struct _EFI_SIMPLE_POINTER_PROTOCOL  EFI_SIMPLE_POINTER_PROTOCOL;
+typedef struct _EFI_SIMPLE_POINTER_PROTOCOL EFI_SIMPLE_POINTER_PROTOCOL;
 
 //
 // Data structures
@@ -33,25 +27,25 @@
   ///
   /// The signed distance in counts that the pointer device has been moved along the x-axis.
   ///
-  INT32   RelativeMovementX;
+  INT32      RelativeMovementX;
   ///
   /// The signed distance in counts that the pointer device has been moved along the y-axis.
   ///
-  INT32   RelativeMovementY;
+  INT32      RelativeMovementY;
   ///
   /// The signed distance in counts that the pointer device has been moved along the z-axis.
   ///
-  INT32   RelativeMovementZ;
+  INT32      RelativeMovementZ;
   ///
   /// If TRUE, then the left button of the pointer device is being
   /// pressed. If FALSE, then the left button of the pointer device is not being pressed.
   ///
-  BOOLEAN LeftButton;
+  BOOLEAN    LeftButton;
   ///
   /// If TRUE, then the right button of the pointer device is being
   /// pressed. If FALSE, then the right button of the pointer device is not being pressed.
   ///
-  BOOLEAN RightButton;
+  BOOLEAN    RightButton;
 } EFI_SIMPLE_POINTER_STATE;
 
 typedef struct {
@@ -59,25 +53,25 @@
   /// The resolution of the pointer device on the x-axis in counts/mm.
   /// If 0, then the pointer device does not support an x-axis.
   ///
-  UINT64  ResolutionX;
+  UINT64     ResolutionX;
   ///
   /// The resolution of the pointer device on the y-axis in counts/mm.
   /// If 0, then the pointer device does not support an x-axis.
   ///
-  UINT64  ResolutionY;
+  UINT64     ResolutionY;
   ///
   /// The resolution of the pointer device on the z-axis in counts/mm.
   /// If 0, then the pointer device does not support an x-axis.
   ///
-  UINT64  ResolutionZ;
+  UINT64     ResolutionZ;
   ///
   /// TRUE if a left button is present on the pointer device. Otherwise FALSE.
   ///
-  BOOLEAN LeftButton;
+  BOOLEAN    LeftButton;
   ///
   /// TRUE if a right button is present on the pointer device. Otherwise FALSE.
   ///
-  BOOLEAN RightButton;
+  BOOLEAN    RightButton;
 } EFI_SIMPLE_POINTER_MODE;
 
 /**
@@ -117,7 +111,7 @@
 EFI_STATUS
 (EFIAPI *EFI_SIMPLE_POINTER_GET_STATE)(
   IN EFI_SIMPLE_POINTER_PROTOCOL          *This,
-  IN OUT EFI_SIMPLE_POINTER_STATE         *State
+  OUT EFI_SIMPLE_POINTER_STATE            *State
   );
 
 ///
@@ -128,18 +122,18 @@
 /// retrieve the capabilities of the pointer device.
 ///
 struct _EFI_SIMPLE_POINTER_PROTOCOL {
-  EFI_SIMPLE_POINTER_RESET      Reset;
-  EFI_SIMPLE_POINTER_GET_STATE  GetState;
+  EFI_SIMPLE_POINTER_RESET        Reset;
+  EFI_SIMPLE_POINTER_GET_STATE    GetState;
   ///
   /// Event to use with WaitForEvent() to wait for input from the pointer device.
   ///
-  EFI_EVENT                     WaitForInput;
+  EFI_EVENT                       WaitForInput;
   ///
   /// Pointer to EFI_SIMPLE_POINTER_MODE data.
   ///
-  EFI_SIMPLE_POINTER_MODE       *Mode;
+  EFI_SIMPLE_POINTER_MODE         *Mode;
 };
 
-extern EFI_GUID gEfiSimplePointerProtocolGuid;
+extern EFI_GUID  gEfiSimplePointerProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/SimpleTextIn.h b/src/include/ipxe/efi/Protocol/SimpleTextIn.h
index e6d0eb2..11daeb5 100644
--- a/src/include/ipxe/efi/Protocol/SimpleTextIn.h
+++ b/src/include/ipxe/efi/Protocol/SimpleTextIn.h
@@ -5,44 +5,38 @@
   terminal.
 
   Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __SIMPLE_TEXT_IN_PROTOCOL_H__
 #define __SIMPLE_TEXT_IN_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \
   { \
     0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
   }
 
-typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL  EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
+typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
 
 ///
 /// Protocol GUID name defined in EFI1.1.
 ///
-#define SIMPLE_INPUT_PROTOCOL   EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID
+#define SIMPLE_INPUT_PROTOCOL  EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID
 
 ///
 /// Protocol name in EFI1.1 for backward-compatible.
 ///
-typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL  SIMPLE_INPUT_INTERFACE;
+typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL SIMPLE_INPUT_INTERFACE;
 
 ///
 /// The keystroke information for the key that was pressed.
 ///
 typedef struct {
-  UINT16  ScanCode;
-  CHAR16  UnicodeChar;
+  UINT16    ScanCode;
+  CHAR16    UnicodeChar;
 } EFI_INPUT_KEY;
 
 //
@@ -122,14 +116,14 @@
 /// It is the minimum required protocol for ConsoleIn.
 ///
 struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL {
-  EFI_INPUT_RESET     Reset;
-  EFI_INPUT_READ_KEY  ReadKeyStroke;
+  EFI_INPUT_RESET       Reset;
+  EFI_INPUT_READ_KEY    ReadKeyStroke;
   ///
   /// Event to use with WaitForEvent() to wait for a key to be available
   ///
-  EFI_EVENT           WaitForKey;
+  EFI_EVENT             WaitForKey;
 };
 
-extern EFI_GUID gEfiSimpleTextInProtocolGuid;
+extern EFI_GUID  gEfiSimpleTextInProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/SimpleTextInEx.h b/src/include/ipxe/efi/Protocol/SimpleTextInEx.h
index 9a9f5ab..9a93da5 100644
--- a/src/include/ipxe/efi/Protocol/SimpleTextInEx.h
+++ b/src/include/ipxe/efi/Protocol/SimpleTextInEx.h
@@ -5,28 +5,21 @@
   which exposes much more state and modifier information from the input device,
   also allows one to register a notification for a particular keystroke.
 
-  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __SIMPLE_TEXT_IN_EX_H__
 #define __SIMPLE_TEXT_IN_EX_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/SimpleTextIn.h>
 
 #define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \
   {0xdd9e7534, 0x7762, 0x4698, { 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa } }
 
-
 typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
 
 /**
@@ -59,8 +52,7 @@
 (EFIAPI *EFI_INPUT_RESET_EX)(
   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
   IN BOOLEAN                           ExtendedVerification
-);
-
+  );
 
 ///
 /// EFI_KEY_TOGGLE_STATE. The toggle states are defined.
@@ -76,25 +68,25 @@
   /// returned value is valid only if the high
   /// order bit has been set.
   ///
-  UINT32                KeyShiftState;
+  UINT32                  KeyShiftState;
   ///
   /// Reflects the current internal state of
   /// various toggled attributes. The returned
   /// value is valid only if the high order
   /// bit has been set.
   ///
-  EFI_KEY_TOGGLE_STATE  KeyToggleState;
+  EFI_KEY_TOGGLE_STATE    KeyToggleState;
 } EFI_KEY_STATE;
 
 typedef struct {
   ///
   /// The EFI scan code and Unicode value returned from the input device.
   ///
-  EFI_INPUT_KEY   Key;
+  EFI_INPUT_KEY    Key;
   ///
   /// The current state of various toggled attributes as well as input modifier values.
   ///
-  EFI_KEY_STATE   KeyState;
+  EFI_KEY_STATE    KeyState;
 } EFI_KEY_DATA;
 
 //
@@ -103,55 +95,55 @@
 //
 // Shift state
 //
-#define EFI_SHIFT_STATE_VALID     0x80000000
-#define EFI_RIGHT_SHIFT_PRESSED   0x00000001
-#define EFI_LEFT_SHIFT_PRESSED    0x00000002
-#define EFI_RIGHT_CONTROL_PRESSED 0x00000004
-#define EFI_LEFT_CONTROL_PRESSED  0x00000008
-#define EFI_RIGHT_ALT_PRESSED     0x00000010
-#define EFI_LEFT_ALT_PRESSED      0x00000020
-#define EFI_RIGHT_LOGO_PRESSED    0x00000040
-#define EFI_LEFT_LOGO_PRESSED     0x00000080
-#define EFI_MENU_KEY_PRESSED      0x00000100
-#define EFI_SYS_REQ_PRESSED       0x00000200
+#define EFI_SHIFT_STATE_VALID      0x80000000
+#define EFI_RIGHT_SHIFT_PRESSED    0x00000001
+#define EFI_LEFT_SHIFT_PRESSED     0x00000002
+#define EFI_RIGHT_CONTROL_PRESSED  0x00000004
+#define EFI_LEFT_CONTROL_PRESSED   0x00000008
+#define EFI_RIGHT_ALT_PRESSED      0x00000010
+#define EFI_LEFT_ALT_PRESSED       0x00000020
+#define EFI_RIGHT_LOGO_PRESSED     0x00000040
+#define EFI_LEFT_LOGO_PRESSED      0x00000080
+#define EFI_MENU_KEY_PRESSED       0x00000100
+#define EFI_SYS_REQ_PRESSED        0x00000200
 
 //
 // Toggle state
 //
-#define EFI_TOGGLE_STATE_VALID    0x80
-#define EFI_KEY_STATE_EXPOSED     0x40
-#define EFI_SCROLL_LOCK_ACTIVE    0x01
-#define EFI_NUM_LOCK_ACTIVE       0x02
-#define EFI_CAPS_LOCK_ACTIVE      0x04
+#define EFI_TOGGLE_STATE_VALID  0x80
+#define EFI_KEY_STATE_EXPOSED   0x40
+#define EFI_SCROLL_LOCK_ACTIVE  0x01
+#define EFI_NUM_LOCK_ACTIVE     0x02
+#define EFI_CAPS_LOCK_ACTIVE    0x04
 
 //
 // EFI Scan codes
 //
-#define SCAN_F11                  0x0015
-#define SCAN_F12                  0x0016
-#define SCAN_PAUSE                0x0048
-#define SCAN_F13                  0x0068
-#define SCAN_F14                  0x0069
-#define SCAN_F15                  0x006A
-#define SCAN_F16                  0x006B
-#define SCAN_F17                  0x006C
-#define SCAN_F18                  0x006D
-#define SCAN_F19                  0x006E
-#define SCAN_F20                  0x006F
-#define SCAN_F21                  0x0070
-#define SCAN_F22                  0x0071
-#define SCAN_F23                  0x0072
-#define SCAN_F24                  0x0073
-#define SCAN_MUTE                 0x007F
-#define SCAN_VOLUME_UP            0x0080
-#define SCAN_VOLUME_DOWN          0x0081
-#define SCAN_BRIGHTNESS_UP        0x0100
-#define SCAN_BRIGHTNESS_DOWN      0x0101
-#define SCAN_SUSPEND              0x0102
-#define SCAN_HIBERNATE            0x0103
-#define SCAN_TOGGLE_DISPLAY       0x0104
-#define SCAN_RECOVERY             0x0105
-#define SCAN_EJECT                0x0106
+#define SCAN_F11              0x0015
+#define SCAN_F12              0x0016
+#define SCAN_PAUSE            0x0048
+#define SCAN_F13              0x0068
+#define SCAN_F14              0x0069
+#define SCAN_F15              0x006A
+#define SCAN_F16              0x006B
+#define SCAN_F17              0x006C
+#define SCAN_F18              0x006D
+#define SCAN_F19              0x006E
+#define SCAN_F20              0x006F
+#define SCAN_F21              0x0070
+#define SCAN_F22              0x0071
+#define SCAN_F23              0x0072
+#define SCAN_F24              0x0073
+#define SCAN_MUTE             0x007F
+#define SCAN_VOLUME_UP        0x0080
+#define SCAN_VOLUME_DOWN      0x0081
+#define SCAN_BRIGHTNESS_UP    0x0100
+#define SCAN_BRIGHTNESS_DOWN  0x0101
+#define SCAN_SUSPEND          0x0102
+#define SCAN_HIBERNATE        0x0103
+#define SCAN_TOGGLE_DISPLAY   0x0104
+#define SCAN_RECOVERY         0x0105
+#define SCAN_EJECT            0x0106
 
 /**
   The function reads the next keystroke from the input device. If
@@ -192,13 +184,10 @@
                   pressed.
 
 
-  @retval EFI_SUCCESS     The keystroke information was
-                          returned.
-
-  @retval EFI_NOT_READY   There was no keystroke data available.
-                          EFI_DEVICE_ERROR The keystroke
-                          information was not returned due to
-                          hardware errors.
+  @retval EFI_SUCCESS      The keystroke information was returned.
+  @retval EFI_NOT_READY    There was no keystroke data available.
+  @retval EFI_DEVICE_ERROR The keystroke information was not returned due to
+                           hardware errors.
 
 
 **/
@@ -207,7 +196,7 @@
 (EFIAPI *EFI_INPUT_READ_KEY_EX)(
   IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
   OUT EFI_KEY_DATA                      *KeyData
-);
+  );
 
 /**
   The SetState() function allows the input device hardware to
@@ -234,7 +223,7 @@
 (EFIAPI *EFI_SET_STATE)(
   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
   IN EFI_KEY_TOGGLE_STATE              *KeyToggleState
-);
+  );
 
 ///
 /// The function will be called when the key sequence is typed specified by KeyData.
@@ -243,7 +232,7 @@
 EFI_STATUS
 (EFIAPI *EFI_KEY_NOTIFY_FUNCTION)(
   IN EFI_KEY_DATA *KeyData
-);
+  );
 
 /**
   The RegisterKeystrokeNotify() function registers a function
@@ -253,18 +242,19 @@
 
   @param KeyData                  A pointer to a buffer that is filled in with
                                   the keystroke information for the key that was
-                                  pressed.
+                                  pressed. If KeyData.Key, KeyData.KeyState.KeyToggleState
+                                  and KeyData.KeyState.KeyShiftState are 0, then any incomplete
+                                  keystroke will trigger a notification of the KeyNotificationFunction.
 
-  @param KeyNotificationFunction  Points to the function to be
-                                  called when the key sequence
-                                  is typed specified by KeyData.
+  @param KeyNotificationFunction  Points to the function to be called when the key sequence
+                                  is typed specified by KeyData. This notification function
+                                  should be called at <=TPL_CALLBACK.
 
 
   @param NotifyHandle             Points to the unique handle assigned to
                                   the registered notification.
 
-  @retval EFI_SUCCESS           The device state was set
-                                appropriately.
+  @retval EFI_SUCCESS           Key notify was registered successfully.
 
   @retval EFI_OUT_OF_RESOURCES  Unable to allocate necessary
                                 data structures.
@@ -277,7 +267,7 @@
   IN  EFI_KEY_DATA                      *KeyData,
   IN  EFI_KEY_NOTIFY_FUNCTION           KeyNotificationFunction,
   OUT VOID                              **NotifyHandle
-);
+  );
 
 /**
   The UnregisterKeystrokeNotify() function removes the
@@ -288,7 +278,7 @@
   @param NotificationHandle The handle of the notification
                             function being unregistered.
 
-  @retval EFI_SUCCESS The device state was set appropriately.
+  @retval EFI_SUCCESS           Key notify was unregistered successfully.
 
   @retval EFI_INVALID_PARAMETER The NotificationHandle is
                                 invalid.
@@ -299,8 +289,7 @@
 (EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY)(
   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,
   IN VOID                               *NotificationHandle
-);
-
+  );
 
 ///
 /// The EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL is used on the ConsoleIn
@@ -308,20 +297,18 @@
 /// which allows a variety of extended shift state information to be
 /// returned.
 ///
-struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL{
-  EFI_INPUT_RESET_EX              Reset;
-  EFI_INPUT_READ_KEY_EX           ReadKeyStrokeEx;
+struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL {
+  EFI_INPUT_RESET_EX                 Reset;
+  EFI_INPUT_READ_KEY_EX              ReadKeyStrokeEx;
   ///
   /// Event to use with WaitForEvent() to wait for a key to be available.
   ///
-  EFI_EVENT                       WaitForKeyEx;
-  EFI_SET_STATE                   SetState;
-  EFI_REGISTER_KEYSTROKE_NOTIFY   RegisterKeyNotify;
-  EFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify;
+  EFI_EVENT                          WaitForKeyEx;
+  EFI_SET_STATE                      SetState;
+  EFI_REGISTER_KEYSTROKE_NOTIFY      RegisterKeyNotify;
+  EFI_UNREGISTER_KEYSTROKE_NOTIFY    UnregisterKeyNotify;
 };
 
-
-extern EFI_GUID gEfiSimpleTextInputExProtocolGuid;
+extern EFI_GUID  gEfiSimpleTextInputExProtocolGuid;
 
 #endif
-
diff --git a/src/include/ipxe/efi/Protocol/SimpleTextOut.h b/src/include/ipxe/efi/Protocol/SimpleTextOut.h
index 54d38b3..8240188 100644
--- a/src/include/ipxe/efi/Protocol/SimpleTextOut.h
+++ b/src/include/ipxe/efi/Protocol/SimpleTextOut.h
@@ -6,21 +6,15 @@
   a single hardware device or a virtual device that is an aggregation
   of multiple physical devices.
 
-Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __SIMPLE_TEXT_OUT_H__
 #define __SIMPLE_TEXT_OUT_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \
   { \
@@ -30,17 +24,17 @@
 ///
 /// Protocol GUID defined in EFI1.1.
 ///
-#define SIMPLE_TEXT_OUTPUT_PROTOCOL   EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID
+#define SIMPLE_TEXT_OUTPUT_PROTOCOL  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID
 
 typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
 
 ///
 /// Backward-compatible with EFI1.1.
 ///
-typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL   SIMPLE_TEXT_OUTPUT_INTERFACE;
+typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SIMPLE_TEXT_OUTPUT_INTERFACE;
 
 //
-// Define's for required EFI Unicode Box Draw characters
+// Defines for required EFI Unicode Box Draw characters
 //
 #define BOXDRAW_HORIZONTAL                  0x2500
 #define BOXDRAW_VERTICAL                    0x2502
@@ -92,39 +86,39 @@
 //
 // EFI Required Geometric Shapes Code Chart
 //
-#define GEOMETRICSHAPE_UP_TRIANGLE    0x25b2
-#define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba
-#define GEOMETRICSHAPE_DOWN_TRIANGLE  0x25bc
-#define GEOMETRICSHAPE_LEFT_TRIANGLE  0x25c4
+#define GEOMETRICSHAPE_UP_TRIANGLE     0x25b2
+#define GEOMETRICSHAPE_RIGHT_TRIANGLE  0x25ba
+#define GEOMETRICSHAPE_DOWN_TRIANGLE   0x25bc
+#define GEOMETRICSHAPE_LEFT_TRIANGLE   0x25c4
 
 //
 // EFI Required Arrow shapes
 //
-#define ARROW_LEFT  0x2190
-#define ARROW_UP    0x2191
-#define ARROW_RIGHT 0x2192
-#define ARROW_DOWN  0x2193
+#define ARROW_LEFT   0x2190
+#define ARROW_UP     0x2191
+#define ARROW_RIGHT  0x2192
+#define ARROW_DOWN   0x2193
 
 //
 // EFI Console Colours
 //
-#define EFI_BLACK                 0x00
-#define EFI_BLUE                  0x01
-#define EFI_GREEN                 0x02
-#define EFI_CYAN                  (EFI_BLUE | EFI_GREEN)
-#define EFI_RED                   0x04
-#define EFI_MAGENTA               (EFI_BLUE | EFI_RED)
-#define EFI_BROWN                 (EFI_GREEN | EFI_RED)
-#define EFI_LIGHTGRAY             (EFI_BLUE | EFI_GREEN | EFI_RED)
-#define EFI_BRIGHT                0x08
-#define EFI_DARKGRAY              (EFI_BLACK | EFI_BRIGHT)
-#define EFI_LIGHTBLUE             (EFI_BLUE | EFI_BRIGHT)
-#define EFI_LIGHTGREEN            (EFI_GREEN | EFI_BRIGHT)
-#define EFI_LIGHTCYAN             (EFI_CYAN | EFI_BRIGHT)
-#define EFI_LIGHTRED              (EFI_RED | EFI_BRIGHT)
-#define EFI_LIGHTMAGENTA          (EFI_MAGENTA | EFI_BRIGHT)
-#define EFI_YELLOW                (EFI_BROWN | EFI_BRIGHT)
-#define EFI_WHITE                 (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
+#define EFI_BLACK         0x00
+#define EFI_BLUE          0x01
+#define EFI_GREEN         0x02
+#define EFI_CYAN          (EFI_BLUE | EFI_GREEN)
+#define EFI_RED           0x04
+#define EFI_MAGENTA       (EFI_BLUE | EFI_RED)
+#define EFI_BROWN         (EFI_GREEN | EFI_RED)
+#define EFI_LIGHTGRAY     (EFI_BLUE | EFI_GREEN | EFI_RED)
+#define EFI_BRIGHT        0x08
+#define EFI_DARKGRAY      (EFI_BLACK | EFI_BRIGHT)
+#define EFI_LIGHTBLUE     (EFI_BLUE | EFI_BRIGHT)
+#define EFI_LIGHTGREEN    (EFI_GREEN | EFI_BRIGHT)
+#define EFI_LIGHTCYAN     (EFI_CYAN | EFI_BRIGHT)
+#define EFI_LIGHTRED      (EFI_RED | EFI_BRIGHT)
+#define EFI_LIGHTMAGENTA  (EFI_MAGENTA | EFI_BRIGHT)
+#define EFI_YELLOW        (EFI_BROWN | EFI_BRIGHT)
+#define EFI_WHITE         (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
 
 //
 // Macro to accept color values in their raw form to create
@@ -137,7 +131,7 @@
 //
 // Do not use EFI_BACKGROUND_xxx values with this macro.
 //
-#define EFI_TEXT_ATTR(Foreground,Background) ((Foreground) | ((Background) << 4))
+#define EFI_TEXT_ATTR(Foreground, Background)  ((Foreground) | ((Background) << 4))
 
 #define EFI_BACKGROUND_BLACK      0x00
 #define EFI_BACKGROUND_BLUE       0x10
@@ -159,7 +153,7 @@
 #define EFI_WIDE_ATTRIBUTE  0x80
 
 /**
-  Reset the text output device hardware and optionaly run diagnostics
+  Reset the text output device hardware and optionally run diagnostics
 
   @param  This                 The protocol instance pointer.
   @param  ExtendedVerification Driver may perform more exhaustive verification
@@ -358,7 +352,7 @@
   ///
   /// The number of modes supported by QueryMode () and SetMode ().
   ///
-  INT32   MaxMode;
+  INT32    MaxMode;
 
   //
   // current settings
@@ -367,23 +361,23 @@
   ///
   /// The text mode of the output device(s).
   ///
-  INT32   Mode;
+  INT32      Mode;
   ///
   /// The current character output attribute.
   ///
-  INT32   Attribute;
+  INT32      Attribute;
   ///
   /// The cursor's column.
   ///
-  INT32   CursorColumn;
+  INT32      CursorColumn;
   ///
   /// The cursor's row.
   ///
-  INT32   CursorRow;
+  INT32      CursorRow;
   ///
-  /// The cursor is currently visbile or not.
+  /// The cursor is currently visible or not.
   ///
-  BOOLEAN CursorVisible;
+  BOOLEAN    CursorVisible;
 } EFI_SIMPLE_TEXT_OUTPUT_MODE;
 
 ///
@@ -393,25 +387,25 @@
 /// devices is at least 80 x 25 characters.
 ///
 struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
-  EFI_TEXT_RESET                Reset;
+  EFI_TEXT_RESET                  Reset;
 
-  EFI_TEXT_STRING               OutputString;
-  EFI_TEXT_TEST_STRING          TestString;
+  EFI_TEXT_STRING                 OutputString;
+  EFI_TEXT_TEST_STRING            TestString;
 
-  EFI_TEXT_QUERY_MODE           QueryMode;
-  EFI_TEXT_SET_MODE             SetMode;
-  EFI_TEXT_SET_ATTRIBUTE        SetAttribute;
+  EFI_TEXT_QUERY_MODE             QueryMode;
+  EFI_TEXT_SET_MODE               SetMode;
+  EFI_TEXT_SET_ATTRIBUTE          SetAttribute;
 
-  EFI_TEXT_CLEAR_SCREEN         ClearScreen;
-  EFI_TEXT_SET_CURSOR_POSITION  SetCursorPosition;
-  EFI_TEXT_ENABLE_CURSOR        EnableCursor;
+  EFI_TEXT_CLEAR_SCREEN           ClearScreen;
+  EFI_TEXT_SET_CURSOR_POSITION    SetCursorPosition;
+  EFI_TEXT_ENABLE_CURSOR          EnableCursor;
 
   ///
   /// Pointer to SIMPLE_TEXT_OUTPUT_MODE data.
   ///
-  EFI_SIMPLE_TEXT_OUTPUT_MODE   *Mode;
+  EFI_SIMPLE_TEXT_OUTPUT_MODE     *Mode;
 };
 
-extern EFI_GUID gEfiSimpleTextOutProtocolGuid;
+extern EFI_GUID  gEfiSimpleTextOutProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/TcgService.h b/src/include/ipxe/efi/Protocol/TcgService.h
index 86c69a8..d225ae8 100644
--- a/src/include/ipxe/efi/Protocol/TcgService.h
+++ b/src/include/ipxe/efi/Protocol/TcgService.h
@@ -2,21 +2,15 @@
   TCG Service Protocol as defined in TCG_EFI_Protocol_1_22_Final
   See http://trustedcomputinggroup.org for the latest specification
 
-Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef _TCG_SERVICE_PROTOCOL_H_
 #define _TCG_SERVICE_PROTOCOL_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/UefiTcgPlatform.h>
 
@@ -26,10 +20,10 @@
 typedef struct _EFI_TCG_PROTOCOL EFI_TCG_PROTOCOL;
 
 typedef struct {
-  UINT8  Major;
-  UINT8  Minor;
-  UINT8  RevMajor;
-  UINT8  RevMinor;
+  UINT8    Major;
+  UINT8    Minor;
+  UINT8    RevMajor;
+  UINT8    RevMinor;
 } TCG_VERSION;
 
 typedef struct _TCG_EFI_BOOT_SERVICE_CAPABILITY {
@@ -42,7 +36,7 @@
   BOOLEAN        TPMDeactivatedFlag;  /// 01h = TPM currently deactivated.
 } TCG_EFI_BOOT_SERVICE_CAPABILITY;
 
-typedef UINT32   TCG_ALGORITHM_ID;
+typedef UINT32 TCG_ALGORITHM_ID;
 
 /**
   This service provides EFI protocol capability information, state information
@@ -70,7 +64,7 @@
 (EFIAPI *EFI_TCG_STATUS_CHECK)(
   IN      EFI_TCG_PROTOCOL          *This,
   OUT     TCG_EFI_BOOT_SERVICE_CAPABILITY
-                                    *ProtocolCapability,
+  *ProtocolCapability,
   OUT     UINT32                    *TCGFeatureFlags,
   OUT     EFI_PHYSICAL_ADDRESS      *EventLogLocation,
   OUT     EFI_PHYSICAL_ADDRESS      *EventLogLastEntry
@@ -184,20 +178,20 @@
   IN      TCG_ALGORITHM_ID          AlgorithmId,
   IN OUT  TCG_PCR_EVENT             *TCGLogData,
   IN OUT  UINT32                    *EventNumber,
-     OUT  EFI_PHYSICAL_ADDRESS      *EventLogLastEntry
+  OUT  EFI_PHYSICAL_ADDRESS      *EventLogLastEntry
   );
 
 ///
 /// The EFI_TCG Protocol abstracts TCG activity.
 ///
 struct _EFI_TCG_PROTOCOL {
-  EFI_TCG_STATUS_CHECK              StatusCheck;
-  EFI_TCG_HASH_ALL                  HashAll;
-  EFI_TCG_LOG_EVENT                 LogEvent;
-  EFI_TCG_PASS_THROUGH_TO_TPM       PassThroughToTpm;
-  EFI_TCG_HASH_LOG_EXTEND_EVENT     HashLogExtendEvent;
+  EFI_TCG_STATUS_CHECK             StatusCheck;
+  EFI_TCG_HASH_ALL                 HashAll;
+  EFI_TCG_LOG_EVENT                LogEvent;
+  EFI_TCG_PASS_THROUGH_TO_TPM      PassThroughToTpm;
+  EFI_TCG_HASH_LOG_EXTEND_EVENT    HashLogExtendEvent;
 };
 
-extern EFI_GUID gEfiTcgProtocolGuid;
+extern EFI_GUID  gEfiTcgProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/Tcp4.h b/src/include/ipxe/efi/Protocol/Tcp4.h
index 1771bc5..249f1fe 100644
--- a/src/include/ipxe/efi/Protocol/Tcp4.h
+++ b/src/include/ipxe/efi/Protocol/Tcp4.h
@@ -4,14 +4,8 @@
   and destroy child of the driver to communicate with other host using TCP protocol.
   The EFI TCPv4 Protocol provides services to send and receive data stream.
 
-Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol is introduced in UEFI Specification 2.0.
@@ -21,7 +15,7 @@
 #ifndef __EFI_TCP4_PROTOCOL_H__
 #define __EFI_TCP4_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/Ip4.h>
 
@@ -42,11 +36,11 @@
 /// The definition in here is only present to provide backwards compatability.
 ///
 typedef struct {
-  EFI_HANDLE              InstanceHandle;
-  EFI_IPv4_ADDRESS        LocalAddress;
-  UINT16                  LocalPort;
-  EFI_IPv4_ADDRESS        RemoteAddress;
-  UINT16                  RemotePort;
+  EFI_HANDLE          InstanceHandle;
+  EFI_IPv4_ADDRESS    LocalAddress;
+  UINT16              LocalPort;
+  EFI_IPv4_ADDRESS    RemoteAddress;
+  UINT16              RemotePort;
 } EFI_TCP4_SERVICE_POINT;
 
 ///
@@ -54,77 +48,77 @@
 /// The definition in here is only present to provide backwards compatability.
 ///
 typedef struct {
-  EFI_HANDLE              DriverHandle;
-  UINT32                  ServiceCount;
-  EFI_TCP4_SERVICE_POINT  Services[1];
+  EFI_HANDLE                DriverHandle;
+  UINT32                    ServiceCount;
+  EFI_TCP4_SERVICE_POINT    Services[1];
 } EFI_TCP4_VARIABLE_DATA;
 
 typedef struct {
-  BOOLEAN                 UseDefaultAddress;
-  EFI_IPv4_ADDRESS        StationAddress;
-  EFI_IPv4_ADDRESS        SubnetMask;
-  UINT16                  StationPort;
-  EFI_IPv4_ADDRESS        RemoteAddress;
-  UINT16                  RemotePort;
-  BOOLEAN                 ActiveFlag;
+  BOOLEAN             UseDefaultAddress;
+  EFI_IPv4_ADDRESS    StationAddress;
+  EFI_IPv4_ADDRESS    SubnetMask;
+  UINT16              StationPort;
+  EFI_IPv4_ADDRESS    RemoteAddress;
+  UINT16              RemotePort;
+  BOOLEAN             ActiveFlag;
 } EFI_TCP4_ACCESS_POINT;
 
 typedef struct {
-  UINT32                  ReceiveBufferSize;
-  UINT32                  SendBufferSize;
-  UINT32                  MaxSynBackLog;
-  UINT32                  ConnectionTimeout;
-  UINT32                  DataRetries;
-  UINT32                  FinTimeout;
-  UINT32                  TimeWaitTimeout;
-  UINT32                  KeepAliveProbes;
-  UINT32                  KeepAliveTime;
-  UINT32                  KeepAliveInterval;
-  BOOLEAN                 EnableNagle;
-  BOOLEAN                 EnableTimeStamp;
-  BOOLEAN                 EnableWindowScaling;
-  BOOLEAN                 EnableSelectiveAck;
-  BOOLEAN                 EnablePathMtuDiscovery;
+  UINT32     ReceiveBufferSize;
+  UINT32     SendBufferSize;
+  UINT32     MaxSynBackLog;
+  UINT32     ConnectionTimeout;
+  UINT32     DataRetries;
+  UINT32     FinTimeout;
+  UINT32     TimeWaitTimeout;
+  UINT32     KeepAliveProbes;
+  UINT32     KeepAliveTime;
+  UINT32     KeepAliveInterval;
+  BOOLEAN    EnableNagle;
+  BOOLEAN    EnableTimeStamp;
+  BOOLEAN    EnableWindowScaling;
+  BOOLEAN    EnableSelectiveAck;
+  BOOLEAN    EnablePathMtuDiscovery;
 } EFI_TCP4_OPTION;
 
 typedef struct {
   //
   // I/O parameters
   //
-  UINT8                   TypeOfService;
-  UINT8                   TimeToLive;
+  UINT8                    TypeOfService;
+  UINT8                    TimeToLive;
 
   //
   // Access Point
   //
-  EFI_TCP4_ACCESS_POINT   AccessPoint;
+  EFI_TCP4_ACCESS_POINT    AccessPoint;
 
   //
   // TCP Control Options
   //
-  EFI_TCP4_OPTION         *ControlOption;
+  EFI_TCP4_OPTION          *ControlOption;
 } EFI_TCP4_CONFIG_DATA;
 
 ///
 /// TCP4 connnection state
 ///
 typedef enum {
-  Tcp4StateClosed         = 0,
-  Tcp4StateListen         = 1,
-  Tcp4StateSynSent        = 2,
-  Tcp4StateSynReceived    = 3,
-  Tcp4StateEstablished    = 4,
-  Tcp4StateFinWait1       = 5,
-  Tcp4StateFinWait2       = 6,
-  Tcp4StateClosing        = 7,
-  Tcp4StateTimeWait       = 8,
-  Tcp4StateCloseWait      = 9,
-  Tcp4StateLastAck        = 10
+  Tcp4StateClosed      = 0,
+  Tcp4StateListen      = 1,
+  Tcp4StateSynSent     = 2,
+  Tcp4StateSynReceived = 3,
+  Tcp4StateEstablished = 4,
+  Tcp4StateFinWait1    = 5,
+  Tcp4StateFinWait2    = 6,
+  Tcp4StateClosing     = 7,
+  Tcp4StateTimeWait    = 8,
+  Tcp4StateCloseWait   = 9,
+  Tcp4StateLastAck     = 10
 } EFI_TCP4_CONNECTION_STATE;
 
 typedef struct {
-  EFI_EVENT   Event;
-  EFI_STATUS  Status;
+  EFI_EVENT     Event;
+  EFI_STATUS    Status;
 } EFI_TCP4_COMPLETION_TOKEN;
 
 typedef struct {
@@ -154,17 +148,17 @@
   /// EFI_DEVICE_ERROR:         An unexpected system or network error occurred.
   /// EFI_NO_MEDIA:             There was a media error.
   ///
-  EFI_TCP4_COMPLETION_TOKEN CompletionToken;
+  EFI_TCP4_COMPLETION_TOKEN    CompletionToken;
 } EFI_TCP4_CONNECTION_TOKEN;
 
 typedef struct {
-  EFI_TCP4_COMPLETION_TOKEN CompletionToken;
-  EFI_HANDLE                NewChildHandle;
+  EFI_TCP4_COMPLETION_TOKEN    CompletionToken;
+  EFI_HANDLE                   NewChildHandle;
 } EFI_TCP4_LISTEN_TOKEN;
 
 typedef struct {
-  UINT32 FragmentLength;
-  VOID   *FragmentBuffer;
+  UINT32    FragmentLength;
+  VOID      *FragmentBuffer;
 } EFI_TCP4_FRAGMENT_DATA;
 
 typedef struct {
@@ -210,22 +204,22 @@
   /// EFI_DEVICE_ERROR:         An unexpected system or network error occurs.
   /// EFI_NO_MEDIA:             There was a media error.
   ///
-  EFI_TCP4_COMPLETION_TOKEN CompletionToken;
+  EFI_TCP4_COMPLETION_TOKEN    CompletionToken;
   union {
     ///
     /// When this token is used for receiving, RxData is a pointer to EFI_TCP4_RECEIVE_DATA.
     ///
-    EFI_TCP4_RECEIVE_DATA   *RxData;
+    EFI_TCP4_RECEIVE_DATA     *RxData;
     ///
     /// When this token is used for transmitting, TxData is a pointer to EFI_TCP4_TRANSMIT_DATA.
     ///
-    EFI_TCP4_TRANSMIT_DATA  *TxData;
+    EFI_TCP4_TRANSMIT_DATA    *TxData;
   } Packet;
 } EFI_TCP4_IO_TOKEN;
 
 typedef struct {
-  EFI_TCP4_COMPLETION_TOKEN CompletionToken;
-  BOOLEAN                   AbortOnClose;
+  EFI_TCP4_COMPLETION_TOKEN    CompletionToken;
+  BOOLEAN                      AbortOnClose;
 } EFI_TCP4_CLOSE_TOKEN;
 
 //
@@ -289,7 +283,6 @@
   IN EFI_TCP4_CONFIG_DATA                *TcpConfigData OPTIONAL
   );
 
-
 /**
   Add or delete a route entry to the route table
 
@@ -361,7 +354,6 @@
   IN EFI_TCP4_CONNECTION_TOKEN           *ConnectionToken
   );
 
-
 /**
   Listen on the passive instance to accept an incoming connection request. This is a nonblocking operation.
 
@@ -428,7 +420,6 @@
   IN EFI_TCP4_IO_TOKEN                   *Token
   );
 
-
 /**
   Places an asynchronous receive request into the receiving queue.
 
@@ -533,7 +524,6 @@
   IN EFI_TCP4_COMPLETION_TOKEN           *Token OPTIONAL
   );
 
-
 /**
   Poll to receive incoming data and transmit outgoing segments.
 
@@ -561,19 +551,19 @@
 /// such as the routing table.
 ///
 struct _EFI_TCP4_PROTOCOL {
-  EFI_TCP4_GET_MODE_DATA                 GetModeData;
-  EFI_TCP4_CONFIGURE                     Configure;
-  EFI_TCP4_ROUTES                        Routes;
-  EFI_TCP4_CONNECT                       Connect;
-  EFI_TCP4_ACCEPT                        Accept;
-  EFI_TCP4_TRANSMIT                      Transmit;
-  EFI_TCP4_RECEIVE                       Receive;
-  EFI_TCP4_CLOSE                         Close;
-  EFI_TCP4_CANCEL                        Cancel;
-  EFI_TCP4_POLL                          Poll;
+  EFI_TCP4_GET_MODE_DATA    GetModeData;
+  EFI_TCP4_CONFIGURE        Configure;
+  EFI_TCP4_ROUTES           Routes;
+  EFI_TCP4_CONNECT          Connect;
+  EFI_TCP4_ACCEPT           Accept;
+  EFI_TCP4_TRANSMIT         Transmit;
+  EFI_TCP4_RECEIVE          Receive;
+  EFI_TCP4_CLOSE            Close;
+  EFI_TCP4_CANCEL           Cancel;
+  EFI_TCP4_POLL             Poll;
 };
 
-extern EFI_GUID gEfiTcp4ServiceBindingProtocolGuid;
-extern EFI_GUID gEfiTcp4ProtocolGuid;
+extern EFI_GUID  gEfiTcp4ServiceBindingProtocolGuid;
+extern EFI_GUID  gEfiTcp4ProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/Udp4.h b/src/include/ipxe/efi/Protocol/Udp4.h
index 3c61db8..dc0586d 100644
--- a/src/include/ipxe/efi/Protocol/Udp4.h
+++ b/src/include/ipxe/efi/Protocol/Udp4.h
@@ -4,14 +4,8 @@
   The EFI UDPv4 Protocol provides simple packet-oriented services
   to transmit and receive UDP packets.
 
-Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol is introduced in UEFI Specification 2.0.
@@ -21,11 +15,11 @@
 #ifndef __EFI_UDP4_PROTOCOL_H__
 #define __EFI_UDP4_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/Ip4.h>
 //
-//GUID definitions
+// GUID definitions
 //
 #define EFI_UDP4_SERVICE_BINDING_PROTOCOL_GUID \
   { \
@@ -44,11 +38,11 @@
 /// The definition in here is only present to provide backwards compatability.
 ///
 typedef struct {
-  EFI_HANDLE              InstanceHandle;
-  EFI_IPv4_ADDRESS        LocalAddress;
-  UINT16                  LocalPort;
-  EFI_IPv4_ADDRESS        RemoteAddress;
-  UINT16                  RemotePort;
+  EFI_HANDLE          InstanceHandle;
+  EFI_IPv4_ADDRESS    LocalAddress;
+  UINT16              LocalPort;
+  EFI_IPv4_ADDRESS    RemoteAddress;
+  UINT16              RemotePort;
 } EFI_UDP4_SERVICE_POINT;
 
 ///
@@ -56,52 +50,52 @@
 /// The definition in here is only present to provide backwards compatability.
 ///
 typedef struct {
-  EFI_HANDLE              DriverHandle;
-  UINT32                  ServiceCount;
-  EFI_UDP4_SERVICE_POINT  Services[1];
+  EFI_HANDLE                DriverHandle;
+  UINT32                    ServiceCount;
+  EFI_UDP4_SERVICE_POINT    Services[1];
 } EFI_UDP4_VARIABLE_DATA;
 
 typedef struct {
-  UINT32             FragmentLength;
-  VOID               *FragmentBuffer;
+  UINT32    FragmentLength;
+  VOID      *FragmentBuffer;
 } EFI_UDP4_FRAGMENT_DATA;
 
 typedef struct {
-  EFI_IPv4_ADDRESS   SourceAddress;
-  UINT16             SourcePort;
-  EFI_IPv4_ADDRESS   DestinationAddress;
-  UINT16             DestinationPort;
+  EFI_IPv4_ADDRESS    SourceAddress;
+  UINT16              SourcePort;
+  EFI_IPv4_ADDRESS    DestinationAddress;
+  UINT16              DestinationPort;
 } EFI_UDP4_SESSION_DATA;
 typedef struct {
   //
   // Receiving Filters
   //
-  BOOLEAN            AcceptBroadcast;
-  BOOLEAN            AcceptPromiscuous;
-  BOOLEAN            AcceptAnyPort;
-  BOOLEAN            AllowDuplicatePort;
+  BOOLEAN             AcceptBroadcast;
+  BOOLEAN             AcceptPromiscuous;
+  BOOLEAN             AcceptAnyPort;
+  BOOLEAN             AllowDuplicatePort;
   //
   // I/O parameters
   //
-  UINT8              TypeOfService;
-  UINT8              TimeToLive;
-  BOOLEAN            DoNotFragment;
-  UINT32             ReceiveTimeout;
-  UINT32             TransmitTimeout;
+  UINT8               TypeOfService;
+  UINT8               TimeToLive;
+  BOOLEAN             DoNotFragment;
+  UINT32              ReceiveTimeout;
+  UINT32              TransmitTimeout;
   //
   // Access Point
   //
-  BOOLEAN            UseDefaultAddress;
-  EFI_IPv4_ADDRESS   StationAddress;
-  EFI_IPv4_ADDRESS   SubnetMask;
-  UINT16             StationPort;
-  EFI_IPv4_ADDRESS   RemoteAddress;
-  UINT16             RemotePort;
+  BOOLEAN             UseDefaultAddress;
+  EFI_IPv4_ADDRESS    StationAddress;
+  EFI_IPv4_ADDRESS    SubnetMask;
+  UINT16              StationPort;
+  EFI_IPv4_ADDRESS    RemoteAddress;
+  UINT16              RemotePort;
 } EFI_UDP4_CONFIG_DATA;
 
 typedef struct {
-  EFI_UDP4_SESSION_DATA     *UdpSessionData;       //OPTIONAL
-  EFI_IPv4_ADDRESS          *GatewayAddress;       //OPTIONAL
+  EFI_UDP4_SESSION_DATA     *UdpSessionData;       // OPTIONAL
+  EFI_IPv4_ADDRESS          *GatewayAddress;       // OPTIONAL
   UINT32                    DataLength;
   UINT32                    FragmentCount;
   EFI_UDP4_FRAGMENT_DATA    FragmentTable[1];
@@ -116,13 +110,12 @@
   EFI_UDP4_FRAGMENT_DATA    FragmentTable[1];
 } EFI_UDP4_RECEIVE_DATA;
 
-
 typedef struct {
-  EFI_EVENT                 Event;
-  EFI_STATUS                Status;
+  EFI_EVENT     Event;
+  EFI_STATUS    Status;
   union {
-    EFI_UDP4_RECEIVE_DATA   *RxData;
-    EFI_UDP4_TRANSMIT_DATA  *TxData;
+    EFI_UDP4_RECEIVE_DATA     *RxData;
+    EFI_UDP4_TRANSMIT_DATA    *TxData;
   } Packet;
 } EFI_UDP4_COMPLETION_TOKEN;
 
@@ -156,7 +149,6 @@
   OUT EFI_SIMPLE_NETWORK_MODE          *SnpModeData    OPTIONAL
   );
 
-
 /**
   Initializes, changes, or resets the operational parameters for this instance of the EFI UDPv4
   Protocol.
@@ -431,17 +423,17 @@
 /// such as the routing table and group table, which are independent from each other.
 ///
 struct _EFI_UDP4_PROTOCOL {
-  EFI_UDP4_GET_MODE_DATA        GetModeData;
-  EFI_UDP4_CONFIGURE            Configure;
-  EFI_UDP4_GROUPS               Groups;
-  EFI_UDP4_ROUTES               Routes;
-  EFI_UDP4_TRANSMIT             Transmit;
-  EFI_UDP4_RECEIVE              Receive;
-  EFI_UDP4_CANCEL               Cancel;
-  EFI_UDP4_POLL                 Poll;
+  EFI_UDP4_GET_MODE_DATA    GetModeData;
+  EFI_UDP4_CONFIGURE        Configure;
+  EFI_UDP4_GROUPS           Groups;
+  EFI_UDP4_ROUTES           Routes;
+  EFI_UDP4_TRANSMIT         Transmit;
+  EFI_UDP4_RECEIVE          Receive;
+  EFI_UDP4_CANCEL           Cancel;
+  EFI_UDP4_POLL             Poll;
 };
 
-extern EFI_GUID gEfiUdp4ServiceBindingProtocolGuid;
-extern EFI_GUID gEfiUdp4ProtocolGuid;
+extern EFI_GUID  gEfiUdp4ServiceBindingProtocolGuid;
+extern EFI_GUID  gEfiUdp4ProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/UgaDraw.h b/src/include/ipxe/efi/Protocol/UgaDraw.h
index 5650206..c268bd2 100644
--- a/src/include/ipxe/efi/Protocol/UgaDraw.h
+++ b/src/include/ipxe/efi/Protocol/UgaDraw.h
@@ -3,22 +3,15 @@
 
   Abstraction of a very simple graphics device.
 
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __UGA_DRAW_H__
 #define __UGA_DRAW_H__
 
-FILE_LICENCE ( BSD3 );
-
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_UGA_DRAW_PROTOCOL_GUID \
   { \
@@ -75,15 +68,15 @@
   );
 
 typedef struct {
-  UINT8 Blue;
-  UINT8 Green;
-  UINT8 Red;
-  UINT8 Reserved;
+  UINT8    Blue;
+  UINT8    Green;
+  UINT8    Red;
+  UINT8    Reserved;
 } EFI_UGA_PIXEL;
 
 typedef union {
-  EFI_UGA_PIXEL Pixel;
-  UINT32        Raw;
+  EFI_UGA_PIXEL    Pixel;
+  UINT32           Raw;
 } EFI_UGA_PIXEL_UNION;
 
 ///
@@ -135,14 +128,14 @@
 
     @retval EFI_SUCCESS           - The Blt operation completed.
     @retval EFI_INVALID_PARAMETER - BltOperation is not valid.
-    @retval EFI_DEVICE_ERROR      - A hardware error occured writting to the video buffer.
+    @retval EFI_DEVICE_ERROR      - A hardware error occurred writting to the video buffer.
 
 **/
 typedef
 EFI_STATUS
 (EFIAPI *EFI_UGA_DRAW_PROTOCOL_BLT)(
-  IN  EFI_UGA_DRAW_PROTOCOL                   * This,
-  IN  EFI_UGA_PIXEL                           * BltBuffer, OPTIONAL
+  IN  EFI_UGA_DRAW_PROTOCOL                   *This,
+  IN  EFI_UGA_PIXEL                           *BltBuffer  OPTIONAL,
   IN  EFI_UGA_BLT_OPERATION                   BltOperation,
   IN  UINTN                                   SourceX,
   IN  UINTN                                   SourceY,
@@ -158,11 +151,11 @@
 /// copy pixels to and from the graphics controller's frame buffer.
 ///
 struct _EFI_UGA_DRAW_PROTOCOL {
-  EFI_UGA_DRAW_PROTOCOL_GET_MODE  GetMode;
-  EFI_UGA_DRAW_PROTOCOL_SET_MODE  SetMode;
-  EFI_UGA_DRAW_PROTOCOL_BLT       Blt;
+  EFI_UGA_DRAW_PROTOCOL_GET_MODE    GetMode;
+  EFI_UGA_DRAW_PROTOCOL_SET_MODE    SetMode;
+  EFI_UGA_DRAW_PROTOCOL_BLT         Blt;
 };
 
-extern EFI_GUID gEfiUgaDrawProtocolGuid;
+extern EFI_GUID  gEfiUgaDrawProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/UnicodeCollation.h b/src/include/ipxe/efi/Protocol/UnicodeCollation.h
index 870428c..f708624 100644
--- a/src/include/ipxe/efi/Protocol/UnicodeCollation.h
+++ b/src/include/ipxe/efi/Protocol/UnicodeCollation.h
@@ -3,21 +3,15 @@
   This protocol is used to allow code running in the boot services environment
   to perform lexical comparison functions on Unicode strings for given languages.
 
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __UNICODE_COLLATION_H__
 #define __UNICODE_COLLATION_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_UNICODE_COLLATION_PROTOCOL_GUID \
   { \
@@ -29,27 +23,27 @@
     0xa4c751fc, 0x23ae, 0x4c3e, {0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49 } \
   }
 
-typedef struct _EFI_UNICODE_COLLATION_PROTOCOL  EFI_UNICODE_COLLATION_PROTOCOL;
-
+typedef struct _EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL;
 
 ///
 /// Protocol GUID name defined in EFI1.1.
 ///
-#define UNICODE_COLLATION_PROTOCOL              EFI_UNICODE_COLLATION_PROTOCOL_GUID
+#define UNICODE_COLLATION_PROTOCOL  EFI_UNICODE_COLLATION_PROTOCOL_GUID
 
 ///
 /// Protocol defined in EFI1.1.
 ///
-typedef EFI_UNICODE_COLLATION_PROTOCOL          UNICODE_COLLATION_INTERFACE;
+typedef EFI_UNICODE_COLLATION_PROTOCOL UNICODE_COLLATION_INTERFACE;
 
 ///
 /// Protocol data structures and defines
 ///
-#define EFI_UNICODE_BYTE_ORDER_MARK (CHAR16) (0xfeff)
+#define EFI_UNICODE_BYTE_ORDER_MARK  (CHAR16) (0xfeff)
 
 //
 // Protocol member functions
 //
+
 /**
   Performs a case-insensitive comparison of two Null-terminated strings.
 
@@ -169,26 +163,26 @@
 /// comparisons of strings.
 ///
 struct _EFI_UNICODE_COLLATION_PROTOCOL {
-  EFI_UNICODE_COLLATION_STRICOLL    StriColl;
-  EFI_UNICODE_COLLATION_METAIMATCH  MetaiMatch;
-  EFI_UNICODE_COLLATION_STRLWR      StrLwr;
-  EFI_UNICODE_COLLATION_STRUPR      StrUpr;
+  EFI_UNICODE_COLLATION_STRICOLL      StriColl;
+  EFI_UNICODE_COLLATION_METAIMATCH    MetaiMatch;
+  EFI_UNICODE_COLLATION_STRLWR        StrLwr;
+  EFI_UNICODE_COLLATION_STRUPR        StrUpr;
 
   //
   // for supporting fat volumes
   //
-  EFI_UNICODE_COLLATION_FATTOSTR    FatToStr;
-  EFI_UNICODE_COLLATION_STRTOFAT    StrToFat;
+  EFI_UNICODE_COLLATION_FATTOSTR      FatToStr;
+  EFI_UNICODE_COLLATION_STRTOFAT      StrToFat;
 
   ///
   /// A Null-terminated ASCII string array that contains one or more language codes.
   /// When this field is used for UnicodeCollation2, it is specified in RFC 4646 format.
   /// When it is used for UnicodeCollation, it is specified in ISO 639-2 format.
   ///
-  CHAR8                             *SupportedLanguages;
+  CHAR8                               *SupportedLanguages;
 };
 
-extern EFI_GUID gEfiUnicodeCollationProtocolGuid;
-extern EFI_GUID gEfiUnicodeCollation2ProtocolGuid;
+extern EFI_GUID  gEfiUnicodeCollationProtocolGuid;
+extern EFI_GUID  gEfiUnicodeCollation2ProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/Usb2HostController.h b/src/include/ipxe/efi/Protocol/Usb2HostController.h
index 8308e8f..657918d 100644
--- a/src/include/ipxe/efi/Protocol/Usb2HostController.h
+++ b/src/include/ipxe/efi/Protocol/Usb2HostController.h
@@ -4,21 +4,15 @@
   running in the EFI boot services environment, to perform data transactions over
   a USB bus. In addition, it provides an abstraction for the root hub of the USB bus.
 
-  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef _USB2_HOSTCONTROLLER_H_
 #define _USB2_HOSTCONTROLLER_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/UsbIo.h>
 
@@ -32,35 +26,33 @@
 ///
 typedef struct _EFI_USB2_HC_PROTOCOL EFI_USB2_HC_PROTOCOL;
 
-
 typedef struct {
-  UINT16          PortStatus;        ///< Contains current port status bitmap.
-  UINT16          PortChangeStatus;  ///< Contains current port status change bitmap.
+  UINT16    PortStatus;              ///< Contains current port status bitmap.
+  UINT16    PortChangeStatus;        ///< Contains current port status change bitmap.
 } EFI_USB_PORT_STATUS;
 
 ///
 /// EFI_USB_PORT_STATUS.PortStatus bit definition
 ///
-#define USB_PORT_STAT_CONNECTION    0x0001
-#define USB_PORT_STAT_ENABLE        0x0002
-#define USB_PORT_STAT_SUSPEND       0x0004
-#define USB_PORT_STAT_OVERCURRENT   0x0008
-#define USB_PORT_STAT_RESET         0x0010
-#define USB_PORT_STAT_POWER         0x0100
-#define USB_PORT_STAT_LOW_SPEED     0x0200
-#define USB_PORT_STAT_HIGH_SPEED    0x0400
-#define USB_PORT_STAT_SUPER_SPEED   0x0800
-#define USB_PORT_STAT_OWNER         0x2000
+#define USB_PORT_STAT_CONNECTION   0x0001
+#define USB_PORT_STAT_ENABLE       0x0002
+#define USB_PORT_STAT_SUSPEND      0x0004
+#define USB_PORT_STAT_OVERCURRENT  0x0008
+#define USB_PORT_STAT_RESET        0x0010
+#define USB_PORT_STAT_POWER        0x0100
+#define USB_PORT_STAT_LOW_SPEED    0x0200
+#define USB_PORT_STAT_HIGH_SPEED   0x0400
+#define USB_PORT_STAT_SUPER_SPEED  0x0800
+#define USB_PORT_STAT_OWNER        0x2000
 
 ///
 /// EFI_USB_PORT_STATUS.PortChangeStatus bit definition
 ///
-#define USB_PORT_STAT_C_CONNECTION  0x0001
-#define USB_PORT_STAT_C_ENABLE      0x0002
-#define USB_PORT_STAT_C_SUSPEND     0x0004
-#define USB_PORT_STAT_C_OVERCURRENT 0x0008
-#define USB_PORT_STAT_C_RESET       0x0010
-
+#define USB_PORT_STAT_C_CONNECTION   0x0001
+#define USB_PORT_STAT_C_ENABLE       0x0002
+#define USB_PORT_STAT_C_SUSPEND      0x0004
+#define USB_PORT_STAT_C_OVERCURRENT  0x0008
+#define USB_PORT_STAT_C_RESET        0x0010
 
 ///
 /// Usb port features value
@@ -80,14 +72,14 @@
   EfiUsbPortResetChange       = 20
 } EFI_USB_PORT_FEATURE;
 
-#define EFI_USB_SPEED_FULL      0x0000  ///< 12 Mb/s, USB 1.1 OHCI and UHCI HC.
-#define EFI_USB_SPEED_LOW       0x0001  ///< 1 Mb/s, USB 1.1 OHCI and UHCI HC.
-#define EFI_USB_SPEED_HIGH      0x0002  ///< 480 Mb/s, USB 2.0 EHCI HC.
-#define EFI_USB_SPEED_SUPER     0x0003  ///< 4.8 Gb/s, USB 3.0 XHCI HC.
+#define EFI_USB_SPEED_FULL   0x0000     ///< 12 Mb/s, USB 1.1 OHCI and UHCI HC.
+#define EFI_USB_SPEED_LOW    0x0001     ///< 1 Mb/s, USB 1.1 OHCI and UHCI HC.
+#define EFI_USB_SPEED_HIGH   0x0002     ///< 480 Mb/s, USB 2.0 EHCI HC.
+#define EFI_USB_SPEED_SUPER  0x0003     ///< 4.8 Gb/s, USB 3.0 XHCI HC.
 
 typedef struct {
-  UINT8      TranslatorHubAddress; ///< device address
-  UINT8      TranslatorPortNumber; ///< the port number of the hub that device is connected to.
+  UINT8    TranslatorHubAddress;   ///< device address
+  UINT8    TranslatorPortNumber;   ///< the port number of the hub that device is connected to.
 } EFI_USB2_HC_TRANSACTION_TRANSLATOR;
 
 //
@@ -122,6 +114,7 @@
 #define EFI_USB_HC_RESET_HOST_CONTROLLER    0x0002
 #define EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG  0x0004
 #define EFI_USB_HC_RESET_HOST_WITH_DEBUG    0x0008
+
 /**
   Provides software reset for the USB host controller.
 
@@ -200,7 +193,7 @@
 (EFIAPI *EFI_USB2_HC_PROTOCOL_GET_STATE)(
   IN        EFI_USB2_HC_PROTOCOL    *This,
   OUT       EFI_USB_HC_STATE        *State
-);
+  );
 
 /**
   Sets the USB host controller to a specific state.
@@ -266,7 +259,7 @@
   OUT    UINT32                             *TransferResult
   );
 
-#define EFI_USB_MAX_BULK_BUFFER_NUM 10
+#define EFI_USB_MAX_BULK_BUFFER_NUM  10
 
 /**
   Submits bulk transfer to a bulk endpoint of a USB device.
@@ -409,8 +402,8 @@
   OUT    UINT32                                      *TransferResult
   );
 
-#define EFI_USB_MAX_ISO_BUFFER_NUM  7
-#define EFI_USB_MAX_ISO_BUFFER_NUM1 2
+#define EFI_USB_MAX_ISO_BUFFER_NUM   7
+#define EFI_USB_MAX_ISO_BUFFER_NUM1  2
 
 /**
   Submits isochronous transfer to an isochronous endpoint of a USB device.
@@ -632,35 +625,35 @@
 /// instance, and an EFI_USB2_HC_PROTOCOL instance.
 ///
 struct _EFI_USB2_HC_PROTOCOL {
-  EFI_USB2_HC_PROTOCOL_GET_CAPABILITY              GetCapability;
-  EFI_USB2_HC_PROTOCOL_RESET                       Reset;
-  EFI_USB2_HC_PROTOCOL_GET_STATE                   GetState;
-  EFI_USB2_HC_PROTOCOL_SET_STATE                   SetState;
-  EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER            ControlTransfer;
-  EFI_USB2_HC_PROTOCOL_BULK_TRANSFER               BulkTransfer;
-  EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER    AsyncInterruptTransfer;
-  EFI_USB2_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER     SyncInterruptTransfer;
-  EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER        IsochronousTransfer;
-  EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER  AsyncIsochronousTransfer;
-  EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS     GetRootHubPortStatus;
-  EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE    SetRootHubPortFeature;
-  EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE  ClearRootHubPortFeature;
+  EFI_USB2_HC_PROTOCOL_GET_CAPABILITY                GetCapability;
+  EFI_USB2_HC_PROTOCOL_RESET                         Reset;
+  EFI_USB2_HC_PROTOCOL_GET_STATE                     GetState;
+  EFI_USB2_HC_PROTOCOL_SET_STATE                     SetState;
+  EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER              ControlTransfer;
+  EFI_USB2_HC_PROTOCOL_BULK_TRANSFER                 BulkTransfer;
+  EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER      AsyncInterruptTransfer;
+  EFI_USB2_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER       SyncInterruptTransfer;
+  EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER          IsochronousTransfer;
+  EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER    AsyncIsochronousTransfer;
+  EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS       GetRootHubPortStatus;
+  EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE      SetRootHubPortFeature;
+  EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE    ClearRootHubPortFeature;
 
   ///
   /// The major revision number of the USB host controller. The revision information
   /// indicates the release of the Universal Serial Bus Specification with which the
   /// host controller is compliant.
   ///
-  UINT16                                           MajorRevision;
+  UINT16                                             MajorRevision;
 
   ///
   /// The minor revision number of the USB host controller. The revision information
   /// indicates the release of the Universal Serial Bus Specification with which the
   /// host controller is compliant.
   ///
-  UINT16                                           MinorRevision;
+  UINT16                                             MinorRevision;
 };
 
-extern EFI_GUID gEfiUsb2HcProtocolGuid;
+extern EFI_GUID  gEfiUsb2HcProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/UsbHostController.h b/src/include/ipxe/efi/Protocol/UsbHostController.h
index a29088c..5336f00 100644
--- a/src/include/ipxe/efi/Protocol/UsbHostController.h
+++ b/src/include/ipxe/efi/Protocol/UsbHostController.h
@@ -5,21 +5,15 @@
   running in the EFI boot services environment, to perform data transactions
   over a USB bus. In addition, it provides an abstraction for the root hub of the USB bus.
 
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef _USB_HOSTCONTROLLER_H_
 #define _USB_HOSTCONTROLLER_H_
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Protocol/Usb2HostController.h>
 
@@ -469,7 +463,6 @@
   IN EFI_USB_PORT_FEATURE    PortFeature
   );
 
-
 ///
 /// The EFI_USB_HC_PROTOCOL provides USB host controller management, basic data transactions
 /// over a USB bus, and USB root hub access. A device driver that wishes to manage a USB bus in a
@@ -478,33 +471,33 @@
 /// EFI_DEVICE_PATH_PROTOCOL instance, and an EFI_USB_HC_PROTOCOL instance.
 ///
 struct _EFI_USB_HC_PROTOCOL {
-  EFI_USB_HC_PROTOCOL_RESET                       Reset;
-  EFI_USB_HC_PROTOCOL_GET_STATE                   GetState;
-  EFI_USB_HC_PROTOCOL_SET_STATE                   SetState;
-  EFI_USB_HC_PROTOCOL_CONTROL_TRANSFER            ControlTransfer;
-  EFI_USB_HC_PROTOCOL_BULK_TRANSFER               BulkTransfer;
-  EFI_USB_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER    AsyncInterruptTransfer;
-  EFI_USB_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER     SyncInterruptTransfer;
-  EFI_USB_HC_PROTOCOL_ISOCHRONOUS_TRANSFER        IsochronousTransfer;
-  EFI_USB_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER  AsyncIsochronousTransfer;
-  EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_NUMBER     GetRootHubPortNumber;
-  EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS     GetRootHubPortStatus;
-  EFI_USB_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE    SetRootHubPortFeature;
-  EFI_USB_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE  ClearRootHubPortFeature;
+  EFI_USB_HC_PROTOCOL_RESET                         Reset;
+  EFI_USB_HC_PROTOCOL_GET_STATE                     GetState;
+  EFI_USB_HC_PROTOCOL_SET_STATE                     SetState;
+  EFI_USB_HC_PROTOCOL_CONTROL_TRANSFER              ControlTransfer;
+  EFI_USB_HC_PROTOCOL_BULK_TRANSFER                 BulkTransfer;
+  EFI_USB_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER      AsyncInterruptTransfer;
+  EFI_USB_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER       SyncInterruptTransfer;
+  EFI_USB_HC_PROTOCOL_ISOCHRONOUS_TRANSFER          IsochronousTransfer;
+  EFI_USB_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER    AsyncIsochronousTransfer;
+  EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_NUMBER       GetRootHubPortNumber;
+  EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS       GetRootHubPortStatus;
+  EFI_USB_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE      SetRootHubPortFeature;
+  EFI_USB_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE    ClearRootHubPortFeature;
   ///
   /// The major revision number of the USB host controller. The revision information
   /// indicates the release of the Universal Serial Bus Specification with which the
   /// host controller is compliant.
   ///
-  UINT16                                          MajorRevision;
+  UINT16                                            MajorRevision;
   ///
   /// The minor revision number of the USB host controller. The revision information
   /// indicates the release of the Universal Serial Bus Specification with which the
   /// host controller is compliant.
   ///
-  UINT16                                          MinorRevision;
+  UINT16                                            MinorRevision;
 };
 
-extern EFI_GUID gEfiUsbHcProtocolGuid;
+extern EFI_GUID  gEfiUsbHcProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/UsbIo.h b/src/include/ipxe/efi/Protocol/UsbIo.h
index b8d33ee..d5f02bb 100644
--- a/src/include/ipxe/efi/Protocol/UsbIo.h
+++ b/src/include/ipxe/efi/Protocol/UsbIo.h
@@ -5,21 +5,15 @@
   mice and mass storage devices. In particular, functions for managing devices
   on USB buses are defined here.
 
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __USB_IO_H__
 #define __USB_IO_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/IndustryStandard/Usb.h>
 
@@ -31,7 +25,7 @@
     0x2B2F68D6, 0x0CD2, 0x44cf, {0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } \
   }
 
-typedef struct _EFI_USB_IO_PROTOCOL   EFI_USB_IO_PROTOCOL;
+typedef struct _EFI_USB_IO_PROTOCOL EFI_USB_IO_PROTOCOL;
 
 //
 // Related Definition for EFI USB I/O protocol
@@ -40,11 +34,11 @@
 //
 // USB standard descriptors and reqeust
 //
-typedef USB_DEVICE_REQUEST        EFI_USB_DEVICE_REQUEST;
-typedef USB_DEVICE_DESCRIPTOR     EFI_USB_DEVICE_DESCRIPTOR;
-typedef USB_CONFIG_DESCRIPTOR     EFI_USB_CONFIG_DESCRIPTOR;
-typedef USB_INTERFACE_DESCRIPTOR  EFI_USB_INTERFACE_DESCRIPTOR;
-typedef USB_ENDPOINT_DESCRIPTOR   EFI_USB_ENDPOINT_DESCRIPTOR;
+typedef USB_DEVICE_REQUEST       EFI_USB_DEVICE_REQUEST;
+typedef USB_DEVICE_DESCRIPTOR    EFI_USB_DEVICE_DESCRIPTOR;
+typedef USB_CONFIG_DESCRIPTOR    EFI_USB_CONFIG_DESCRIPTOR;
+typedef USB_INTERFACE_DESCRIPTOR EFI_USB_INTERFACE_DESCRIPTOR;
+typedef USB_ENDPOINT_DESCRIPTOR  EFI_USB_ENDPOINT_DESCRIPTOR;
 
 ///
 /// USB data transfer direction
@@ -58,16 +52,16 @@
 //
 // USB Transfer Results
 //
-#define EFI_USB_NOERROR             0x00
-#define EFI_USB_ERR_NOTEXECUTE      0x01
-#define EFI_USB_ERR_STALL           0x02
-#define EFI_USB_ERR_BUFFER          0x04
-#define EFI_USB_ERR_BABBLE          0x08
-#define EFI_USB_ERR_NAK             0x10
-#define EFI_USB_ERR_CRC             0x20
-#define EFI_USB_ERR_TIMEOUT         0x40
-#define EFI_USB_ERR_BITSTUFF        0x80
-#define EFI_USB_ERR_SYSTEM          0x100
+#define EFI_USB_NOERROR         0x00
+#define EFI_USB_ERR_NOTEXECUTE  0x01
+#define EFI_USB_ERR_STALL       0x02
+#define EFI_USB_ERR_BUFFER      0x04
+#define EFI_USB_ERR_BABBLE      0x08
+#define EFI_USB_ERR_NAK         0x10
+#define EFI_USB_ERR_CRC         0x20
+#define EFI_USB_ERR_TIMEOUT     0x40
+#define EFI_USB_ERR_BITSTUFF    0x80
+#define EFI_USB_ERR_SYSTEM      0x100
 
 /**
   Async USB transfer callback routine.
@@ -96,7 +90,6 @@
 // Prototype for EFI USB I/O protocol
 //
 
-
 /**
   This function is used to manage a USB device with a control transfer pipe. A control transfer is
   typically used to perform device initialization and configuration.
@@ -114,7 +107,7 @@
 
   @retval EFI_SUCCESS           The control transfer has been successfully executed.
   @retval EFI_DEVICE_ERROR      The transfer failed. The transfer status is returned in Status.
-  @retval EFI_INVALID_PARAMETE  One or more parameters are invalid.
+  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
   @retval EFI_OUT_OF_RESOURCES  The request could not be completed due to a lack of resources.
   @retval EFI_TIMEOUT           The control transfer fails due to timeout.
 
@@ -157,7 +150,7 @@
 
   @retval EFI_SUCCESS           The bulk transfer has been successfully executed.
   @retval EFI_DEVICE_ERROR      The transfer failed. The transfer status is returned in Status.
-  @retval EFI_INVALID_PARAMETE  One or more parameters are invalid.
+  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
   @retval EFI_OUT_OF_RESOURCES  The request could not be submitted due to a lack of resources.
   @retval EFI_TIMEOUT           The control transfer fails due to timeout.
 
@@ -486,29 +479,29 @@
   //
   // IO transfer
   //
-  EFI_USB_IO_CONTROL_TRANSFER           UsbControlTransfer;
-  EFI_USB_IO_BULK_TRANSFER              UsbBulkTransfer;
-  EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER   UsbAsyncInterruptTransfer;
-  EFI_USB_IO_SYNC_INTERRUPT_TRANSFER    UsbSyncInterruptTransfer;
-  EFI_USB_IO_ISOCHRONOUS_TRANSFER       UsbIsochronousTransfer;
-  EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER UsbAsyncIsochronousTransfer;
+  EFI_USB_IO_CONTROL_TRANSFER              UsbControlTransfer;
+  EFI_USB_IO_BULK_TRANSFER                 UsbBulkTransfer;
+  EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER      UsbAsyncInterruptTransfer;
+  EFI_USB_IO_SYNC_INTERRUPT_TRANSFER       UsbSyncInterruptTransfer;
+  EFI_USB_IO_ISOCHRONOUS_TRANSFER          UsbIsochronousTransfer;
+  EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER    UsbAsyncIsochronousTransfer;
 
   //
   // Common device request
   //
-  EFI_USB_IO_GET_DEVICE_DESCRIPTOR      UsbGetDeviceDescriptor;
-  EFI_USB_IO_GET_CONFIG_DESCRIPTOR      UsbGetConfigDescriptor;
-  EFI_USB_IO_GET_INTERFACE_DESCRIPTOR   UsbGetInterfaceDescriptor;
-  EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR    UsbGetEndpointDescriptor;
-  EFI_USB_IO_GET_STRING_DESCRIPTOR      UsbGetStringDescriptor;
-  EFI_USB_IO_GET_SUPPORTED_LANGUAGE     UsbGetSupportedLanguages;
+  EFI_USB_IO_GET_DEVICE_DESCRIPTOR         UsbGetDeviceDescriptor;
+  EFI_USB_IO_GET_CONFIG_DESCRIPTOR         UsbGetConfigDescriptor;
+  EFI_USB_IO_GET_INTERFACE_DESCRIPTOR      UsbGetInterfaceDescriptor;
+  EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR       UsbGetEndpointDescriptor;
+  EFI_USB_IO_GET_STRING_DESCRIPTOR         UsbGetStringDescriptor;
+  EFI_USB_IO_GET_SUPPORTED_LANGUAGE        UsbGetSupportedLanguages;
 
   //
   // Reset controller's parent port
   //
-  EFI_USB_IO_PORT_RESET                 UsbPortReset;
+  EFI_USB_IO_PORT_RESET                    UsbPortReset;
 };
 
-extern EFI_GUID gEfiUsbIoProtocolGuid;
+extern EFI_GUID  gEfiUsbIoProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Protocol/VlanConfig.h b/src/include/ipxe/efi/Protocol/VlanConfig.h
index 928fade..79b6bc4 100644
--- a/src/include/ipxe/efi/Protocol/VlanConfig.h
+++ b/src/include/ipxe/efi/Protocol/VlanConfig.h
@@ -1,14 +1,8 @@
 /** @file
   EFI VLAN Config protocol is to provide manageability interface for VLAN configuration.
 
-  Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   This Protocol is introduced in UEFI Specification 2.2
@@ -18,8 +12,7 @@
 #ifndef __EFI_VLANCONFIG_PROTOCOL_H__
 #define __EFI_VLANCONFIG_PROTOCOL_H__
 
-FILE_LICENCE ( BSD3 );
-
+FILE_LICENCE ( BSD2_PATENT );
 
 #define EFI_VLAN_CONFIG_PROTOCOL_GUID \
   { \
@@ -28,16 +21,14 @@
 
 typedef struct _EFI_VLAN_CONFIG_PROTOCOL EFI_VLAN_CONFIG_PROTOCOL;
 
-
 ///
 /// EFI_VLAN_FIND_DATA
 ///
 typedef struct {
-  UINT16          VlanId;     ///< Vlan Identifier.
-  UINT8           Priority;   ///< Priority of this VLAN.
+  UINT16    VlanId;           ///< Vlan Identifier.
+  UINT8     Priority;         ///< Priority of this VLAN.
 } EFI_VLAN_FIND_DATA;
 
-
 /**
   Create a VLAN device or modify the configuration parameter of an
   already-configured VLAN.
@@ -135,11 +126,11 @@
 /// VLAN tagging implementation is IEEE802.1Q.
 ///
 struct _EFI_VLAN_CONFIG_PROTOCOL {
-  EFI_VLAN_CONFIG_SET              Set;
-  EFI_VLAN_CONFIG_FIND             Find;
-  EFI_VLAN_CONFIG_REMOVE           Remove;
+  EFI_VLAN_CONFIG_SET       Set;
+  EFI_VLAN_CONFIG_FIND      Find;
+  EFI_VLAN_CONFIG_REMOVE    Remove;
 };
 
-extern EFI_GUID gEfiVlanConfigProtocolGuid;
+extern EFI_GUID  gEfiVlanConfigProtocolGuid;
 
 #endif
diff --git a/src/include/ipxe/efi/Uefi.h b/src/include/ipxe/efi/Uefi.h
index a5a25a9..2a9973d 100644
--- a/src/include/ipxe/efi/Uefi.h
+++ b/src/include/ipxe/efi/Uefi.h
@@ -6,24 +6,17 @@
   types defined via this include file and can be ported easily to any
   environment.
 
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __PI_UEFI_H__
 #define __PI_UEFI_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Uefi/UefiBaseType.h>
 #include <ipxe/efi/Uefi/UefiSpec.h>
 
 #endif
-
diff --git a/src/include/ipxe/efi/Uefi/UefiBaseType.h b/src/include/ipxe/efi/Uefi/UefiBaseType.h
index 5bfcccf..0492759 100644
--- a/src/include/ipxe/efi/Uefi/UefiBaseType.h
+++ b/src/include/ipxe/efi/Uefi/UefiBaseType.h
@@ -1,23 +1,19 @@
 /** @file
   Defines data types and constants introduced in UEFI.
 
-Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
 Portions copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.<BR>
+Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
+Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>
 
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __UEFI_BASETYPE_H__
 #define __UEFI_BASETYPE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Base.h>
 
@@ -28,37 +24,37 @@
 ///
 /// 128-bit buffer containing a unique identifier value.
 ///
-typedef GUID                      EFI_GUID;
+typedef GUID EFI_GUID;
 ///
 /// Function return status for EFI API.
 ///
-typedef RETURN_STATUS             EFI_STATUS;
+typedef RETURN_STATUS EFI_STATUS;
 ///
 /// A collection of related interfaces.
 ///
-typedef VOID                      *EFI_HANDLE;
+typedef VOID *EFI_HANDLE;
 ///
 /// Handle to an event structure.
 ///
-typedef VOID                      *EFI_EVENT;
+typedef VOID *EFI_EVENT;
 ///
 /// Task priority level.
 ///
-typedef UINTN                     EFI_TPL;
+typedef UINTN EFI_TPL;
 ///
 /// Logical block address.
 ///
-typedef UINT64                    EFI_LBA;
+typedef UINT64 EFI_LBA;
 
 ///
 /// 64-bit physical memory address.
 ///
-typedef UINT64                    EFI_PHYSICAL_ADDRESS;
+typedef UINT64 EFI_PHYSICAL_ADDRESS;
 
 ///
 /// 64-bit virtual memory address.
 ///
-typedef UINT64                    EFI_VIRTUAL_ADDRESS;
+typedef UINT64 EFI_VIRTUAL_ADDRESS;
 
 ///
 /// EFI Time Abstraction:
@@ -72,20 +68,19 @@
 ///  TimeZone:   -1440 to 1440 or 2047
 ///
 typedef struct {
-  UINT16  Year;
-  UINT8   Month;
-  UINT8   Day;
-  UINT8   Hour;
-  UINT8   Minute;
-  UINT8   Second;
-  UINT8   Pad1;
-  UINT32  Nanosecond;
-  INT16   TimeZone;
-  UINT8   Daylight;
-  UINT8   Pad2;
+  UINT16    Year;
+  UINT8     Month;
+  UINT8     Day;
+  UINT8     Hour;
+  UINT8     Minute;
+  UINT8     Second;
+  UINT8     Pad1;
+  UINT32    Nanosecond;
+  INT16     TimeZone;
+  UINT8     Daylight;
+  UINT8     Pad2;
 } EFI_TIME;
 
-
 ///
 /// 4-byte buffer. An IPv4 internet protocol address.
 ///
@@ -100,7 +95,7 @@
 /// 32-byte buffer containing a network Media Access Control address.
 ///
 typedef struct {
-  UINT8 Addr[32];
+  UINT8    Addr[32];
 } EFI_MAC_ADDRESS;
 
 ///
@@ -108,12 +103,11 @@
 /// An IPv4 or IPv6 internet protocol address.
 ///
 typedef union {
-  UINT32            Addr[4];
-  EFI_IPv4_ADDRESS  v4;
-  EFI_IPv6_ADDRESS  v6;
+  UINT32              Addr[4];
+  EFI_IPv4_ADDRESS    v4;
+  EFI_IPv6_ADDRESS    v6;
 } EFI_IP_ADDRESS;
 
-
 ///
 /// Enumeration of EFI_STATUS.
 ///@{
@@ -151,20 +145,20 @@
 #define EFI_COMPROMISED_DATA      RETURN_COMPROMISED_DATA
 #define EFI_HTTP_ERROR            RETURN_HTTP_ERROR
 
-#define EFI_WARN_UNKNOWN_GLYPH    RETURN_WARN_UNKNOWN_GLYPH
-#define EFI_WARN_DELETE_FAILURE   RETURN_WARN_DELETE_FAILURE
-#define EFI_WARN_WRITE_FAILURE    RETURN_WARN_WRITE_FAILURE
-#define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL
-#define EFI_WARN_STALE_DATA       RETURN_WARN_STALE_DATA
-#define EFI_WARN_FILE_SYSTEM      RETURN_WARN_FILE_SYSTEM
+#define EFI_WARN_UNKNOWN_GLYPH     RETURN_WARN_UNKNOWN_GLYPH
+#define EFI_WARN_DELETE_FAILURE    RETURN_WARN_DELETE_FAILURE
+#define EFI_WARN_WRITE_FAILURE     RETURN_WARN_WRITE_FAILURE
+#define EFI_WARN_BUFFER_TOO_SMALL  RETURN_WARN_BUFFER_TOO_SMALL
+#define EFI_WARN_STALE_DATA        RETURN_WARN_STALE_DATA
+#define EFI_WARN_FILE_SYSTEM       RETURN_WARN_FILE_SYSTEM
 ///@}
 
 ///
 /// Define macro to encode the status code.
 ///
-#define EFIERR(_a)                ENCODE_ERROR(_a)
+#define EFIERR(_a)  ENCODE_ERROR(_a)
 
-#define EFI_ERROR(A)              RETURN_ERROR(A)
+#define EFI_ERROR(A)  RETURN_ERROR(A)
 
 ///
 /// ICMP error definitions
@@ -178,9 +172,9 @@
 ///
 /// Tcp connection status definitions
 ///@{
-#define EFI_CONNECTION_FIN        EFIERR(104)
-#define EFI_CONNECTION_RESET      EFIERR(105)
-#define EFI_CONNECTION_REFUSED    EFIERR(106)
+#define EFI_CONNECTION_FIN      EFIERR(104)
+#define EFI_CONNECTION_RESET    EFIERR(105)
+#define EFI_CONNECTION_REFUSED  EFIERR(106)
 ///@}
 
 //
@@ -188,9 +182,9 @@
 // 4KB. This should in no way be confused with the page size of the processor.
 // An EFI_PAGE is just the quanta of memory in EFI.
 //
-#define EFI_PAGE_SIZE             SIZE_4KB
-#define EFI_PAGE_MASK             0xFFF
-#define EFI_PAGE_SHIFT            12
+#define EFI_PAGE_SIZE   SIZE_4KB
+#define EFI_PAGE_MASK   0xFFF
+#define EFI_PAGE_SHIFT  12
 
 /**
   Macro that converts a size, in bytes, to a number of EFI_PAGESs.
@@ -221,22 +215,22 @@
 ///
 /// PE32+ Machine type for IA32 UEFI images.
 ///
-#define EFI_IMAGE_MACHINE_IA32            0x014C
+#define EFI_IMAGE_MACHINE_IA32  0x014C
 
 ///
 /// PE32+ Machine type for IA64 UEFI images.
 ///
-#define EFI_IMAGE_MACHINE_IA64            0x0200
+#define EFI_IMAGE_MACHINE_IA64  0x0200
 
 ///
 /// PE32+ Machine type for EBC UEFI images.
 ///
-#define EFI_IMAGE_MACHINE_EBC             0x0EBC
+#define EFI_IMAGE_MACHINE_EBC  0x0EBC
 
 ///
 /// PE32+ Machine type for X64 UEFI images.
 ///
-#define EFI_IMAGE_MACHINE_X64             0x8664
+#define EFI_IMAGE_MACHINE_X64  0x8664
 
 ///
 /// PE32+ Machine type for ARM mixed ARM and Thumb/Thumb2 images.
@@ -248,54 +242,84 @@
 ///
 #define EFI_IMAGE_MACHINE_AARCH64  0xAA64
 
+///
+/// PE32+ Machine type for RISC-V 32/64/128
+///
+#define EFI_IMAGE_MACHINE_RISCV32   0x5032
+#define EFI_IMAGE_MACHINE_RISCV64   0x5064
+#define EFI_IMAGE_MACHINE_RISCV128  0x5128
 
-#if   defined (MDE_CPU_IA32)
+///
+/// PE32+ Machine type for LoongArch 32/64 images.
+///
+#define EFI_IMAGE_MACHINE_LOONGARCH32  0x6232
+#define EFI_IMAGE_MACHINE_LOONGARCH64  0x6264
+
+#if !defined (EFI_IMAGE_MACHINE_TYPE_VALUE) && !defined (EFI_IMAGE_MACHINE_CROSS_TYPE_VALUE)
+  #if   defined (MDE_CPU_IA32)
 
 #define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
-  (((Machine) == EFI_IMAGE_MACHINE_IA32) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
+  ((Machine) == EFI_IMAGE_MACHINE_IA32)
 
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_X64)
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine)  ((Machine) == EFI_IMAGE_MACHINE_X64)
 
-#elif defined (MDE_CPU_IPF)
+  #elif defined (MDE_CPU_X64)
 
 #define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
-  (((Machine) == EFI_IMAGE_MACHINE_IA64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
+  ((Machine) == EFI_IMAGE_MACHINE_X64)
 
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine)  ((Machine) == EFI_IMAGE_MACHINE_IA32)
 
-#elif defined (MDE_CPU_X64)
+  #elif defined (MDE_CPU_ARM)
+
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine)  ((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED)
+
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine)  (FALSE)
+
+  #elif defined (MDE_CPU_AARCH64)
 
 #define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
-  (((Machine) == EFI_IMAGE_MACHINE_X64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
+  ((Machine) == EFI_IMAGE_MACHINE_AARCH64)
 
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_IA32)
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine)  (FALSE)
 
-#elif defined (MDE_CPU_ARM)
+  #elif defined (MDE_CPU_RISCV64)
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
+  ((Machine) == EFI_IMAGE_MACHINE_RISCV64)
+
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine)  (FALSE)
+
+  #elif defined (MDE_CPU_LOONGARCH64)
 
 #define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
-  (((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
+    ((Machine) == EFI_IMAGE_MACHINE_LOONGARCH64)
 
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED)
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine)  (FALSE)
 
-#elif defined (MDE_CPU_AARCH64)
-
-#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
-  (((Machine) == EFI_IMAGE_MACHINE_AARCH64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
-
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
-
-#elif defined (MDE_CPU_EBC)
+  #elif defined (MDE_CPU_EBC)
 
 ///
 /// This is just to make sure you can cross compile with the EBC compiler.
 /// It does not make sense to have a PE loader coded in EBC.
 ///
-#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_EBC)
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine)  ((Machine) == EFI_IMAGE_MACHINE_EBC)
 
-#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine)  (FALSE)
 
+  #else
+    #error Unknown Processor Type
+  #endif
 #else
-#error Unknown Processor Type
+  #if defined (EFI_IMAGE_MACHINE_TYPE_VALUE)
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine)  ((Machine) == EFI_IMAGE_MACHINE_TYPE_VALUE)
+  #else
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine)  (FALSE)
+  #endif
+  #if defined (EFI_IMAGE_MACHINE_CROSS_TYPE_VALUE)
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine)  ((Machine) == EFI_IMAGE_MACHINE_CROSS_TYPE_VALUE)
+  #else
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine)  (FALSE)
+  #endif
 #endif
 
 #endif
diff --git a/src/include/ipxe/efi/Uefi/UefiGpt.h b/src/include/ipxe/efi/Uefi/UefiGpt.h
index 19acf55..38eff7d 100644
--- a/src/include/ipxe/efi/Uefi/UefiGpt.h
+++ b/src/include/ipxe/efi/Uefi/UefiGpt.h
@@ -1,31 +1,29 @@
 /** @file
   EFI Guid Partition Table Format Definition.
 
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __UEFI_GPT_H__
 #define __UEFI_GPT_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// The primary GUID Partition Table Header must be
 /// located in LBA 1 (i.e., the second logical block).
 ///
-#define PRIMARY_PART_HEADER_LBA 1
+#define PRIMARY_PART_HEADER_LBA  1
 ///
 /// EFI Partition Table Signature: "EFI PART".
 ///
-#define EFI_PTAB_HEADER_ID      SIGNATURE_64 ('E','F','I',' ','P','A','R','T')
+#define EFI_PTAB_HEADER_ID  SIGNATURE_64 ('E','F','I',' ','P','A','R','T')
+///
+/// Minimum bytes reserve for EFI entry array buffer.
+///
+#define EFI_GPT_PART_ENTRY_MIN_SIZE  16384
 
 #pragma pack(1)
 
@@ -37,51 +35,51 @@
   /// The table header for the GPT partition Table.
   /// This header contains EFI_PTAB_HEADER_ID.
   ///
-  EFI_TABLE_HEADER  Header;
+  EFI_TABLE_HEADER    Header;
   ///
   /// The LBA that contains this data structure.
   ///
-  EFI_LBA           MyLBA;
+  EFI_LBA             MyLBA;
   ///
   /// LBA address of the alternate GUID Partition Table Header.
   ///
-  EFI_LBA           AlternateLBA;
+  EFI_LBA             AlternateLBA;
   ///
   /// The first usable logical block that may be used
   /// by a partition described by a GUID Partition Entry.
   ///
-  EFI_LBA           FirstUsableLBA;
+  EFI_LBA             FirstUsableLBA;
   ///
   /// The last usable logical block that may be used
   /// by a partition described by a GUID Partition Entry.
   ///
-  EFI_LBA           LastUsableLBA;
+  EFI_LBA             LastUsableLBA;
   ///
   /// GUID that can be used to uniquely identify the disk.
   ///
-  EFI_GUID          DiskGUID;
+  EFI_GUID            DiskGUID;
   ///
   /// The starting LBA of the GUID Partition Entry array.
   ///
-  EFI_LBA           PartitionEntryLBA;
+  EFI_LBA             PartitionEntryLBA;
   ///
   /// The number of Partition Entries in the GUID Partition Entry array.
   ///
-  UINT32            NumberOfPartitionEntries;
+  UINT32              NumberOfPartitionEntries;
   ///
   /// The size, in bytes, of each the GUID Partition
   /// Entry structures in the GUID Partition Entry
   /// array. This field shall be set to a value of 128 x 2^n where n is
   /// an integer greater than or equal to zero (e.g., 128, 256, 512, etc.).
   ///
-  UINT32            SizeOfPartitionEntry;
+  UINT32              SizeOfPartitionEntry;
   ///
   /// The CRC32 of the GUID Partition Entry array.
   /// Starts at PartitionEntryLBA and is
   /// computed over a byte length of
   /// NumberOfPartitionEntries * SizeOfPartitionEntry.
   ///
-  UINT32            PartitionEntryArrayCRC32;
+  UINT32              PartitionEntryArrayCRC32;
 } EFI_PARTITION_TABLE_HEADER;
 
 ///
@@ -92,21 +90,21 @@
   /// Unique ID that defines the purpose and type of this Partition. A value of
   /// zero defines that this partition entry is not being used.
   ///
-  EFI_GUID  PartitionTypeGUID;
+  EFI_GUID    PartitionTypeGUID;
   ///
   /// GUID that is unique for every partition entry. Every partition ever
   /// created will have a unique GUID.
   /// This GUID must be assigned when the GUID Partition Entry is created.
   ///
-  EFI_GUID  UniquePartitionGUID;
+  EFI_GUID    UniquePartitionGUID;
   ///
   /// Starting LBA of the partition defined by this entry
   ///
-  EFI_LBA   StartingLBA;
+  EFI_LBA     StartingLBA;
   ///
   /// Ending LBA of the partition defined by this entry.
   ///
-  EFI_LBA   EndingLBA;
+  EFI_LBA     EndingLBA;
   ///
   /// Attribute bits, all bits reserved by UEFI
   /// Bit 0:      If this bit is set, the partition is required for the platform to function. The owner/creator of the
@@ -139,5 +137,3 @@
 
 #pragma pack()
 #endif
-
-
diff --git a/src/include/ipxe/efi/Uefi/UefiInternalFormRepresentation.h b/src/include/ipxe/efi/Uefi/UefiInternalFormRepresentation.h
index 88c0262..36468e0 100644
--- a/src/include/ipxe/efi/Uefi/UefiInternalFormRepresentation.h
+++ b/src/include/ipxe/efi/Uefi/UefiInternalFormRepresentation.h
@@ -3,15 +3,9 @@
   IFR is primarily consumed by the EFI presentation engine, and produced by EFI
   internal application and drivers as well as all add-in card option-ROM drivers
 
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   These definitions are from UEFI 2.1 and 2.2.
@@ -21,15 +15,15 @@
 #ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__
 #define __UEFI_INTERNAL_FORMREPRESENTATION_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Guid/HiiFormMapMethodGuid.h>
 
 ///
 /// The following types are currently defined:
 ///
-typedef VOID*   EFI_HII_HANDLE;
-typedef CHAR16* EFI_STRING;
+typedef VOID    *EFI_HII_HANDLE;
+typedef CHAR16  *EFI_STRING;
 typedef UINT16  EFI_IMAGE_ID;
 typedef UINT16  EFI_QUESTION_ID;
 typedef UINT16  EFI_STRING_ID;
@@ -37,11 +31,9 @@
 typedef UINT16  EFI_VARSTORE_ID;
 typedef UINT16  EFI_ANIMATION_ID;
 
-typedef UINT16  EFI_DEFAULT_ID;
+typedef UINT16 EFI_DEFAULT_ID;
 
-typedef UINT32  EFI_HII_FONT_STYLE;
-
-
+typedef UINT32 EFI_HII_FONT_STYLE;
 
 #pragma pack(1)
 
@@ -54,35 +46,35 @@
 /// The header found at the start of each package list.
 ///
 typedef struct {
-  EFI_GUID               PackageListGuid;
-  UINT32                 PackageLength;
+  EFI_GUID    PackageListGuid;
+  UINT32      PackageLength;
 } EFI_HII_PACKAGE_LIST_HEADER;
 
 ///
 /// The header found at the start of each package.
 ///
 typedef struct {
-  UINT32  Length:24;
-  UINT32  Type:8;
+  UINT32    Length : 24;
+  UINT32    Type   : 8;
   // UINT8  Data[...];
 } EFI_HII_PACKAGE_HEADER;
 
 //
 // Value of HII package type
 //
-#define EFI_HII_PACKAGE_TYPE_ALL             0x00
-#define EFI_HII_PACKAGE_TYPE_GUID            0x01
-#define EFI_HII_PACKAGE_FORMS                0x02
-#define EFI_HII_PACKAGE_STRINGS              0x04
-#define EFI_HII_PACKAGE_FONTS                0x05
-#define EFI_HII_PACKAGE_IMAGES               0x06
-#define EFI_HII_PACKAGE_SIMPLE_FONTS         0x07
-#define EFI_HII_PACKAGE_DEVICE_PATH          0x08
-#define EFI_HII_PACKAGE_KEYBOARD_LAYOUT      0x09
-#define EFI_HII_PACKAGE_ANIMATIONS           0x0A
-#define EFI_HII_PACKAGE_END                  0xDF
-#define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN    0xE0
-#define EFI_HII_PACKAGE_TYPE_SYSTEM_END      0xFF
+#define EFI_HII_PACKAGE_TYPE_ALL           0x00
+#define EFI_HII_PACKAGE_TYPE_GUID          0x01
+#define EFI_HII_PACKAGE_FORMS              0x02
+#define EFI_HII_PACKAGE_STRINGS            0x04
+#define EFI_HII_PACKAGE_FONTS              0x05
+#define EFI_HII_PACKAGE_IMAGES             0x06
+#define EFI_HII_PACKAGE_SIMPLE_FONTS       0x07
+#define EFI_HII_PACKAGE_DEVICE_PATH        0x08
+#define EFI_HII_PACKAGE_KEYBOARD_LAYOUT    0x09
+#define EFI_HII_PACKAGE_ANIMATIONS         0x0A
+#define EFI_HII_PACKAGE_END                0xDF
+#define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN  0xE0
+#define EFI_HII_PACKAGE_TYPE_SYSTEM_END    0xFF
 
 //
 // Definitions for Simplified Font Package
@@ -91,10 +83,10 @@
 ///
 /// Contents of EFI_NARROW_GLYPH.Attributes.
 ///@{
-#define EFI_GLYPH_NON_SPACING                0x01
-#define EFI_GLYPH_WIDE                       0x02
-#define EFI_GLYPH_HEIGHT                     19
-#define EFI_GLYPH_WIDTH                      8
+#define EFI_GLYPH_NON_SPACING  0x01
+#define EFI_GLYPH_WIDE         0x02
+#define EFI_GLYPH_HEIGHT       19
+#define EFI_GLYPH_WIDTH        8
 ///@}
 
 ///
@@ -105,17 +97,17 @@
   /// The Unicode representation of the glyph. The term weight is the
   /// technical term for a character code.
   ///
-  CHAR16                 UnicodeWeight;
+  CHAR16    UnicodeWeight;
   ///
   /// The data element containing the glyph definitions.
   ///
-  UINT8                  Attributes;
+  UINT8     Attributes;
   ///
   /// The column major glyph representation of the character. Bits
   /// with values of one indicate that the corresponding pixel is to be
   /// on when normally displayed; those with zero are off.
   ///
-  UINT8                  GlyphCol1[EFI_GLYPH_HEIGHT];
+  UINT8     GlyphCol1[EFI_GLYPH_HEIGHT];
 } EFI_NARROW_GLYPH;
 
 ///
@@ -127,29 +119,29 @@
   /// The Unicode representation of the glyph. The term weight is the
   /// technical term for a character code.
   ///
-  CHAR16                 UnicodeWeight;
+  CHAR16    UnicodeWeight;
   ///
   /// The data element containing the glyph definitions.
   ///
-  UINT8                  Attributes;
+  UINT8     Attributes;
   ///
   /// The column major glyph representation of the character. Bits
   /// with values of one indicate that the corresponding pixel is to be
   /// on when normally displayed; those with zero are off.
   ///
-  UINT8                  GlyphCol1[EFI_GLYPH_HEIGHT];
+  UINT8     GlyphCol1[EFI_GLYPH_HEIGHT];
   ///
   /// The column major glyph representation of the character. Bits
   /// with values of one indicate that the corresponding pixel is to be
   /// on when normally displayed; those with zero are off.
   ///
-  UINT8                  GlyphCol2[EFI_GLYPH_HEIGHT];
+  UINT8     GlyphCol2[EFI_GLYPH_HEIGHT];
   ///
   /// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the
   /// sizeof (EFI_NARROW_GLYPH). The contents of Pad must
   /// be zero.
   ///
-  UINT8                  Pad[3];
+  UINT8     Pad[3];
 } EFI_WIDE_GLYPH;
 
 ///
@@ -157,9 +149,9 @@
 /// followed by a series of glyph structures.
 ///
 typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR {
-  EFI_HII_PACKAGE_HEADER Header;
-  UINT16                 NumberOfNarrowGlyphs;
-  UINT16                 NumberOfWideGlyphs;
+  EFI_HII_PACKAGE_HEADER    Header;
+  UINT16                    NumberOfNarrowGlyphs;
+  UINT16                    NumberOfWideGlyphs;
   // EFI_NARROW_GLYPH       NarrowGlyphs[];
   // EFI_WIDE_GLYPH         WideGlyphs[];
 } EFI_HII_SIMPLE_FONT_PACKAGE_HDR;
@@ -172,21 +164,21 @@
 //
 // Value for font style
 //
-#define EFI_HII_FONT_STYLE_NORMAL            0x00000000
-#define EFI_HII_FONT_STYLE_BOLD              0x00000001
-#define EFI_HII_FONT_STYLE_ITALIC            0x00000002
-#define EFI_HII_FONT_STYLE_EMBOSS            0x00010000
-#define EFI_HII_FONT_STYLE_OUTLINE           0x00020000
-#define EFI_HII_FONT_STYLE_SHADOW            0x00040000
-#define EFI_HII_FONT_STYLE_UNDERLINE         0x00080000
-#define EFI_HII_FONT_STYLE_DBL_UNDER         0x00100000
+#define EFI_HII_FONT_STYLE_NORMAL     0x00000000
+#define EFI_HII_FONT_STYLE_BOLD       0x00000001
+#define EFI_HII_FONT_STYLE_ITALIC     0x00000002
+#define EFI_HII_FONT_STYLE_EMBOSS     0x00010000
+#define EFI_HII_FONT_STYLE_OUTLINE    0x00020000
+#define EFI_HII_FONT_STYLE_SHADOW     0x00040000
+#define EFI_HII_FONT_STYLE_UNDERLINE  0x00080000
+#define EFI_HII_FONT_STYLE_DBL_UNDER  0x00100000
 
 typedef struct _EFI_HII_GLYPH_INFO {
-  UINT16                 Width;
-  UINT16                 Height;
-  INT16                  OffsetX;
-  INT16                  OffsetY;
-  INT16                  AdvanceX;
+  UINT16    Width;
+  UINT16    Height;
+  INT16     OffsetX;
+  INT16     OffsetY;
+  INT16     AdvanceX;
 } EFI_HII_GLYPH_INFO;
 
 ///
@@ -196,33 +188,33 @@
 /// information, the glyph bitmaps and the character map.
 ///
 typedef struct _EFI_HII_FONT_PACKAGE_HDR {
-  EFI_HII_PACKAGE_HEADER Header;
-  UINT32                 HdrSize;
-  UINT32                 GlyphBlockOffset;
-  EFI_HII_GLYPH_INFO     Cell;
-  EFI_HII_FONT_STYLE     FontStyle;
-  CHAR16                 FontFamily[1];
+  EFI_HII_PACKAGE_HEADER    Header;
+  UINT32                    HdrSize;
+  UINT32                    GlyphBlockOffset;
+  EFI_HII_GLYPH_INFO        Cell;
+  EFI_HII_FONT_STYLE        FontStyle;
+  CHAR16                    FontFamily[1];
 } EFI_HII_FONT_PACKAGE_HDR;
 
 //
 // Value of different glyph info block types
 //
-#define EFI_HII_GIBT_END                  0x00
-#define EFI_HII_GIBT_GLYPH                0x10
-#define EFI_HII_GIBT_GLYPHS               0x11
-#define EFI_HII_GIBT_GLYPH_DEFAULT        0x12
-#define EFI_HII_GIBT_GLYPHS_DEFAULT       0x13
-#define EFI_HII_GIBT_GLYPH_VARIABILITY    0x14
-#define EFI_HII_GIBT_DUPLICATE            0x20
-#define EFI_HII_GIBT_SKIP2                0x21
-#define EFI_HII_GIBT_SKIP1                0x22
-#define EFI_HII_GIBT_DEFAULTS             0x23
-#define EFI_HII_GIBT_EXT1                 0x30
-#define EFI_HII_GIBT_EXT2                 0x31
-#define EFI_HII_GIBT_EXT4                 0x32
+#define EFI_HII_GIBT_END                0x00
+#define EFI_HII_GIBT_GLYPH              0x10
+#define EFI_HII_GIBT_GLYPHS             0x11
+#define EFI_HII_GIBT_GLYPH_DEFAULT      0x12
+#define EFI_HII_GIBT_GLYPHS_DEFAULT     0x13
+#define EFI_HII_GIBT_GLYPH_VARIABILITY  0x14
+#define EFI_HII_GIBT_DUPLICATE          0x20
+#define EFI_HII_GIBT_SKIP2              0x21
+#define EFI_HII_GIBT_SKIP1              0x22
+#define EFI_HII_GIBT_DEFAULTS           0x23
+#define EFI_HII_GIBT_EXT1               0x30
+#define EFI_HII_GIBT_EXT2               0x31
+#define EFI_HII_GIBT_EXT4               0x32
 
 typedef struct _EFI_HII_GLYPH_BLOCK {
-  UINT8                  BlockType;
+  UINT8    BlockType;
 } EFI_HII_GLYPH_BLOCK;
 
 //
@@ -289,7 +281,7 @@
   EFI_HII_GLYPH_BLOCK    Header;
   EFI_HII_GLYPH_INFO     Cell;
   UINT8                  GlyphPackInBits;
-  UINT8                  BitmapData [1];
+  UINT8                  BitmapData[1];
 } EFI_HII_GIBT_VARIABILITY_BLOCK;
 
 typedef struct _EFI_HII_GIBT_SKIP1_BLOCK {
@@ -312,7 +304,7 @@
 /// associated with the package list.
 ///
 typedef struct _EFI_HII_DEVICE_PATH_PACKAGE_HDR {
-  EFI_HII_PACKAGE_HEADER   Header;
+  EFI_HII_PACKAGE_HEADER    Header;
   // EFI_DEVICE_PATH_PROTOCOL DevicePath[];
 } EFI_HII_DEVICE_PATH_PACKAGE_HDR;
 
@@ -325,8 +317,8 @@
 /// The GUID package is used to carry data where the format is defined by a GUID.
 ///
 typedef struct _EFI_HII_GUID_PACKAGE_HDR {
-  EFI_HII_PACKAGE_HEADER  Header;
-  EFI_GUID                Guid;
+  EFI_HII_PACKAGE_HEADER    Header;
+  EFI_GUID                  Guid;
   // Data per GUID definition may follow
 } EFI_HII_GUID_PACKAGE_HDR;
 
@@ -335,45 +327,45 @@
 // Section 27.3.6
 //
 
-#define UEFI_CONFIG_LANG   "x-UEFI"
-#define UEFI_CONFIG_LANG_2 "x-i-UEFI"
+#define UEFI_CONFIG_LANG    "x-UEFI"
+#define UEFI_CONFIG_LANG_2  "x-i-UEFI"
 
 ///
 /// The fixed header consists of a standard record header and then the string identifiers
 /// contained in this section and the offsets of the string and language information.
 ///
 typedef struct _EFI_HII_STRING_PACKAGE_HDR {
-  EFI_HII_PACKAGE_HEADER  Header;
-  UINT32                  HdrSize;
-  UINT32                  StringInfoOffset;
-  CHAR16                  LanguageWindow[16];
-  EFI_STRING_ID           LanguageName;
-  CHAR8                   Language[1];
+  EFI_HII_PACKAGE_HEADER    Header;
+  UINT32                    HdrSize;
+  UINT32                    StringInfoOffset;
+  CHAR16                    LanguageWindow[16];
+  EFI_STRING_ID             LanguageName;
+  CHAR8                     Language[1];
 } EFI_HII_STRING_PACKAGE_HDR;
 
 typedef struct {
-  UINT8                   BlockType;
+  UINT8    BlockType;
 } EFI_HII_STRING_BLOCK;
 
 //
 // Value of different string information block types
 //
-#define EFI_HII_SIBT_END                     0x00
-#define EFI_HII_SIBT_STRING_SCSU             0x10
-#define EFI_HII_SIBT_STRING_SCSU_FONT        0x11
-#define EFI_HII_SIBT_STRINGS_SCSU            0x12
-#define EFI_HII_SIBT_STRINGS_SCSU_FONT       0x13
-#define EFI_HII_SIBT_STRING_UCS2             0x14
-#define EFI_HII_SIBT_STRING_UCS2_FONT        0x15
-#define EFI_HII_SIBT_STRINGS_UCS2            0x16
-#define EFI_HII_SIBT_STRINGS_UCS2_FONT       0x17
-#define EFI_HII_SIBT_DUPLICATE               0x20
-#define EFI_HII_SIBT_SKIP2                   0x21
-#define EFI_HII_SIBT_SKIP1                   0x22
-#define EFI_HII_SIBT_EXT1                    0x30
-#define EFI_HII_SIBT_EXT2                    0x31
-#define EFI_HII_SIBT_EXT4                    0x32
-#define EFI_HII_SIBT_FONT                    0x40
+#define EFI_HII_SIBT_END                0x00
+#define EFI_HII_SIBT_STRING_SCSU        0x10
+#define EFI_HII_SIBT_STRING_SCSU_FONT   0x11
+#define EFI_HII_SIBT_STRINGS_SCSU       0x12
+#define EFI_HII_SIBT_STRINGS_SCSU_FONT  0x13
+#define EFI_HII_SIBT_STRING_UCS2        0x14
+#define EFI_HII_SIBT_STRING_UCS2_FONT   0x15
+#define EFI_HII_SIBT_STRINGS_UCS2       0x16
+#define EFI_HII_SIBT_STRINGS_UCS2_FONT  0x17
+#define EFI_HII_SIBT_DUPLICATE          0x20
+#define EFI_HII_SIBT_SKIP2              0x21
+#define EFI_HII_SIBT_SKIP1              0x22
+#define EFI_HII_SIBT_EXT1               0x30
+#define EFI_HII_SIBT_EXT2               0x31
+#define EFI_HII_SIBT_EXT4               0x32
+#define EFI_HII_SIBT_FONT               0x40
 
 //
 // Definition of different string information block types
@@ -407,11 +399,11 @@
 } EFI_HII_SIBT_EXT4_BLOCK;
 
 typedef struct _EFI_HII_SIBT_FONT_BLOCK {
-  EFI_HII_SIBT_EXT2_BLOCK Header;
-  UINT8                   FontId;
-  UINT16                  FontSize;
-  EFI_HII_FONT_STYLE      FontStyle;
-  CHAR16                  FontName[1];
+  EFI_HII_SIBT_EXT2_BLOCK    Header;
+  UINT8                      FontId;
+  UINT16                     FontSize;
+  EFI_HII_FONT_STYLE         FontStyle;
+  CHAR16                     FontName[1];
 } EFI_HII_SIBT_FONT_BLOCK;
 
 typedef struct _EFI_HII_SIBT_SKIP1_BLOCK {
@@ -478,163 +470,163 @@
 //
 
 typedef struct _EFI_HII_IMAGE_PACKAGE_HDR {
-  EFI_HII_PACKAGE_HEADER  Header;
-  UINT32                  ImageInfoOffset;
-  UINT32                  PaletteInfoOffset;
+  EFI_HII_PACKAGE_HEADER    Header;
+  UINT32                    ImageInfoOffset;
+  UINT32                    PaletteInfoOffset;
 } EFI_HII_IMAGE_PACKAGE_HDR;
 
 typedef struct _EFI_HII_IMAGE_BLOCK {
-  UINT8                   BlockType;
+  UINT8    BlockType;
 } EFI_HII_IMAGE_BLOCK;
 
 //
 // Value of different image information block types
 //
-#define EFI_HII_IIBT_END               0x00
-#define EFI_HII_IIBT_IMAGE_1BIT        0x10
-#define EFI_HII_IIBT_IMAGE_1BIT_TRANS  0x11
-#define EFI_HII_IIBT_IMAGE_4BIT        0x12
-#define EFI_HII_IIBT_IMAGE_4BIT_TRANS  0x13
-#define EFI_HII_IIBT_IMAGE_8BIT        0x14
-#define EFI_HII_IIBT_IMAGE_8BIT_TRANS  0x15
-#define EFI_HII_IIBT_IMAGE_24BIT       0x16
-#define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17
-#define EFI_HII_IIBT_IMAGE_JPEG        0x18
-#define EFI_HII_IIBT_IMAGE_PNG         0x19
-#define EFI_HII_IIBT_DUPLICATE         0x20
-#define EFI_HII_IIBT_SKIP2             0x21
-#define EFI_HII_IIBT_SKIP1             0x22
-#define EFI_HII_IIBT_EXT1              0x30
-#define EFI_HII_IIBT_EXT2              0x31
-#define EFI_HII_IIBT_EXT4              0x32
+#define EFI_HII_IIBT_END                0x00
+#define EFI_HII_IIBT_IMAGE_1BIT         0x10
+#define EFI_HII_IIBT_IMAGE_1BIT_TRANS   0x11
+#define EFI_HII_IIBT_IMAGE_4BIT         0x12
+#define EFI_HII_IIBT_IMAGE_4BIT_TRANS   0x13
+#define EFI_HII_IIBT_IMAGE_8BIT         0x14
+#define EFI_HII_IIBT_IMAGE_8BIT_TRANS   0x15
+#define EFI_HII_IIBT_IMAGE_24BIT        0x16
+#define EFI_HII_IIBT_IMAGE_24BIT_TRANS  0x17
+#define EFI_HII_IIBT_IMAGE_JPEG         0x18
+#define EFI_HII_IIBT_IMAGE_PNG          0x19
+#define EFI_HII_IIBT_DUPLICATE          0x20
+#define EFI_HII_IIBT_SKIP2              0x21
+#define EFI_HII_IIBT_SKIP1              0x22
+#define EFI_HII_IIBT_EXT1               0x30
+#define EFI_HII_IIBT_EXT2               0x31
+#define EFI_HII_IIBT_EXT4               0x32
 
 //
 // Definition of different image information block types
 //
 
 typedef struct _EFI_HII_IIBT_END_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
+  EFI_HII_IMAGE_BLOCK    Header;
 } EFI_HII_IIBT_END_BLOCK;
 
 typedef struct _EFI_HII_IIBT_EXT1_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT8                        BlockType2;
-  UINT8                        Length;
+  EFI_HII_IMAGE_BLOCK    Header;
+  UINT8                  BlockType2;
+  UINT8                  Length;
 } EFI_HII_IIBT_EXT1_BLOCK;
 
 typedef struct _EFI_HII_IIBT_EXT2_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT8                        BlockType2;
-  UINT16                       Length;
+  EFI_HII_IMAGE_BLOCK    Header;
+  UINT8                  BlockType2;
+  UINT16                 Length;
 } EFI_HII_IIBT_EXT2_BLOCK;
 
 typedef struct _EFI_HII_IIBT_EXT4_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT8                        BlockType2;
-  UINT32                       Length;
+  EFI_HII_IMAGE_BLOCK    Header;
+  UINT8                  BlockType2;
+  UINT32                 Length;
 } EFI_HII_IIBT_EXT4_BLOCK;
 
 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE {
-  UINT16                       Width;
-  UINT16                       Height;
-  UINT8                        Data[1];
+  UINT16    Width;
+  UINT16    Height;
+  UINT8     Data[1];
 } EFI_HII_IIBT_IMAGE_1BIT_BASE;
 
 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT8                        PaletteIndex;
-  EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap;
+  EFI_HII_IMAGE_BLOCK             Header;
+  UINT8                           PaletteIndex;
+  EFI_HII_IIBT_IMAGE_1BIT_BASE    Bitmap;
 } EFI_HII_IIBT_IMAGE_1BIT_BLOCK;
 
 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT8                        PaletteIndex;
-  EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap;
+  EFI_HII_IMAGE_BLOCK             Header;
+  UINT8                           PaletteIndex;
+  EFI_HII_IIBT_IMAGE_1BIT_BASE    Bitmap;
 } EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK;
 
 typedef struct _EFI_HII_RGB_PIXEL {
-  UINT8                        b;
-  UINT8                        g;
-  UINT8                        r;
+  UINT8    b;
+  UINT8    g;
+  UINT8    r;
 } EFI_HII_RGB_PIXEL;
 
 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE {
-  UINT16                       Width;
-  UINT16                       Height;
-  EFI_HII_RGB_PIXEL            Bitmap[1];
+  UINT16               Width;
+  UINT16               Height;
+  EFI_HII_RGB_PIXEL    Bitmap[1];
 } EFI_HII_IIBT_IMAGE_24BIT_BASE;
 
 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK {
-  EFI_HII_IMAGE_BLOCK           Header;
-  EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap;
+  EFI_HII_IMAGE_BLOCK              Header;
+  EFI_HII_IIBT_IMAGE_24BIT_BASE    Bitmap;
 } EFI_HII_IIBT_IMAGE_24BIT_BLOCK;
 
 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK {
-  EFI_HII_IMAGE_BLOCK           Header;
-  EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap;
+  EFI_HII_IMAGE_BLOCK              Header;
+  EFI_HII_IIBT_IMAGE_24BIT_BASE    Bitmap;
 } EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK;
 
 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE {
-  UINT16                       Width;
-  UINT16                       Height;
-  UINT8                        Data[1];
+  UINT16    Width;
+  UINT16    Height;
+  UINT8     Data[1];
 } EFI_HII_IIBT_IMAGE_4BIT_BASE;
 
 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT8                        PaletteIndex;
-  EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap;
+  EFI_HII_IMAGE_BLOCK             Header;
+  UINT8                           PaletteIndex;
+  EFI_HII_IIBT_IMAGE_4BIT_BASE    Bitmap;
 } EFI_HII_IIBT_IMAGE_4BIT_BLOCK;
 
 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT8                        PaletteIndex;
-  EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap;
+  EFI_HII_IMAGE_BLOCK             Header;
+  UINT8                           PaletteIndex;
+  EFI_HII_IIBT_IMAGE_4BIT_BASE    Bitmap;
 } EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK;
 
 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE {
-  UINT16                       Width;
-  UINT16                       Height;
-  UINT8                        Data[1];
+  UINT16    Width;
+  UINT16    Height;
+  UINT8     Data[1];
 } EFI_HII_IIBT_IMAGE_8BIT_BASE;
 
 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT8                        PaletteIndex;
-  EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap;
+  EFI_HII_IMAGE_BLOCK             Header;
+  UINT8                           PaletteIndex;
+  EFI_HII_IIBT_IMAGE_8BIT_BASE    Bitmap;
 } EFI_HII_IIBT_IMAGE_8BIT_BLOCK;
 
 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT8                        PaletteIndex;
-  EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap;
+  EFI_HII_IMAGE_BLOCK             Header;
+  UINT8                           PaletteIndex;
+  EFI_HII_IIBT_IMAGE_8BIT_BASE    Bitmap;
 } EFI_HII_IIBT_IMAGE_8BIT_TRAN_BLOCK;
 
 typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  EFI_IMAGE_ID                 ImageId;
+  EFI_HII_IMAGE_BLOCK    Header;
+  EFI_IMAGE_ID           ImageId;
 } EFI_HII_IIBT_DUPLICATE_BLOCK;
 
 typedef struct _EFI_HII_IIBT_JPEG_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT32                       Size;
-  UINT8                        Data[1];
+  EFI_HII_IMAGE_BLOCK    Header;
+  UINT32                 Size;
+  UINT8                  Data[1];
 } EFI_HII_IIBT_JPEG_BLOCK;
 
 typedef struct _EFI_HII_IIBT_PNG_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT32                       Size;
-  UINT8                        Data[1];
+  EFI_HII_IMAGE_BLOCK    Header;
+  UINT32                 Size;
+  UINT8                  Data[1];
 } EFI_HII_IIBT_PNG_BLOCK;
 
 typedef struct _EFI_HII_IIBT_SKIP1_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT8                        SkipCount;
+  EFI_HII_IMAGE_BLOCK    Header;
+  UINT8                  SkipCount;
 } EFI_HII_IIBT_SKIP1_BLOCK;
 
 typedef struct _EFI_HII_IIBT_SKIP2_BLOCK {
-  EFI_HII_IMAGE_BLOCK          Header;
-  UINT16                       SkipCount;
+  EFI_HII_IMAGE_BLOCK    Header;
+  UINT16                 SkipCount;
 } EFI_HII_IIBT_SKIP2_BLOCK;
 
 //
@@ -642,12 +634,12 @@
 //
 
 typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER {
-  UINT16                       PaletteCount;
+  UINT16    PaletteCount;
 } EFI_HII_IMAGE_PALETTE_INFO_HEADER;
 
 typedef struct _EFI_HII_IMAGE_PALETTE_INFO {
-  UINT16                       PaletteSize;
-  EFI_HII_RGB_PIXEL            PaletteValue[1];
+  UINT16               PaletteSize;
+  EFI_HII_RGB_PIXEL    PaletteValue[1];
 } EFI_HII_IMAGE_PALETTE_INFO;
 
 //
@@ -659,146 +651,146 @@
 /// The Form package is used to carry form-based encoding data.
 ///
 typedef struct _EFI_HII_FORM_PACKAGE_HDR {
-  EFI_HII_PACKAGE_HEADER       Header;
+  EFI_HII_PACKAGE_HEADER    Header;
   // EFI_IFR_OP_HEADER         OpCodeHeader;
   // More op-codes follow
 } EFI_HII_FORM_PACKAGE_HDR;
 
 typedef struct {
-  UINT8 Hour;
-  UINT8 Minute;
-  UINT8 Second;
+  UINT8    Hour;
+  UINT8    Minute;
+  UINT8    Second;
 } EFI_HII_TIME;
 
 typedef struct {
-  UINT16 Year;
-  UINT8  Month;
-  UINT8  Day;
+  UINT16    Year;
+  UINT8     Month;
+  UINT8     Day;
 } EFI_HII_DATE;
 
 typedef struct {
-  EFI_QUESTION_ID QuestionId;
-  EFI_FORM_ID     FormId;
-  EFI_GUID        FormSetGuid;
-  EFI_STRING_ID   DevicePath;
+  EFI_QUESTION_ID    QuestionId;
+  EFI_FORM_ID        FormId;
+  EFI_GUID           FormSetGuid;
+  EFI_STRING_ID      DevicePath;
 } EFI_HII_REF;
 
 typedef union {
-  UINT8           u8;
-  UINT16          u16;
-  UINT32          u32;
-  UINT64          u64;
-  BOOLEAN         b;
-  EFI_HII_TIME    time;
-  EFI_HII_DATE    date;
-  EFI_STRING_ID   string; ///< EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION
-  EFI_HII_REF     ref;    ///< EFI_IFR_TYPE_REF
+  UINT8            u8;
+  UINT16           u16;
+  UINT32           u32;
+  UINT64           u64;
+  BOOLEAN          b;
+  EFI_HII_TIME     time;
+  EFI_HII_DATE     date;
+  EFI_STRING_ID    string; ///< EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION
+  EFI_HII_REF      ref;    ///< EFI_IFR_TYPE_REF
   // UINT8 buffer[];      ///< EFI_IFR_TYPE_BUFFER
 } EFI_IFR_TYPE_VALUE;
 
 //
 // IFR Opcodes
 //
-#define EFI_IFR_FORM_OP                0x01
-#define EFI_IFR_SUBTITLE_OP            0x02
-#define EFI_IFR_TEXT_OP                0x03
-#define EFI_IFR_IMAGE_OP               0x04
-#define EFI_IFR_ONE_OF_OP              0x05
-#define EFI_IFR_CHECKBOX_OP            0x06
-#define EFI_IFR_NUMERIC_OP             0x07
-#define EFI_IFR_PASSWORD_OP            0x08
-#define EFI_IFR_ONE_OF_OPTION_OP       0x09
-#define EFI_IFR_SUPPRESS_IF_OP         0x0A
-#define EFI_IFR_LOCKED_OP              0x0B
-#define EFI_IFR_ACTION_OP              0x0C
-#define EFI_IFR_RESET_BUTTON_OP        0x0D
-#define EFI_IFR_FORM_SET_OP            0x0E
-#define EFI_IFR_REF_OP                 0x0F
-#define EFI_IFR_NO_SUBMIT_IF_OP        0x10
-#define EFI_IFR_INCONSISTENT_IF_OP     0x11
-#define EFI_IFR_EQ_ID_VAL_OP           0x12
-#define EFI_IFR_EQ_ID_ID_OP            0x13
-#define EFI_IFR_EQ_ID_VAL_LIST_OP      0x14
-#define EFI_IFR_AND_OP                 0x15
-#define EFI_IFR_OR_OP                  0x16
-#define EFI_IFR_NOT_OP                 0x17
-#define EFI_IFR_RULE_OP                0x18
-#define EFI_IFR_GRAY_OUT_IF_OP         0x19
-#define EFI_IFR_DATE_OP                0x1A
-#define EFI_IFR_TIME_OP                0x1B
-#define EFI_IFR_STRING_OP              0x1C
-#define EFI_IFR_REFRESH_OP             0x1D
-#define EFI_IFR_DISABLE_IF_OP          0x1E
-#define EFI_IFR_ANIMATION_OP           0x1F
-#define EFI_IFR_TO_LOWER_OP            0x20
-#define EFI_IFR_TO_UPPER_OP            0x21
-#define EFI_IFR_MAP_OP                 0x22
-#define EFI_IFR_ORDERED_LIST_OP        0x23
-#define EFI_IFR_VARSTORE_OP            0x24
-#define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25
-#define EFI_IFR_VARSTORE_EFI_OP        0x26
-#define EFI_IFR_VARSTORE_DEVICE_OP     0x27
-#define EFI_IFR_VERSION_OP             0x28
-#define EFI_IFR_END_OP                 0x29
-#define EFI_IFR_MATCH_OP               0x2A
-#define EFI_IFR_GET_OP                 0x2B
-#define EFI_IFR_SET_OP                 0x2C
-#define EFI_IFR_READ_OP                0x2D
-#define EFI_IFR_WRITE_OP               0x2E
-#define EFI_IFR_EQUAL_OP               0x2F
-#define EFI_IFR_NOT_EQUAL_OP           0x30
-#define EFI_IFR_GREATER_THAN_OP        0x31
-#define EFI_IFR_GREATER_EQUAL_OP       0x32
-#define EFI_IFR_LESS_THAN_OP           0x33
-#define EFI_IFR_LESS_EQUAL_OP          0x34
-#define EFI_IFR_BITWISE_AND_OP         0x35
-#define EFI_IFR_BITWISE_OR_OP          0x36
-#define EFI_IFR_BITWISE_NOT_OP         0x37
-#define EFI_IFR_SHIFT_LEFT_OP          0x38
-#define EFI_IFR_SHIFT_RIGHT_OP         0x39
-#define EFI_IFR_ADD_OP                 0x3A
-#define EFI_IFR_SUBTRACT_OP            0x3B
-#define EFI_IFR_MULTIPLY_OP            0x3C
-#define EFI_IFR_DIVIDE_OP              0x3D
-#define EFI_IFR_MODULO_OP              0x3E
-#define EFI_IFR_RULE_REF_OP            0x3F
-#define EFI_IFR_QUESTION_REF1_OP       0x40
-#define EFI_IFR_QUESTION_REF2_OP       0x41
-#define EFI_IFR_UINT8_OP               0x42
-#define EFI_IFR_UINT16_OP              0x43
-#define EFI_IFR_UINT32_OP              0x44
-#define EFI_IFR_UINT64_OP              0x45
-#define EFI_IFR_TRUE_OP                0x46
-#define EFI_IFR_FALSE_OP               0x47
-#define EFI_IFR_TO_UINT_OP             0x48
-#define EFI_IFR_TO_STRING_OP           0x49
-#define EFI_IFR_TO_BOOLEAN_OP          0x4A
-#define EFI_IFR_MID_OP                 0x4B
-#define EFI_IFR_FIND_OP                0x4C
-#define EFI_IFR_TOKEN_OP               0x4D
-#define EFI_IFR_STRING_REF1_OP         0x4E
-#define EFI_IFR_STRING_REF2_OP         0x4F
-#define EFI_IFR_CONDITIONAL_OP         0x50
-#define EFI_IFR_QUESTION_REF3_OP       0x51
-#define EFI_IFR_ZERO_OP                0x52
-#define EFI_IFR_ONE_OP                 0x53
-#define EFI_IFR_ONES_OP                0x54
-#define EFI_IFR_UNDEFINED_OP           0x55
-#define EFI_IFR_LENGTH_OP              0x56
-#define EFI_IFR_DUP_OP                 0x57
-#define EFI_IFR_THIS_OP                0x58
-#define EFI_IFR_SPAN_OP                0x59
-#define EFI_IFR_VALUE_OP               0x5A
-#define EFI_IFR_DEFAULT_OP             0x5B
-#define EFI_IFR_DEFAULTSTORE_OP        0x5C
-#define EFI_IFR_FORM_MAP_OP            0x5D
-#define EFI_IFR_CATENATE_OP            0x5E
-#define EFI_IFR_GUID_OP                0x5F
-#define EFI_IFR_SECURITY_OP            0x60
-#define EFI_IFR_MODAL_TAG_OP           0x61
-#define EFI_IFR_REFRESH_ID_OP          0x62
-#define EFI_IFR_WARNING_IF_OP          0x63
-#define EFI_IFR_MATCH2_OP              0x64
+#define EFI_IFR_FORM_OP                 0x01
+#define EFI_IFR_SUBTITLE_OP             0x02
+#define EFI_IFR_TEXT_OP                 0x03
+#define EFI_IFR_IMAGE_OP                0x04
+#define EFI_IFR_ONE_OF_OP               0x05
+#define EFI_IFR_CHECKBOX_OP             0x06
+#define EFI_IFR_NUMERIC_OP              0x07
+#define EFI_IFR_PASSWORD_OP             0x08
+#define EFI_IFR_ONE_OF_OPTION_OP        0x09
+#define EFI_IFR_SUPPRESS_IF_OP          0x0A
+#define EFI_IFR_LOCKED_OP               0x0B
+#define EFI_IFR_ACTION_OP               0x0C
+#define EFI_IFR_RESET_BUTTON_OP         0x0D
+#define EFI_IFR_FORM_SET_OP             0x0E
+#define EFI_IFR_REF_OP                  0x0F
+#define EFI_IFR_NO_SUBMIT_IF_OP         0x10
+#define EFI_IFR_INCONSISTENT_IF_OP      0x11
+#define EFI_IFR_EQ_ID_VAL_OP            0x12
+#define EFI_IFR_EQ_ID_ID_OP             0x13
+#define EFI_IFR_EQ_ID_VAL_LIST_OP       0x14
+#define EFI_IFR_AND_OP                  0x15
+#define EFI_IFR_OR_OP                   0x16
+#define EFI_IFR_NOT_OP                  0x17
+#define EFI_IFR_RULE_OP                 0x18
+#define EFI_IFR_GRAY_OUT_IF_OP          0x19
+#define EFI_IFR_DATE_OP                 0x1A
+#define EFI_IFR_TIME_OP                 0x1B
+#define EFI_IFR_STRING_OP               0x1C
+#define EFI_IFR_REFRESH_OP              0x1D
+#define EFI_IFR_DISABLE_IF_OP           0x1E
+#define EFI_IFR_ANIMATION_OP            0x1F
+#define EFI_IFR_TO_LOWER_OP             0x20
+#define EFI_IFR_TO_UPPER_OP             0x21
+#define EFI_IFR_MAP_OP                  0x22
+#define EFI_IFR_ORDERED_LIST_OP         0x23
+#define EFI_IFR_VARSTORE_OP             0x24
+#define EFI_IFR_VARSTORE_NAME_VALUE_OP  0x25
+#define EFI_IFR_VARSTORE_EFI_OP         0x26
+#define EFI_IFR_VARSTORE_DEVICE_OP      0x27
+#define EFI_IFR_VERSION_OP              0x28
+#define EFI_IFR_END_OP                  0x29
+#define EFI_IFR_MATCH_OP                0x2A
+#define EFI_IFR_GET_OP                  0x2B
+#define EFI_IFR_SET_OP                  0x2C
+#define EFI_IFR_READ_OP                 0x2D
+#define EFI_IFR_WRITE_OP                0x2E
+#define EFI_IFR_EQUAL_OP                0x2F
+#define EFI_IFR_NOT_EQUAL_OP            0x30
+#define EFI_IFR_GREATER_THAN_OP         0x31
+#define EFI_IFR_GREATER_EQUAL_OP        0x32
+#define EFI_IFR_LESS_THAN_OP            0x33
+#define EFI_IFR_LESS_EQUAL_OP           0x34
+#define EFI_IFR_BITWISE_AND_OP          0x35
+#define EFI_IFR_BITWISE_OR_OP           0x36
+#define EFI_IFR_BITWISE_NOT_OP          0x37
+#define EFI_IFR_SHIFT_LEFT_OP           0x38
+#define EFI_IFR_SHIFT_RIGHT_OP          0x39
+#define EFI_IFR_ADD_OP                  0x3A
+#define EFI_IFR_SUBTRACT_OP             0x3B
+#define EFI_IFR_MULTIPLY_OP             0x3C
+#define EFI_IFR_DIVIDE_OP               0x3D
+#define EFI_IFR_MODULO_OP               0x3E
+#define EFI_IFR_RULE_REF_OP             0x3F
+#define EFI_IFR_QUESTION_REF1_OP        0x40
+#define EFI_IFR_QUESTION_REF2_OP        0x41
+#define EFI_IFR_UINT8_OP                0x42
+#define EFI_IFR_UINT16_OP               0x43
+#define EFI_IFR_UINT32_OP               0x44
+#define EFI_IFR_UINT64_OP               0x45
+#define EFI_IFR_TRUE_OP                 0x46
+#define EFI_IFR_FALSE_OP                0x47
+#define EFI_IFR_TO_UINT_OP              0x48
+#define EFI_IFR_TO_STRING_OP            0x49
+#define EFI_IFR_TO_BOOLEAN_OP           0x4A
+#define EFI_IFR_MID_OP                  0x4B
+#define EFI_IFR_FIND_OP                 0x4C
+#define EFI_IFR_TOKEN_OP                0x4D
+#define EFI_IFR_STRING_REF1_OP          0x4E
+#define EFI_IFR_STRING_REF2_OP          0x4F
+#define EFI_IFR_CONDITIONAL_OP          0x50
+#define EFI_IFR_QUESTION_REF3_OP        0x51
+#define EFI_IFR_ZERO_OP                 0x52
+#define EFI_IFR_ONE_OP                  0x53
+#define EFI_IFR_ONES_OP                 0x54
+#define EFI_IFR_UNDEFINED_OP            0x55
+#define EFI_IFR_LENGTH_OP               0x56
+#define EFI_IFR_DUP_OP                  0x57
+#define EFI_IFR_THIS_OP                 0x58
+#define EFI_IFR_SPAN_OP                 0x59
+#define EFI_IFR_VALUE_OP                0x5A
+#define EFI_IFR_DEFAULT_OP              0x5B
+#define EFI_IFR_DEFAULTSTORE_OP         0x5C
+#define EFI_IFR_FORM_MAP_OP             0x5D
+#define EFI_IFR_CATENATE_OP             0x5E
+#define EFI_IFR_GUID_OP                 0x5F
+#define EFI_IFR_SECURITY_OP             0x60
+#define EFI_IFR_MODAL_TAG_OP            0x61
+#define EFI_IFR_REFRESH_ID_OP           0x62
+#define EFI_IFR_WARNING_IF_OP           0x63
+#define EFI_IFR_MATCH2_OP               0x64
 
 //
 // Definitions of IFR Standard Headers
@@ -806,529 +798,530 @@
 //
 
 typedef struct _EFI_IFR_OP_HEADER {
-  UINT8                    OpCode;
-  UINT8                    Length:7;
-  UINT8                    Scope:1;
+  UINT8    OpCode;
+  UINT8    Length : 7;
+  UINT8    Scope  : 1;
 } EFI_IFR_OP_HEADER;
 
 typedef struct _EFI_IFR_STATEMENT_HEADER {
-  EFI_STRING_ID            Prompt;
-  EFI_STRING_ID            Help;
+  EFI_STRING_ID    Prompt;
+  EFI_STRING_ID    Help;
 } EFI_IFR_STATEMENT_HEADER;
 
 typedef struct _EFI_IFR_QUESTION_HEADER {
-  EFI_IFR_STATEMENT_HEADER Header;
-  EFI_QUESTION_ID          QuestionId;
-  EFI_VARSTORE_ID          VarStoreId;
+  EFI_IFR_STATEMENT_HEADER    Header;
+  EFI_QUESTION_ID             QuestionId;
+  EFI_VARSTORE_ID             VarStoreId;
   union {
-    EFI_STRING_ID          VarName;
-    UINT16                 VarOffset;
+    EFI_STRING_ID    VarName;
+    UINT16           VarOffset;
   }                        VarStoreInfo;
-  UINT8                    Flags;
+  UINT8                       Flags;
 } EFI_IFR_QUESTION_HEADER;
 
 //
 // Flag values of EFI_IFR_QUESTION_HEADER
 //
-#define EFI_IFR_FLAG_READ_ONLY          0x01
-#define EFI_IFR_FLAG_CALLBACK           0x04
-#define EFI_IFR_FLAG_RESET_REQUIRED     0x10
-#define EFI_IFR_FLAG_RECONNECT_REQUIRED 0x40
-#define EFI_IFR_FLAG_OPTIONS_ONLY       0x80
+#define EFI_IFR_FLAG_READ_ONLY           0x01
+#define EFI_IFR_FLAG_CALLBACK            0x04
+#define EFI_IFR_FLAG_RESET_REQUIRED      0x10
+#define EFI_IFR_FLAG_REST_STYLE          0x20
+#define EFI_IFR_FLAG_RECONNECT_REQUIRED  0x40
+#define EFI_IFR_FLAG_OPTIONS_ONLY        0x80
 
 //
 // Definition for Opcode Reference
 // Section 27.3.8.3
 //
 typedef struct _EFI_IFR_DEFAULTSTORE {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_STRING_ID            DefaultName;
-  UINT16                   DefaultId;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_STRING_ID        DefaultName;
+  UINT16               DefaultId;
 } EFI_IFR_DEFAULTSTORE;
 
 //
 // Default Identifier of default store
 //
-#define EFI_HII_DEFAULT_CLASS_STANDARD       0x0000
-#define EFI_HII_DEFAULT_CLASS_MANUFACTURING  0x0001
-#define EFI_HII_DEFAULT_CLASS_SAFE           0x0002
-#define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN 0x4000
-#define EFI_HII_DEFAULT_CLASS_PLATFORM_END   0x7fff
-#define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN 0x8000
-#define EFI_HII_DEFAULT_CLASS_HARDWARE_END   0xbfff
-#define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN 0xc000
-#define EFI_HII_DEFAULT_CLASS_FIRMWARE_END   0xffff
+#define EFI_HII_DEFAULT_CLASS_STANDARD        0x0000
+#define EFI_HII_DEFAULT_CLASS_MANUFACTURING   0x0001
+#define EFI_HII_DEFAULT_CLASS_SAFE            0x0002
+#define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN  0x4000
+#define EFI_HII_DEFAULT_CLASS_PLATFORM_END    0x7fff
+#define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN  0x8000
+#define EFI_HII_DEFAULT_CLASS_HARDWARE_END    0xbfff
+#define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN  0xc000
+#define EFI_HII_DEFAULT_CLASS_FIRMWARE_END    0xffff
 
 typedef struct _EFI_IFR_VARSTORE {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_GUID                 Guid;
-  EFI_VARSTORE_ID          VarStoreId;
-  UINT16                   Size;
-  UINT8                    Name[1];
+  EFI_IFR_OP_HEADER    Header;
+  EFI_GUID             Guid;
+  EFI_VARSTORE_ID      VarStoreId;
+  UINT16               Size;
+  UINT8                Name[1];
 } EFI_IFR_VARSTORE;
 
 typedef struct _EFI_IFR_VARSTORE_EFI {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_VARSTORE_ID          VarStoreId;
-  EFI_GUID                 Guid;
-  UINT32                   Attributes;
-  UINT16                   Size;
-  UINT8                    Name[1];
+  EFI_IFR_OP_HEADER    Header;
+  EFI_VARSTORE_ID      VarStoreId;
+  EFI_GUID             Guid;
+  UINT32               Attributes;
+  UINT16               Size;
+  UINT8                Name[1];
 } EFI_IFR_VARSTORE_EFI;
 
 typedef struct _EFI_IFR_VARSTORE_NAME_VALUE {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_VARSTORE_ID          VarStoreId;
-  EFI_GUID                 Guid;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_VARSTORE_ID      VarStoreId;
+  EFI_GUID             Guid;
 } EFI_IFR_VARSTORE_NAME_VALUE;
 
 typedef struct _EFI_IFR_FORM_SET {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_GUID                 Guid;
-  EFI_STRING_ID            FormSetTitle;
-  EFI_STRING_ID            Help;
-  UINT8                    Flags;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_GUID             Guid;
+  EFI_STRING_ID        FormSetTitle;
+  EFI_STRING_ID        Help;
+  UINT8                Flags;
   // EFI_GUID              ClassGuid[];
 } EFI_IFR_FORM_SET;
 
 typedef struct _EFI_IFR_END {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_END;
 
 typedef struct _EFI_IFR_FORM {
-  EFI_IFR_OP_HEADER        Header;
-  UINT16                   FormId;
-  EFI_STRING_ID            FormTitle;
+  EFI_IFR_OP_HEADER    Header;
+  UINT16               FormId;
+  EFI_STRING_ID        FormTitle;
 } EFI_IFR_FORM;
 
 typedef struct _EFI_IFR_IMAGE {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IMAGE_ID             Id;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_IMAGE_ID         Id;
 } EFI_IFR_IMAGE;
 
 typedef struct _EFI_IFR_MODAL_TAG {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_MODAL_TAG;
 
 typedef struct _EFI_IFR_LOCKED {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_LOCKED;
 
 typedef struct _EFI_IFR_RULE {
-  EFI_IFR_OP_HEADER        Header;
-  UINT8                    RuleId;
+  EFI_IFR_OP_HEADER    Header;
+  UINT8                RuleId;
 } EFI_IFR_RULE;
 
 typedef struct _EFI_IFR_DEFAULT {
-  EFI_IFR_OP_HEADER        Header;
-  UINT16                   DefaultId;
-  UINT8                    Type;
-  EFI_IFR_TYPE_VALUE       Value;
+  EFI_IFR_OP_HEADER     Header;
+  UINT16                DefaultId;
+  UINT8                 Type;
+  EFI_IFR_TYPE_VALUE    Value;
 } EFI_IFR_DEFAULT;
 
 typedef struct _EFI_IFR_DEFAULT_2 {
-  EFI_IFR_OP_HEADER        Header;
-  UINT16                   DefaultId;
-  UINT8                    Type;
+  EFI_IFR_OP_HEADER    Header;
+  UINT16               DefaultId;
+  UINT8                Type;
 } EFI_IFR_DEFAULT_2;
 
 typedef struct _EFI_IFR_VALUE {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_VALUE;
 
 typedef struct _EFI_IFR_SUBTITLE {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_STATEMENT_HEADER Statement;
-  UINT8                    Flags;
+  EFI_IFR_OP_HEADER           Header;
+  EFI_IFR_STATEMENT_HEADER    Statement;
+  UINT8                       Flags;
 } EFI_IFR_SUBTITLE;
 
-#define EFI_IFR_FLAGS_HORIZONTAL       0x01
+#define EFI_IFR_FLAGS_HORIZONTAL  0x01
 
 typedef struct _EFI_IFR_CHECKBOX {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  UINT8                    Flags;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  UINT8                      Flags;
 } EFI_IFR_CHECKBOX;
 
-#define EFI_IFR_CHECKBOX_DEFAULT       0x01
-#define EFI_IFR_CHECKBOX_DEFAULT_MFG   0x02
+#define EFI_IFR_CHECKBOX_DEFAULT      0x01
+#define EFI_IFR_CHECKBOX_DEFAULT_MFG  0x02
 
 typedef struct _EFI_IFR_TEXT {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_STATEMENT_HEADER Statement;
-  EFI_STRING_ID            TextTwo;
+  EFI_IFR_OP_HEADER           Header;
+  EFI_IFR_STATEMENT_HEADER    Statement;
+  EFI_STRING_ID               TextTwo;
 } EFI_IFR_TEXT;
 
 typedef struct _EFI_IFR_REF {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  EFI_FORM_ID              FormId;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  EFI_FORM_ID                FormId;
 } EFI_IFR_REF;
 
 typedef struct _EFI_IFR_REF2 {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  EFI_FORM_ID              FormId;
-  EFI_QUESTION_ID          QuestionId;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  EFI_FORM_ID                FormId;
+  EFI_QUESTION_ID            QuestionId;
 } EFI_IFR_REF2;
 
 typedef struct _EFI_IFR_REF3 {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  EFI_FORM_ID              FormId;
-  EFI_QUESTION_ID          QuestionId;
-  EFI_GUID                 FormSetId;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  EFI_FORM_ID                FormId;
+  EFI_QUESTION_ID            QuestionId;
+  EFI_GUID                   FormSetId;
 } EFI_IFR_REF3;
 
 typedef struct _EFI_IFR_REF4 {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  EFI_FORM_ID              FormId;
-  EFI_QUESTION_ID          QuestionId;
-  EFI_GUID                 FormSetId;
-  EFI_STRING_ID            DevicePath;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  EFI_FORM_ID                FormId;
+  EFI_QUESTION_ID            QuestionId;
+  EFI_GUID                   FormSetId;
+  EFI_STRING_ID              DevicePath;
 } EFI_IFR_REF4;
 
 typedef struct _EFI_IFR_REF5 {
-  EFI_IFR_OP_HEADER Header;
-  EFI_IFR_QUESTION_HEADER Question;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
 } EFI_IFR_REF5;
 
 typedef struct _EFI_IFR_RESET_BUTTON {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_STATEMENT_HEADER Statement;
-  EFI_DEFAULT_ID           DefaultId;
+  EFI_IFR_OP_HEADER           Header;
+  EFI_IFR_STATEMENT_HEADER    Statement;
+  EFI_DEFAULT_ID              DefaultId;
 } EFI_IFR_RESET_BUTTON;
 
 typedef struct _EFI_IFR_ACTION {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  EFI_STRING_ID            QuestionConfig;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  EFI_STRING_ID              QuestionConfig;
 } EFI_IFR_ACTION;
 
 typedef struct _EFI_IFR_ACTION_1 {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
 } EFI_IFR_ACTION_1;
 
 typedef struct _EFI_IFR_DATE {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  UINT8                    Flags;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  UINT8                      Flags;
 } EFI_IFR_DATE;
 
 //
 // Flags that describe the behavior of the question.
 //
-#define EFI_QF_DATE_YEAR_SUPPRESS      0x01
-#define EFI_QF_DATE_MONTH_SUPPRESS     0x02
-#define EFI_QF_DATE_DAY_SUPPRESS       0x04
+#define EFI_QF_DATE_YEAR_SUPPRESS   0x01
+#define EFI_QF_DATE_MONTH_SUPPRESS  0x02
+#define EFI_QF_DATE_DAY_SUPPRESS    0x04
 
-#define EFI_QF_DATE_STORAGE            0x30
-#define     QF_DATE_STORAGE_NORMAL     0x00
-#define     QF_DATE_STORAGE_TIME       0x10
-#define     QF_DATE_STORAGE_WAKEUP     0x20
+#define EFI_QF_DATE_STORAGE         0x30
+#define     QF_DATE_STORAGE_NORMAL  0x00
+#define     QF_DATE_STORAGE_TIME    0x10
+#define     QF_DATE_STORAGE_WAKEUP  0x20
 
 typedef union {
   struct {
-    UINT8 MinValue;
-    UINT8 MaxValue;
-    UINT8 Step;
+    UINT8    MinValue;
+    UINT8    MaxValue;
+    UINT8    Step;
   } u8;
   struct {
-    UINT16 MinValue;
-    UINT16 MaxValue;
-    UINT16 Step;
+    UINT16    MinValue;
+    UINT16    MaxValue;
+    UINT16    Step;
   } u16;
   struct {
-    UINT32 MinValue;
-    UINT32 MaxValue;
-    UINT32 Step;
+    UINT32    MinValue;
+    UINT32    MaxValue;
+    UINT32    Step;
   } u32;
   struct {
-    UINT64 MinValue;
-    UINT64 MaxValue;
-    UINT64 Step;
+    UINT64    MinValue;
+    UINT64    MaxValue;
+    UINT64    Step;
   } u64;
 } MINMAXSTEP_DATA;
 
 typedef struct _EFI_IFR_NUMERIC {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  UINT8                    Flags;
-  MINMAXSTEP_DATA          data;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  UINT8                      Flags;
+  MINMAXSTEP_DATA            data;
 } EFI_IFR_NUMERIC;
 
 //
 // Flags related to the numeric question
 //
-#define EFI_IFR_NUMERIC_SIZE           0x03
-#define   EFI_IFR_NUMERIC_SIZE_1       0x00
-#define   EFI_IFR_NUMERIC_SIZE_2       0x01
-#define   EFI_IFR_NUMERIC_SIZE_4       0x02
-#define   EFI_IFR_NUMERIC_SIZE_8       0x03
+#define EFI_IFR_NUMERIC_SIZE      0x03
+#define   EFI_IFR_NUMERIC_SIZE_1  0x00
+#define   EFI_IFR_NUMERIC_SIZE_2  0x01
+#define   EFI_IFR_NUMERIC_SIZE_4  0x02
+#define   EFI_IFR_NUMERIC_SIZE_8  0x03
 
-#define EFI_IFR_DISPLAY                0x30
-#define   EFI_IFR_DISPLAY_INT_DEC      0x00
-#define   EFI_IFR_DISPLAY_UINT_DEC     0x10
-#define   EFI_IFR_DISPLAY_UINT_HEX     0x20
+#define EFI_IFR_DISPLAY             0x30
+#define   EFI_IFR_DISPLAY_INT_DEC   0x00
+#define   EFI_IFR_DISPLAY_UINT_DEC  0x10
+#define   EFI_IFR_DISPLAY_UINT_HEX  0x20
 
 typedef struct _EFI_IFR_ONE_OF {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  UINT8                    Flags;
-  MINMAXSTEP_DATA          data;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  UINT8                      Flags;
+  MINMAXSTEP_DATA            data;
 } EFI_IFR_ONE_OF;
 
 typedef struct _EFI_IFR_STRING {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  UINT8                    MinSize;
-  UINT8                    MaxSize;
-  UINT8                    Flags;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  UINT8                      MinSize;
+  UINT8                      MaxSize;
+  UINT8                      Flags;
 } EFI_IFR_STRING;
 
-#define EFI_IFR_STRING_MULTI_LINE      0x01
+#define EFI_IFR_STRING_MULTI_LINE  0x01
 
 typedef struct _EFI_IFR_PASSWORD {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  UINT16                   MinSize;
-  UINT16                   MaxSize;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  UINT16                     MinSize;
+  UINT16                     MaxSize;
 } EFI_IFR_PASSWORD;
 
 typedef struct _EFI_IFR_ORDERED_LIST {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  UINT8                    MaxContainers;
-  UINT8                    Flags;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  UINT8                      MaxContainers;
+  UINT8                      Flags;
 } EFI_IFR_ORDERED_LIST;
 
-#define EFI_IFR_UNIQUE_SET             0x01
-#define EFI_IFR_NO_EMPTY_SET           0x02
+#define EFI_IFR_UNIQUE_SET    0x01
+#define EFI_IFR_NO_EMPTY_SET  0x02
 
 typedef struct _EFI_IFR_TIME {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_IFR_QUESTION_HEADER  Question;
-  UINT8                    Flags;
+  EFI_IFR_OP_HEADER          Header;
+  EFI_IFR_QUESTION_HEADER    Question;
+  UINT8                      Flags;
 } EFI_IFR_TIME;
 
 //
 // A bit-mask that determines which unique settings are active for this opcode.
 //
-#define QF_TIME_HOUR_SUPPRESS          0x01
-#define QF_TIME_MINUTE_SUPPRESS        0x02
-#define QF_TIME_SECOND_SUPPRESS        0x04
+#define QF_TIME_HOUR_SUPPRESS    0x01
+#define QF_TIME_MINUTE_SUPPRESS  0x02
+#define QF_TIME_SECOND_SUPPRESS  0x04
 
-#define QF_TIME_STORAGE                0x30
-#define   QF_TIME_STORAGE_NORMAL       0x00
-#define   QF_TIME_STORAGE_TIME         0x10
-#define   QF_TIME_STORAGE_WAKEUP       0x20
+#define QF_TIME_STORAGE           0x30
+#define   QF_TIME_STORAGE_NORMAL  0x00
+#define   QF_TIME_STORAGE_TIME    0x10
+#define   QF_TIME_STORAGE_WAKEUP  0x20
 
 typedef struct _EFI_IFR_DISABLE_IF {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_DISABLE_IF;
 
 typedef struct _EFI_IFR_SUPPRESS_IF {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_SUPPRESS_IF;
 
 typedef struct _EFI_IFR_GRAY_OUT_IF {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_GRAY_OUT_IF;
 
 typedef struct _EFI_IFR_INCONSISTENT_IF {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_STRING_ID            Error;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_STRING_ID        Error;
 } EFI_IFR_INCONSISTENT_IF;
 
 typedef struct _EFI_IFR_NO_SUBMIT_IF {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_STRING_ID            Error;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_STRING_ID        Error;
 } EFI_IFR_NO_SUBMIT_IF;
 
 typedef struct _EFI_IFR_WARNING_IF {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_STRING_ID            Warning;
-  UINT8                    TimeOut;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_STRING_ID        Warning;
+  UINT8                TimeOut;
 } EFI_IFR_WARNING_IF;
 
 typedef struct _EFI_IFR_REFRESH {
-  EFI_IFR_OP_HEADER        Header;
-  UINT8                    RefreshInterval;
+  EFI_IFR_OP_HEADER    Header;
+  UINT8                RefreshInterval;
 } EFI_IFR_REFRESH;
 
 typedef struct _EFI_IFR_VARSTORE_DEVICE {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_STRING_ID            DevicePath;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_STRING_ID        DevicePath;
 } EFI_IFR_VARSTORE_DEVICE;
 
 typedef struct _EFI_IFR_ONE_OF_OPTION {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_STRING_ID            Option;
-  UINT8                    Flags;
-  UINT8                    Type;
-  EFI_IFR_TYPE_VALUE       Value;
+  EFI_IFR_OP_HEADER     Header;
+  EFI_STRING_ID         Option;
+  UINT8                 Flags;
+  UINT8                 Type;
+  EFI_IFR_TYPE_VALUE    Value;
 } EFI_IFR_ONE_OF_OPTION;
 
 //
 // Types of the option's value.
 //
-#define EFI_IFR_TYPE_NUM_SIZE_8        0x00
-#define EFI_IFR_TYPE_NUM_SIZE_16       0x01
-#define EFI_IFR_TYPE_NUM_SIZE_32       0x02
-#define EFI_IFR_TYPE_NUM_SIZE_64       0x03
-#define EFI_IFR_TYPE_BOOLEAN           0x04
-#define EFI_IFR_TYPE_TIME              0x05
-#define EFI_IFR_TYPE_DATE              0x06
-#define EFI_IFR_TYPE_STRING            0x07
-#define EFI_IFR_TYPE_OTHER             0x08
-#define EFI_IFR_TYPE_UNDEFINED         0x09
-#define EFI_IFR_TYPE_ACTION            0x0A
-#define EFI_IFR_TYPE_BUFFER            0x0B
-#define EFI_IFR_TYPE_REF               0x0C
+#define EFI_IFR_TYPE_NUM_SIZE_8   0x00
+#define EFI_IFR_TYPE_NUM_SIZE_16  0x01
+#define EFI_IFR_TYPE_NUM_SIZE_32  0x02
+#define EFI_IFR_TYPE_NUM_SIZE_64  0x03
+#define EFI_IFR_TYPE_BOOLEAN      0x04
+#define EFI_IFR_TYPE_TIME         0x05
+#define EFI_IFR_TYPE_DATE         0x06
+#define EFI_IFR_TYPE_STRING       0x07
+#define EFI_IFR_TYPE_OTHER        0x08
+#define EFI_IFR_TYPE_UNDEFINED    0x09
+#define EFI_IFR_TYPE_ACTION       0x0A
+#define EFI_IFR_TYPE_BUFFER       0x0B
+#define EFI_IFR_TYPE_REF          0x0C
 
-#define EFI_IFR_OPTION_DEFAULT         0x10
-#define EFI_IFR_OPTION_DEFAULT_MFG     0x20
+#define EFI_IFR_OPTION_DEFAULT      0x10
+#define EFI_IFR_OPTION_DEFAULT_MFG  0x20
 
 typedef struct _EFI_IFR_GUID {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_GUID                 Guid;
-  //Optional Data Follows
+  EFI_IFR_OP_HEADER    Header;
+  EFI_GUID             Guid;
+  // Optional Data Follows
 } EFI_IFR_GUID;
 
 typedef struct _EFI_IFR_REFRESH_ID {
-  EFI_IFR_OP_HEADER Header;
-  EFI_GUID          RefreshEventGroupId;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_GUID             RefreshEventGroupId;
 } EFI_IFR_REFRESH_ID;
 
 typedef struct _EFI_IFR_DUP {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_DUP;
 
 typedef struct _EFI_IFR_EQ_ID_ID {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_QUESTION_ID          QuestionId1;
-  EFI_QUESTION_ID          QuestionId2;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_QUESTION_ID      QuestionId1;
+  EFI_QUESTION_ID      QuestionId2;
 } EFI_IFR_EQ_ID_ID;
 
 typedef struct _EFI_IFR_EQ_ID_VAL {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_QUESTION_ID          QuestionId;
-  UINT16                   Value;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_QUESTION_ID      QuestionId;
+  UINT16               Value;
 } EFI_IFR_EQ_ID_VAL;
 
 typedef struct _EFI_IFR_EQ_ID_VAL_LIST {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_QUESTION_ID          QuestionId;
-  UINT16                   ListLength;
-  UINT16                   ValueList[1];
+  EFI_IFR_OP_HEADER    Header;
+  EFI_QUESTION_ID      QuestionId;
+  UINT16               ListLength;
+  UINT16               ValueList[1];
 } EFI_IFR_EQ_ID_VAL_LIST;
 
 typedef struct _EFI_IFR_UINT8 {
-  EFI_IFR_OP_HEADER        Header;
-  UINT8 Value;
+  EFI_IFR_OP_HEADER    Header;
+  UINT8                Value;
 } EFI_IFR_UINT8;
 
 typedef struct _EFI_IFR_UINT16 {
-  EFI_IFR_OP_HEADER        Header;
-  UINT16                   Value;
+  EFI_IFR_OP_HEADER    Header;
+  UINT16               Value;
 } EFI_IFR_UINT16;
 
 typedef struct _EFI_IFR_UINT32 {
-  EFI_IFR_OP_HEADER        Header;
-  UINT32                   Value;
+  EFI_IFR_OP_HEADER    Header;
+  UINT32               Value;
 } EFI_IFR_UINT32;
 
 typedef struct _EFI_IFR_UINT64 {
-  EFI_IFR_OP_HEADER        Header;
-  UINT64 Value;
+  EFI_IFR_OP_HEADER    Header;
+  UINT64               Value;
 } EFI_IFR_UINT64;
 
 typedef struct _EFI_IFR_QUESTION_REF1 {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_QUESTION_ID          QuestionId;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_QUESTION_ID      QuestionId;
 } EFI_IFR_QUESTION_REF1;
 
 typedef struct _EFI_IFR_QUESTION_REF2 {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_QUESTION_REF2;
 
 typedef struct _EFI_IFR_QUESTION_REF3 {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_QUESTION_REF3;
 
 typedef struct _EFI_IFR_QUESTION_REF3_2 {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_STRING_ID            DevicePath;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_STRING_ID        DevicePath;
 } EFI_IFR_QUESTION_REF3_2;
 
 typedef struct _EFI_IFR_QUESTION_REF3_3 {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_STRING_ID            DevicePath;
-  EFI_GUID                 Guid;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_STRING_ID        DevicePath;
+  EFI_GUID             Guid;
 } EFI_IFR_QUESTION_REF3_3;
 
 typedef struct _EFI_IFR_RULE_REF {
-  EFI_IFR_OP_HEADER        Header;
-  UINT8                    RuleId;
+  EFI_IFR_OP_HEADER    Header;
+  UINT8                RuleId;
 } EFI_IFR_RULE_REF;
 
 typedef struct _EFI_IFR_STRING_REF1 {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_STRING_ID            StringId;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_STRING_ID        StringId;
 } EFI_IFR_STRING_REF1;
 
 typedef struct _EFI_IFR_STRING_REF2 {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_STRING_REF2;
 
 typedef struct _EFI_IFR_THIS {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_THIS;
 
 typedef struct _EFI_IFR_TRUE {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_TRUE;
 
 typedef struct _EFI_IFR_FALSE {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_FALSE;
 
 typedef struct _EFI_IFR_ONE {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_ONE;
 
 typedef struct _EFI_IFR_ONES {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_ONES;
 
 typedef struct _EFI_IFR_ZERO {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_ZERO;
 
 typedef struct _EFI_IFR_UNDEFINED {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_UNDEFINED;
 
 typedef struct _EFI_IFR_VERSION {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_VERSION;
 
 typedef struct _EFI_IFR_LENGTH {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_LENGTH;
 
 typedef struct _EFI_IFR_NOT {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_NOT;
 
 typedef struct _EFI_IFR_BITWISE_NOT {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_BITWISE_NOT;
 
 typedef struct _EFI_IFR_TO_BOOLEAN {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_TO_BOOLEAN;
 
 ///
@@ -1339,10 +1332,10 @@
 /// 2 = hexadecimal (lower-case alpha).
 /// 3 = hexadecimal (upper-case alpha).
 ///@{
-#define EFI_IFR_STRING_UNSIGNED_DEC      0
-#define EFI_IFR_STRING_SIGNED_DEC        1
-#define EFI_IFR_STRING_LOWERCASE_HEX     2
-#define EFI_IFR_STRING_UPPERCASE_HEX     3
+#define EFI_IFR_STRING_UNSIGNED_DEC   0
+#define EFI_IFR_STRING_SIGNED_DEC     1
+#define EFI_IFR_STRING_LOWERCASE_HEX  2
+#define EFI_IFR_STRING_UPPERCASE_HEX  3
 ///@}
 
 ///
@@ -1350,110 +1343,110 @@
 /// 0 = ASCII.
 /// 8 = Unicode.
 ///@{
-#define EFI_IFR_STRING_ASCII             0
-#define EFI_IFR_STRING_UNICODE           8
+#define EFI_IFR_STRING_ASCII    0
+#define EFI_IFR_STRING_UNICODE  8
 ///@}
 
 typedef struct _EFI_IFR_TO_STRING {
-  EFI_IFR_OP_HEADER        Header;
-  UINT8                    Format;
+  EFI_IFR_OP_HEADER    Header;
+  UINT8                Format;
 } EFI_IFR_TO_STRING;
 
 typedef struct _EFI_IFR_TO_UINT {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_TO_UINT;
 
 typedef struct _EFI_IFR_TO_UPPER {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_TO_UPPER;
 
 typedef struct _EFI_IFR_TO_LOWER {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_TO_LOWER;
 
 typedef struct _EFI_IFR_ADD {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_ADD;
 
 typedef struct _EFI_IFR_AND {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_AND;
 
 typedef struct _EFI_IFR_BITWISE_AND {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_BITWISE_AND;
 
 typedef struct _EFI_IFR_BITWISE_OR {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_BITWISE_OR;
 
 typedef struct _EFI_IFR_CATENATE {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_CATENATE;
 
 typedef struct _EFI_IFR_DIVIDE {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_DIVIDE;
 
 typedef struct _EFI_IFR_EQUAL {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_EQUAL;
 
 typedef struct _EFI_IFR_GREATER_EQUAL {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_GREATER_EQUAL;
 
 typedef struct _EFI_IFR_GREATER_THAN {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_GREATER_THAN;
 
 typedef struct _EFI_IFR_LESS_EQUAL {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_LESS_EQUAL;
 
 typedef struct _EFI_IFR_LESS_THAN {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_LESS_THAN;
 
 typedef struct _EFI_IFR_MATCH {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_MATCH;
 
 typedef struct _EFI_IFR_MATCH2 {
-  EFI_IFR_OP_HEADER        Header;
-  EFI_GUID                 SyntaxType;
+  EFI_IFR_OP_HEADER    Header;
+  EFI_GUID             SyntaxType;
 } EFI_IFR_MATCH2;
 
 typedef struct _EFI_IFR_MULTIPLY {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_MULTIPLY;
 
 typedef struct _EFI_IFR_MODULO {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_MODULO;
 
 typedef struct _EFI_IFR_NOT_EQUAL {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_NOT_EQUAL;
 
 typedef struct _EFI_IFR_OR {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_OR;
 
 typedef struct _EFI_IFR_SHIFT_LEFT {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_SHIFT_LEFT;
 
 typedef struct _EFI_IFR_SHIFT_RIGHT {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_SHIFT_RIGHT;
 
 typedef struct _EFI_IFR_SUBTRACT {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_SUBTRACT;
 
 typedef struct _EFI_IFR_CONDITIONAL {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_CONDITIONAL;
 
 //
@@ -1463,39 +1456,39 @@
 #define EFI_IFR_FF_CASE_INSENSITIVE  0x01
 
 typedef struct _EFI_IFR_FIND {
-  EFI_IFR_OP_HEADER        Header;
-  UINT8                    Format;
+  EFI_IFR_OP_HEADER    Header;
+  UINT8                Format;
 } EFI_IFR_FIND;
 
 typedef struct _EFI_IFR_MID {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_MID;
 
 typedef struct _EFI_IFR_TOKEN {
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_TOKEN;
 
 //
 // Flags specifying whether to find the first matching string
 // or the first non-matching string.
 //
-#define EFI_IFR_FLAGS_FIRST_MATCHING     0x00
-#define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01
+#define EFI_IFR_FLAGS_FIRST_MATCHING      0x00
+#define EFI_IFR_FLAGS_FIRST_NON_MATCHING  0x01
 
 typedef struct _EFI_IFR_SPAN {
-  EFI_IFR_OP_HEADER        Header;
-  UINT8                    Flags;
+  EFI_IFR_OP_HEADER    Header;
+  UINT8                Flags;
 } EFI_IFR_SPAN;
 
 typedef struct _EFI_IFR_SECURITY {
   ///
   /// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP.
   ///
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
   ///
   /// Security permission level.
   ///
-  EFI_GUID                 Permissions;
+  EFI_GUID             Permissions;
 } EFI_IFR_SECURITY;
 
 typedef struct _EFI_IFR_FORM_MAP_METHOD {
@@ -1503,12 +1496,12 @@
   /// The string identifier which provides the human-readable name of
   /// the configuration method for this standards map form.
   ///
-  EFI_STRING_ID            MethodTitle;
+  EFI_STRING_ID    MethodTitle;
   ///
   /// Identifier which uniquely specifies the configuration methods
   /// associated with this standards map form.
   ///
-  EFI_GUID                 MethodIdentifier;
+  EFI_GUID         MethodIdentifier;
 } EFI_IFR_FORM_MAP_METHOD;
 
 typedef struct _EFI_IFR_FORM_MAP {
@@ -1516,11 +1509,11 @@
   /// The sequence that defines the type of opcode as well as the length
   /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP.
   ///
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
   ///
   /// The unique identifier for this particular form.
   ///
-  EFI_FORM_ID              FormId;
+  EFI_FORM_ID          FormId;
   ///
   /// One or more configuration method's name and unique identifier.
   ///
@@ -1532,12 +1525,12 @@
   /// The sequence that defines the type of opcode as well as the length
   /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP.
   ///
-  EFI_IFR_OP_HEADER  Header;
+  EFI_IFR_OP_HEADER    Header;
   ///
   /// Specifies the identifier of a previously declared variable store to
   /// use when storing the question's value.
   ///
-  EFI_VARSTORE_ID    VarStoreId;
+  EFI_VARSTORE_ID      VarStoreId;
   union {
     ///
     /// A 16-bit Buffer Storage offset.
@@ -1551,7 +1544,7 @@
   ///
   /// Specifies the type used for storage.
   ///
-  UINT8              VarStoreType;
+  UINT8    VarStoreType;
 } EFI_IFR_SET;
 
 typedef struct _EFI_IFR_GET {
@@ -1559,12 +1552,12 @@
   /// The sequence that defines the type of opcode as well as the length
   /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP.
   ///
-  EFI_IFR_OP_HEADER  Header;
+  EFI_IFR_OP_HEADER    Header;
   ///
   /// Specifies the identifier of a previously declared variable store to
   /// use when retrieving the value.
   ///
-  EFI_VARSTORE_ID    VarStoreId;
+  EFI_VARSTORE_ID      VarStoreId;
   union {
     ///
     /// A 16-bit Buffer Storage offset.
@@ -1578,19 +1571,19 @@
   ///
   /// Specifies the type used for storage.
   ///
-  UINT8              VarStoreType;
+  UINT8    VarStoreType;
 } EFI_IFR_GET;
 
 typedef struct _EFI_IFR_READ {
-  EFI_IFR_OP_HEADER       Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_READ;
 
 typedef struct _EFI_IFR_WRITE {
-  EFI_IFR_OP_HEADER      Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_WRITE;
 
 typedef struct _EFI_IFR_MAP {
-  EFI_IFR_OP_HEADER      Header;
+  EFI_IFR_OP_HEADER    Header;
 } EFI_IFR_MAP;
 //
 // Definitions for Keyboard Package
@@ -1712,37 +1705,37 @@
   ///
   /// Used to describe a physical key on a keyboard.
   ///
-  EFI_KEY                 Key;
+  EFI_KEY    Key;
   ///
   /// Unicode character code for the Key.
   ///
-  CHAR16                  Unicode;
+  CHAR16     Unicode;
   ///
   /// Unicode character code for the key with the shift key being held down.
   ///
-  CHAR16                  ShiftedUnicode;
+  CHAR16     ShiftedUnicode;
   ///
   /// Unicode character code for the key with the Alt-GR being held down.
   ///
-  CHAR16                  AltGrUnicode;
+  CHAR16     AltGrUnicode;
   ///
   /// Unicode character code for the key with the Alt-GR and shift keys being held down.
   ///
-  CHAR16                  ShiftedAltGrUnicode;
+  CHAR16     ShiftedAltGrUnicode;
   ///
   /// Modifier keys are defined to allow for special functionality that is not necessarily
   /// accomplished by a printable character. Many of these modifier keys are flags to toggle
   /// certain state bits on and off inside of a keyboard driver.
   ///
-  UINT16                  Modifier;
-  UINT16                  AffectedAttribute;
+  UINT16     Modifier;
+  UINT16     AffectedAttribute;
 } EFI_KEY_DESCRIPTOR;
 
 ///
 /// A key which is affected by all the standard shift modifiers.
 /// Most keys would be expected to have this bit active.
 ///
-#define EFI_AFFECTED_BY_STANDARD_SHIFT       0x0001
+#define EFI_AFFECTED_BY_STANDARD_SHIFT  0x0001
 
 ///
 /// This key is affected by the caps lock so that if a keyboard driver
@@ -1750,65 +1743,65 @@
 /// versus an "a" character.  Having this bit turned on would tell
 /// the keyboard driver to use the appropriate shifted state or not.
 ///
-#define EFI_AFFECTED_BY_CAPS_LOCK            0x0002
+#define EFI_AFFECTED_BY_CAPS_LOCK  0x0002
 
 ///
 /// Similar to the case of CAPS lock, if this bit is active, the key
 /// is affected by the num lock being turned on.
 ///
-#define EFI_AFFECTED_BY_NUM_LOCK             0x0004
+#define EFI_AFFECTED_BY_NUM_LOCK  0x0004
 
 typedef struct {
-  UINT16                  LayoutLength;
-  EFI_GUID                Guid;
-  UINT32                  LayoutDescriptorStringOffset;
-  UINT8                   DescriptorCount;
+  UINT16      LayoutLength;
+  EFI_GUID    Guid;
+  UINT32      LayoutDescriptorStringOffset;
+  UINT8       DescriptorCount;
   // EFI_KEY_DESCRIPTOR    Descriptors[];
 } EFI_HII_KEYBOARD_LAYOUT;
 
 typedef struct {
-  EFI_HII_PACKAGE_HEADER  Header;
-  UINT16                  LayoutCount;
+  EFI_HII_PACKAGE_HEADER    Header;
+  UINT16                    LayoutCount;
   // EFI_HII_KEYBOARD_LAYOUT Layout[];
 } EFI_HII_KEYBOARD_PACKAGE_HDR;
 
 //
 // Modifier values
 //
-#define EFI_NULL_MODIFIER                0x0000
-#define EFI_LEFT_CONTROL_MODIFIER        0x0001
-#define EFI_RIGHT_CONTROL_MODIFIER       0x0002
-#define EFI_LEFT_ALT_MODIFIER            0x0003
-#define EFI_RIGHT_ALT_MODIFIER           0x0004
-#define EFI_ALT_GR_MODIFIER              0x0005
-#define EFI_INSERT_MODIFIER              0x0006
-#define EFI_DELETE_MODIFIER              0x0007
-#define EFI_PAGE_DOWN_MODIFIER           0x0008
-#define EFI_PAGE_UP_MODIFIER             0x0009
-#define EFI_HOME_MODIFIER                0x000A
-#define EFI_END_MODIFIER                 0x000B
-#define EFI_LEFT_SHIFT_MODIFIER          0x000C
-#define EFI_RIGHT_SHIFT_MODIFIER         0x000D
-#define EFI_CAPS_LOCK_MODIFIER           0x000E
-#define EFI_NUM_LOCK_MODIFIER            0x000F
-#define EFI_LEFT_ARROW_MODIFIER          0x0010
-#define EFI_RIGHT_ARROW_MODIFIER         0x0011
-#define EFI_DOWN_ARROW_MODIFIER          0x0012
-#define EFI_UP_ARROW_MODIFIER            0x0013
-#define EFI_NS_KEY_MODIFIER              0x0014
-#define EFI_NS_KEY_DEPENDENCY_MODIFIER   0x0015
-#define EFI_FUNCTION_KEY_ONE_MODIFIER    0x0016
-#define EFI_FUNCTION_KEY_TWO_MODIFIER    0x0017
-#define EFI_FUNCTION_KEY_THREE_MODIFIER  0x0018
-#define EFI_FUNCTION_KEY_FOUR_MODIFIER   0x0019
-#define EFI_FUNCTION_KEY_FIVE_MODIFIER   0x001A
-#define EFI_FUNCTION_KEY_SIX_MODIFIER    0x001B
-#define EFI_FUNCTION_KEY_SEVEN_MODIFIER  0x001C
-#define EFI_FUNCTION_KEY_EIGHT_MODIFIER  0x001D
-#define EFI_FUNCTION_KEY_NINE_MODIFIER   0x001E
-#define EFI_FUNCTION_KEY_TEN_MODIFIER    0x001F
-#define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x0020
-#define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x0021
+#define EFI_NULL_MODIFIER                 0x0000
+#define EFI_LEFT_CONTROL_MODIFIER         0x0001
+#define EFI_RIGHT_CONTROL_MODIFIER        0x0002
+#define EFI_LEFT_ALT_MODIFIER             0x0003
+#define EFI_RIGHT_ALT_MODIFIER            0x0004
+#define EFI_ALT_GR_MODIFIER               0x0005
+#define EFI_INSERT_MODIFIER               0x0006
+#define EFI_DELETE_MODIFIER               0x0007
+#define EFI_PAGE_DOWN_MODIFIER            0x0008
+#define EFI_PAGE_UP_MODIFIER              0x0009
+#define EFI_HOME_MODIFIER                 0x000A
+#define EFI_END_MODIFIER                  0x000B
+#define EFI_LEFT_SHIFT_MODIFIER           0x000C
+#define EFI_RIGHT_SHIFT_MODIFIER          0x000D
+#define EFI_CAPS_LOCK_MODIFIER            0x000E
+#define EFI_NUM_LOCK_MODIFIER             0x000F
+#define EFI_LEFT_ARROW_MODIFIER           0x0010
+#define EFI_RIGHT_ARROW_MODIFIER          0x0011
+#define EFI_DOWN_ARROW_MODIFIER           0x0012
+#define EFI_UP_ARROW_MODIFIER             0x0013
+#define EFI_NS_KEY_MODIFIER               0x0014
+#define EFI_NS_KEY_DEPENDENCY_MODIFIER    0x0015
+#define EFI_FUNCTION_KEY_ONE_MODIFIER     0x0016
+#define EFI_FUNCTION_KEY_TWO_MODIFIER     0x0017
+#define EFI_FUNCTION_KEY_THREE_MODIFIER   0x0018
+#define EFI_FUNCTION_KEY_FOUR_MODIFIER    0x0019
+#define EFI_FUNCTION_KEY_FIVE_MODIFIER    0x001A
+#define EFI_FUNCTION_KEY_SIX_MODIFIER     0x001B
+#define EFI_FUNCTION_KEY_SEVEN_MODIFIER   0x001C
+#define EFI_FUNCTION_KEY_EIGHT_MODIFIER   0x001D
+#define EFI_FUNCTION_KEY_NINE_MODIFIER    0x001E
+#define EFI_FUNCTION_KEY_TEN_MODIFIER     0x001F
+#define EFI_FUNCTION_KEY_ELEVEN_MODIFIER  0x0020
+#define EFI_FUNCTION_KEY_TWELVE_MODIFIER  0x0021
 
 //
 // Keys that have multiple control functions based on modifier
@@ -1817,15 +1810,15 @@
 // is still a nonprinting character, but might have an alternate
 // control function like SYSREQUEST
 //
-#define EFI_PRINT_MODIFIER               0x0022
-#define EFI_SYS_REQUEST_MODIFIER         0x0023
-#define EFI_SCROLL_LOCK_MODIFIER         0x0024
-#define EFI_PAUSE_MODIFIER               0x0025
-#define EFI_BREAK_MODIFIER               0x0026
+#define EFI_PRINT_MODIFIER        0x0022
+#define EFI_SYS_REQUEST_MODIFIER  0x0023
+#define EFI_SCROLL_LOCK_MODIFIER  0x0024
+#define EFI_PAUSE_MODIFIER        0x0025
+#define EFI_BREAK_MODIFIER        0x0026
 
-#define EFI_LEFT_LOGO_MODIFIER           0x0027
-#define EFI_RIGHT_LOGO_MODIFIER          0x0028
-#define EFI_MENU_MODIFIER                0x0029
+#define EFI_LEFT_LOGO_MODIFIER   0x0027
+#define EFI_RIGHT_LOGO_MODIFIER  0x0028
+#define EFI_MENU_MODIFIER        0x0029
 
 ///
 /// Animation IFR opcode
@@ -1835,11 +1828,11 @@
   /// Standard opcode header, where Header.OpCode is
   /// EFI_IFR_ANIMATION_OP.
   ///
-  EFI_IFR_OP_HEADER        Header;
+  EFI_IFR_OP_HEADER    Header;
   ///
   /// Animation identifier in the HII database.
   ///
-  EFI_ANIMATION_ID         Id;
+  EFI_ANIMATION_ID     Id;
 } EFI_IFR_ANIMATION;
 
 ///
@@ -1849,12 +1842,12 @@
   ///
   /// Standard package header, where Header.Type = EFI_HII_PACKAGE_ANIMATIONS.
   ///
-  EFI_HII_PACKAGE_HEADER  Header;
+  EFI_HII_PACKAGE_HEADER    Header;
   ///
   /// Offset, relative to this header, of the animation information. If
   /// this is zero, then there are no animation sequences in the package.
   ///
-  UINT32                  AnimationInfoOffset;
+  UINT32                    AnimationInfoOffset;
 } EFI_HII_ANIMATION_PACKAGE_HDR;
 
 ///
@@ -1862,26 +1855,26 @@
 /// with each block prefixed by a single byte header EFI_HII_ANIMATION_BLOCK.
 ///
 typedef struct _EFI_HII_ANIMATION_BLOCK {
-  UINT8  BlockType;
-  //UINT8  BlockBody[];
+  UINT8    BlockType;
+  // UINT8  BlockBody[];
 } EFI_HII_ANIMATION_BLOCK;
 
 ///
 /// Animation block types.
 ///
-#define EFI_HII_AIBT_END                 0x00
-#define EFI_HII_AIBT_OVERLAY_IMAGES      0x10
-#define EFI_HII_AIBT_CLEAR_IMAGES        0x11
-#define EFI_HII_AIBT_RESTORE_SCRN        0x12
-#define EFI_HII_AIBT_OVERLAY_IMAGES_LOOP 0x18
-#define EFI_HII_AIBT_CLEAR_IMAGES_LOOP   0x19
-#define EFI_HII_AIBT_RESTORE_SCRN_LOOP   0x1A
-#define EFI_HII_AIBT_DUPLICATE           0x20
-#define EFI_HII_AIBT_SKIP2               0x21
-#define EFI_HII_AIBT_SKIP1               0x22
-#define EFI_HII_AIBT_EXT1                0x30
-#define EFI_HII_AIBT_EXT2                0x31
-#define EFI_HII_AIBT_EXT4                0x32
+#define EFI_HII_AIBT_END                  0x00
+#define EFI_HII_AIBT_OVERLAY_IMAGES       0x10
+#define EFI_HII_AIBT_CLEAR_IMAGES         0x11
+#define EFI_HII_AIBT_RESTORE_SCRN         0x12
+#define EFI_HII_AIBT_OVERLAY_IMAGES_LOOP  0x18
+#define EFI_HII_AIBT_CLEAR_IMAGES_LOOP    0x19
+#define EFI_HII_AIBT_RESTORE_SCRN_LOOP    0x1A
+#define EFI_HII_AIBT_DUPLICATE            0x20
+#define EFI_HII_AIBT_SKIP2                0x21
+#define EFI_HII_AIBT_SKIP1                0x22
+#define EFI_HII_AIBT_EXT1                 0x30
+#define EFI_HII_AIBT_EXT2                 0x31
+#define EFI_HII_AIBT_EXT4                 0x32
 
 ///
 /// Extended block headers used for variable sized animation records
@@ -1892,45 +1885,45 @@
   ///
   /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT1.
   ///
-  EFI_HII_ANIMATION_BLOCK  Header;
+  EFI_HII_ANIMATION_BLOCK    Header;
   ///
   /// The block type.
   ///
-  UINT8                    BlockType2;
+  UINT8                      BlockType2;
   ///
   /// Size of the animation block, in bytes, including the animation block header.
   ///
-  UINT8                    Length;
+  UINT8                      Length;
 } EFI_HII_AIBT_EXT1_BLOCK;
 
 typedef struct _EFI_HII_AIBT_EXT2_BLOCK {
   ///
   /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT2.
   ///
-  EFI_HII_ANIMATION_BLOCK  Header;
+  EFI_HII_ANIMATION_BLOCK    Header;
   ///
   /// The block type
   ///
-  UINT8                    BlockType2;
+  UINT8                      BlockType2;
   ///
   /// Size of the animation block, in bytes, including the animation block header.
   ///
-  UINT16                   Length;
+  UINT16                     Length;
 } EFI_HII_AIBT_EXT2_BLOCK;
 
 typedef struct _EFI_HII_AIBT_EXT4_BLOCK {
   ///
   /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT4.
   ///
-  EFI_HII_ANIMATION_BLOCK  Header;
+  EFI_HII_ANIMATION_BLOCK    Header;
   ///
   /// The block type
   ///
-  UINT8                    BlockType2;
+  UINT8                      BlockType2;
   ///
   /// Size of the animation block, in bytes, including the animation block header.
   ///
-  UINT32                   Length;
+  UINT32                     Length;
 } EFI_HII_AIBT_EXT4_BLOCK;
 
 typedef struct _EFI_HII_ANIMATION_CELL {
@@ -1938,23 +1931,23 @@
   /// The X offset from the upper left hand corner of the logical
   /// window to position the indexed image.
   ///
-  UINT16                    OffsetX;
+  UINT16          OffsetX;
   ///
   /// The Y offset from the upper left hand corner of the logical
   /// window to position the indexed image.
   ///
-  UINT16                    OffsetY;
+  UINT16          OffsetY;
   ///
   /// The image to display at the specified offset from the upper left
   /// hand corner of the logical window.
   ///
-  EFI_IMAGE_ID              ImageId;
+  EFI_IMAGE_ID    ImageId;
   ///
   /// The number of milliseconds to delay after displaying the indexed
   /// image and before continuing on to the next linked image.  If value
   /// is zero, no delay.
   ///
-  UINT16                    Delay;
+  UINT16          Delay;
 } EFI_HII_ANIMATION_CELL;
 
 ///
@@ -1970,24 +1963,24 @@
   /// image that can be displayed alone. If the value is zero, no image
   /// is displayed.
   ///
-  EFI_IMAGE_ID            DftImageId;
+  EFI_IMAGE_ID              DftImageId;
   ///
   /// The overall width of the set of images (logical window width).
   ///
-  UINT16                  Width;
+  UINT16                    Width;
   ///
   /// The overall height of the set of images (logical window height).
   ///
-  UINT16                  Height;
+  UINT16                    Height;
   ///
   /// The number of EFI_HII_ANIMATION_CELL contained in the
   /// animation sequence.
   ///
-  UINT16                  CellCount;
+  UINT16                    CellCount;
   ///
   /// An array of CellCount animation cells.
   ///
-  EFI_HII_ANIMATION_CELL  AnimationCell[1];
+  EFI_HII_ANIMATION_CELL    AnimationCell[1];
 } EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK;
 
 ///
@@ -2004,29 +1997,29 @@
   /// image that can be displayed alone. If the value is zero, no image
   /// is displayed.
   ///
-  EFI_IMAGE_ID       DftImageId;
+  EFI_IMAGE_ID              DftImageId;
   ///
   /// The overall width of the set of images (logical window width).
   ///
-  UINT16             Width;
+  UINT16                    Width;
   ///
   /// The overall height of the set of images (logical window height).
   ///
-  UINT16             Height;
+  UINT16                    Height;
   ///
   /// The number of EFI_HII_ANIMATION_CELL contained in the
   /// animation sequence.
   ///
-  UINT16             CellCount;
+  UINT16                    CellCount;
   ///
   /// The color to clear the logical window to before displaying the
   /// indexed image.
   ///
-  EFI_HII_RGB_PIXEL  BackgndColor;
+  EFI_HII_RGB_PIXEL         BackgndColor;
   ///
   /// An array of CellCount animation cells.
   ///
-  EFI_HII_ANIMATION_CELL AnimationCell[1];
+  EFI_HII_ANIMATION_CELL    AnimationCell[1];
 } EFI_HII_AIBT_CLEAR_IMAGES_BLOCK;
 
 ///
@@ -2043,45 +2036,45 @@
   /// image that can be displayed alone. If the value is zero, no image
   /// is displayed.
   ///
-  EFI_IMAGE_ID            DftImageId;
+  EFI_IMAGE_ID              DftImageId;
   ///
   /// The overall width of the set of images (logical window width).
   ///
-  UINT16                  Width;
+  UINT16                    Width;
   ///
   /// The overall height of the set of images (logical window height).
   ///
-  UINT16                  Height;
+  UINT16                    Height;
   ///
   /// The number of EFI_HII_ANIMATION_CELL contained in the
   /// animation sequence.
   ///
-  UINT16                  CellCount;
+  UINT16                    CellCount;
   ///
   /// An array of CellCount animation cells.
   ///
-  EFI_HII_ANIMATION_CELL  AnimationCell[1];
+  EFI_HII_ANIMATION_CELL    AnimationCell[1];
 } EFI_HII_AIBT_RESTORE_SCRN_BLOCK;
 
 ///
 /// An animation block to describe an animation sequence that continuously cycles,
 /// and where one image is simply displayed over the previous image.
 ///
-typedef EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK  EFI_HII_AIBT_OVERLAY_IMAGES_LOOP_BLOCK;
+typedef EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK EFI_HII_AIBT_OVERLAY_IMAGES_LOOP_BLOCK;
 
 ///
 /// An animation block to describe an animation sequence that continuously cycles,
 /// and where the logical window is cleared to the specified color before
 /// the next image is displayed.
 ///
-typedef EFI_HII_AIBT_CLEAR_IMAGES_BLOCK    EFI_HII_AIBT_CLEAR_IMAGES_LOOP_BLOCK;
+typedef EFI_HII_AIBT_CLEAR_IMAGES_BLOCK EFI_HII_AIBT_CLEAR_IMAGES_LOOP_BLOCK;
 
 ///
 /// An animation block to describe an animation sequence that continuously cycles,
 /// and where the screen is restored to the original state before
 /// the next image is displayed.
 ///
-typedef EFI_HII_AIBT_RESTORE_SCRN_BLOCK    EFI_HII_AIBT_RESTORE_SCRN_LOOP_BLOCK;
+typedef EFI_HII_AIBT_RESTORE_SCRN_BLOCK EFI_HII_AIBT_RESTORE_SCRN_LOOP_BLOCK;
 
 ///
 /// Assigns a new character value to a previously defined animation sequence.
@@ -2091,7 +2084,7 @@
   /// The previously defined animation ID with the exact same
   /// animation information.
   ///
-  EFI_ANIMATION_ID  AnimationId;
+  EFI_ANIMATION_ID    AnimationId;
 } EFI_HII_AIBT_DUPLICATE_BLOCK;
 
 ///
@@ -2101,7 +2094,7 @@
   ///
   /// The unsigned 8-bit value to add to AnimationIdCurrent.
   ///
-  UINT8  SkipCount;
+  UINT8    SkipCount;
 } EFI_HII_AIBT_SKIP1_BLOCK;
 
 ///
@@ -2111,13 +2104,11 @@
   ///
   /// The unsigned 16-bit value to add to AnimationIdCurrent.
   ///
-  UINT16  SkipCount;
+  UINT16    SkipCount;
 } EFI_HII_AIBT_SKIP2_BLOCK;
 
 #pragma pack()
 
-
-
 ///
 /// References to string tokens must use this macro to enable scanning for
 /// token usages.
@@ -2126,12 +2117,12 @@
 /// STRING_TOKEN is not defined in UEFI specification. But it is placed
 /// here for the easy access by C files and VFR source files.
 ///
-#define STRING_TOKEN(t) t
+#define STRING_TOKEN(t)  t
 
 ///
 /// IMAGE_TOKEN is not defined in UEFI specification. But it is placed
 /// here for the easy access by C files and VFR source files.
 ///
-#define IMAGE_TOKEN(t) t
+#define IMAGE_TOKEN(t)  t
 
 #endif
diff --git a/src/include/ipxe/efi/Uefi/UefiMultiPhase.h b/src/include/ipxe/efi/Uefi/UefiMultiPhase.h
index 38ec09f..4ac7604 100644
--- a/src/include/ipxe/efi/Uefi/UefiMultiPhase.h
+++ b/src/include/ipxe/efi/Uefi/UefiMultiPhase.h
@@ -1,23 +1,39 @@
 /** @file
   This includes some definitions introduced in UEFI that will be used in both PEI and DXE phases.
 
-Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __UEFI_MULTIPHASE_H__
 #define __UEFI_MULTIPHASE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
-#include <ipxe/efi/Guid/WinCertificate.h>
+///
+/// Attributes of variable.
+///
+#define EFI_VARIABLE_NON_VOLATILE        0x00000001
+#define EFI_VARIABLE_BOOTSERVICE_ACCESS  0x00000002
+#define EFI_VARIABLE_RUNTIME_ACCESS      0x00000004
+///
+/// This attribute is identified by the mnemonic 'HR'
+/// elsewhere in this specification.
+///
+#define EFI_VARIABLE_HARDWARE_ERROR_RECORD  0x00000008
+///
+/// Attributes of Authenticated Variable
+///
+#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS  0x00000020
+#define EFI_VARIABLE_APPEND_WRITE                           0x00000040
+///
+/// NOTE: EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS is deprecated and should be considered reserved.
+///
+#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS  0x00000010
+
+#ifndef VFRCOMPILE
+  #include <ipxe/efi/Guid/WinCertificate.h>
 ///
 /// Enumeration of memory types introduced in UEFI.
 ///
@@ -89,6 +105,11 @@
   /// however it happens to also support byte-addressable non-volatility.
   ///
   EfiPersistentMemory,
+  ///
+  /// A memory region that describes system memory that has not been accepted
+  /// by a corresponding call to the underlying isolation architecture.
+  ///
+  EfiUnacceptedMemoryType,
   EfiMaxMemoryType
 } EFI_MEMORY_TYPE;
 
@@ -134,49 +155,30 @@
   /// Unique signatures have been generated for the EFI System Table,
   /// the EFI Boot Services Table, and the EFI Runtime Services Table.
   ///
-  UINT64  Signature;
+  UINT64    Signature;
   ///
   /// The revision of the EFI Specification to which this table
   /// conforms. The upper 16 bits of this field contain the major
   /// revision value, and the lower 16 bits contain the minor revision
   /// value. The minor revision values are limited to the range of 00..99.
   ///
-  UINT32  Revision;
+  UINT32    Revision;
   ///
   /// The size, in bytes, of the entire table including the EFI_TABLE_HEADER.
   ///
-  UINT32  HeaderSize;
+  UINT32    HeaderSize;
   ///
   /// The 32-bit CRC for the entire table. This value is computed by
   /// setting this field to 0, and computing the 32-bit CRC for HeaderSize bytes.
   ///
-  UINT32  CRC32;
+  UINT32    CRC32;
   ///
   /// Reserved field that must be set to 0.
   ///
-  UINT32  Reserved;
+  UINT32    Reserved;
 } EFI_TABLE_HEADER;
 
 ///
-/// Attributes of variable.
-///
-#define EFI_VARIABLE_NON_VOLATILE                            0x00000001
-#define EFI_VARIABLE_BOOTSERVICE_ACCESS                      0x00000002
-#define EFI_VARIABLE_RUNTIME_ACCESS                          0x00000004
-///
-/// This attribute is identified by the mnemonic 'HR'
-/// elsewhere in this specification.
-///
-#define EFI_VARIABLE_HARDWARE_ERROR_RECORD                   0x00000008
-///
-/// Attributes of Authenticated Variable
-///
-#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS              0x00000010
-#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS   0x00000020
-#define EFI_VARIABLE_APPEND_WRITE                            0x00000040
-
-
-///
 /// AuthInfo is a WIN_CERTIFICATE using the wCertificateType
 /// WIN_CERTIFICATE_UEFI_GUID and the CertType
 /// EFI_CERT_TYPE_RSA2048_SHA256_GUID. If the attribute specifies
@@ -198,7 +200,7 @@
   /// replay. Incremented during each
   /// "Write" access.
   ///
-  UINT64                      MonotonicCount;
+  UINT64    MonotonicCount;
   ///
   /// Provides the authorization for the variable
   /// access. It is a signature across the
@@ -207,7 +209,7 @@
   /// associated with a public key that has been
   /// provisioned via the key exchange.
   ///
-  WIN_CERTIFICATE_UEFI_GUID   AuthInfo;
+  WIN_CERTIFICATE_UEFI_GUID    AuthInfo;
 } EFI_VARIABLE_AUTHENTICATION;
 
 ///
@@ -223,11 +225,12 @@
   /// For the TimeStamp value, components Pad1, Nanosecond, TimeZone, Daylight and
   /// Pad2 shall be set to 0. This means that the time shall always be expressed in GMT.
   ///
-  EFI_TIME                    TimeStamp;
+  EFI_TIME                     TimeStamp;
   ///
   /// Only a CertType of  EFI_CERT_TYPE_PKCS7_GUID is accepted.
   ///
-  WIN_CERTIFICATE_UEFI_GUID   AuthInfo;
- } EFI_VARIABLE_AUTHENTICATION_2;
+  WIN_CERTIFICATE_UEFI_GUID    AuthInfo;
+} EFI_VARIABLE_AUTHENTICATION_2;
+#endif // VFRCOMPILE
 
 #endif
diff --git a/src/include/ipxe/efi/Uefi/UefiPxe.h b/src/include/ipxe/efi/Uefi/UefiPxe.h
index 6ed5c9a..b4366ed 100644
--- a/src/include/ipxe/efi/Uefi/UefiPxe.h
+++ b/src/include/ipxe/efi/Uefi/UefiPxe.h
@@ -3,14 +3,8 @@
   structure prototypes, global variables and constants that
   are needed for porting PXE to EFI.
 
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
   @par Revision Reference:
   32/64-bit PXE specification:
@@ -21,7 +15,7 @@
 #ifndef __EFI_PXE_H__
 #define __EFI_PXE_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #pragma pack(1)
 
@@ -34,15 +28,15 @@
 ///
 /// UNDI ROM ID and devive ID signature.
 ///
-#define PXE_BUSTYPE_PXE PXE_BUSTYPE ('!', 'P', 'X', 'E')
+#define PXE_BUSTYPE_PXE  PXE_BUSTYPE ('!', 'P', 'X', 'E')
 
 ///
 /// BUS ROM ID signatures.
 ///
-#define PXE_BUSTYPE_PCI     PXE_BUSTYPE ('P', 'C', 'I', 'R')
-#define PXE_BUSTYPE_PC_CARD PXE_BUSTYPE ('P', 'C', 'C', 'R')
-#define PXE_BUSTYPE_USB     PXE_BUSTYPE ('U', 'S', 'B', 'R')
-#define PXE_BUSTYPE_1394    PXE_BUSTYPE ('1', '3', '9', '4')
+#define PXE_BUSTYPE_PCI      PXE_BUSTYPE ('P', 'C', 'I', 'R')
+#define PXE_BUSTYPE_PC_CARD  PXE_BUSTYPE ('P', 'C', 'C', 'R')
+#define PXE_BUSTYPE_USB      PXE_BUSTYPE ('U', 'S', 'B', 'R')
+#define PXE_BUSTYPE_1394     PXE_BUSTYPE ('1', '3', '9', '4')
 
 #define PXE_SWAP_UINT16(n)  ((((PXE_UINT16) (n) & 0x00FF) << 8) | (((PXE_UINT16) (n) & 0xFF00) >> 8))
 
@@ -62,31 +56,30 @@
    (((PXE_UINT64)(n) & 0x00FF000000000000ULL) >> 40) | \
    (((PXE_UINT64)(n) & 0xFF00000000000000ULL) >> 56))
 
-
 #define PXE_CPBSIZE_NOT_USED  0               ///< zero
 #define PXE_DBSIZE_NOT_USED   0               ///< zero
 #define PXE_CPBADDR_NOT_USED  (PXE_UINT64) 0  ///< zero
 #define PXE_DBADDR_NOT_USED   (PXE_UINT64) 0  ///< zero
 #define PXE_CONST             CONST
 
-#define PXE_VOLATILE          volatile
+#define PXE_VOLATILE  volatile
 
-typedef VOID           PXE_VOID;
-typedef UINT8          PXE_UINT8;
-typedef UINT16         PXE_UINT16;
-typedef UINT32         PXE_UINT32;
-typedef UINTN          PXE_UINTN;
+typedef VOID    PXE_VOID;
+typedef UINT8   PXE_UINT8;
+typedef UINT16  PXE_UINT16;
+typedef UINT32  PXE_UINT32;
+typedef UINTN   PXE_UINTN;
 
 ///
 /// Typedef unsigned long PXE_UINT64.
 ///
-typedef UINT64      PXE_UINT64;
+typedef UINT64 PXE_UINT64;
 
 typedef PXE_UINT8 PXE_BOOL;
-#define PXE_FALSE 0            ///< zero
-#define PXE_TRUE  (!PXE_FALSE)
+#define PXE_FALSE  0           ///< zero
+#define PXE_TRUE   (!PXE_FALSE)
 
-typedef PXE_UINT16      PXE_OPCODE;
+typedef PXE_UINT16 PXE_OPCODE;
 
 ///
 /// Return UNDI operational state.
@@ -101,7 +94,7 @@
 ///
 /// Change UNDI operational state from Started to Stopped.
 ///
-#define PXE_OPCODE_STOP 0x0002
+#define PXE_OPCODE_STOP  0x0002
 
 ///
 /// Get UNDI initialization information.
@@ -116,7 +109,7 @@
 ///
 /// Changed UNDI operational state from Started to Initialized.
 ///
-#define PXE_OPCODE_INITIALIZE 0x0005
+#define PXE_OPCODE_INITIALIZE  0x0005
 
 ///
 /// Re-initialize the NIC H/W.
@@ -126,7 +119,7 @@
 ///
 /// Change the UNDI operational state from Initialized to Started.
 ///
-#define PXE_OPCODE_SHUTDOWN 0x0007
+#define PXE_OPCODE_SHUTDOWN  0x0007
 
 ///
 /// Read & change state of external interrupt enables.
@@ -146,7 +139,7 @@
 ///
 /// Read traffic statistics.
 ///
-#define PXE_OPCODE_STATISTICS 0x000B
+#define PXE_OPCODE_STATISTICS  0x000B
 
 ///
 /// Convert multicast IP address to multicast MAC address.
@@ -156,12 +149,12 @@
 ///
 /// Read or change non-volatile storage on the NIC.
 ///
-#define PXE_OPCODE_NVDATA 0x000D
+#define PXE_OPCODE_NVDATA  0x000D
 
 ///
 /// Get & clear interrupt status.
 ///
-#define PXE_OPCODE_GET_STATUS 0x000E
+#define PXE_OPCODE_GET_STATUS  0x000E
 
 ///
 /// Fill media header in packet for transmit.
@@ -171,7 +164,7 @@
 ///
 /// Transmit packet(s).
 ///
-#define PXE_OPCODE_TRANSMIT 0x0010
+#define PXE_OPCODE_TRANSMIT  0x0010
 
 ///
 /// Receive packet.
@@ -181,9 +174,9 @@
 ///
 /// Last valid PXE UNDI OpCode number.
 ///
-#define PXE_OPCODE_LAST_VALID 0x0011
+#define PXE_OPCODE_LAST_VALID  0x0011
 
-typedef PXE_UINT16  PXE_OPFLAGS;
+typedef PXE_UINT16 PXE_OPFLAGS;
 
 #define PXE_OPFLAGS_NOT_USED  0x0000
 
@@ -239,16 +232,16 @@
 /// Select whether to enable or disable external interrupt signals.
 /// Setting both enable and disable will return PXE_STATCODE_INVALID_OPFLAGS.
 ///
-#define PXE_OPFLAGS_INTERRUPT_OPMASK  0xC000
-#define PXE_OPFLAGS_INTERRUPT_ENABLE  0x8000
-#define PXE_OPFLAGS_INTERRUPT_DISABLE 0x4000
-#define PXE_OPFLAGS_INTERRUPT_READ    0x0000
+#define PXE_OPFLAGS_INTERRUPT_OPMASK   0xC000
+#define PXE_OPFLAGS_INTERRUPT_ENABLE   0x8000
+#define PXE_OPFLAGS_INTERRUPT_DISABLE  0x4000
+#define PXE_OPFLAGS_INTERRUPT_READ     0x0000
 
 ///
 /// Enable receive interrupts.  An external interrupt will be generated
 /// after a complete non-error packet has been received.
 ///
-#define PXE_OPFLAGS_INTERRUPT_RECEIVE 0x0001
+#define PXE_OPFLAGS_INTERRUPT_RECEIVE  0x0001
 
 ///
 /// Enable transmit interrupts.  An external interrupt will be generated
@@ -260,7 +253,7 @@
 /// Enable command interrupts.  An external interrupt will be generated
 /// when command execution stops.
 ///
-#define PXE_OPFLAGS_INTERRUPT_COMMAND 0x0004
+#define PXE_OPFLAGS_INTERRUPT_COMMAND  0x0004
 
 ///
 /// Generate software interrupt.  Setting this bit generates an external
@@ -284,7 +277,7 @@
 /// To reset the contents of the multicast MAC address filter list,
 /// set this OpFlag:
 ///
-#define PXE_OPFLAGS_RECEIVE_FILTER_RESET_MCAST_LIST 0x2000
+#define PXE_OPFLAGS_RECEIVE_FILTER_RESET_MCAST_LIST  0x2000
 
 ///
 /// Enable unicast packet receiving.  Packets sent to the current station
@@ -303,7 +296,7 @@
 /// of the multicast MAC addresses in the multicast MAC address filter
 /// list will be received.  If the filter list is empty, no multicast
 ///
-#define PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004
+#define PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST  0x0004
 
 ///
 /// Enable promiscuous packet receiving.  All packets will be received.
@@ -345,9 +338,9 @@
 ///
 /// Select the type of non-volatile data operation.
 ///
-#define PXE_OPFLAGS_NVDATA_OPMASK 0x0001
-#define PXE_OPFLAGS_NVDATA_READ   0x0000
-#define PXE_OPFLAGS_NVDATA_WRITE  0x0001
+#define PXE_OPFLAGS_NVDATA_OPMASK  0x0001
+#define PXE_OPFLAGS_NVDATA_READ    0x0000
+#define PXE_OPFLAGS_NVDATA_WRITE   0x0001
 
 ///
 /// UNDI Get Status.
@@ -368,12 +361,12 @@
 /// buffers.  Do not plan on getting one buffer per interrupt.  Some
 /// NICs and UNDIs may transmit multiple buffers per interrupt.
 ///
-#define PXE_OPFLAGS_GET_TRANSMITTED_BUFFERS 0x0002
+#define PXE_OPFLAGS_GET_TRANSMITTED_BUFFERS  0x0002
 
 ///
 /// Return current media status.
 ///
-#define PXE_OPFLAGS_GET_MEDIA_STATUS    0x0004
+#define PXE_OPFLAGS_GET_MEDIA_STATUS  0x0004
 
 ///
 /// UNDI Fill Header.
@@ -394,9 +387,9 @@
 #define PXE_OPFLAGS_TRANSMIT_BLOCK          0x0001
 #define PXE_OPFLAGS_TRANSMIT_DONT_BLOCK     0x0000
 
-#define PXE_OPFLAGS_TRANSMIT_OPMASK     0x0002
-#define PXE_OPFLAGS_TRANSMIT_FRAGMENTED 0x0002
-#define PXE_OPFLAGS_TRANSMIT_WHOLE      0x0000
+#define PXE_OPFLAGS_TRANSMIT_OPMASK      0x0002
+#define PXE_OPFLAGS_TRANSMIT_FRAGMENTED  0x0002
+#define PXE_OPFLAGS_TRANSMIT_WHOLE       0x0000
 
 ///
 /// UNDI Receive.
@@ -407,7 +400,7 @@
 ///
 /// PXE STATFLAGS.
 ///
-typedef PXE_UINT16  PXE_STATFLAGS;
+typedef PXE_UINT16 PXE_STATFLAGS;
 
 #define PXE_STATFLAGS_INITIALIZE  0x0000
 
@@ -427,10 +420,10 @@
 ///
 /// UNDI Get State.
 ///
-#define PXE_STATFLAGS_GET_STATE_MASK        0x0003
-#define PXE_STATFLAGS_GET_STATE_INITIALIZED 0x0002
-#define PXE_STATFLAGS_GET_STATE_STARTED     0x0001
-#define PXE_STATFLAGS_GET_STATE_STOPPED     0x0000
+#define PXE_STATFLAGS_GET_STATE_MASK         0x0003
+#define PXE_STATFLAGS_GET_STATE_INITIALIZED  0x0002
+#define PXE_STATFLAGS_GET_STATE_STARTED      0x0001
+#define PXE_STATFLAGS_GET_STATE_STOPPED      0x0000
 
 ///
 /// UNDI Start.
@@ -470,7 +463,7 @@
 ///
 /// If set, receive interrupts are enabled.
 ///
-#define PXE_STATFLAGS_INTERRUPT_RECEIVE 0x0001
+#define PXE_STATFLAGS_INTERRUPT_RECEIVE  0x0001
 
 ///
 /// If set, transmit interrupts are enabled.
@@ -480,7 +473,7 @@
 ///
 /// If set, command interrupts are enabled.
 ///
-#define PXE_STATFLAGS_INTERRUPT_COMMAND 0x0004
+#define PXE_STATFLAGS_INTERRUPT_COMMAND  0x0004
 
 ///
 /// UNDI Receive Filters.
@@ -500,7 +493,7 @@
 /// If set, multicast packets that match up with the multicast address
 /// filter list will be received.
 ///
-#define PXE_STATFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004
+#define PXE_STATFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST  0x0004
 
 ///
 /// If set, all packets will be received.
@@ -542,8 +535,8 @@
 ///
 /// Use to determine if an interrupt has occurred.
 ///
-#define PXE_STATFLAGS_GET_STATUS_INTERRUPT_MASK 0x000F
-#define PXE_STATFLAGS_GET_STATUS_NO_INTERRUPTS  0x0000
+#define PXE_STATFLAGS_GET_STATUS_INTERRUPT_MASK  0x000F
+#define PXE_STATFLAGS_GET_STATUS_NO_INTERRUPTS   0x0000
 
 ///
 /// If set, at least one receive interrupt occurred.
@@ -553,7 +546,7 @@
 ///
 /// If set, at least one transmit interrupt occurred.
 ///
-#define PXE_STATFLAGS_GET_STATUS_TRANSMIT 0x0002
+#define PXE_STATFLAGS_GET_STATUS_TRANSMIT  0x0002
 
 ///
 /// If set, at least one command interrupt occurred.
@@ -563,7 +556,7 @@
 ///
 /// If set, at least one software interrupt occurred.
 ///
-#define PXE_STATFLAGS_GET_STATUS_SOFTWARE 0x0008
+#define PXE_STATFLAGS_GET_STATUS_SOFTWARE  0x0008
 
 ///
 /// This flag is set if the transmitted buffer queue is empty.  This flag
@@ -595,20 +588,20 @@
 
 ///
 /// UNDI Receive
-///.
+/// .
 
 ///
 /// No additional StatFlags.
 ///
-typedef PXE_UINT16  PXE_STATCODE;
+typedef PXE_UINT16 PXE_STATCODE;
 
-#define PXE_STATCODE_INITIALIZE 0x0000
+#define PXE_STATCODE_INITIALIZE  0x0000
 
 ///
 /// Common StatCodes returned by all UNDI commands, UNDI protocol functions
 /// and BC protocol functions.
 ///
-#define PXE_STATCODE_SUCCESS              0x0000
+#define PXE_STATCODE_SUCCESS  0x0000
 
 #define PXE_STATCODE_INVALID_CDB          0x0001
 #define PXE_STATCODE_INVALID_CPB          0x0002
@@ -630,20 +623,20 @@
 #define PXE_STATCODE_NOT_ENOUGH_MEMORY    0x0012
 #define PXE_STATCODE_NO_DATA              0x0013
 
-typedef PXE_UINT16  PXE_IFNUM;
+typedef PXE_UINT16 PXE_IFNUM;
 
 ///
 /// This interface number must be passed to the S/W UNDI Start command.
 ///
-#define PXE_IFNUM_START 0x0000
+#define PXE_IFNUM_START  0x0000
 
 ///
 /// This interface number is returned by the S/W UNDI Get State and
 /// Start commands if information in the CDB, CPB or DB is invalid.
 ///
-#define PXE_IFNUM_INVALID 0x0000
+#define PXE_IFNUM_INVALID  0x0000
 
-typedef PXE_UINT16  PXE_CONTROL;
+typedef PXE_UINT16 PXE_CONTROL;
 
 ///
 /// Setting this flag directs the UNDI to queue this command for later
@@ -652,7 +645,7 @@
 /// is returned.  If the queue is full, a PXE_STATCODE_CDB_QUEUE_FULL
 /// error is returned.
 ///
-#define PXE_CONTROL_QUEUE_IF_BUSY 0x0002
+#define PXE_CONTROL_QUEUE_IF_BUSY  0x0002
 
 ///
 /// These two bit values are used to determine if there are more UNDI
@@ -664,26 +657,26 @@
 #define PXE_CONTROL_LINK              0x0001
 #define PXE_CONTROL_LAST_CDB_IN_LIST  0x0000
 
-typedef PXE_UINT8   PXE_FRAME_TYPE;
+typedef PXE_UINT8 PXE_FRAME_TYPE;
 
-#define PXE_FRAME_TYPE_NONE                     0x00
-#define PXE_FRAME_TYPE_UNICAST                  0x01
-#define PXE_FRAME_TYPE_BROADCAST                0x02
-#define PXE_FRAME_TYPE_FILTERED_MULTICAST       0x03
-#define PXE_FRAME_TYPE_PROMISCUOUS              0x04
-#define PXE_FRAME_TYPE_PROMISCUOUS_MULTICAST    0x05
+#define PXE_FRAME_TYPE_NONE                   0x00
+#define PXE_FRAME_TYPE_UNICAST                0x01
+#define PXE_FRAME_TYPE_BROADCAST              0x02
+#define PXE_FRAME_TYPE_FILTERED_MULTICAST     0x03
+#define PXE_FRAME_TYPE_PROMISCUOUS            0x04
+#define PXE_FRAME_TYPE_PROMISCUOUS_MULTICAST  0x05
 
-#define PXE_FRAME_TYPE_MULTICAST                PXE_FRAME_TYPE_FILTERED_MULTICAST
+#define PXE_FRAME_TYPE_MULTICAST  PXE_FRAME_TYPE_FILTERED_MULTICAST
 
-typedef PXE_UINT32  PXE_IPV4;
+typedef PXE_UINT32 PXE_IPV4;
 
-typedef PXE_UINT32  PXE_IPV6[4];
+typedef PXE_UINT32 PXE_IPV6[4];
 #define PXE_MAC_LENGTH  32
 
-typedef PXE_UINT8   PXE_MAC_ADDR[PXE_MAC_LENGTH];
+typedef PXE_UINT8 PXE_MAC_ADDR[PXE_MAC_LENGTH];
 
-typedef PXE_UINT8   PXE_IFTYPE;
-typedef UINT16      PXE_MEDIA_PROTOCOL;
+typedef PXE_UINT8 PXE_IFTYPE;
+typedef UINT16    PXE_MEDIA_PROTOCOL;
 
 ///
 /// This information is from the ARP section of RFC 1700.
@@ -717,16 +710,16 @@
 #define PXE_IFTYPE_FIBRE_CHANNEL  0x12
 
 typedef struct s_pxe_hw_undi {
-  PXE_UINT32  Signature;      ///< PXE_ROMID_SIGNATURE.
-  PXE_UINT8   Len;            ///< sizeof(PXE_HW_UNDI).
-  PXE_UINT8   Fudge;          ///< makes 8-bit cksum equal zero.
-  PXE_UINT8   Rev;            ///< PXE_ROMID_REV.
-  PXE_UINT8   IFcnt;          ///< physical connector count lower byte.
-  PXE_UINT8   MajorVer;       ///< PXE_ROMID_MAJORVER.
-  PXE_UINT8   MinorVer;       ///< PXE_ROMID_MINORVER.
-  PXE_UINT8   IFcntExt;       ///< physical connector count upper byte.
-  PXE_UINT8   reserved;       ///< zero, not used.
-  PXE_UINT32  Implementation; ///< implementation flags.
+  PXE_UINT32    Signature;      ///< PXE_ROMID_SIGNATURE.
+  PXE_UINT8     Len;            ///< sizeof(PXE_HW_UNDI).
+  PXE_UINT8     Fudge;          ///< makes 8-bit cksum equal zero.
+  PXE_UINT8     Rev;            ///< PXE_ROMID_REV.
+  PXE_UINT8     IFcnt;          ///< physical connector count lower byte.
+  PXE_UINT8     MajorVer;       ///< PXE_ROMID_MAJORVER.
+  PXE_UINT8     MinorVer;       ///< PXE_ROMID_MINORVER.
+  PXE_UINT8     IFcntExt;       ///< physical connector count upper byte.
+  PXE_UINT8     reserved;       ///< zero, not used.
+  PXE_UINT32    Implementation; ///< implementation flags.
   ///< reserved             ///< vendor use.
   ///< UINT32 Status;       ///< status port.
   ///< UINT32 Command;      ///< command port.
@@ -750,32 +743,32 @@
 ///
 /// If set, last command failed.
 ///
-#define PXE_HWSTAT_COMMAND_FAILED 0x20000000
+#define PXE_HWSTAT_COMMAND_FAILED  0x20000000
 
 ///
 /// If set, identifies enabled receive filters.
 ///
-#define PXE_HWSTAT_PROMISCUOUS_MULTICAST_RX_ENABLED 0x00001000
-#define PXE_HWSTAT_PROMISCUOUS_RX_ENABLED           0x00000800
-#define PXE_HWSTAT_BROADCAST_RX_ENABLED             0x00000400
-#define PXE_HWSTAT_MULTICAST_RX_ENABLED             0x00000200
-#define PXE_HWSTAT_UNICAST_RX_ENABLED               0x00000100
+#define PXE_HWSTAT_PROMISCUOUS_MULTICAST_RX_ENABLED  0x00001000
+#define PXE_HWSTAT_PROMISCUOUS_RX_ENABLED            0x00000800
+#define PXE_HWSTAT_BROADCAST_RX_ENABLED              0x00000400
+#define PXE_HWSTAT_MULTICAST_RX_ENABLED              0x00000200
+#define PXE_HWSTAT_UNICAST_RX_ENABLED                0x00000100
 
 ///
 /// If set, identifies enabled external interrupts.
 ///
-#define PXE_HWSTAT_SOFTWARE_INT_ENABLED     0x00000080
-#define PXE_HWSTAT_TX_COMPLETE_INT_ENABLED  0x00000040
-#define PXE_HWSTAT_PACKET_RX_INT_ENABLED    0x00000020
-#define PXE_HWSTAT_CMD_COMPLETE_INT_ENABLED 0x00000010
+#define PXE_HWSTAT_SOFTWARE_INT_ENABLED      0x00000080
+#define PXE_HWSTAT_TX_COMPLETE_INT_ENABLED   0x00000040
+#define PXE_HWSTAT_PACKET_RX_INT_ENABLED     0x00000020
+#define PXE_HWSTAT_CMD_COMPLETE_INT_ENABLED  0x00000010
 
 ///
 /// If set, identifies pending interrupts.
 ///
-#define PXE_HWSTAT_SOFTWARE_INT_PENDING     0x00000008
-#define PXE_HWSTAT_TX_COMPLETE_INT_PENDING  0x00000004
-#define PXE_HWSTAT_PACKET_RX_INT_PENDING    0x00000002
-#define PXE_HWSTAT_CMD_COMPLETE_INT_PENDING 0x00000001
+#define PXE_HWSTAT_SOFTWARE_INT_PENDING      0x00000008
+#define PXE_HWSTAT_TX_COMPLETE_INT_PENDING   0x00000004
+#define PXE_HWSTAT_PACKET_RX_INT_PENDING     0x00000002
+#define PXE_HWSTAT_CMD_COMPLETE_INT_PENDING  0x00000001
 
 ///
 /// Command port definitions.
@@ -791,19 +784,19 @@
 ///
 /// Use these to enable/disable receive filters.
 ///
-#define PXE_HWCMD_PROMISCUOUS_MULTICAST_RX_ENABLE 0x00001000
-#define PXE_HWCMD_PROMISCUOUS_RX_ENABLE           0x00000800
-#define PXE_HWCMD_BROADCAST_RX_ENABLE             0x00000400
-#define PXE_HWCMD_MULTICAST_RX_ENABLE             0x00000200
-#define PXE_HWCMD_UNICAST_RX_ENABLE               0x00000100
+#define PXE_HWCMD_PROMISCUOUS_MULTICAST_RX_ENABLE  0x00001000
+#define PXE_HWCMD_PROMISCUOUS_RX_ENABLE            0x00000800
+#define PXE_HWCMD_BROADCAST_RX_ENABLE              0x00000400
+#define PXE_HWCMD_MULTICAST_RX_ENABLE              0x00000200
+#define PXE_HWCMD_UNICAST_RX_ENABLE                0x00000100
 
 ///
 /// Use these to enable/disable external interrupts.
 ///
-#define PXE_HWCMD_SOFTWARE_INT_ENABLE     0x00000080
-#define PXE_HWCMD_TX_COMPLETE_INT_ENABLE  0x00000040
-#define PXE_HWCMD_PACKET_RX_INT_ENABLE    0x00000020
-#define PXE_HWCMD_CMD_COMPLETE_INT_ENABLE 0x00000010
+#define PXE_HWCMD_SOFTWARE_INT_ENABLE      0x00000080
+#define PXE_HWCMD_TX_COMPLETE_INT_ENABLE   0x00000040
+#define PXE_HWCMD_PACKET_RX_INT_ENABLE     0x00000020
+#define PXE_HWCMD_CMD_COMPLETE_INT_ENABLE  0x00000010
 
 ///
 /// Use these to clear pending external interrupts.
@@ -814,44 +807,44 @@
 #define PXE_HWCMD_CLEAR_CMD_COMPLETE_INT  0x00000001
 
 typedef struct s_pxe_sw_undi {
-  PXE_UINT32  Signature;      ///< PXE_ROMID_SIGNATURE.
-  PXE_UINT8   Len;            ///< sizeof(PXE_SW_UNDI).
-  PXE_UINT8   Fudge;          ///< makes 8-bit cksum zero.
-  PXE_UINT8   Rev;            ///< PXE_ROMID_REV.
-  PXE_UINT8   IFcnt;          ///< physical connector count lower byte.
-  PXE_UINT8   MajorVer;       ///< PXE_ROMID_MAJORVER.
-  PXE_UINT8   MinorVer;       ///< PXE_ROMID_MINORVER.
-  PXE_UINT8   IFcntExt;       ///< physical connector count upper byte.
-  PXE_UINT8   reserved1;      ///< zero, not used.
-  PXE_UINT32  Implementation; ///< Implementation flags.
-  PXE_UINT64  EntryPoint;     ///< API entry point.
-  PXE_UINT8   reserved2[3];   ///< zero, not used.
-  PXE_UINT8   BusCnt;         ///< number of bustypes supported.
-  PXE_UINT32  BusType[1];     ///< list of supported bustypes.
+  PXE_UINT32    Signature;      ///< PXE_ROMID_SIGNATURE.
+  PXE_UINT8     Len;            ///< sizeof(PXE_SW_UNDI).
+  PXE_UINT8     Fudge;          ///< makes 8-bit cksum zero.
+  PXE_UINT8     Rev;            ///< PXE_ROMID_REV.
+  PXE_UINT8     IFcnt;          ///< physical connector count lower byte.
+  PXE_UINT8     MajorVer;       ///< PXE_ROMID_MAJORVER.
+  PXE_UINT8     MinorVer;       ///< PXE_ROMID_MINORVER.
+  PXE_UINT8     IFcntExt;       ///< physical connector count upper byte.
+  PXE_UINT8     reserved1;      ///< zero, not used.
+  PXE_UINT32    Implementation; ///< Implementation flags.
+  PXE_UINT64    EntryPoint;     ///< API entry point.
+  PXE_UINT8     reserved2[3];   ///< zero, not used.
+  PXE_UINT8     BusCnt;         ///< number of bustypes supported.
+  PXE_UINT32    BusType[1];     ///< list of supported bustypes.
 } PXE_SW_UNDI;
 
 typedef union u_pxe_undi {
-  PXE_HW_UNDI hw;
-  PXE_SW_UNDI sw;
+  PXE_HW_UNDI    hw;
+  PXE_SW_UNDI    sw;
 } PXE_UNDI;
 
 ///
 /// Signature of !PXE structure.
 ///
-#define PXE_ROMID_SIGNATURE PXE_BUSTYPE ('!', 'P', 'X', 'E')
+#define PXE_ROMID_SIGNATURE  PXE_BUSTYPE ('!', 'P', 'X', 'E')
 
 ///
 /// !PXE structure format revision
-///.
-#define PXE_ROMID_REV 0x02
+/// .
+#define PXE_ROMID_REV  0x02
 
 ///
 /// UNDI command interface revision.  These are the values that get sent
 /// in option 94 (Client Network Interface Identifier) in the DHCP Discover
 /// and PXE Boot Server Request packets.
 ///
-#define PXE_ROMID_MAJORVER    0x03
-#define PXE_ROMID_MINORVER    0x01
+#define PXE_ROMID_MAJORVER  0x03
+#define PXE_ROMID_MINORVER  0x01
 
 ///
 /// Implementation flags.
@@ -880,21 +873,21 @@
 #define PXE_ROMID_IMP_CMD_COMPLETE_INT_SUPPORTED          0x00000001
 
 typedef struct s_pxe_cdb {
-  PXE_OPCODE    OpCode;
-  PXE_OPFLAGS   OpFlags;
-  PXE_UINT16    CPBsize;
-  PXE_UINT16    DBsize;
-  PXE_UINT64    CPBaddr;
-  PXE_UINT64    DBaddr;
-  PXE_STATCODE  StatCode;
-  PXE_STATFLAGS StatFlags;
-  PXE_UINT16    IFnum;
-  PXE_CONTROL   Control;
+  PXE_OPCODE       OpCode;
+  PXE_OPFLAGS      OpFlags;
+  PXE_UINT16       CPBsize;
+  PXE_UINT16       DBsize;
+  PXE_UINT64       CPBaddr;
+  PXE_UINT64       DBaddr;
+  PXE_STATCODE     StatCode;
+  PXE_STATFLAGS    StatFlags;
+  PXE_UINT16       IFnum;
+  PXE_CONTROL      Control;
 } PXE_CDB;
 
 typedef union u_pxe_ip_addr {
-  PXE_IPV6  IPv6;
-  PXE_IPV4  IPv4;
+  PXE_IPV6    IPv6;
+  PXE_IPV4    IPv4;
 } PXE_IP_ADDR;
 
 typedef union pxe_device {
@@ -909,26 +902,24 @@
     /// See S/W UNDI ROMID structure definition for PCI and
     /// PCC BusType definitions.
     ///
-    PXE_UINT32  BusType;
+    PXE_UINT32    BusType;
 
     ///
     /// Bus, device & function numbers that locate this device.
     ///
-    PXE_UINT16  Bus;
-    PXE_UINT8   Device;
-    PXE_UINT8   Function;
-  }
-  PCI, PCC;
-
+    PXE_UINT16    Bus;
+    PXE_UINT8     Device;
+    PXE_UINT8     Function;
+  } PCI, PCC;
 } PXE_DEVICE;
 
 ///
 /// cpb and db definitions
 ///
-#define MAX_PCI_CONFIG_LEN    64  ///< # of dwords.
-#define MAX_EEPROM_LEN        128 ///< # of dwords.
-#define MAX_XMIT_BUFFERS      32  ///< recycling Q length for xmit_done.
-#define MAX_MCAST_ADDRESS_CNT 8
+#define MAX_PCI_CONFIG_LEN     64  ///< # of dwords.
+#define MAX_EEPROM_LEN         128 ///< # of dwords.
+#define MAX_XMIT_BUFFERS       32  ///< recycling Q length for xmit_done.
+#define MAX_MCAST_ADDRESS_CNT  8
 
 typedef struct s_pxe_cpb_start_30 {
   ///
@@ -941,7 +932,7 @@
   ///
   /// This field cannot be set to zero.
   ///
-  UINT64  Delay;
+  UINT64    Delay;
 
   ///
   /// PXE_VOID Block(UINT32 enable);
@@ -957,7 +948,7 @@
   ///
   /// This field cannot be set to zero.
   ///
-  UINT64  Block;
+  UINT64    Block;
 
   ///
   /// PXE_VOID Virt2Phys(UINT64 virtual, UINT64 physical_ptr);
@@ -971,7 +962,7 @@
   /// This field can be set to zero if virtual and physical addresses
   /// are equal.
   ///
-  UINT64  Virt2Phys;
+  UINT64    Virt2Phys;
   ///
   /// PXE_VOID Mem_IO(UINT8 read_write, UINT8 len, UINT64 port,
   ///              UINT64 buf_addr);
@@ -982,7 +973,7 @@
   ///
   /// This field can not be set to zero.
   ///
-  UINT64  Mem_IO;
+  UINT64    Mem_IO;
 } PXE_CPB_START_30;
 
 typedef struct s_pxe_cpb_start_31 {
@@ -996,7 +987,7 @@
   ///
   /// This field cannot be set to zero.
   ///
-  UINT64  Delay;
+  UINT64    Delay;
 
   ///
   /// PXE_VOID Block(UINT64 unq_id, UINT32 enable);
@@ -1012,7 +1003,7 @@
   ///
   /// This field cannot be set to zero.
   ///
-  UINT64  Block;
+  UINT64    Block;
 
   ///
   /// PXE_VOID Virt2Phys(UINT64 UnqId, UINT64 virtual, UINT64 physical_ptr);
@@ -1026,7 +1017,7 @@
   /// This field can be set to zero if virtual and physical addresses
   /// are equal.
   ///
-  UINT64  Virt2Phys;
+  UINT64    Virt2Phys;
   ///
   /// PXE_VOID Mem_IO(UINT64 UnqId, UINT8 read_write, UINT8 len, UINT64 port,
   ///              UINT64 buf_addr);
@@ -1037,7 +1028,7 @@
   ///
   /// This field can not be set to zero.
   ///
-  UINT64  Mem_IO;
+  UINT64    Mem_IO;
   ///
   /// PXE_VOID Map_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size,
   ///                 UINT32 Direction, UINT64 mapped_addr);
@@ -1054,7 +1045,7 @@
   ///
   /// This field can be set to zero if there is no mapping service available.
   ///
-  UINT64  Map_Mem;
+  UINT64    Map_Mem;
 
   ///
   /// PXE_VOID UnMap_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size,
@@ -1065,7 +1056,7 @@
   ///
   /// This field can be set to zero if there is no unmapping service available.
   ///
-  UINT64  UnMap_Mem;
+  UINT64    UnMap_Mem;
 
   ///
   /// PXE_VOID Sync_Mem(UINT64 unq_id, UINT64 virtual,
@@ -1077,7 +1068,7 @@
   ///
   /// This field can be set to zero if there is no service available.
   ///
-  UINT64  Sync_Mem;
+  UINT64    Sync_Mem;
 
   ///
   /// protocol driver can provide anything for this Unique_ID, UNDI remembers
@@ -1085,19 +1076,19 @@
   /// the ifnum and gives it back as a parameter to all the call-back routines
   /// when calling for that interface!
   ///
-  UINT64  Unique_ID;
+  UINT64    Unique_ID;
 } PXE_CPB_START_31;
 
-#define TO_AND_FROM_DEVICE    0
-#define FROM_DEVICE           1
-#define TO_DEVICE             2
+#define TO_AND_FROM_DEVICE  0
+#define FROM_DEVICE         1
+#define TO_DEVICE           2
 
-#define PXE_DELAY_MILLISECOND 1000
-#define PXE_DELAY_SECOND      1000000
-#define PXE_IO_READ           0
-#define PXE_IO_WRITE          1
-#define PXE_MEM_READ          2
-#define PXE_MEM_WRITE         4
+#define PXE_DELAY_MILLISECOND  1000
+#define PXE_DELAY_SECOND       1000000
+#define PXE_IO_READ            0
+#define PXE_IO_WRITE           1
+#define PXE_MEM_READ           2
+#define PXE_MEM_WRITE          4
 
 typedef struct s_pxe_db_get_init_info {
   ///
@@ -1108,47 +1099,47 @@
   /// If MemoryRequired is zero, the UNDI does not need and will not
   /// use system memory to receive and transmit packets.
   ///
-  PXE_UINT32  MemoryRequired;
+  PXE_UINT32    MemoryRequired;
 
   ///
   /// Maximum frame data length for Tx/Rx excluding the media header.
   ///
-  PXE_UINT32  FrameDataLen;
+  PXE_UINT32    FrameDataLen;
 
   ///
   /// Supported link speeds are in units of mega bits.  Common ethernet
   /// values are 10, 100 and 1000.  Unused LinkSpeeds[] entries are zero
   /// filled.
   ///
-  PXE_UINT32  LinkSpeeds[4];
+  PXE_UINT32    LinkSpeeds[4];
 
   ///
   /// Number of non-volatile storage items.
   ///
-  PXE_UINT32  NvCount;
+  PXE_UINT32    NvCount;
 
   ///
   /// Width of non-volatile storage item in bytes.  0, 1, 2 or 4
   ///
-  PXE_UINT16  NvWidth;
+  PXE_UINT16    NvWidth;
 
   ///
   /// Media header length.  This is the typical media header length for
   /// this UNDI.  This information is needed when allocating receive
   /// and transmit buffers.
   ///
-  PXE_UINT16  MediaHeaderLen;
+  PXE_UINT16    MediaHeaderLen;
 
   ///
   /// Number of bytes in the NIC hardware (MAC) address.
   ///
-  PXE_UINT16  HWaddrLen;
+  PXE_UINT16    HWaddrLen;
 
   ///
   /// Maximum number of multicast MAC addresses in the multicast
   /// MAC address filter list.
   ///
-  PXE_UINT16  MCastFilterCnt;
+  PXE_UINT16    MCastFilterCnt;
 
   ///
   /// Default number and size of transmit and receive buffers that will
@@ -1157,63 +1148,63 @@
   /// command.  If MemoryRequired is zero, this allocation will come out of
   /// memory on the NIC.
   ///
-  PXE_UINT16  TxBufCnt;
-  PXE_UINT16  TxBufSize;
-  PXE_UINT16  RxBufCnt;
-  PXE_UINT16  RxBufSize;
+  PXE_UINT16    TxBufCnt;
+  PXE_UINT16    TxBufSize;
+  PXE_UINT16    RxBufCnt;
+  PXE_UINT16    RxBufSize;
 
   ///
   /// Hardware interface types defined in the Assigned Numbers RFC
   /// and used in DHCP and ARP packets.
   /// See the PXE_IFTYPE typedef and PXE_IFTYPE_xxx macros.
   ///
-  PXE_UINT8   IFtype;
+  PXE_UINT8     IFtype;
 
   ///
   /// Supported duplex.  See PXE_DUPLEX_xxxxx #defines below.
   ///
-  PXE_UINT8   SupportedDuplexModes;
+  PXE_UINT8     SupportedDuplexModes;
 
   ///
   /// Supported loopback options.  See PXE_LOOPBACK_xxxxx #defines below.
   ///
-  PXE_UINT8   SupportedLoopBackModes;
+  PXE_UINT8     SupportedLoopBackModes;
 } PXE_DB_GET_INIT_INFO;
 
-#define PXE_MAX_TXRX_UNIT_ETHER           1500
+#define PXE_MAX_TXRX_UNIT_ETHER  1500
 
-#define PXE_HWADDR_LEN_ETHER              0x0006
-#define PXE_MAC_HEADER_LEN_ETHER          0x000E
+#define PXE_HWADDR_LEN_ETHER      0x0006
+#define PXE_MAC_HEADER_LEN_ETHER  0x000E
 
 #define PXE_DUPLEX_ENABLE_FULL_SUPPORTED  1
 #define PXE_DUPLEX_FORCE_FULL_SUPPORTED   2
 
-#define PXE_LOOPBACK_INTERNAL_SUPPORTED   1
-#define PXE_LOOPBACK_EXTERNAL_SUPPORTED   2
+#define PXE_LOOPBACK_INTERNAL_SUPPORTED  1
+#define PXE_LOOPBACK_EXTERNAL_SUPPORTED  2
 
 typedef struct s_pxe_pci_config_info {
   ///
   /// This is the flag field for the PXE_DB_GET_CONFIG_INFO union.
   /// For PCI bus devices, this field is set to PXE_BUSTYPE_PCI.
   ///
-  UINT32  BusType;
+  UINT32    BusType;
 
   ///
   /// This identifies the PCI network device that this UNDI interface.
   /// is bound to.
   ///
-  UINT16  Bus;
-  UINT8   Device;
-  UINT8   Function;
+  UINT16    Bus;
+  UINT8     Device;
+  UINT8     Function;
 
   ///
   /// This is a copy of the PCI configuration space for this
   /// network device.
   ///
   union {
-    UINT8   Byte[256];
-    UINT16  Word[128];
-    UINT32  Dword[64];
+    UINT8     Byte[256];
+    UINT16    Word[128];
+    UINT32    Dword[64];
   } Config;
 } PXE_PCI_CONFIG_INFO;
 
@@ -1222,30 +1213,30 @@
   /// This is the flag field for the PXE_DB_GET_CONFIG_INFO union.
   /// For PCC bus devices, this field is set to PXE_BUSTYPE_PCC.
   ///
-  PXE_UINT32  BusType;
+  PXE_UINT32    BusType;
 
   ///
   /// This identifies the PCC network device that this UNDI interface
   /// is bound to.
   ///
-  PXE_UINT16  Bus;
-  PXE_UINT8   Device;
-  PXE_UINT8   Function;
+  PXE_UINT16    Bus;
+  PXE_UINT8     Device;
+  PXE_UINT8     Function;
 
   ///
   /// This is a copy of the PCC configuration space for this
   /// network device.
   ///
   union {
-    PXE_UINT8   Byte[256];
-    PXE_UINT16  Word[128];
-    PXE_UINT32  Dword[64];
+    PXE_UINT8     Byte[256];
+    PXE_UINT16    Word[128];
+    PXE_UINT32    Dword[64];
   } Config;
 } PXE_PCC_CONFIG_INFO;
 
 typedef union u_pxe_db_get_config_info {
-  PXE_PCI_CONFIG_INFO   pci;
-  PXE_PCC_CONFIG_INFO   pcc;
+  PXE_PCI_CONFIG_INFO    pci;
+  PXE_PCC_CONFIG_INFO    pcc;
 } PXE_DB_GET_CONFIG_INFO;
 
 typedef struct s_pxe_cpb_initialize {
@@ -1254,20 +1245,20 @@
   /// be in contiguous physical memory and cannot be swapped out.  The UNDI
   /// will be using this for transmit and receive buffering.
   ///
-  PXE_UINT64  MemoryAddr;
+  PXE_UINT64    MemoryAddr;
 
   ///
   /// MemoryLength must be greater than or equal to MemoryRequired
   /// returned by the Get Init Info command.
   ///
-  PXE_UINT32  MemoryLength;
+  PXE_UINT32    MemoryLength;
 
   ///
   /// Desired link speed in Mbit/sec.  Common ethernet values are 10, 100
   /// and 1000.  Setting a value of zero will auto-detect and/or use the
   /// default link speed (operation depends on UNDI/NIC functionality).
   ///
-  PXE_UINT32  LinkSpeed;
+  PXE_UINT32    LinkSpeed;
 
   ///
   /// Suggested number and size of receive and transmit buffers to
@@ -1279,29 +1270,29 @@
   /// If these fields are set to zero, the UNDI will allocate buffer
   /// counts and sizes as it sees fit.
   ///
-  PXE_UINT16  TxBufCnt;
-  PXE_UINT16  TxBufSize;
-  PXE_UINT16  RxBufCnt;
-  PXE_UINT16  RxBufSize;
+  PXE_UINT16    TxBufCnt;
+  PXE_UINT16    TxBufSize;
+  PXE_UINT16    RxBufCnt;
+  PXE_UINT16    RxBufSize;
 
   ///
   /// The following configuration parameters are optional and must be zero
   /// to use the default values.
   ///
-  PXE_UINT8   DuplexMode;
+  PXE_UINT8     DuplexMode;
 
-  PXE_UINT8   LoopBackMode;
+  PXE_UINT8     LoopBackMode;
 } PXE_CPB_INITIALIZE;
 
-#define PXE_DUPLEX_DEFAULT      0x00
-#define PXE_FORCE_FULL_DUPLEX   0x01
-#define PXE_ENABLE_FULL_DUPLEX  0x02
-#define PXE_FORCE_HALF_DUPLEX   0x04
-#define PXE_DISABLE_FULL_DUPLEX 0x08
+#define PXE_DUPLEX_DEFAULT       0x00
+#define PXE_FORCE_FULL_DUPLEX    0x01
+#define PXE_ENABLE_FULL_DUPLEX   0x02
+#define PXE_FORCE_HALF_DUPLEX    0x04
+#define PXE_DISABLE_FULL_DUPLEX  0x08
 
-#define LOOPBACK_NORMAL         0
-#define LOOPBACK_INTERNAL       1
-#define LOOPBACK_EXTERNAL       2
+#define LOOPBACK_NORMAL    0
+#define LOOPBACK_INTERNAL  1
+#define LOOPBACK_EXTERNAL  2
 
 typedef struct s_pxe_db_initialize {
   ///
@@ -1312,16 +1303,16 @@
   /// Memory used by the UNDI and network device is allocated from the
   /// lowest memory buffer address.
   ///
-  PXE_UINT32  MemoryUsed;
+  PXE_UINT32    MemoryUsed;
 
   ///
   /// Actual number and size of receive and transmit buffers that were
   /// allocated.
   ///
-  PXE_UINT16  TxBufCnt;
-  PXE_UINT16  TxBufSize;
-  PXE_UINT16  RxBufCnt;
-  PXE_UINT16  RxBufSize;
+  PXE_UINT16    TxBufCnt;
+  PXE_UINT16    TxBufSize;
+  PXE_UINT16    RxBufCnt;
+  PXE_UINT16    RxBufSize;
 } PXE_DB_INITIALIZE;
 
 typedef struct s_pxe_cpb_receive_filters {
@@ -1329,14 +1320,14 @@
   /// List of multicast MAC addresses.  This list, if present, will
   /// replace the existing multicast MAC address filter list.
   ///
-  PXE_MAC_ADDR  MCastList[MAX_MCAST_ADDRESS_CNT];
+  PXE_MAC_ADDR    MCastList[MAX_MCAST_ADDRESS_CNT];
 } PXE_CPB_RECEIVE_FILTERS;
 
 typedef struct s_pxe_db_receive_filters {
   ///
   /// Filtered multicast MAC address list.
   ///
-  PXE_MAC_ADDR  MCastList[MAX_MCAST_ADDRESS_CNT];
+  PXE_MAC_ADDR    MCastList[MAX_MCAST_ADDRESS_CNT];
 } PXE_DB_RECEIVE_FILTERS;
 
 typedef struct s_pxe_cpb_station_address {
@@ -1344,24 +1335,24 @@
   /// If supplied and supported, the current station MAC address
   /// will be changed.
   ///
-  PXE_MAC_ADDR  StationAddr;
+  PXE_MAC_ADDR    StationAddr;
 } PXE_CPB_STATION_ADDRESS;
 
 typedef struct s_pxe_dpb_station_address {
   ///
   /// Current station MAC address.
   ///
-  PXE_MAC_ADDR  StationAddr;
+  PXE_MAC_ADDR    StationAddr;
 
   ///
   /// Station broadcast MAC address.
   ///
-  PXE_MAC_ADDR  BroadcastAddr;
+  PXE_MAC_ADDR    BroadcastAddr;
 
   ///
   /// Permanent station MAC address.
   ///
-  PXE_MAC_ADDR  PermanentAddr;
+  PXE_MAC_ADDR    PermanentAddr;
 } PXE_DB_STATION_ADDRESS;
 
 typedef struct s_pxe_db_statistics {
@@ -1374,12 +1365,12 @@
   /// If bit 0x21 is set, Data[0x21] is collected.
   /// Etc.
   ///
-  PXE_UINT64  Supported;
+  PXE_UINT64    Supported;
 
   ///
   /// Statistic data.
   ///
-  PXE_UINT64  Data[64];
+  PXE_UINT64    Data[64];
 } PXE_DB_STATISTICS;
 
 ///
@@ -1391,7 +1382,7 @@
 ///
 /// Number of valid frames received and copied into receive buffers.
 ///
-#define PXE_STATISTICS_RX_GOOD_FRAMES 0x01
+#define PXE_STATISTICS_RX_GOOD_FRAMES  0x01
 
 ///
 /// Number of frames below the minimum length for the media.
@@ -1403,7 +1394,7 @@
 /// Number of frames longer than the maxminum length for the
 /// media.  This would be >1500 for ethernet.
 ///
-#define PXE_STATISTICS_RX_OVERSIZE_FRAMES 0x03
+#define PXE_STATISTICS_RX_OVERSIZE_FRAMES  0x03
 
 ///
 /// Valid frames that were dropped because receive buffers were full.
@@ -1434,7 +1425,7 @@
 /// Total number of bytes received.  Includes frames with errors
 /// and dropped frames.
 ///
-#define PXE_STATISTICS_RX_TOTAL_BYTES 0x09
+#define PXE_STATISTICS_RX_TOTAL_BYTES  0x09
 
 ///
 /// Transmit statistics.
@@ -1453,45 +1444,45 @@
 ///
 /// Number of collisions detection on this subnet.
 ///
-#define PXE_STATISTICS_COLLISIONS 0x14
+#define PXE_STATISTICS_COLLISIONS  0x14
 
 ///
 /// Number of frames destined for unsupported protocol.
 ///
-#define PXE_STATISTICS_UNSUPPORTED_PROTOCOL 0x15
+#define PXE_STATISTICS_UNSUPPORTED_PROTOCOL  0x15
 
 ///
 /// Number of valid frames received that were duplicated.
 ///
-#define PXE_STATISTICS_RX_DUPLICATED_FRAMES 0x16
+#define PXE_STATISTICS_RX_DUPLICATED_FRAMES  0x16
 
 ///
 /// Number of encrypted frames received that failed to decrypt.
 ///
-#define PXE_STATISTICS_RX_DECRYPT_ERROR_FRAMES 0x17
+#define PXE_STATISTICS_RX_DECRYPT_ERROR_FRAMES  0x17
 
 ///
 /// Number of frames that failed to transmit after exceeding the retry limit.
 ///
-#define PXE_STATISTICS_TX_ERROR_FRAMES 0x18
+#define PXE_STATISTICS_TX_ERROR_FRAMES  0x18
 
 ///
 /// Number of frames transmitted successfully after more than one attempt.
 ///
-#define PXE_STATISTICS_TX_RETRY_FRAMES 0x19
+#define PXE_STATISTICS_TX_RETRY_FRAMES  0x19
 
 typedef struct s_pxe_cpb_mcast_ip_to_mac {
   ///
   /// Multicast IP address to be converted to multicast MAC address.
   ///
-  PXE_IP_ADDR IP;
+  PXE_IP_ADDR    IP;
 } PXE_CPB_MCAST_IP_TO_MAC;
 
 typedef struct s_pxe_db_mcast_ip_to_mac {
   ///
   /// Multicast MAC address.
   ///
-  PXE_MAC_ADDR  MAC;
+  PXE_MAC_ADDR    MAC;
 } PXE_DB_MCAST_IP_TO_MAC;
 
 typedef struct s_pxe_cpb_nvdata_sparse {
@@ -1502,15 +1493,15 @@
     ///
     ///  Non-volatile storage address to be changed.
     ///
-    PXE_UINT32  Addr;
+    PXE_UINT32    Addr;
 
     ///
     /// Data item to write into above storage address.
     ///
     union {
-      PXE_UINT8   Byte;
-      PXE_UINT16  Word;
-      PXE_UINT32  Dword;
+      PXE_UINT8     Byte;
+      PXE_UINT16    Word;
+      PXE_UINT32    Dword;
     } Data;
   } Item[MAX_EEPROM_LEN];
 } PXE_CPB_NVDATA_SPARSE;
@@ -1523,17 +1514,17 @@
   ///
   /// Array of byte-wide data items.
   ///
-  PXE_UINT8   Byte[MAX_EEPROM_LEN << 2];
+  PXE_UINT8     Byte[MAX_EEPROM_LEN << 2];
 
   ///
   /// Array of word-wide data items.
   ///
-  PXE_UINT16  Word[MAX_EEPROM_LEN << 1];
+  PXE_UINT16    Word[MAX_EEPROM_LEN << 1];
 
   ///
   /// Array of dword-wide data items.
   ///
-  PXE_UINT32  Dword[MAX_EEPROM_LEN];
+  PXE_UINT32    Dword[MAX_EEPROM_LEN];
 } PXE_CPB_NVDATA_BULK;
 
 typedef struct s_pxe_db_nvdata {
@@ -1544,17 +1535,17 @@
     ///
     /// Array of byte-wide data items.
     ///
-    PXE_UINT8   Byte[MAX_EEPROM_LEN << 2];
+    PXE_UINT8     Byte[MAX_EEPROM_LEN << 2];
 
     ///
     /// Array of word-wide data items.
     ///
-    PXE_UINT16  Word[MAX_EEPROM_LEN << 1];
+    PXE_UINT16    Word[MAX_EEPROM_LEN << 1];
 
     ///
     /// Array of dword-wide data items.
     ///
-    PXE_UINT32  Dword[MAX_EEPROM_LEN];
+    PXE_UINT32    Dword[MAX_EEPROM_LEN];
   } Data;
 } PXE_DB_NVDATA;
 
@@ -1563,17 +1554,17 @@
   /// Length of next receive frame (header + data).  If this is zero,
   /// there is no next receive frame available.
   ///
-  PXE_UINT32  RxFrameLen;
+  PXE_UINT32    RxFrameLen;
 
   ///
   /// Reserved, set to zero.
   ///
-  PXE_UINT32  reserved;
+  PXE_UINT32    reserved;
 
   ///
   ///  Addresses of transmitted buffers that need to be recycled.
   ///
-  PXE_UINT64  TxBuffer[MAX_XMIT_BUFFERS];
+  PXE_UINT64    TxBuffer[MAX_XMIT_BUFFERS];
 } PXE_DB_GET_STATUS;
 
 typedef struct s_pxe_cpb_fill_header {
@@ -1581,71 +1572,71 @@
   /// Source and destination MAC addresses.  These will be copied into
   /// the media header without doing byte swapping.
   ///
-  PXE_MAC_ADDR  SrcAddr;
-  PXE_MAC_ADDR  DestAddr;
+  PXE_MAC_ADDR    SrcAddr;
+  PXE_MAC_ADDR    DestAddr;
 
   ///
   /// Address of first byte of media header.  The first byte of packet data
   /// follows the last byte of the media header.
   ///
-  PXE_UINT64        MediaHeader;
+  PXE_UINT64      MediaHeader;
 
   ///
   /// Length of packet data in bytes (not including the media header).
   ///
-  PXE_UINT32        PacketLen;
+  PXE_UINT32      PacketLen;
 
   ///
   /// Protocol type.  This will be copied into the media header without
   /// doing byte swapping.  Protocol type numbers can be obtained from
   /// the Assigned Numbers RFC 1700.
   ///
-  PXE_UINT16        Protocol;
+  PXE_UINT16      Protocol;
 
   ///
   /// Length of the media header in bytes.
   ///
-  PXE_UINT16        MediaHeaderLen;
+  PXE_UINT16      MediaHeaderLen;
 } PXE_CPB_FILL_HEADER;
 
-#define PXE_PROTOCOL_ETHERNET_IP  0x0800
-#define PXE_PROTOCOL_ETHERNET_ARP 0x0806
-#define MAX_XMIT_FRAGMENTS        16
+#define PXE_PROTOCOL_ETHERNET_IP   0x0800
+#define PXE_PROTOCOL_ETHERNET_ARP  0x0806
+#define MAX_XMIT_FRAGMENTS         16
 
 typedef struct s_pxe_cpb_fill_header_fragmented {
   ///
   /// Source and destination MAC addresses.  These will be copied into
   /// the media header without doing byte swapping.
   ///
-  PXE_MAC_ADDR        SrcAddr;
-  PXE_MAC_ADDR        DestAddr;
+  PXE_MAC_ADDR          SrcAddr;
+  PXE_MAC_ADDR          DestAddr;
 
   ///
   /// Length of packet data in bytes (not including the media header).
   ///
-  PXE_UINT32          PacketLen;
+  PXE_UINT32            PacketLen;
 
   ///
   /// Protocol type.  This will be copied into the media header without
   /// doing byte swapping.  Protocol type numbers can be obtained from
   /// the Assigned Numbers RFC 1700.
   ///
-  PXE_MEDIA_PROTOCOL  Protocol;
+  PXE_MEDIA_PROTOCOL    Protocol;
 
   ///
   /// Length of the media header in bytes.
   ///
-  PXE_UINT16          MediaHeaderLen;
+  PXE_UINT16            MediaHeaderLen;
 
   ///
   /// Number of packet fragment descriptors.
   ///
-  PXE_UINT16          FragCnt;
+  PXE_UINT16            FragCnt;
 
   ///
   /// Reserved, must be set to zero.
   ///
-  PXE_UINT16          reserved;
+  PXE_UINT16            reserved;
 
   ///
   /// Array of packet fragment descriptors.  The first byte of the media
@@ -1655,60 +1646,59 @@
     ///
     /// Address of this packet fragment.
     ///
-    PXE_UINT64  FragAddr;
+    PXE_UINT64    FragAddr;
 
     ///
     /// Length of this packet fragment.
     ///
-    PXE_UINT32  FragLen;
+    PXE_UINT32    FragLen;
 
     ///
     /// Reserved, must be set to zero.
     ///
-    PXE_UINT32  reserved;
+    PXE_UINT32    reserved;
   } FragDesc[MAX_XMIT_FRAGMENTS];
-}
-PXE_CPB_FILL_HEADER_FRAGMENTED;
+} PXE_CPB_FILL_HEADER_FRAGMENTED;
 
 typedef struct s_pxe_cpb_transmit {
   ///
   /// Address of first byte of frame buffer.  This is also the first byte
   /// of the media header.
   ///
-  PXE_UINT64  FrameAddr;
+  PXE_UINT64    FrameAddr;
 
   ///
   /// Length of the data portion of the frame buffer in bytes.  Do not
   /// include the length of the media header.
   ///
-  PXE_UINT32  DataLen;
+  PXE_UINT32    DataLen;
 
   ///
   /// Length of the media header in bytes.
   ///
-  PXE_UINT16  MediaheaderLen;
+  PXE_UINT16    MediaheaderLen;
 
   ///
   /// Reserved, must be zero.
   ///
-  PXE_UINT16  reserved;
+  PXE_UINT16    reserved;
 } PXE_CPB_TRANSMIT;
 
 typedef struct s_pxe_cpb_transmit_fragments {
   ///
   /// Length of packet data in bytes (not including the media header).
   ///
-  PXE_UINT32  FrameLen;
+  PXE_UINT32    FrameLen;
 
   ///
   /// Length of the media header in bytes.
   ///
-  PXE_UINT16  MediaheaderLen;
+  PXE_UINT16    MediaheaderLen;
 
   ///
   /// Number of packet fragment descriptors.
   ///
-  PXE_UINT16  FragCnt;
+  PXE_UINT16    FragCnt;
 
   ///
   /// Array of frame fragment descriptors.  The first byte of the first
@@ -1718,75 +1708,73 @@
     ///
     /// Address of this frame fragment.
     ///
-    PXE_UINT64  FragAddr;
+    PXE_UINT64    FragAddr;
 
     ///
     /// Length of this frame fragment.
     ///
-    PXE_UINT32  FragLen;
+    PXE_UINT32    FragLen;
 
     ///
     /// Reserved, must be set to zero.
     ///
-    PXE_UINT32  reserved;
+    PXE_UINT32    reserved;
   } FragDesc[MAX_XMIT_FRAGMENTS];
-}
-PXE_CPB_TRANSMIT_FRAGMENTS;
+} PXE_CPB_TRANSMIT_FRAGMENTS;
 
 typedef struct s_pxe_cpb_receive {
   ///
   /// Address of first byte of receive buffer.  This is also the first byte
   /// of the frame header.
   ///
-  PXE_UINT64  BufferAddr;
+  PXE_UINT64    BufferAddr;
 
   ///
   /// Length of receive buffer.  This must be large enough to hold the
   /// received frame (media header + data).  If the length of smaller than
   /// the received frame, data will be lost.
   ///
-  PXE_UINT32  BufferLen;
+  PXE_UINT32    BufferLen;
 
   ///
   /// Reserved, must be set to zero.
   ///
-  PXE_UINT32  reserved;
+  PXE_UINT32    reserved;
 } PXE_CPB_RECEIVE;
 
 typedef struct s_pxe_db_receive {
   ///
   /// Source and destination MAC addresses from media header.
   ///
-  PXE_MAC_ADDR        SrcAddr;
-  PXE_MAC_ADDR        DestAddr;
+  PXE_MAC_ADDR          SrcAddr;
+  PXE_MAC_ADDR          DestAddr;
 
   ///
   /// Length of received frame.  May be larger than receive buffer size.
   /// The receive buffer will not be overwritten.  This is how to tell
   /// if data was lost because the receive buffer was too small.
   ///
-  PXE_UINT32          FrameLen;
+  PXE_UINT32            FrameLen;
 
   ///
   /// Protocol type from media header.
   ///
-  PXE_MEDIA_PROTOCOL  Protocol;
+  PXE_MEDIA_PROTOCOL    Protocol;
 
   ///
   /// Length of media header in received frame.
   ///
-  PXE_UINT16          MediaHeaderLen;
+  PXE_UINT16            MediaHeaderLen;
 
   ///
   /// Type of receive frame.
   ///
-  PXE_FRAME_TYPE      Type;
+  PXE_FRAME_TYPE        Type;
 
   ///
   /// Reserved, must be zero.
   ///
-  PXE_UINT8           reserved[7];
-
+  PXE_UINT8             reserved[7];
 } PXE_DB_RECEIVE;
 
 #pragma pack()
diff --git a/src/include/ipxe/efi/Uefi/UefiSpec.h b/src/include/ipxe/efi/Uefi/UefiSpec.h
index 27edf43..3ef66da 100644
--- a/src/include/ipxe/efi/Uefi/UefiSpec.h
+++ b/src/include/ipxe/efi/Uefi/UefiSpec.h
@@ -1,25 +1,22 @@
 /** @file
   Include file that supports UEFI.
 
-  This include file must contain things defined in the UEFI 2.6 specification.
-  If a code construct is defined in the UEFI 2.6 specification it must be included
+  This include file must contain things defined in the UEFI 2.7 specification.
+  If a code construct is defined in the UEFI 2.7 specification it must be included
   by this include file.
 
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php.
+Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
+Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
+Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>
 
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __UEFI_SPEC_H__
 #define __UEFI_SPEC_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 #include <ipxe/efi/Uefi/UefiMultiPhase.h>
 
@@ -65,69 +62,103 @@
 //
 // Memory cacheability attributes
 //
-#define EFI_MEMORY_UC               0x0000000000000001ULL
-#define EFI_MEMORY_WC               0x0000000000000002ULL
-#define EFI_MEMORY_WT               0x0000000000000004ULL
-#define EFI_MEMORY_WB               0x0000000000000008ULL
-#define EFI_MEMORY_UCE              0x0000000000000010ULL
+#define EFI_MEMORY_UC   0x0000000000000001ULL
+#define EFI_MEMORY_WC   0x0000000000000002ULL
+#define EFI_MEMORY_WT   0x0000000000000004ULL
+#define EFI_MEMORY_WB   0x0000000000000008ULL
+#define EFI_MEMORY_UCE  0x0000000000000010ULL
 //
 // Physical memory protection attributes
 //
 // Note: UEFI spec 2.5 and following: use EFI_MEMORY_RO as write-protected physical memory
 // protection attribute. Also, EFI_MEMORY_WP means cacheability attribute.
 //
-#define EFI_MEMORY_WP               0x0000000000001000ULL
-#define EFI_MEMORY_RP               0x0000000000002000ULL
-#define EFI_MEMORY_XP               0x0000000000004000ULL
-#define EFI_MEMORY_RO               0x0000000000020000ULL
+#define EFI_MEMORY_WP  0x0000000000001000ULL
+#define EFI_MEMORY_RP  0x0000000000002000ULL
+#define EFI_MEMORY_XP  0x0000000000004000ULL
+#define EFI_MEMORY_RO  0x0000000000020000ULL
 //
 // Physical memory persistence attribute.
 // The memory region supports byte-addressable non-volatility.
 //
-#define EFI_MEMORY_NV               0x0000000000008000ULL
+#define EFI_MEMORY_NV  0x0000000000008000ULL
 //
 // The memory region provides higher reliability relative to other memory in the system.
 // If all memory has the same reliability, then this bit is not used.
 //
-#define EFI_MEMORY_MORE_RELIABLE    0x0000000000010000ULL
+#define EFI_MEMORY_MORE_RELIABLE  0x0000000000010000ULL
+
+//
+// Note: UEFI spec 2.8 and following:
+//
+// Specific-purpose memory (SPM). The memory is earmarked for
+// specific purposes such as for specific device drivers or applications.
+// The SPM attribute serves as a hint to the OS to avoid allocating this
+// memory for core OS data or code that can not be relocated.
+//
+#define EFI_MEMORY_SP  0x0000000000040000ULL
+//
+// If this flag is set, the memory region is capable of being
+// protected with the CPU's memory cryptographic
+// capabilities. If this flag is clear, the memory region is not
+// capable of being protected with the CPU's memory
+// cryptographic capabilities or the CPU does not support CPU
+// memory cryptographic capabilities.
+//
+#define EFI_MEMORY_CPU_CRYPTO  0x0000000000080000ULL
+
 //
 // Runtime memory attribute
 //
-#define EFI_MEMORY_RUNTIME          0x8000000000000000ULL
+#define EFI_MEMORY_RUNTIME  0x8000000000000000ULL
+
+//
+// Attributes bitmasks, grouped by type
+//
+#define EFI_CACHE_ATTRIBUTE_MASK   (EFI_MEMORY_UC | EFI_MEMORY_WC | EFI_MEMORY_WT | EFI_MEMORY_WB | EFI_MEMORY_UCE | EFI_MEMORY_WP)
+#define EFI_MEMORY_ACCESS_MASK     (EFI_MEMORY_RP | EFI_MEMORY_XP | EFI_MEMORY_RO)
+#define EFI_MEMORY_ATTRIBUTE_MASK  (EFI_MEMORY_ACCESS_MASK | EFI_MEMORY_SP | EFI_MEMORY_CPU_CRYPTO)
 
 ///
 /// Memory descriptor version number.
 ///
-#define EFI_MEMORY_DESCRIPTOR_VERSION 1
+#define EFI_MEMORY_DESCRIPTOR_VERSION  1
 
 ///
 /// Definition of an EFI memory descriptor.
 ///
 typedef struct {
   ///
-  /// Type of the memory region.  See EFI_MEMORY_TYPE.
+  /// Type of the memory region.
+  /// Type EFI_MEMORY_TYPE is defined in the
+  /// AllocatePages() function description.
   ///
-  UINT32                Type;
+  UINT32                  Type;
   ///
-  /// Physical address of the first byte of the memory region.  Must aligned
-  /// on a 4 KB boundary.
+  /// Physical address of the first byte in the memory region. PhysicalStart must be
+  /// aligned on a 4 KiB boundary, and must not be above 0xfffffffffffff000. Type
+  /// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function description
   ///
-  EFI_PHYSICAL_ADDRESS  PhysicalStart;
+  EFI_PHYSICAL_ADDRESS    PhysicalStart;
   ///
-  /// Virtual address of the first byte of the memory region.  Must aligned
-  /// on a 4 KB boundary.
+  /// Virtual address of the first byte in the memory region.
+  /// VirtualStart must be aligned on a 4 KiB boundary,
+  /// and must not be above 0xfffffffffffff000.
   ///
-  EFI_VIRTUAL_ADDRESS   VirtualStart;
+  EFI_VIRTUAL_ADDRESS     VirtualStart;
   ///
-  /// Number of 4KB pages in the memory region.
+  /// NumberOfPagesNumber of 4 KiB pages in the memory region.
+  /// NumberOfPages must not be 0, and must not be any value
+  /// that would represent a memory page with a start address,
+  /// either physical or virtual, above 0xfffffffffffff000.
   ///
-  UINT64                NumberOfPages;
+  UINT64                  NumberOfPages;
   ///
   /// Attributes of the memory region that describe the bit mask of capabilities
   /// for that memory region, and not necessarily the current settings for that
   /// memory region.
   ///
-  UINT64                Attribute;
+  UINT64                  Attribute;
 } EFI_MEMORY_DESCRIPTOR;
 
 /**
@@ -190,7 +221,7 @@
                                          On output, it is the size of the buffer returned by the firmware if
                                          the buffer was large enough, or the size of the buffer needed to contain
                                          the map if the buffer was too small.
-  @param[in, out]  MemoryMap             A pointer to the buffer in which firmware places the current memory
+  @param[out]      MemoryMap             A pointer to the buffer in which firmware places the current memory
                                          map.
   @param[out]      MapKey                A pointer to the location in which firmware returns the key for the
                                          current memory map.
@@ -211,7 +242,7 @@
 EFI_STATUS
 (EFIAPI *EFI_GET_MEMORY_MAP)(
   IN OUT UINTN                       *MemoryMapSize,
-  IN OUT EFI_MEMORY_DESCRIPTOR       *MemoryMap,
+  OUT    EFI_MEMORY_DESCRIPTOR       *MemoryMap,
   OUT    UINTN                       *MapKey,
   OUT    UINTN                       *DescriptorSize,
   OUT    UINT32                      *DescriptorVersion
@@ -316,8 +347,8 @@
 EFI_STATUS
 (EFIAPI *EFI_CONNECT_CONTROLLER)(
   IN  EFI_HANDLE                    ControllerHandle,
-  IN  EFI_HANDLE                    *DriverImageHandle,   OPTIONAL
-  IN  EFI_DEVICE_PATH_PROTOCOL      *RemainingDevicePath, OPTIONAL
+  IN  EFI_HANDLE                    *DriverImageHandle    OPTIONAL,
+  IN  EFI_DEVICE_PATH_PROTOCOL      *RemainingDevicePath  OPTIONAL,
   IN  BOOLEAN                       Recursive
   );
 
@@ -349,16 +380,14 @@
 EFI_STATUS
 (EFIAPI *EFI_DISCONNECT_CONTROLLER)(
   IN  EFI_HANDLE                     ControllerHandle,
-  IN  EFI_HANDLE                     DriverImageHandle, OPTIONAL
+  IN  EFI_HANDLE                     DriverImageHandle  OPTIONAL,
   IN  EFI_HANDLE                     ChildHandle        OPTIONAL
   );
 
-
-
 //
 // ConvertPointer DebugDisposition type.
 //
-#define EFI_OPTIONAL_PTR     0x00000001
+#define EFI_OPTIONAL_PTR  0x00000001
 
 /**
   Determines the new virtual address that is to be used on subsequent memory accesses.
@@ -382,27 +411,25 @@
   IN OUT VOID                       **Address
   );
 
-
 //
 // These types can be ORed together as needed - for example,
 // EVT_TIMER might be Ored with EVT_NOTIFY_WAIT or
 // EVT_NOTIFY_SIGNAL.
 //
-#define EVT_TIMER                         0x80000000
-#define EVT_RUNTIME                       0x40000000
-#define EVT_NOTIFY_WAIT                   0x00000100
-#define EVT_NOTIFY_SIGNAL                 0x00000200
+#define EVT_TIMER          0x80000000
+#define EVT_RUNTIME        0x40000000
+#define EVT_NOTIFY_WAIT    0x00000100
+#define EVT_NOTIFY_SIGNAL  0x00000200
 
-#define EVT_SIGNAL_EXIT_BOOT_SERVICES     0x00000201
-#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202
+#define EVT_SIGNAL_EXIT_BOOT_SERVICES      0x00000201
+#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE  0x60000202
 
 //
 // The event's NotifyContext pointer points to a runtime memory
 // address.
 // The event is deprecated in UEFI2.0 and later specifications.
 //
-#define EVT_RUNTIME_CONTEXT               0x20000000
-
+#define EVT_RUNTIME_CONTEXT  0x20000000
 
 /**
   Invoke a notification event
@@ -583,15 +610,13 @@
   IN EFI_EVENT                Event
   );
 
-
 //
 // Task priority level
 //
-#define TPL_APPLICATION       4
-#define TPL_CALLBACK          8
-#define TPL_NOTIFY            16
-#define TPL_HIGH_LEVEL        31
-
+#define TPL_APPLICATION  4
+#define TPL_CALLBACK     8
+#define TPL_NOTIFY       16
+#define TPL_HIGH_LEVEL   31
 
 /**
   Raises a task's priority level and returns its previous level.
@@ -648,7 +673,7 @@
 (EFIAPI *EFI_GET_VARIABLE)(
   IN     CHAR16                      *VariableName,
   IN     EFI_GUID                    *VendorGuid,
-  OUT    UINT32                      *Attributes,    OPTIONAL
+  OUT    UINT32                      *Attributes     OPTIONAL,
   IN OUT UINTN                       *DataSize,
   OUT    VOID                        *Data           OPTIONAL
   );
@@ -656,7 +681,8 @@
 /**
   Enumerates the current variable names.
 
-  @param[in, out]  VariableNameSize The size of the VariableName buffer.
+  @param[in, out]  VariableNameSize The size of the VariableName buffer. The size must be large
+                                    enough to fit input string supplied in VariableName buffer.
   @param[in, out]  VariableName     On input, supplies the last VariableName that was returned
                                     by GetNextVariableName(). On output, returns the Nullterminated
                                     string of the current variable.
@@ -667,9 +693,14 @@
   @retval EFI_SUCCESS           The function completed successfully.
   @retval EFI_NOT_FOUND         The next variable was not found.
   @retval EFI_BUFFER_TOO_SMALL  The VariableNameSize is too small for the result.
+                                VariableNameSize has been updated with the size needed to complete the request.
   @retval EFI_INVALID_PARAMETER VariableNameSize is NULL.
   @retval EFI_INVALID_PARAMETER VariableName is NULL.
   @retval EFI_INVALID_PARAMETER VendorGuid is NULL.
+  @retval EFI_INVALID_PARAMETER The input values of VariableName and VendorGuid are not a name and
+                                GUID of an existing variable.
+  @retval EFI_INVALID_PARAMETER Null-terminator is not found in the first VariableNameSize bytes of
+                                the input VariableName buffer.
   @retval EFI_DEVICE_ERROR      The variable could not be retrieved due to a hardware error.
 
 **/
@@ -690,8 +721,7 @@
                                  then EFI_INVALID_PARAMETER is returned.
   @param[in]  VendorGuid         A unique identifier for the vendor.
   @param[in]  Attributes         Attributes bitmask to set for the variable.
-  @param[in]  DataSize           The size in bytes of the Data buffer. Unless the EFI_VARIABLE_APPEND_WRITE,
-                                 EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS, or
+  @param[in]  DataSize           The size in bytes of the Data buffer. Unless the EFI_VARIABLE_APPEND_WRITE or
                                  EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS attribute is set, a size of zero
                                  causes the variable to be deleted. When the EFI_VARIABLE_APPEND_WRITE attribute is
                                  set, then a SetVariable() call with a DataSize of zero will not cause any change to
@@ -710,9 +740,8 @@
   @retval EFI_DEVICE_ERROR       The variable could not be retrieved due to a hardware error.
   @retval EFI_WRITE_PROTECTED    The variable in question is read-only.
   @retval EFI_WRITE_PROTECTED    The variable in question cannot be deleted.
-  @retval EFI_SECURITY_VIOLATION The variable could not be written due to EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS
-                                 or EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACESS being set, but the AuthInfo
-                                 does NOT pass the validation check carried out by the firmware.
+  @retval EFI_SECURITY_VIOLATION The variable could not be written due to EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACESS being set,
+                                 but the AuthInfo does NOT pass the validation check carried out by the firmware.
 
   @retval EFI_NOT_FOUND          The variable trying to be updated or deleted was not found.
 
@@ -727,7 +756,6 @@
   IN  VOID                         *Data
   );
 
-
 ///
 /// This provides the capabilities of the
 /// real time clock device as exposed through the EFI interfaces.
@@ -739,14 +767,14 @@
   /// value would be 1 Hz, or 1, to indicate that the device only reports
   /// the time to the resolution of 1 second.
   ///
-  UINT32    Resolution;
+  UINT32     Resolution;
   ///
   /// Provides the timekeeping accuracy of the real-time clock in an
   /// error rate of 1E-6 parts per million. For a clock with an accuracy
   /// of 50 parts per million, the value in this field would be
   /// 50,000,000.
   ///
-  UINT32    Accuracy;
+  UINT32     Accuracy;
   ///
   /// A TRUE indicates that a time set operation clears the device's
   /// time below the Resolution reporting level. A FALSE
@@ -754,7 +782,7 @@
   /// device is not cleared when the time is set. Normal PC-AT CMOS
   /// RTC devices set this value to FALSE.
   ///
-  BOOLEAN   SetsToZero;
+  BOOLEAN    SetsToZero;
 } EFI_TIME_CAPABILITIES;
 
 /**
@@ -1011,10 +1039,10 @@
                                 EfiResetShutdown the data buffer starts with a Null-terminated
                                 string, optionally followed by additional binary data.
                                 The string is a description that the caller may use to further
-                                indicate the reason for the system reset. ResetData is only
-                                valid if ResetStatus is something other than EFI_SUCCESS
-                                unless the ResetType is EfiResetPlatformSpecific
-                                where a minimum amount of ResetData is always required.
+                                indicate the reason for the system reset.
+                                For a ResetType of EfiResetPlatformSpecific the data buffer
+                                also starts with a Null-terminated string that is followed
+                                by an EFI_GUID that describes the specific type of reset to perform.
 **/
 typedef
 VOID
@@ -1267,12 +1295,12 @@
   OUT VOID                     **Interface
   );
 
-#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL  0x00000001
-#define EFI_OPEN_PROTOCOL_GET_PROTOCOL        0x00000002
-#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL       0x00000004
-#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
-#define EFI_OPEN_PROTOCOL_BY_DRIVER           0x00000010
-#define EFI_OPEN_PROTOCOL_EXCLUSIVE           0x00000020
+#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL   0x00000001
+#define EFI_OPEN_PROTOCOL_GET_PROTOCOL         0x00000002
+#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL        0x00000004
+#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER  0x00000008
+#define EFI_OPEN_PROTOCOL_BY_DRIVER            0x00000010
+#define EFI_OPEN_PROTOCOL_EXCLUSIVE            0x00000020
 
 /**
   Queries a handle to determine if it supports a specified protocol. If the protocol is supported by the
@@ -1306,13 +1334,12 @@
 (EFIAPI *EFI_OPEN_PROTOCOL)(
   IN  EFI_HANDLE                Handle,
   IN  EFI_GUID                  *Protocol,
-  OUT VOID                      **Interface, OPTIONAL
+  OUT VOID                      **Interface  OPTIONAL,
   IN  EFI_HANDLE                AgentHandle,
   IN  EFI_HANDLE                ControllerHandle,
   IN  UINT32                    Attributes
   );
 
-
 /**
   Closes a protocol on a handle that was opened using OpenProtocol().
 
@@ -1347,10 +1374,10 @@
 /// EFI Oprn Protocol Information Entry
 ///
 typedef struct {
-  EFI_HANDLE  AgentHandle;
-  EFI_HANDLE  ControllerHandle;
-  UINT32      Attributes;
-  UINT32      OpenCount;
+  EFI_HANDLE    AgentHandle;
+  EFI_HANDLE    ControllerHandle;
+  UINT32        Attributes;
+  UINT32        OpenCount;
 } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
 
 /**
@@ -1474,8 +1501,8 @@
 EFI_STATUS
 (EFIAPI *EFI_LOCATE_HANDLE)(
   IN     EFI_LOCATE_SEARCH_TYPE   SearchType,
-  IN     EFI_GUID                 *Protocol,    OPTIONAL
-  IN     VOID                     *SearchKey,   OPTIONAL
+  IN     EFI_GUID                 *Protocol     OPTIONAL,
+  IN     VOID                     *SearchKey    OPTIONAL,
   IN OUT UINTN                    *BufferSize,
   OUT    EFI_HANDLE               *Buffer
   );
@@ -1531,7 +1558,7 @@
   @param[in]       Protocol     Provides the protocol to search by.
                                 This parameter is only valid for a SearchType of ByProtocol.
   @param[in]       SearchKey    Supplies the search key depending on the SearchType.
-  @param[in, out]  NoHandles    The number of handles returned in Buffer.
+  @param[out]      NoHandles    The number of handles returned in Buffer.
   @param[out]      Buffer       A pointer to the buffer to return the requested array of handles that
                                 support Protocol.
 
@@ -1547,9 +1574,9 @@
 EFI_STATUS
 (EFIAPI *EFI_LOCATE_HANDLE_BUFFER)(
   IN     EFI_LOCATE_SEARCH_TYPE       SearchType,
-  IN     EFI_GUID                     *Protocol,      OPTIONAL
-  IN     VOID                         *SearchKey,     OPTIONAL
-  IN OUT UINTN                        *NoHandles,
+  IN     EFI_GUID                     *Protocol       OPTIONAL,
+  IN     VOID                         *SearchKey      OPTIONAL,
+  OUT    UINTN                        *NoHandles,
   OUT    EFI_HANDLE                   **Buffer
   );
 
@@ -1567,13 +1594,14 @@
   @retval EFI_NOT_FOUND         No protocol instances were found that match Protocol and
                                 Registration.
   @retval EFI_INVALID_PARAMETER Interface is NULL.
+                                Protocol is NULL.
 
 **/
 typedef
 EFI_STATUS
 (EFIAPI *EFI_LOCATE_PROTOCOL)(
   IN  EFI_GUID  *Protocol,
-  IN  VOID      *Registration, OPTIONAL
+  IN  VOID      *Registration  OPTIONAL,
   OUT VOID      **Interface
   );
 
@@ -1584,20 +1612,20 @@
   ///
   /// Length in bytes of the data pointed to by DataBlock/ContinuationPointer.
   ///
-  UINT64                  Length;
+  UINT64    Length;
   union {
     ///
     /// Physical address of the data block. This member of the union is
     /// used if Length is not equal to zero.
     ///
-    EFI_PHYSICAL_ADDRESS  DataBlock;
+    EFI_PHYSICAL_ADDRESS    DataBlock;
     ///
     /// Physical address of another block of
     /// EFI_CAPSULE_BLOCK_DESCRIPTOR structures. This
     /// member of the union is used if Length is equal to zero. If
     /// ContinuationPointer is zero this entry represents the end of the list.
     ///
-    EFI_PHYSICAL_ADDRESS  ContinuationPointer;
+    EFI_PHYSICAL_ADDRESS    ContinuationPointer;
   } Union;
 } EFI_CAPSULE_BLOCK_DESCRIPTOR;
 
@@ -1608,23 +1636,23 @@
   ///
   /// A GUID that defines the contents of a capsule.
   ///
-  EFI_GUID          CapsuleGuid;
+  EFI_GUID    CapsuleGuid;
   ///
   /// The size of the capsule header. This may be larger than the size of
   /// the EFI_CAPSULE_HEADER since CapsuleGuid may imply
   /// extended header entries
   ///
-  UINT32            HeaderSize;
+  UINT32      HeaderSize;
   ///
   /// Bit-mapped list describing the capsule attributes. The Flag values
   /// of 0x0000 - 0xFFFF are defined by CapsuleGuid. Flag values
   /// of 0x10000 - 0xFFFFFFFF are defined by this specification
   ///
-  UINT32            Flags;
+  UINT32      Flags;
   ///
   /// Size in bytes of the capsule.
   ///
-  UINT32            CapsuleImageSize;
+  UINT32      CapsuleImageSize;
 } EFI_CAPSULE_HEADER;
 
 ///
@@ -1636,16 +1664,16 @@
   ///
   /// the size of the array of capsules.
   ///
-  UINT32   CapsuleArrayNumber;
+  UINT32    CapsuleArrayNumber;
   ///
   /// Point to an array of capsules that contain the same CapsuleGuid value.
   ///
-  VOID*    CapsulePtr[1];
+  VOID      *CapsulePtr[1];
 } EFI_CAPSULE_TABLE;
 
-#define CAPSULE_FLAGS_PERSIST_ACROSS_RESET          0x00010000
-#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE         0x00020000
-#define CAPSULE_FLAGS_INITIATE_RESET                0x00040000
+#define CAPSULE_FLAGS_PERSIST_ACROSS_RESET   0x00010000
+#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE  0x00020000
+#define CAPSULE_FLAGS_INITIATE_RESET         0x00040000
 
 /**
   Passes capsules to the firmware with both virtual and physical mapping. Depending on the intended
@@ -1757,11 +1785,14 @@
 #define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED            0x0000000000000008
 #define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED     0x0000000000000010
 #define EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY          0x0000000000000040
+#define EFI_OS_INDICATIONS_JSON_CONFIG_DATA_REFRESH         0x0000000000000080
 
 //
 // EFI Runtime Services Table
 //
 #define EFI_SYSTEM_TABLE_SIGNATURE      SIGNATURE_64 ('I','B','I',' ','S','Y','S','T')
+#define EFI_2_80_SYSTEM_TABLE_REVISION  ((2 << 16) | (80))
+#define EFI_2_70_SYSTEM_TABLE_REVISION  ((2 << 16) | (70))
 #define EFI_2_60_SYSTEM_TABLE_REVISION  ((2 << 16) | (60))
 #define EFI_2_50_SYSTEM_TABLE_REVISION  ((2 << 16) | (50))
 #define EFI_2_40_SYSTEM_TABLE_REVISION  ((2 << 16) | (40))
@@ -1772,7 +1803,7 @@
 #define EFI_2_00_SYSTEM_TABLE_REVISION  ((2 << 16) | (00))
 #define EFI_1_10_SYSTEM_TABLE_REVISION  ((1 << 16) | (10))
 #define EFI_1_02_SYSTEM_TABLE_REVISION  ((1 << 16) | (02))
-#define EFI_SYSTEM_TABLE_REVISION       EFI_2_60_SYSTEM_TABLE_REVISION
+#define EFI_SYSTEM_TABLE_REVISION       EFI_2_70_SYSTEM_TABLE_REVISION
 #define EFI_SPECIFICATION_VERSION       EFI_SYSTEM_TABLE_REVISION
 
 #define EFI_RUNTIME_SERVICES_SIGNATURE  SIGNATURE_64 ('R','U','N','T','S','E','R','V')
@@ -1785,50 +1816,49 @@
   ///
   /// The table header for the EFI Runtime Services Table.
   ///
-  EFI_TABLE_HEADER                Hdr;
+  EFI_TABLE_HEADER                  Hdr;
 
   //
   // Time Services
   //
-  EFI_GET_TIME                    GetTime;
-  EFI_SET_TIME                    SetTime;
-  EFI_GET_WAKEUP_TIME             GetWakeupTime;
-  EFI_SET_WAKEUP_TIME             SetWakeupTime;
+  EFI_GET_TIME                      GetTime;
+  EFI_SET_TIME                      SetTime;
+  EFI_GET_WAKEUP_TIME               GetWakeupTime;
+  EFI_SET_WAKEUP_TIME               SetWakeupTime;
 
   //
   // Virtual Memory Services
   //
-  EFI_SET_VIRTUAL_ADDRESS_MAP     SetVirtualAddressMap;
-  EFI_CONVERT_POINTER             ConvertPointer;
+  EFI_SET_VIRTUAL_ADDRESS_MAP       SetVirtualAddressMap;
+  EFI_CONVERT_POINTER               ConvertPointer;
 
   //
   // Variable Services
   //
-  EFI_GET_VARIABLE                GetVariable;
-  EFI_GET_NEXT_VARIABLE_NAME      GetNextVariableName;
-  EFI_SET_VARIABLE                SetVariable;
+  EFI_GET_VARIABLE                  GetVariable;
+  EFI_GET_NEXT_VARIABLE_NAME        GetNextVariableName;
+  EFI_SET_VARIABLE                  SetVariable;
 
   //
   // Miscellaneous Services
   //
-  EFI_GET_NEXT_HIGH_MONO_COUNT    GetNextHighMonotonicCount;
-  EFI_RESET_SYSTEM                ResetSystem;
+  EFI_GET_NEXT_HIGH_MONO_COUNT      GetNextHighMonotonicCount;
+  EFI_RESET_SYSTEM                  ResetSystem;
 
   //
   // UEFI 2.0 Capsule Services
   //
-  EFI_UPDATE_CAPSULE              UpdateCapsule;
-  EFI_QUERY_CAPSULE_CAPABILITIES  QueryCapsuleCapabilities;
+  EFI_UPDATE_CAPSULE                UpdateCapsule;
+  EFI_QUERY_CAPSULE_CAPABILITIES    QueryCapsuleCapabilities;
 
   //
   // Miscellaneous UEFI 2.0 Service
   //
-  EFI_QUERY_VARIABLE_INFO         QueryVariableInfo;
+  EFI_QUERY_VARIABLE_INFO           QueryVariableInfo;
 } EFI_RUNTIME_SERVICES;
 
-
-#define EFI_BOOT_SERVICES_SIGNATURE   SIGNATURE_64 ('B','O','O','T','S','E','R','V')
-#define EFI_BOOT_SERVICES_REVISION    EFI_SPECIFICATION_VERSION
+#define EFI_BOOT_SERVICES_SIGNATURE  SIGNATURE_64 ('B','O','O','T','S','E','R','V')
+#define EFI_BOOT_SERVICES_REVISION   EFI_SPECIFICATION_VERSION
 
 ///
 /// EFI Boot Services Table.
@@ -1837,95 +1867,95 @@
   ///
   /// The table header for the EFI Boot Services Table.
   ///
-  EFI_TABLE_HEADER                Hdr;
+  EFI_TABLE_HEADER                              Hdr;
 
   //
   // Task Priority Services
   //
-  EFI_RAISE_TPL                   RaiseTPL;
-  EFI_RESTORE_TPL                 RestoreTPL;
+  EFI_RAISE_TPL                                 RaiseTPL;
+  EFI_RESTORE_TPL                               RestoreTPL;
 
   //
   // Memory Services
   //
-  EFI_ALLOCATE_PAGES              AllocatePages;
-  EFI_FREE_PAGES                  FreePages;
-  EFI_GET_MEMORY_MAP              GetMemoryMap;
-  EFI_ALLOCATE_POOL               AllocatePool;
-  EFI_FREE_POOL                   FreePool;
+  EFI_ALLOCATE_PAGES                            AllocatePages;
+  EFI_FREE_PAGES                                FreePages;
+  EFI_GET_MEMORY_MAP                            GetMemoryMap;
+  EFI_ALLOCATE_POOL                             AllocatePool;
+  EFI_FREE_POOL                                 FreePool;
 
   //
   // Event & Timer Services
   //
-  EFI_CREATE_EVENT                  CreateEvent;
-  EFI_SET_TIMER                     SetTimer;
-  EFI_WAIT_FOR_EVENT                WaitForEvent;
-  EFI_SIGNAL_EVENT                  SignalEvent;
-  EFI_CLOSE_EVENT                   CloseEvent;
-  EFI_CHECK_EVENT                   CheckEvent;
+  EFI_CREATE_EVENT                              CreateEvent;
+  EFI_SET_TIMER                                 SetTimer;
+  EFI_WAIT_FOR_EVENT                            WaitForEvent;
+  EFI_SIGNAL_EVENT                              SignalEvent;
+  EFI_CLOSE_EVENT                               CloseEvent;
+  EFI_CHECK_EVENT                               CheckEvent;
 
   //
   // Protocol Handler Services
   //
-  EFI_INSTALL_PROTOCOL_INTERFACE    InstallProtocolInterface;
-  EFI_REINSTALL_PROTOCOL_INTERFACE  ReinstallProtocolInterface;
-  EFI_UNINSTALL_PROTOCOL_INTERFACE  UninstallProtocolInterface;
-  EFI_HANDLE_PROTOCOL               HandleProtocol;
-  VOID                              *Reserved;
-  EFI_REGISTER_PROTOCOL_NOTIFY      RegisterProtocolNotify;
-  EFI_LOCATE_HANDLE                 LocateHandle;
-  EFI_LOCATE_DEVICE_PATH            LocateDevicePath;
-  EFI_INSTALL_CONFIGURATION_TABLE   InstallConfigurationTable;
+  EFI_INSTALL_PROTOCOL_INTERFACE                InstallProtocolInterface;
+  EFI_REINSTALL_PROTOCOL_INTERFACE              ReinstallProtocolInterface;
+  EFI_UNINSTALL_PROTOCOL_INTERFACE              UninstallProtocolInterface;
+  EFI_HANDLE_PROTOCOL                           HandleProtocol;
+  VOID                                          *Reserved;
+  EFI_REGISTER_PROTOCOL_NOTIFY                  RegisterProtocolNotify;
+  EFI_LOCATE_HANDLE                             LocateHandle;
+  EFI_LOCATE_DEVICE_PATH                        LocateDevicePath;
+  EFI_INSTALL_CONFIGURATION_TABLE               InstallConfigurationTable;
 
   //
   // Image Services
   //
-  EFI_IMAGE_LOAD                    LoadImage;
-  EFI_IMAGE_START                   StartImage;
-  EFI_EXIT                          Exit;
-  EFI_IMAGE_UNLOAD                  UnloadImage;
-  EFI_EXIT_BOOT_SERVICES            ExitBootServices;
+  EFI_IMAGE_LOAD                                LoadImage;
+  EFI_IMAGE_START                               StartImage;
+  EFI_EXIT                                      Exit;
+  EFI_IMAGE_UNLOAD                              UnloadImage;
+  EFI_EXIT_BOOT_SERVICES                        ExitBootServices;
 
   //
   // Miscellaneous Services
   //
-  EFI_GET_NEXT_MONOTONIC_COUNT      GetNextMonotonicCount;
-  EFI_STALL                         Stall;
-  EFI_SET_WATCHDOG_TIMER            SetWatchdogTimer;
+  EFI_GET_NEXT_MONOTONIC_COUNT                  GetNextMonotonicCount;
+  EFI_STALL                                     Stall;
+  EFI_SET_WATCHDOG_TIMER                        SetWatchdogTimer;
 
   //
   // DriverSupport Services
   //
-  EFI_CONNECT_CONTROLLER            ConnectController;
-  EFI_DISCONNECT_CONTROLLER         DisconnectController;
+  EFI_CONNECT_CONTROLLER                        ConnectController;
+  EFI_DISCONNECT_CONTROLLER                     DisconnectController;
 
   //
   // Open and Close Protocol Services
   //
-  EFI_OPEN_PROTOCOL                 OpenProtocol;
-  EFI_CLOSE_PROTOCOL                CloseProtocol;
-  EFI_OPEN_PROTOCOL_INFORMATION     OpenProtocolInformation;
+  EFI_OPEN_PROTOCOL                             OpenProtocol;
+  EFI_CLOSE_PROTOCOL                            CloseProtocol;
+  EFI_OPEN_PROTOCOL_INFORMATION                 OpenProtocolInformation;
 
   //
   // Library Services
   //
-  EFI_PROTOCOLS_PER_HANDLE          ProtocolsPerHandle;
-  EFI_LOCATE_HANDLE_BUFFER          LocateHandleBuffer;
-  EFI_LOCATE_PROTOCOL               LocateProtocol;
-  EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES    InstallMultipleProtocolInterfaces;
-  EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES  UninstallMultipleProtocolInterfaces;
+  EFI_PROTOCOLS_PER_HANDLE                      ProtocolsPerHandle;
+  EFI_LOCATE_HANDLE_BUFFER                      LocateHandleBuffer;
+  EFI_LOCATE_PROTOCOL                           LocateProtocol;
+  EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES      InstallMultipleProtocolInterfaces;
+  EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES    UninstallMultipleProtocolInterfaces;
 
   //
   // 32-bit CRC Services
   //
-  EFI_CALCULATE_CRC32               CalculateCrc32;
+  EFI_CALCULATE_CRC32                           CalculateCrc32;
 
   //
   // Miscellaneous Services
   //
-  EFI_COPY_MEM                      CopyMem;
-  EFI_SET_MEM                       SetMem;
-  EFI_CREATE_EVENT_EX               CreateEventEx;
+  EFI_COPY_MEM                                  CopyMem;
+  EFI_SET_MEM                                   SetMem;
+  EFI_CREATE_EVENT_EX                           CreateEventEx;
 } EFI_BOOT_SERVICES;
 
 ///
@@ -1936,11 +1966,11 @@
   ///
   /// The 128-bit GUID value that uniquely identifies the system configuration table.
   ///
-  EFI_GUID                          VendorGuid;
+  EFI_GUID    VendorGuid;
   ///
   /// A pointer to the table associated with VendorGuid.
   ///
-  VOID                              *VendorTable;
+  VOID        *VendorTable;
 } EFI_CONFIGURATION_TABLE;
 
 ///
@@ -1950,63 +1980,63 @@
   ///
   /// The table header for the EFI System Table.
   ///
-  EFI_TABLE_HEADER                  Hdr;
+  EFI_TABLE_HEADER                   Hdr;
   ///
   /// A pointer to a null terminated string that identifies the vendor
   /// that produces the system firmware for the platform.
   ///
-  CHAR16                            *FirmwareVendor;
+  CHAR16                             *FirmwareVendor;
   ///
   /// A firmware vendor specific value that identifies the revision
   /// of the system firmware for the platform.
   ///
-  UINT32                            FirmwareRevision;
+  UINT32                             FirmwareRevision;
   ///
   /// The handle for the active console input device. This handle must support
   /// EFI_SIMPLE_TEXT_INPUT_PROTOCOL and EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.
   ///
-  EFI_HANDLE                        ConsoleInHandle;
+  EFI_HANDLE                         ConsoleInHandle;
   ///
   /// A pointer to the EFI_SIMPLE_TEXT_INPUT_PROTOCOL interface that is
   /// associated with ConsoleInHandle.
   ///
-  EFI_SIMPLE_TEXT_INPUT_PROTOCOL    *ConIn;
+  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *ConIn;
   ///
   /// The handle for the active console output device.
   ///
-  EFI_HANDLE                        ConsoleOutHandle;
+  EFI_HANDLE                         ConsoleOutHandle;
   ///
   /// A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface
   /// that is associated with ConsoleOutHandle.
   ///
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL   *ConOut;
+  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *ConOut;
   ///
   /// The handle for the active standard error console device.
   /// This handle must support the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.
   ///
-  EFI_HANDLE                        StandardErrorHandle;
+  EFI_HANDLE                         StandardErrorHandle;
   ///
   /// A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface
   /// that is associated with StandardErrorHandle.
   ///
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL   *StdErr;
+  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *StdErr;
   ///
   /// A pointer to the EFI Runtime Services Table.
   ///
-  EFI_RUNTIME_SERVICES              *RuntimeServices;
+  EFI_RUNTIME_SERVICES               *RuntimeServices;
   ///
   /// A pointer to the EFI Boot Services Table.
   ///
-  EFI_BOOT_SERVICES                 *BootServices;
+  EFI_BOOT_SERVICES                  *BootServices;
   ///
   /// The number of system configuration tables in the buffer ConfigurationTable.
   ///
-  UINTN                             NumberOfTableEntries;
+  UINTN                              NumberOfTableEntries;
   ///
   /// A pointer to the system configuration tables.
   /// The number of entries in the table is NumberOfTableEntries.
   ///
-  EFI_CONFIGURATION_TABLE           *ConfigurationTable;
+  EFI_CONFIGURATION_TABLE            *ConfigurationTable;
 } EFI_SYSTEM_TABLE;
 
 /**
@@ -2041,13 +2071,13 @@
   /// The attributes for this load option entry. All unused bits must be zero
   /// and are reserved by the UEFI specification for future growth.
   ///
-  UINT32                           Attributes;
+  UINT32    Attributes;
   ///
   /// Length in bytes of the FilePathList. OptionalData starts at offset
   /// sizeof(UINT32) + sizeof(UINT16) + StrSize(Description) + FilePathListLength
   /// of the EFI_LOAD_OPTION descriptor.
   ///
-  UINT16                           FilePathListLength;
+  UINT16    FilePathListLength;
   ///
   /// The user readable description for the load option.
   /// This field ends with a Null character.
@@ -2079,18 +2109,18 @@
 //
 // EFI Load Options Attributes
 //
-#define LOAD_OPTION_ACTIVE              0x00000001
-#define LOAD_OPTION_FORCE_RECONNECT     0x00000002
-#define LOAD_OPTION_HIDDEN              0x00000008
-#define LOAD_OPTION_CATEGORY            0x00001F00
+#define LOAD_OPTION_ACTIVE           0x00000001
+#define LOAD_OPTION_FORCE_RECONNECT  0x00000002
+#define LOAD_OPTION_HIDDEN           0x00000008
+#define LOAD_OPTION_CATEGORY         0x00001F00
 
-#define LOAD_OPTION_CATEGORY_BOOT       0x00000000
-#define LOAD_OPTION_CATEGORY_APP        0x00000100
+#define LOAD_OPTION_CATEGORY_BOOT  0x00000000
+#define LOAD_OPTION_CATEGORY_APP   0x00000100
 
-#define EFI_BOOT_OPTION_SUPPORT_KEY     0x00000001
-#define EFI_BOOT_OPTION_SUPPORT_APP     0x00000002
-#define EFI_BOOT_OPTION_SUPPORT_SYSPREP 0x00000010
-#define EFI_BOOT_OPTION_SUPPORT_COUNT   0x00000300
+#define EFI_BOOT_OPTION_SUPPORT_KEY      0x00000001
+#define EFI_BOOT_OPTION_SUPPORT_APP      0x00000002
+#define EFI_BOOT_OPTION_SUPPORT_SYSPREP  0x00000010
+#define EFI_BOOT_OPTION_SUPPORT_COUNT    0x00000300
 
 ///
 /// EFI Boot Key Data
@@ -2100,40 +2130,40 @@
     ///
     /// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0.
     ///
-    UINT32  Revision        : 8;
+    UINT32    Revision       : 8;
     ///
     /// Either the left or right Shift keys must be pressed (1) or must not be pressed (0).
     ///
-    UINT32  ShiftPressed    : 1;
+    UINT32    ShiftPressed   : 1;
     ///
     /// Either the left or right Control keys must be pressed (1) or must not be pressed (0).
     ///
-    UINT32  ControlPressed  : 1;
+    UINT32    ControlPressed : 1;
     ///
     /// Either the left or right Alt keys must be pressed (1) or must not be pressed (0).
     ///
-    UINT32  AltPressed      : 1;
+    UINT32    AltPressed     : 1;
     ///
     /// Either the left or right Logo keys must be pressed (1) or must not be pressed (0).
     ///
-    UINT32  LogoPressed     : 1;
+    UINT32    LogoPressed    : 1;
     ///
     /// The Menu key must be pressed (1) or must not be pressed (0).
     ///
-    UINT32  MenuPressed     : 1;
+    UINT32    MenuPressed    : 1;
     ///
     /// The SysReq key must be pressed (1) or must not be pressed (0).
     ///
-    UINT32  SysReqPressed    : 1;
-    UINT32  Reserved        : 16;
+    UINT32    SysReqPressed  : 1;
+    UINT32    Reserved       : 16;
     ///
     /// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If
     /// zero, then only the shift state is considered. If more than one, then the boot option will
     /// only be launched if all of the specified keys are pressed with the same shift state.
     ///
-    UINT32  InputKeyCount   : 2;
+    UINT32    InputKeyCount  : 2;
   } Options;
-  UINT32  PackedValue;
+  UINT32    PackedValue;
 } EFI_BOOT_KEY_DATA;
 
 ///
@@ -2144,51 +2174,62 @@
   ///
   /// Specifies options about how the key will be processed.
   ///
-  EFI_BOOT_KEY_DATA  KeyData;
+  EFI_BOOT_KEY_DATA    KeyData;
   ///
   /// The CRC-32 which should match the CRC-32 of the entire EFI_LOAD_OPTION to
   /// which BootOption refers. If the CRC-32s do not match this value, then this key
   /// option is ignored.
   ///
-  UINT32             BootOptionCrc;
+  UINT32               BootOptionCrc;
   ///
   /// The Boot#### option which will be invoked if this key is pressed and the boot option
   /// is active (LOAD_OPTION_ACTIVE is set).
   ///
-  UINT16             BootOption;
+  UINT16               BootOption;
   ///
   /// The key codes to compare against those returned by the
   /// EFI_SIMPLE_TEXT_INPUT and EFI_SIMPLE_TEXT_INPUT_EX protocols.
   /// The number of key codes (0-3) is specified by the EFI_KEY_CODE_COUNT field in KeyOptions.
   ///
-  //EFI_INPUT_KEY      Keys[];
+  // EFI_INPUT_KEY      Keys[];
 } EFI_KEY_OPTION;
 #pragma pack()
 
 //
 // EFI File location to boot from on removable media devices
 //
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32    L"\\EFI\\BOOT\\BOOTIA32.EFI"
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64    L"\\EFI\\BOOT\\BOOTIA64.EFI"
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64     L"\\EFI\\BOOT\\BOOTX64.EFI"
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM     L"\\EFI\\BOOT\\BOOTARM.EFI"
-#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32         L"\\EFI\\BOOT\\BOOTIA32.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64         L"\\EFI\\BOOT\\BOOTIA64.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64          L"\\EFI\\BOOT\\BOOTX64.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM          L"\\EFI\\BOOT\\BOOTARM.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64      L"\\EFI\\BOOT\\BOOTAA64.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64      L"\\EFI\\BOOT\\BOOTRISCV64.EFI"
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_LOONGARCH64  L"\\EFI\\BOOT\\BOOTLOONGARCH64.EFI"
 
-#if   defined (MDE_CPU_IA32)
-  #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_IA32
-#elif defined (MDE_CPU_IPF)
-  #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_IA64
-#elif defined (MDE_CPU_X64)
-  #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_X64
-#elif defined (MDE_CPU_EBC)
-#elif defined (MDE_CPU_ARM)
-  #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_ARM
-#elif defined (MDE_CPU_AARCH64)
-  #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64
-#else
-  #error Unknown Processor Type
+#if !defined (EFI_REMOVABLE_MEDIA_FILE_NAME)
+  #if   defined (MDE_CPU_IA32)
+#define EFI_REMOVABLE_MEDIA_FILE_NAME  EFI_REMOVABLE_MEDIA_FILE_NAME_IA32
+  #elif defined (MDE_CPU_X64)
+#define EFI_REMOVABLE_MEDIA_FILE_NAME  EFI_REMOVABLE_MEDIA_FILE_NAME_X64
+  #elif defined (MDE_CPU_EBC)
+  #elif defined (MDE_CPU_ARM)
+#define EFI_REMOVABLE_MEDIA_FILE_NAME  EFI_REMOVABLE_MEDIA_FILE_NAME_ARM
+  #elif defined (MDE_CPU_AARCH64)
+#define EFI_REMOVABLE_MEDIA_FILE_NAME  EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64
+  #elif defined (MDE_CPU_RISCV64)
+#define EFI_REMOVABLE_MEDIA_FILE_NAME  EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64
+  #elif defined (MDE_CPU_LOONGARCH64)
+#define EFI_REMOVABLE_MEDIA_FILE_NAME  EFI_REMOVABLE_MEDIA_FILE_NAME_LOONGARCH64
+  #else
+    #error Unknown Processor Type
+  #endif
 #endif
 
+//
+// The directory within the active EFI System Partition defined for delivery of capsule to firmware
+//
+#define EFI_CAPSULE_FILE_DIRECTORY  L"\\EFI\\UpdateCapsule\\"
+
 #include <ipxe/efi/Uefi/UefiPxe.h>
 #include <ipxe/efi/Uefi/UefiGpt.h>
 #include <ipxe/efi/Uefi/UefiInternalFormRepresentation.h>
diff --git a/src/include/ipxe/efi/X64/ProcessorBind.h b/src/include/ipxe/efi/X64/ProcessorBind.h
index 9f02e0c..fa53404 100644
--- a/src/include/ipxe/efi/X64/ProcessorBind.h
+++ b/src/include/ipxe/efi/X64/ProcessorBind.h
@@ -1,21 +1,15 @@
 /** @file
   Processor or Compiler specific defines and types x64 (Intel 64, AMD64).
 
-  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials
-  are licensed and made available under the terms and conditions of the BSD License
-  which accompanies this distribution.  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
 
 #ifndef __PROCESSOR_BIND_H__
 #define __PROCESSOR_BIND_H__
 
-FILE_LICENCE ( BSD3 );
+FILE_LICENCE ( BSD2_PATENT );
 
 ///
 /// Define the processor type so other code can make processor based choices
@@ -25,11 +19,11 @@
 //
 // Make sure we are using the correct packing rules per EFI specification
 //
-#if !defined(__GNUC__)
-#pragma pack()
+#if !defined (__GNUC__)
+  #pragma pack()
 #endif
 
-#if defined(__GNUC__) && defined(__pic__) && !defined(USING_LTO)
+#if defined (__GNUC__) && defined (__pic__) && !defined (USING_LTO)  && !defined (__APPLE__)
 //
 // Mark all symbol declarations and references as hidden, meaning they will
 // not be subject to symbol preemption. This allows the compiler to refer to
@@ -40,38 +34,37 @@
 // references can be resolved locally, and so there is no need to set the
 // pragma in that case (and doing so will cause other issues).
 //
-#pragma GCC visibility push (hidden)
+  #pragma GCC visibility push (hidden)
 #endif
 
-#if defined(__INTEL_COMPILER)
+#if defined (__INTEL_COMPILER)
 //
 // Disable ICC's remark #869: "Parameter" was never referenced warning.
 // This is legal ANSI C code so we disable the remark that is turned on with -Wall
 //
-#pragma warning ( disable : 869 )
+  #pragma warning ( disable : 869 )
 
 //
 // Disable ICC's remark #1418: external function definition with no prior declaration.
 // This is legal ANSI C code so we disable the remark that is turned on with /W4
 //
-#pragma warning ( disable : 1418 )
+  #pragma warning ( disable : 1418 )
 
 //
 // Disable ICC's remark #1419: external declaration in primary source file
 // This is legal ANSI C code so we disable the remark that is turned on with /W4
 //
-#pragma warning ( disable : 1419 )
+  #pragma warning ( disable : 1419 )
 
 //
 // Disable ICC's remark #593: "Variable" was set but never used.
 // This is legal ANSI C code so we disable the remark that is turned on with /W4
 //
-#pragma warning ( disable : 593 )
+  #pragma warning ( disable : 593 )
 
 #endif
 
-
-#if defined(_MSC_EXTENSIONS)
+#if defined (_MSC_EXTENSIONS)
 
 //
 // Disable warning that make it impossible to compile at /W4
@@ -81,35 +74,35 @@
 //
 // Disabling bitfield type checking warnings.
 //
-#pragma warning ( disable : 4214 )
+  #pragma warning ( disable : 4214 )
 
 //
 // Disabling the unreferenced formal parameter warnings.
 //
-#pragma warning ( disable : 4100 )
+  #pragma warning ( disable : 4100 )
 
 //
 // Disable slightly different base types warning as CHAR8 * can not be set
 // to a constant string.
 //
-#pragma warning ( disable : 4057 )
+  #pragma warning ( disable : 4057 )
 
 //
 // ASSERT(FALSE) or while (TRUE) are legal constructs so suppress this warning
 //
-#pragma warning ( disable : 4127 )
+  #pragma warning ( disable : 4127 )
 
 //
 // This warning is caused by functions defined but not used. For precompiled header only.
 //
-#pragma warning ( disable : 4505 )
+  #pragma warning ( disable : 4505 )
 
 //
 // This warning is caused by empty (after preprocessing) source file. For precompiled header only.
 //
-#pragma warning ( disable : 4206 )
+  #pragma warning ( disable : 4206 )
 
-#if _MSC_VER == 1800 || _MSC_VER == 1900
+  #if defined (_MSC_VER) && _MSC_VER >= 1800
 
 //
 // Disable these warnings for VS2013.
@@ -119,130 +112,128 @@
 // This warning is for potentially uninitialized local variable, and it may cause false
 // positive issues in VS2013 and VS2015 build
 //
-#pragma warning ( disable : 4701 )
+    #pragma warning ( disable : 4701 )
 
 //
 // This warning is for potentially uninitialized local pointer variable, and it may cause
 // false positive issues in VS2013 and VS2015 build
 //
-#pragma warning ( disable : 4703 )
+    #pragma warning ( disable : 4703 )
+
+  #endif
 
 #endif
 
-#endif
+#if defined (_MSC_EXTENSIONS)
+//
+// use Microsoft C compiler dependent integer width types
+//
 
-
-#if defined(_MSC_EXTENSIONS)
-  //
-  // use Microsoft C compiler dependent integer width types
-  //
-
-  ///
-  /// 8-byte unsigned value
-  ///
-  typedef unsigned __int64    UINT64;
-  ///
-  /// 8-byte signed value
-  ///
-  typedef __int64             INT64;
-  ///
-  /// 4-byte unsigned value
-  ///
-  typedef unsigned __int32    UINT32;
-  ///
-  /// 4-byte signed value
-  ///
-  typedef __int32             INT32;
-  ///
-  /// 2-byte unsigned value
-  ///
-  typedef unsigned short      UINT16;
-  ///
-  /// 2-byte Character.  Unless otherwise specified all strings are stored in the
-  /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
-  ///
-  typedef unsigned short      CHAR16;
-  ///
-  /// 2-byte signed value
-  ///
-  typedef short               INT16;
-  ///
-  /// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
-  /// values are undefined.
-  ///
-  typedef unsigned char       BOOLEAN;
-  ///
-  /// 1-byte unsigned value
-  ///
-  typedef unsigned char       UINT8;
-  ///
-  /// 1-byte Character
-  ///
-  typedef char                CHAR8;
-  ///
-  /// 1-byte signed value
-  ///
-  typedef signed char         INT8;
+///
+/// 8-byte unsigned value
+///
+typedef unsigned __int64 UINT64;
+///
+/// 8-byte signed value
+///
+typedef __int64 INT64;
+///
+/// 4-byte unsigned value
+///
+typedef unsigned __int32 UINT32;
+///
+/// 4-byte signed value
+///
+typedef __int32 INT32;
+///
+/// 2-byte unsigned value
+///
+typedef unsigned short UINT16;
+///
+/// 2-byte Character.  Unless otherwise specified all strings are stored in the
+/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
+///
+typedef unsigned short CHAR16;
+///
+/// 2-byte signed value
+///
+typedef short INT16;
+///
+/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
+/// values are undefined.
+///
+typedef unsigned char BOOLEAN;
+///
+/// 1-byte unsigned value
+///
+typedef unsigned char UINT8;
+///
+/// 1-byte Character
+///
+typedef char CHAR8;
+///
+/// 1-byte signed value
+///
+typedef signed char INT8;
 #else
-  ///
-  /// 8-byte unsigned value
-  ///
-  typedef unsigned long long  UINT64;
-  ///
-  /// 8-byte signed value
-  ///
-  typedef long long           INT64;
-  ///
-  /// 4-byte unsigned value
-  ///
-  typedef unsigned int        UINT32;
-  ///
-  /// 4-byte signed value
-  ///
-  typedef int                 INT32;
-  ///
-  /// 2-byte unsigned value
-  ///
-  typedef unsigned short      UINT16;
-  ///
-  /// 2-byte Character.  Unless otherwise specified all strings are stored in the
-  /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
-  ///
-  typedef unsigned short      CHAR16;
-  ///
-  /// 2-byte signed value
-  ///
-  typedef short               INT16;
-  ///
-  /// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
-  /// values are undefined.
-  ///
-  typedef unsigned char       BOOLEAN;
-  ///
-  /// 1-byte unsigned value
-  ///
-  typedef unsigned char       UINT8;
-  ///
-  /// 1-byte Character
-  ///
-  typedef char                CHAR8;
-  ///
-  /// 1-byte signed value
-  ///
-  typedef signed char         INT8;
+///
+/// 8-byte unsigned value
+///
+typedef unsigned long long UINT64;
+///
+/// 8-byte signed value
+///
+typedef long long INT64;
+///
+/// 4-byte unsigned value
+///
+typedef unsigned int UINT32;
+///
+/// 4-byte signed value
+///
+typedef int INT32;
+///
+/// 2-byte unsigned value
+///
+typedef unsigned short UINT16;
+///
+/// 2-byte Character.  Unless otherwise specified all strings are stored in the
+/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
+///
+typedef unsigned short CHAR16;
+///
+/// 2-byte signed value
+///
+typedef short INT16;
+///
+/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
+/// values are undefined.
+///
+typedef unsigned char BOOLEAN;
+///
+/// 1-byte unsigned value
+///
+typedef unsigned char UINT8;
+///
+/// 1-byte Character
+///
+typedef char CHAR8;
+///
+/// 1-byte signed value
+///
+typedef signed char INT8;
 #endif
 
 ///
 /// Unsigned value of native width.  (4 bytes on supported 32-bit processor instructions,
 /// 8 bytes on supported 64-bit processor instructions)
 ///
-typedef UINT64  UINTN;
+typedef UINT64 UINTN;
 ///
 /// Signed value of native width.  (4 bytes on supported 32-bit processor instructions,
 /// 8 bytes on supported 64-bit processor instructions)
 ///
-typedef INT64   INTN;
-
+typedef INT64 INTN;
 
 //
 // Processor specific defines
@@ -251,7 +242,7 @@
 ///
 /// A value of native width with the highest bit set.
 ///
-#define MAX_BIT     0x8000000000000000ULL
+#define MAX_BIT  0x8000000000000000ULL
 ///
 /// A value of native width with the two highest bits set.
 ///
@@ -260,7 +251,12 @@
 ///
 /// Maximum legal x64 address
 ///
-#define MAX_ADDRESS   0xFFFFFFFFFFFFFFFFULL
+#define MAX_ADDRESS  0xFFFFFFFFFFFFFFFFULL
+
+///
+/// Maximum usable address at boot time
+///
+#define MAX_ALLOC_ADDRESS  MAX_ADDRESS
 
 ///
 /// Maximum legal x64 INTN and UINTN values.
@@ -269,15 +265,20 @@
 #define MAX_UINTN  ((UINTN)0xFFFFFFFFFFFFFFFFULL)
 
 ///
+/// Minimum legal x64 INTN value.
+///
+#define MIN_INTN  (((INTN)-9223372036854775807LL) - 1)
+
+///
 /// The stack alignment required for x64
 ///
-#define CPU_STACK_ALIGNMENT   16
+#define CPU_STACK_ALIGNMENT  16
 
 ///
 /// Page allocation granularity for x64
 ///
-#define DEFAULT_PAGE_ALLOCATION_GRANULARITY   (0x1000)
-#define RUNTIME_PAGE_ALLOCATION_GRANULARITY   (0x1000)
+#define DEFAULT_PAGE_ALLOCATION_GRANULARITY  (0x1000)
+#define RUNTIME_PAGE_ALLOCATION_GRANULARITY  (0x1000)
 
 //
 // Modifier to ensure that all protocol member functions and EFI intrinsics
@@ -285,38 +286,38 @@
 // EFI intrinsics are required to modify their member functions with EFIAPI.
 //
 #ifdef EFIAPI
-  ///
-  /// If EFIAPI is already defined, then we use that definition.
-  ///
-#elif defined(_MSC_EXTENSIONS)
-  ///
-  /// Microsoft* compiler specific method for EFIAPI calling convention.
-  ///
-  #define EFIAPI __cdecl
-#elif defined(__GNUC__)
-  ///
-  /// Define the standard calling convention regardless of optimization level.
-  /// The GCC support assumes a GCC compiler that supports the EFI ABI. The EFI
-  /// ABI is much closer to the x64 Microsoft* ABI than standard x64 (x86-64)
-  /// GCC ABI. Thus a standard x64 (x86-64) GCC compiler can not be used for
-  /// x64. Warning the assembly code in the MDE x64 does not follow the correct
-  /// ABI for the standard x64 (x86-64) GCC.
-  ///
-  #define EFIAPI
+///
+/// If EFIAPI is already defined, then we use that definition.
+///
+#elif defined (_MSC_EXTENSIONS)
+///
+/// Microsoft* compiler specific method for EFIAPI calling convention.
+///
+#define EFIAPI  __cdecl
+#elif defined (__GNUC__)
+///
+/// Define the standard calling convention regardless of optimization level.
+/// The GCC support assumes a GCC compiler that supports the EFI ABI. The EFI
+/// ABI is much closer to the x64 Microsoft* ABI than standard x64 (x86-64)
+/// GCC ABI. Thus a standard x64 (x86-64) GCC compiler can not be used for
+/// x64. Warning the assembly code in the MDE x64 does not follow the correct
+/// ABI for the standard x64 (x86-64) GCC.
+///
+#define EFIAPI
 #else
-  ///
-  /// The default for a non Microsoft* or GCC compiler is to assume the EFI ABI
-  /// is the standard.
-  ///
-  #define EFIAPI
+///
+/// The default for a non Microsoft* or GCC compiler is to assume the EFI ABI
+/// is the standard.
+///
+#define EFIAPI
 #endif
 
-#if defined(__GNUC__)
-  ///
-  /// For GNU assembly code, .global or .globl can declare global symbols.
-  /// Define this macro to unify the usage.
-  ///
-  #define ASM_GLOBAL .globl
+#if defined (__GNUC__) || defined (__clang__)
+///
+/// For GNU assembly code, .global or .globl can declare global symbols.
+/// Define this macro to unify the usage.
+///
+#define ASM_GLOBAL  .globl
 #endif
 
 /**
@@ -329,11 +330,10 @@
   @return The pointer to the first instruction of a function given a function pointer.
 
 **/
-#define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID *)(UINTN)(FunctionPointer)
+#define FUNCTION_ENTRY_POINT(FunctionPointer)  (VOID *)(UINTN)(FunctionPointer)
 
 #ifndef __USER_LABEL_PREFIX__
 #define __USER_LABEL_PREFIX__
 #endif
 
 #endif
-
