Update the common ACPI tables used by all the Neoverse Reference Design
platforms to ACPI version v6.4.

Signed-off-by: Pranav Madhu <pranav.ma...@arm.com>
---
 Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h | 221 ++++++++++----------
 Platform/ARM/SgiPkg/AcpiTables/Dbg2.aslc    |  30 +--
 Platform/ARM/SgiPkg/AcpiTables/Fadt.aslc    |  38 ++--
 Platform/ARM/SgiPkg/AcpiTables/Gtdt.aslc    |  69 +++---
 Platform/ARM/SgiPkg/AcpiTables/Mcfg.aslc    |  26 +--
 Platform/ARM/SgiPkg/AcpiTables/Spcr.aslc    |  29 ++-
 6 files changed, 220 insertions(+), 193 deletions(-)

diff --git a/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h 
b/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
index d75d54055436..69af1df276a8 100644
--- a/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
+++ b/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
@@ -1,6 +1,6 @@
 /** @file
 *
-*  Copyright (c) 2018-2021, ARM Limited. All rights reserved.
+*  Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
 *
 *  SPDX-License-Identifier: BSD-2-Clause-Patent
 *
@@ -44,133 +44,134 @@
 #pragma pack(1)
 // PPTT processor core structure
 typedef struct {
-  EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR  Core;
+  EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR  Core;
   UINT32                                 ResourceOffset[2];
-  EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE      DCache;
-  EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE      ICache;
-  EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE      L2Cache;
+  EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE      DCache;
+  EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE      ICache;
+  EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE      L2Cache;
 } RD_PPTT_CORE;
 
 // PPTT processor cluster structure
 typedef struct {
-  EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR  Cluster;
+  EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR  Cluster;
   UINT32                                 ResourceOffset;
-  EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE      L3Cache;
+  EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE      L3Cache;
   RD_PPTT_CORE                           Core[CORE_COUNT];
 } RD_PPTT_CLUSTER;
 
 // PPTT processor cluster structure without cache
 typedef struct {
-  EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR  Cluster;
+  EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR  Cluster;
   RD_PPTT_CORE                           Core[CORE_COUNT];
 } RD_PPTT_MINIMAL_CLUSTER;
 
 // PPTT processor package structure
 typedef struct {
-  EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR  Package;
+  EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR  Package;
   UINT32                                 ResourceOffset;
-  EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE      Slc;
+  EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE      Slc;
   RD_PPTT_MINIMAL_CLUSTER                Cluster[CLUSTER_COUNT];
 } RD_PPTT_SLC_PACKAGE;
 #pragma pack ()
 
 //
 // PPTT processor structure flags for different SoC components as defined in
-// ACPI 6.3 specification
+// ACPI 6.4 specification
 //
 
 // Processor structure flags for SoC package
 #define PPTT_PROCESSOR_PACKAGE_FLAGS                                           
\
   {                                                                            
\
-    EFI_ACPI_6_3_PPTT_PACKAGE_PHYSICAL,                                        
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_ID_INVALID,                                    
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_IS_NOT_THREAD,                                 
\
-    EFI_ACPI_6_3_PPTT_NODE_IS_NOT_LEAF,                                        
\
-    EFI_ACPI_6_3_PPTT_IMPLEMENTATION_IDENTICAL                                 
\
+    EFI_ACPI_6_4_PPTT_PACKAGE_PHYSICAL,                                        
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_ID_INVALID,                                    
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD,                                 
\
+    EFI_ACPI_6_4_PPTT_NODE_IS_NOT_LEAF,                                        
\
+    EFI_ACPI_6_4_PPTT_IMPLEMENTATION_IDENTICAL                                 
\
   }
 
 // Processor structure flags for cluster
 #define PPTT_PROCESSOR_CLUSTER_FLAGS                                           
\
   {                                                                            
\
-    EFI_ACPI_6_3_PPTT_PACKAGE_NOT_PHYSICAL,                                    
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_ID_VALID,                                      
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_IS_NOT_THREAD,                                 
\
-    EFI_ACPI_6_3_PPTT_NODE_IS_NOT_LEAF,                                        
\
-    EFI_ACPI_6_3_PPTT_IMPLEMENTATION_IDENTICAL                                 
\
+    EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL,                                    
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_ID_VALID,                                      
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD,                                 
\
+    EFI_ACPI_6_4_PPTT_NODE_IS_NOT_LEAF,                                        
\
+    EFI_ACPI_6_4_PPTT_IMPLEMENTATION_IDENTICAL                                 
\
   }
 
 // Processor structure flags for cluster with multi-thread core
 #define PPTT_PROCESSOR_CLUSTER_THREADED_FLAGS                                  
\
   {                                                                            
\
-    EFI_ACPI_6_3_PPTT_PACKAGE_NOT_PHYSICAL,                                    
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_ID_INVALID,                                    
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_IS_NOT_THREAD,                                 
\
-    EFI_ACPI_6_3_PPTT_NODE_IS_NOT_LEAF,                                        
\
-    EFI_ACPI_6_3_PPTT_IMPLEMENTATION_IDENTICAL                                 
\
+    EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL,                                    
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_ID_INVALID,                                    
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD,                                 
\
+    EFI_ACPI_6_4_PPTT_NODE_IS_NOT_LEAF,                                        
\
+    EFI_ACPI_6_4_PPTT_IMPLEMENTATION_IDENTICAL                                 
\
   }
 
 // Processor structure flags for single-thread core
 #define PPTT_PROCESSOR_CORE_FLAGS                                              
\
   {                                                                            
\
-    EFI_ACPI_6_3_PPTT_PACKAGE_NOT_PHYSICAL,                                    
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_ID_VALID,                                      
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_IS_NOT_THREAD,                                 
\
-    EFI_ACPI_6_3_PPTT_NODE_IS_LEAF                                             
\
+    EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL,                                    
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_ID_VALID,                                      
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD,                                 
\
+    EFI_ACPI_6_4_PPTT_NODE_IS_LEAF                                             
\
   }
 
 // Processor structure flags for multi-thread core
 #define PPTT_PROCESSOR_CORE_THREADED_FLAGS                                     
\
   {                                                                            
\
-    EFI_ACPI_6_3_PPTT_PACKAGE_NOT_PHYSICAL,                                    
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_ID_INVALID,                                    
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_IS_NOT_THREAD,                                 
\
-    EFI_ACPI_6_3_PPTT_NODE_IS_NOT_LEAF,                                        
\
-    EFI_ACPI_6_3_PPTT_IMPLEMENTATION_IDENTICAL                                 
\
+    EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL,                                    
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_ID_INVALID,                                    
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD,                                 
\
+    EFI_ACPI_6_4_PPTT_NODE_IS_NOT_LEAF,                                        
\
+    EFI_ACPI_6_4_PPTT_IMPLEMENTATION_IDENTICAL                                 
\
   }
 
 // Processor structure flags for CPU thread
 #define PPTT_PROCESSOR_THREAD_FLAGS                                            
\
   {                                                                            
\
-    EFI_ACPI_6_3_PPTT_PACKAGE_NOT_PHYSICAL,                                    
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_ID_VALID,                                      
\
-    EFI_ACPI_6_3_PPTT_PROCESSOR_IS_THREAD,                                     
\
-    EFI_ACPI_6_3_PPTT_NODE_IS_LEAF                                             
\
+    EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL,                                    
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_ID_VALID,                                      
\
+    EFI_ACPI_6_4_PPTT_PROCESSOR_IS_THREAD,                                     
\
+    EFI_ACPI_6_4_PPTT_NODE_IS_LEAF                                             
\
   }
 
-// PPTT cache structure flags as defined in ACPI 6.3 Specification
+// PPTT cache structure flags as defined in ACPI 6.4 Specification
 #define PPTT_CACHE_STRUCTURE_FLAGS                                             
\
   {                                                                            
\
-    EFI_ACPI_6_3_PPTT_CACHE_SIZE_VALID,                                        
\
-    EFI_ACPI_6_3_PPTT_NUMBER_OF_SETS_VALID,                                    
\
-    EFI_ACPI_6_3_PPTT_ASSOCIATIVITY_VALID,                                     
\
-    EFI_ACPI_6_3_PPTT_ALLOCATION_TYPE_VALID,                                   
\
-    EFI_ACPI_6_3_PPTT_CACHE_TYPE_VALID,                                        
\
-    EFI_ACPI_6_3_PPTT_WRITE_POLICY_VALID,                                      
\
-    EFI_ACPI_6_3_PPTT_LINE_SIZE_VALID                                          
\
+    EFI_ACPI_6_4_PPTT_CACHE_SIZE_VALID,                                        
\
+    EFI_ACPI_6_4_PPTT_NUMBER_OF_SETS_VALID,                                    
\
+    EFI_ACPI_6_4_PPTT_ASSOCIATIVITY_VALID,                                     
\
+    EFI_ACPI_6_4_PPTT_ALLOCATION_TYPE_VALID,                                   
\
+    EFI_ACPI_6_4_PPTT_CACHE_TYPE_VALID,                                        
\
+    EFI_ACPI_6_4_PPTT_WRITE_POLICY_VALID,                                      
\
+    EFI_ACPI_6_4_PPTT_LINE_SIZE_VALID,                                         
\
+    EFI_ACPI_6_4_PPTT_CACHE_ID_VALID                                           
\
   }
 
 // PPTT cache attributes for data cache
 #define PPTT_DATA_CACHE_ATTR                                                   
\
   {                                                                            
\
-    EFI_ACPI_6_3_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE,                       
\
-    EFI_ACPI_6_3_CACHE_ATTRIBUTES_CACHE_TYPE_DATA,                             
\
-    EFI_ACPI_6_3_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK                      
\
+    EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE,                       
\
+    EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_DATA,                             
\
+    EFI_ACPI_6_4_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK                      
\
   }
 
 // PPTT cache attributes for instruction cache
 #define PPTT_INST_CACHE_ATTR                                                   
\
   {                                                                            
\
-    EFI_ACPI_6_3_CACHE_ATTRIBUTES_ALLOCATION_READ,                             
\
-    EFI_ACPI_6_3_CACHE_ATTRIBUTES_CACHE_TYPE_INSTRUCTION,                      
\
-    EFI_ACPI_6_3_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK                      
\
+    EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_READ,                             
\
+    EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_INSTRUCTION,                      
\
+    EFI_ACPI_6_4_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK                      
\
   }
 
 // PPTT cache attributes for unified cache
 #define PPTT_UNIFIED_CACHE_ATTR                                                
\
   {                                                                            
\
-    EFI_ACPI_6_3_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE,                       
\
-    EFI_ACPI_6_3_CACHE_ATTRIBUTES_CACHE_TYPE_UNIFIED,                          
\
-    EFI_ACPI_6_3_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK                      
\
+    EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE,                       
\
+    EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_UNIFIED,                          
\
+    EFI_ACPI_6_4_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK                      
\
   }
 
 // A macro to initialise the common header part of EFI ACPI tables as defined 
by
@@ -187,12 +188,13 @@ typedef struct {
     EFI_ACPI_ARM_CREATOR_REVISION   /* UINT32  CreatorRevision */ \
   }
 
