diff --git a/IntelFrameworkPkg/FrameworkSpecConformance.txt b/IntelFrameworkPkg/FrameworkSpecConformance.txt index f70386b728..22f940dfc6 100644 --- a/IntelFrameworkPkg/FrameworkSpecConformance.txt +++ b/IntelFrameworkPkg/FrameworkSpecConformance.txt @@ -1119,13 +1119,18 @@ ## 1. Include/Guid/SmramMemoryReserve.h typedef struct { + UINT32 NumberOfSmmReservedRegions; ... } EFI_SMRAM_HOB_DESCRIPTOR_BLOCK; - The name of the definition is *NOT* consistent with Framework SmmCis specification 0.91, in which it's + 1) The name of the definition is *NOT* consistent with Framework SmmCis specification 0.91, in which it's defined as "EFI_HOB_SMRAM_DESCRIPTOR_BLOCK" rather than "EFI_SMRAM_HOB_DESCRIPTOR_BLOCK". Keeping this inconsistency for backward compatibility. + 2) The definition of NumberOfSmmReservedRegions is *NOT* consistent with Framework SmmCis specification 0.91, + in which the type of this field is defined as UINTN. However, HOBs are supposed to be CPU neutral, so UINTN + is incorrect and UINT32 should be used. + 2. Include/Guid/SmramMemoryReserve.h typedef enum { ... diff --git a/IntelFrameworkPkg/Include/Guid/SmramMemoryReserve.h b/IntelFrameworkPkg/Include/Guid/SmramMemoryReserve.h index 9edec42b9e..04589cf040 100644 --- a/IntelFrameworkPkg/Include/Guid/SmramMemoryReserve.h +++ b/IntelFrameworkPkg/Include/Guid/SmramMemoryReserve.h @@ -42,7 +42,11 @@ typedef struct { /// Designates the number of possible regions in the system /// that can be usable for SMRAM. /// - UINTN NumberOfSmmReservedRegions; + /// Inconsistent with specification here: + /// In Framework SMM CIS 0.91 specification, it defines the field type as UINTN. + /// However, HOBs are supposed to be CPU neutral, so UINT32 should be used instead. + /// + UINT32 NumberOfSmmReservedRegions; /// /// Used throughout this protocol to describe the candidate /// regions for SMRAM that are supported by this platform.