-// EFI_ACPI_6_2_GIC_STRUCTURE
-#define EFI_ACPI_6_2_GICC_STRUCTURE_INIT(GicId, AcpiCpuUid, Mpidr, Flags,      
\
-  PmuIrq, GicBase, GicVBase, GicHBase, GsivId, GicRBase, Efficiency)           
\
+// EFI_ACPI_6_4_GIC_STRUCTURE
+#define EFI_ACPI_6_4_GICC_STRUCTURE_INIT(GicId, AcpiCpuUid, Mpidr, Flags,      
\
+  PmuIrq, GicBase, GicVBase, GicHBase, GsivId, GicRBase, Efficiency,           
\
+  SpeOverflowInterrupt)                                                        
\
   {                                                                            
\
-    EFI_ACPI_6_2_GIC,                     /* Type */                           
\
-    sizeof (EFI_ACPI_6_2_GIC_STRUCTURE),  /* Length */                         
\
+    EFI_ACPI_6_4_GIC,                     /* Type */                           
\
+    sizeof (EFI_ACPI_6_4_GIC_STRUCTURE),  /* Length */                         
\
     EFI_ACPI_RESERVED_WORD,               /* Reserved */                       
\
     GicId,                                /* CPUInterfaceNumber */             
\
     AcpiCpuUid,                           /* AcpiProcessorUid */               
\
@@ -207,19 +209,16 @@ typedef struct {
     GicRBase,                             /* GICRBaseAddress */                
\
     Mpidr,                                /* MPIDR */                          
\
     Efficiency,                           /* ProcessorPowerEfficiencyClass */  
\
-    {                                                                          
\
-      EFI_ACPI_RESERVED_BYTE,             /* Reserved2[0] */                   
\
-      EFI_ACPI_RESERVED_BYTE,             /* Reserved2[1] */                   
\
-      EFI_ACPI_RESERVED_BYTE              /* Reserved2[2] */                   
\
-    }                                                                          
\
+    EFI_ACPI_RESERVED_BYTE,               /* Reserved2 */                      
\
+    SpeOverflowInterrupt                  /* SpeOverflowInterrupt */           
\
   }
 
-// EFI_ACPI_6_2_GIC_DISTRIBUTOR_STRUCTURE
-#define EFI_ACPI_6_2_GIC_DISTRIBUTOR_INIT(GicDistHwId, GicDistBase,            
\
+// EFI_ACPI_6_4_GIC_DISTRIBUTOR_STRUCTURE
+#define EFI_ACPI_6_4_GIC_DISTRIBUTOR_INIT(GicDistHwId, GicDistBase,            
\
   GicDistVector, GicVersion)                                                   
\
   {                                                                            
\
-    EFI_ACPI_6_2_GICD,                    /* Type */                           
\
-    sizeof (EFI_ACPI_6_2_GIC_DISTRIBUTOR_STRUCTURE),                           
\
+    EFI_ACPI_6_4_GICD,                    /* Type */                           
\
+    sizeof (EFI_ACPI_6_4_GIC_DISTRIBUTOR_STRUCTURE),                           
\
     EFI_ACPI_RESERVED_WORD,               /* Reserved1 */                      
\
     GicDistHwId,                          /* GicId */                          
\
     GicDistBase,                          /* PhysicalBaseAddress */            
\
@@ -232,43 +231,43 @@ typedef struct {
     }                                                                          
\
   }
 
-// EFI_ACPI_6_2_GICR_STRUCTURE
-#define EFI_ACPI_6_2_GIC_REDISTRIBUTOR_INIT(RedisRegionAddr, RedisDiscLength)  
\
+// EFI_ACPI_6_4_GICR_STRUCTURE
+#define EFI_ACPI_6_4_GIC_REDISTRIBUTOR_INIT(RedisRegionAddr, RedisDiscLength)  
\
   {                                                                            
\
-    EFI_ACPI_6_2_GICR,                    /* Type */                           
\
-    sizeof (EFI_ACPI_6_2_GICR_STRUCTURE), /* Length */                         
\
+    EFI_ACPI_6_4_GICR,                    /* Type */                           
\
+    sizeof (EFI_ACPI_6_4_GICR_STRUCTURE), /* Length */                         
\
     EFI_ACPI_RESERVED_WORD,               /* Reserved */                       
\
     RedisRegionAddr,                      /* DiscoveryRangeBaseAddress */      
\
     RedisDiscLength                       /* DiscoveryRangeLength */           
\
   }
 
-// EFI_ACPI_6_2_GIC_ITS_STRUCTURE
-#define EFI_ACPI_6_2_GIC_ITS_INIT(GicItsId, GicItsBase)                        
\
+// EFI_ACPI_6_4_GIC_ITS_STRUCTURE
+#define EFI_ACPI_6_4_GIC_ITS_INIT(GicItsId, GicItsBase)                        
\
   {                                                                            
\
-    EFI_ACPI_6_2_GIC_ITS,                 /* Type */                           
\
-    sizeof (EFI_ACPI_6_2_GIC_ITS_STRUCTURE),                                   
\
+    EFI_ACPI_6_4_GIC_ITS,                 /* Type */                           
\
+    sizeof (EFI_ACPI_6_4_GIC_ITS_STRUCTURE),                                   
\
     EFI_ACPI_RESERVED_WORD,               /* Reserved */                       
\
     GicItsId,                             /* GicItsId */                       
\
     GicItsBase,                           /* PhysicalBaseAddress */            
\
     EFI_ACPI_RESERVED_DWORD               /* DiscoveryRangeLength */           
\
   }
 
-// EFI_ACPI_6_3_MEMORY_AFFINITY_STRUCTURE
-#define EFI_ACPI_6_3_MEMORY_AFFINITY_STRUCTURE_INIT(                           
\
+// EFI_ACPI_6_4_MEMORY_AFFINITY_STRUCTURE
+#define EFI_ACPI_6_4_MEMORY_AFFINITY_STRUCTURE_INIT(                           
\
           ProximityDomain, Base, Length, Flags)                                
\
   {                                                                            
\
-    1, sizeof (EFI_ACPI_6_3_MEMORY_AFFINITY_STRUCTURE), ProximityDomain,       
\
+    1, sizeof (EFI_ACPI_6_4_MEMORY_AFFINITY_STRUCTURE), ProximityDomain,       
\
     EFI_ACPI_RESERVED_WORD, (Base) & 0xffffffff,                               
\
     (Base) >> 32, (Length) & 0xffffffff,                                       
\
     (Length) >> 32, EFI_ACPI_RESERVED_DWORD, Flags,                            
\
     EFI_ACPI_RESERVED_QWORD                                                    
\
   }
 
-// EFI_ACPI_6_3_GICC_AFFINITY_STRUCTURE
-#define EFI_ACPI_6_3_GICC_AFFINITY_STRUCTURE_INIT(                             
\
+// EFI_ACPI_6_4_GICC_AFFINITY_STRUCTURE
+#define EFI_ACPI_6_4_GICC_AFFINITY_STRUCTURE_INIT(                             
\
           ProximityDomain, ACPIProcessorUID, Flags, ClockDomain)               
\
   {                                                                            
\
-    3, sizeof (EFI_ACPI_6_3_GICC_AFFINITY_STRUCTURE), ProximityDomain,         
\
+    3, sizeof (EFI_ACPI_6_4_GICC_AFFINITY_STRUCTURE), ProximityDomain,         
\
     ACPIProcessorUID,  Flags,  ClockDomain                                     
\
   }
 
@@ -276,16 +275,16 @@ typedef struct {
 // HMAT related structures
 //
 // Memory Proximity Domain Attributes Structure
-// Refer Section 5.2.27.3 in ACPI Specification, Version 6.3
-#define EFI_ACPI_6_3_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES_INIT(   
\
+// Refer Section 5.2.27.3 in ACPI Specification, Version 6.4
+#define EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES_INIT(   
\
     Flags, ProximityDomainForAttachedIntiator, ProximityDomainForMemory)       
\
   {                                                                            
\
-    EFI_ACPI_6_3_HMAT_TYPE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES,                 
\
+    EFI_ACPI_6_4_HMAT_TYPE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES,                 
\
     {                                                                          
\
       EFI_ACPI_RESERVED_BYTE,                                                  
\
       EFI_ACPI_RESERVED_BYTE                                                   
\
     },                                                                         
\
-    sizeof (EFI_ACPI_6_3_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES),   
\
+    sizeof (EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES),   
\
     {                                                                          
\
       Flags,                                                                   
\
       0                                                                        
\
@@ -321,28 +320,27 @@ typedef struct {
   }
 
 // System Locality Latency and Bandwidth Information Structure
-// Refer Section 5.2.27.4 in ACPI Specification, Version 6.3
-#define 
EFI_ACPI_6_3_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_INIT(  \
-    Flags, DataType, NumInitiatorProximityDomains,                             
       \
+// Refer Section 5.2.27.4 in ACPI Specification, Version 6.4
+#define 
EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_INIT(  \
+    Flags, DataType, MinTransferSize, NumInitiatorProximityDomains,            
       \
     NumTargetProximityDomains, EntryBaseUnit)                                  
       \
   {                                                                            
       \
-    EFI_ACPI_6_3_HMAT_TYPE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO,         
       \
+    EFI_ACPI_6_4_HMAT_TYPE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO,         
       \
     {                                                                          
       \
       EFI_ACPI_RESERVED_BYTE,                                                  
       \
       EFI_ACPI_RESERVED_BYTE                                                   
       \
     },                                                                         
       \
-    sizeof 
(EFI_ACPI_6_3_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO) + \
+    sizeof 
(EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO) + \
       (4 * NumInitiatorProximityDomains) + (4 * NumTargetProximityDomains) +   
       \
       (2 * NumInitiatorProximityDomains * NumTargetProximityDomains),          
       \
     {                                                                          
       \
       Flags,                                                                   
       \
+      0,                                                                       
       \
       0                                                                        
       \
     },                                                                         
       \
+    MinTransferSize,                                                           
       \
     DataType,                                                                  
       \
-    {                                                                          
       \
-      EFI_ACPI_RESERVED_BYTE,                                                  
       \
-      EFI_ACPI_RESERVED_BYTE                                                   
       \
-    },                                                                         
       \
+    EFI_ACPI_RESERVED_BYTE,                                                    
       \
     NumInitiatorProximityDomains,                                              
       \
     NumTargetProximityDomains,                                                 
       \
     {                                                                          
       \
@@ -355,17 +353,17 @@ typedef struct {
   }
 
 // Memory Side Cache Information Structure
-// Refer Section 5.2.27.5 in ACPI Specification, Version 6.3
-#define EFI_ACPI_6_3_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_INIT(               
\
+// Refer Section 5.2.27.5 in ACPI Specification, Version 6.4
+#define EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_INIT(               
\
     MemoryProximityDomain, MemorySideCacheSize, CacheAttributes,               
\
     NumberOfSmbiosHandles)                                                     
\
   {                                                                            
\
-    EFI_ACPI_6_3_HMAT_TYPE_MEMORY_SIDE_CACHE_INFO,                             
\
+    EFI_ACPI_6_4_HMAT_TYPE_MEMORY_SIDE_CACHE_INFO,                             
\
     {                                                                          
\
       EFI_ACPI_RESERVED_BYTE,                                                  
\
       EFI_ACPI_RESERVED_BYTE                                                   
\
     },                                                                         
\
-    sizeof (EFI_ACPI_6_3_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO) +              
\
+    sizeof (EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO) +              
\
       (NumberOfSmbiosHandles * 2),                                             
\
     MemoryProximityDomain,                                                     
\
     {                                                                          
\
@@ -384,7 +382,7 @@ typedef struct {
   }
 
 /** A macro to initialise the Memory Side Cache Information Attributes.
-    See Table 5.124 in ACPI Specification, Version 6.3
+    See Table 5.130 in ACPI Specification, Version 6.4
 
   @param [in] TotalCacheLevels    Total Cache Levels for this Memory Proximity.
   @param [in] CacheLevel          Cache Level described in this structure.
@@ -399,11 +397,11 @@ typedef struct {
   TotalCacheLevels, CacheLevel, CacheAssociativity, WritePolicy, CacheLineSize 
\
 }
 
-// EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR
-#define EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR_INIT(Length, Flag, Parent,       
\
+// EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR
+#define EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR_INIT(Length, Flag, Parent,       
\
   ACPIProcessorID, NumberOfPrivateResource)                                    
\
   {                                                                            
\
-    EFI_ACPI_6_3_PPTT_TYPE_PROCESSOR,                 /* Type 0 */             
\
+    EFI_ACPI_6_4_PPTT_TYPE_PROCESSOR,                 /* Type 0 */             
\
     Length,                                           /* Length */             
\
     {                                                                          
\
       EFI_ACPI_RESERVED_BYTE,                                                  
\
@@ -415,12 +413,12 @@ typedef struct {
     NumberOfPrivateResource                           /* Resource count */     
\
   }
 
-// EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE
-#define EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE_INIT(Flag, NextLevelCache, Size,     
\
-  NoOfSets, Associativity, Attributes, LineSize)                               
\
+// EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE
+#define EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE_INIT(Flag, NextLevelCache, Size,     
\
+  NoOfSets, Associativity, Attributes, LineSize, CacheId)                      
\
   {                                                                            
\
-    EFI_ACPI_6_3_PPTT_TYPE_CACHE,                     /* Type 1 */             
\
-    sizeof (EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE),       /* Length */             
\
+    EFI_ACPI_6_4_PPTT_TYPE_CACHE,                     /* Type 1 */             
\
+    sizeof (EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE),       /* Length */             
\
     {                                                                          
\
       EFI_ACPI_RESERVED_BYTE,                                                  
\
       EFI_ACPI_RESERVED_BYTE,                                                  
\
@@ -431,7 +429,8 @@ typedef struct {
     NoOfSets,                                         /* Num of sets */        
\
     Associativity,                                    /* Num of ways */        
\
     Attributes,                                       /* Cache attributes */   
\
-    LineSize                                          /* Line size in bytes */ 
\
+    LineSize,                                         /* Line size in bytes */ 
\
+    CacheId                                           /* Cache id */           
\
   }
 
 /** Helper macro for CPPC _CPC object initialization. Use of this macro is
diff --git a/Platform/ARM/SgiPkg/AcpiTables/Dbg2.aslc 
b/Platform/ARM/SgiPkg/AcpiTables/Dbg2.aslc
index 279f847cce4c..b85e7272fd82 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/Dbg2.aslc
+++ b/Platform/ARM/SgiPkg/AcpiTables/Dbg2.aslc
@@ -1,16 +1,22 @@
 /** @file
-*  Debug Port Table 2 (DBG2)
-*
-*  Copyright (c) 2018, ARM Limited. All rights reserved.
-*
-*  SPDX-License-Identifier: BSD-2-Clause-Patent
-*
+  Debug Port Table 2 (DBPG2)
+
+  Debug Port Table 2 is used in platform firmware to describe the debug
+  ports available on the system to the OS. The reference design platforms use
+  the non-secure UART port in the compute subsystem as the debug port.
+
+  Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Specification Reference:
+    - https://docs.microsoft.com/en-us/windows-hardware/drivers/bringup
+      /acpi-debug-port-table
 **/
 
-#include "SgiAcpiHeader.h"
-#include <Library/AcpiLib.h>
-#include <IndustryStandard/Acpi62.h>
 #include <IndustryStandard/DebugPort2Table.h>
+#include <Library/AcpiLib.h>
+#include "SgiAcpiHeader.h"
 
 #define SGI_DBG2_NUM_DEBUG_PORTS           1
 #define SGI_DBG2_NUM_GAS                   1
@@ -21,7 +27,7 @@
 
 typedef struct {
   EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT Dbg2Device;
-  EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE        BaseAddressRegister;
+  EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE        BaseAddressRegister;
   UINT32                                        AddressSize;
   UINT8                                         
NameSpaceString[SGI_DBG2_NS_STR_LENGTH];
 } DBG2_DEBUG_DEVICE_INFORMATION;
@@ -48,7 +54,7 @@ typedef struct {
     OFFSET_OF (DBG2_DEBUG_DEVICE_INFORMATION, BaseAddressRegister), /* UINT16  
  BaseAddressRegister Offset */      \
     OFFSET_OF (DBG2_DEBUG_DEVICE_INFORMATION, AddressSize)          /* UINT16  
  AddressSize Offset */              \
   },                                                                           
                                     \
-  ARM_GAS32 (UartBase),                            /* 
EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister */ \
+  ARM_GAS32 (UartBase),                            /* 
EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister */ \
   UartAddrLen,                                     /* UINT32  AddressSize */   
                                     \
   UartNameStr                                      /* UINT8   
NameSpaceString[MAX_DBG2_NAME_LEN] */                 \
 }
@@ -56,7 +62,7 @@ typedef struct {
 STATIC DBG2_TABLE Dbg2 = {
   {
     ARM_ACPI_HEADER (
-      EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE,
+      EFI_ACPI_6_4_DEBUG_PORT_2_TABLE_SIGNATURE,
       DBG2_TABLE,
       EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION
     ),
diff --git a/Platform/ARM/SgiPkg/AcpiTables/Fadt.aslc 
b/Platform/ARM/SgiPkg/AcpiTables/Fadt.aslc
index 9472aff2e054..5ad448d9c9d2 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/Fadt.aslc
+++ b/Platform/ARM/SgiPkg/AcpiTables/Fadt.aslc
@@ -1,26 +1,32 @@
 /** @file
-*  Fixed ACPI Description Table (FADT)
-*
-*  Copyright (c) 2018, ARM Limited. All rights reserved.
-*
-*  SPDX-License-Identifier: BSD-2-Clause-Patent
-*
+  Fixed ACPI Description Table (FADT)
+
+  FADT defines various fixed hardware ACPI information vital to an ACPI
+  compatible OS. FADT also has a pointer to the DSDT that contains the
+  Differentiated Definition Block, which in turn provides variable information
+  to an ACPI-compatible OS concerning the base system design.
+
+  Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Specification Reference:
+    - ACPI 6.4, Chapter 5, Section 5.2.9, Fixed ACPI Description Table
 **/
 
-#include "SgiAcpiHeader.h"
 #include <Library/AcpiLib.h>
-#include <IndustryStandard/Acpi.h>
+#include "SgiAcpiHeader.h"
 
-STATIC EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE Fadt = {
+STATIC EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE Fadt = {
   ARM_ACPI_HEADER (
-    EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
-    EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE,
-    EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_REVISION
+    EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
+    EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE,
+    EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_REVISION
   ),
   0,                                                                        // 
UINT32     FirmwareCtrl
   0,                                                                        // 
UINT32     Dsdt
   EFI_ACPI_RESERVED_BYTE,                                                   // 
UINT8      Reserved0
-  EFI_ACPI_6_2_PM_PROFILE_ENTERPRISE_SERVER,                                // 
UINT8      PreferredPmProfile
+  EFI_ACPI_6_4_PM_PROFILE_ENTERPRISE_SERVER,                                // 
UINT8      PreferredPmProfile
   0,                                                                        // 
UINT16     SciInt
   0,                                                                        // 
UINT32     SmiCmd
   0,                                                                        // 
UINT8      AcpiEnable
@@ -54,11 +60,11 @@ STATIC EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE Fadt = {
   0,                                                                        // 
UINT8      Century
   0,                                                                        // 
UINT16     IaPcBootArch
   0,                                                                        // 
UINT8      Reserved1
-  EFI_ACPI_6_2_HW_REDUCED_ACPI | EFI_ACPI_6_2_LOW_POWER_S0_IDLE_CAPABLE,    // 
UINT32     Flags
+  EFI_ACPI_6_4_HW_REDUCED_ACPI | EFI_ACPI_6_4_LOW_POWER_S0_IDLE_CAPABLE,    // 
UINT32     Flags
   NULL_GAS,                                                                 // 
GAS        ResetReg
   0,                                                                        // 
UINT8      ResetValue
-  EFI_ACPI_6_2_ARM_PSCI_COMPLIANT,                                          // 
UINT16     ArmBootArchFlags
-  EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION,                 // 
UINT8      MinorRevision
+  EFI_ACPI_6_4_ARM_PSCI_COMPLIANT,                                          // 
UINT16     ArmBootArchFlags
+  EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION,                 // 
UINT8      MinorRevision
   0,                                                                        // 
UINT64     XFirmwareCtrl
   0,                                                                        // 
UINT64     XDsdt
   NULL_GAS,                                                                 // 
GAS        XPm1aEvtBlk
diff --git a/Platform/ARM/SgiPkg/AcpiTables/Gtdt.aslc 
b/Platform/ARM/SgiPkg/AcpiTables/Gtdt.aslc
index b53cbb228f92..70765f87e537 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/Gtdt.aslc
+++ b/Platform/ARM/SgiPkg/AcpiTables/Gtdt.aslc
@@ -1,16 +1,21 @@
 /** @file
-*  Generic Timer Description Table (GTDT)
-*
-*  Copyright (c) 2018, ARM Limited. All rights reserved.
-*
-*  SPDX-License-Identifier: BSD-2-Clause-Patent
-*
+  Generic Timer Description Table (GTDT)
+
+  GTDT provides OSPM with information about a system’s Generic Timers
+  configuration. This table lists the watchdog and generic timer instances
+  available on the reference design platforms.
+
+  Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Specification Reference:
+    - ACPI 6.4, Chapter 5, Section 5.2.24, Generic Timer Description Table
 **/
 
-#include "SgiAcpiHeader.h"
 #include <Library/AcpiLib.h>
 #include <Library/PcdLib.h>
-#include <IndustryStandard/Acpi62.h>
+#include "SgiAcpiHeader.h"
 
 #define SGI_PLATFORM_WATCHDOG_COUNT       2
 #define SGI_PLATFORM_TIMER_COUNT          (SGI_PLATFORM_WATCHDOG_COUNT + 1)
@@ -18,7 +23,7 @@
 
 #define SYSTEM_TIMER_BASE_ADDRESS         0xFFFFFFFFFFFFFFFF
 #define GTDT_GLOBAL_FLAGS                 0
-#define GTDT_GTIMER_FLAGS                 
EFI_ACPI_6_2_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY
+#define GTDT_GTIMER_FLAGS                 
EFI_ACPI_6_4_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY
 
 #define SGI_GT_BLOCK_CTL_BASE             0x2A810000
 #define SGI_GT_BLOCK_FRAME1_CTL_BASE      0x2A820000
@@ -30,18 +35,18 @@
 #define SGI_GT_BLOCK_FRAME0_GSIV          FixedPcdGet32 (PcdGtFrame0Gsiv)
 
 #define SGI_GTX_TIMER_FLAGS               0
-#define GTX_TIMER_SECURE                  
EFI_ACPI_6_2_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER
+#define GTX_TIMER_SECURE                  
EFI_ACPI_6_4_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER
 #define GTX_TIMER_NON_SECURE              0
-#define GTX_TIMER_SAVE_CONTEXT            
EFI_ACPI_6_2_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY
+#define GTX_TIMER_SAVE_CONTEXT            
EFI_ACPI_6_4_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY
 #define SGI_GTX_COMMON_FLAGS_S            (GTX_TIMER_SAVE_CONTEXT | 
GTX_TIMER_SECURE)
 #define SGI_GTX_COMMON_FLAGS_NS           (GTX_TIMER_SAVE_CONTEXT | 
GTX_TIMER_NON_SECURE)
 
-#define EFI_ACPI_6_2_SBSA_GENERIC_WATCHDOG_STRUCTURE_INIT(        \
+#define EFI_ACPI_6_4_ARM_GENERIC_WATCHDOG_STRUCTURE_INIT(         \
   RefreshFramePhysicalAddress, ControlFramePhysicalAddress,       \
   WatchdogTimerGSIV, WatchdogTimerFlags)                          \
   {                                                               \
-    EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG,                      \
-    sizeof (EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE),   \
+    EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG,                       \
+    sizeof (EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_STRUCTURE),    \
     EFI_ACPI_RESERVED_WORD,                                       \
     RefreshFramePhysicalAddress,                                  \
     ControlFramePhysicalAddress,                                  \
@@ -52,20 +57,20 @@
 #pragma pack (1)
 
 typedef struct {
-  EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE       Gtdt;
-  EFI_ACPI_6_2_GTDT_GT_BLOCK_STRUCTURE               GtBlock;
-  EFI_ACPI_6_2_GTDT_GT_BLOCK_TIMER_STRUCTURE         
Frames[SGI_TIMER_FRAMES_COUNT];
-  EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE  
Watchdogs[SGI_PLATFORM_WATCHDOG_COUNT];
-} EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES;
+  EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE       Gtdt;
+  EFI_ACPI_6_4_GTDT_GT_BLOCK_STRUCTURE               GtBlock;
+  EFI_ACPI_6_4_GTDT_GT_BLOCK_TIMER_STRUCTURE         
Frames[SGI_TIMER_FRAMES_COUNT];
+  EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_STRUCTURE   
Watchdogs[SGI_PLATFORM_WATCHDOG_COUNT];
+} EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLES;
 
 #pragma pack ()
 
-STATIC EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES Gtdt = {
+STATIC EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLES Gtdt = {
   {
     ARM_ACPI_HEADER (
-      EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,
-      EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES,
-      EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION
+      EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,
+      EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLES,
+      EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION
     ),
     SYSTEM_TIMER_BASE_ADDRESS,                    // UINT64  PhysicalAddress
     0,                                            // UINT32  Reserved
@@ -79,17 +84,19 @@ STATIC EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES Gtdt = 
{
     GTDT_GTIMER_FLAGS,                            // UINT32  
NonSecurePL2TimerFlags
     0xFFFFFFFFFFFFFFFF,                           // UINT64  
CntReadBasePhysicalAddress
     SGI_PLATFORM_TIMER_COUNT,                     // UINT32  PlatformTimerCount
-    sizeof (EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE) // UINT32 
PlatfromTimerOffset
+    sizeof (EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE), // UINT32 
PlatfromTimerOffset
+    0,                                            // UINT32  
VirtualPL2TimerGSIV
+    0                                             // UINT32  
VirtualPL2TimerFlags
   },
   {
-    EFI_ACPI_6_2_GTDT_GT_BLOCK,                           // UINT8 Type
-    sizeof (EFI_ACPI_6_2_GTDT_GT_BLOCK_STRUCTURE) +       // UINT16 Length
-    sizeof (EFI_ACPI_6_2_GTDT_GT_BLOCK_TIMER_STRUCTURE) *
+    EFI_ACPI_6_4_GTDT_GT_BLOCK,                           // UINT8 Type
+    sizeof (EFI_ACPI_6_4_GTDT_GT_BLOCK_STRUCTURE) +       // UINT16 Length
+    sizeof (EFI_ACPI_6_4_GTDT_GT_BLOCK_TIMER_STRUCTURE) *
     SGI_TIMER_FRAMES_COUNT,
     EFI_ACPI_RESERVED_BYTE,                               // UINT8 Reserved
     SGI_GT_BLOCK_CTL_BASE,                                // UINT64 CntCtlBase
     SGI_TIMER_FRAMES_COUNT,                               // UINT32 
GTBlockTimerCount
-    sizeof (EFI_ACPI_6_2_GTDT_GT_BLOCK_STRUCTURE)         // UINT32 
GTBlockTimerOffset
+    sizeof (EFI_ACPI_6_4_GTDT_GT_BLOCK_STRUCTURE)         // UINT32 
GTBlockTimerOffset
   },
   {
     {
@@ -124,17 +131,17 @@ STATIC EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLES Gtdt 
= {
     }
   },
   {
-    EFI_ACPI_6_2_SBSA_GENERIC_WATCHDOG_STRUCTURE_INIT (
+    EFI_ACPI_6_4_ARM_GENERIC_WATCHDOG_STRUCTURE_INIT (
       FixedPcdGet32 (PcdGenericWatchdogRefreshBase),
       FixedPcdGet32 (PcdGenericWatchdogControlBase),
       FixedPcdGet32 (PcdWdogWS0Gsiv),
       0
     ),
-    EFI_ACPI_6_2_SBSA_GENERIC_WATCHDOG_STRUCTURE_INIT (
+    EFI_ACPI_6_4_ARM_GENERIC_WATCHDOG_STRUCTURE_INIT (
       FixedPcdGet32 (PcdGenericWatchdogRefreshBase),
       FixedPcdGet32 (PcdGenericWatchdogControlBase),
       FixedPcdGet32 (PcdWdogWS1Gsiv),
-      EFI_ACPI_6_2_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER
+      EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_FLAG_SECURE_TIMER
     )
   }
 };
diff --git a/Platform/ARM/SgiPkg/AcpiTables/Mcfg.aslc 
b/Platform/ARM/SgiPkg/AcpiTables/Mcfg.aslc
index 090297d9541a..96fb6281ea53 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/Mcfg.aslc
+++ b/Platform/ARM/SgiPkg/AcpiTables/Mcfg.aslc
@@ -1,22 +1,24 @@
 /** @file
-*  Memory mapped configuration space base address description table (MCFG)
-*
-*  Copyright (c) 2018, ARM Ltd. All rights reserved.
-*
-*  SPDX-License-Identifier: BSD-2-Clause-Patent
-*
+  Memory mapped configuration space base address description table (MCFG)
+
+  The MCFG table provides the address of the PCI configuration space, which
+  is required by the OS to perform the PCIe bus enumeration.
+
+  Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Specification Reference:
+    - http://www.pcisig.com/home
 **/
 
-#include <IndustryStandard/Acpi62.h>
 #include <IndustryStandard/MemoryMappedConfigurationSpaceAccessTable.h>
+#include <Library/AcpiLib.h>
+#include <Library/ArmLib.h>
 #include <Library/PcdLib.h>
 #include "SgiAcpiHeader.h"
 #include "SgiPlatform.h"
 
-#include <Library/AcpiLib.h>
-#include <Library/ArmLib.h>
-#include <IndustryStandard/Acpi.h>
-
 #pragma pack(1)
 typedef struct
 {
@@ -28,7 +30,7 @@ typedef struct
 EFI_ACPI_PCI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_DESCRIPTION_TABLE Mcfg = 
{
   {
     ARM_ACPI_HEADER (
-      
EFI_ACPI_6_2_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE,
+      
EFI_ACPI_6_4_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE,
       EFI_ACPI_PCI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_DESCRIPTION_TABLE,
       EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_REVISION
     ),
diff --git a/Platform/ARM/SgiPkg/AcpiTables/Spcr.aslc 
b/Platform/ARM/SgiPkg/AcpiTables/Spcr.aslc
index 632144530076..6467fcdf4fd0 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/Spcr.aslc
+++ b/Platform/ARM/SgiPkg/AcpiTables/Spcr.aslc
@@ -1,20 +1,27 @@
 /** @file
-*  Serial Port Console Redirection Table (SPCR)
-*
-*  Copyright (c) 2018, ARM Limited. All rights reserved.
-*
-*  SPDX-License-Identifier: BSD-2-Clause-Patent
-*
+  Serial Port Console Redirection Table (SPCR)
+
+  SPCR table provides information about the configuration and use of the serial
+  port or non-legacy UART interface. This table list the non-secure UART
+  instance in the compute subsystem on the reference design platforms as the
+  available serial port.
+
+  Copyright (c) 2018 - 2022, Arm Limited. All rights reserved.
+
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+  @par Specification Reference:
+    - https://docs.microsoft.com/en-us/windows-hardware/drivers/serports/
+      serial-port-console-redirection-table
 **/
 
-#include "SgiAcpiHeader.h"
-#include <Library/AcpiLib.h>
-#include <IndustryStandard/Acpi62.h>
 #include <IndustryStandard/SerialPortConsoleRedirectionTable.h>
+#include <Library/AcpiLib.h>
+#include "SgiAcpiHeader.h"
 
 STATIC EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE Spcr = {
   ARM_ACPI_HEADER (
-    EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,
+    EFI_ACPI_6_4_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,
     EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE,
     EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION
   ),
@@ -26,7 +33,7 @@ STATIC EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE Spcr = {
     EFI_ACPI_RESERVED_BYTE,
     EFI_ACPI_RESERVED_BYTE
   },
-  // EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE  BaseAddress;
+  // EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE  BaseAddress;
   ARM_GAS32 (FixedPcdGet64 (PcdSerialDbgRegisterBase)),
   // UINT8                                   InterruptType;
   EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC,
-- 
2.17.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#87407): https://edk2.groups.io/g/devel/message/87407
Mute This Topic: https://groups.io/mt/89684943/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to