IntelFsp2Pkg: FSPI_UPD is not mandatory.

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3993
FSPI_UPD is required only When platforms implemented FSP_I component.
Updated the scripts to allow FSPI_UPD not present scenario.
Also fixed FSP_GLOBAL_DATA structure alignment issue and unnecessary
non-backward compatibility change in previous FSP_I patch.

Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Signed-off-by: Chasel Chiu <chasel.chiu@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
This commit is contained in:
Chasel Chiu 2022-07-25 12:03:51 -07:00 committed by mergify[bot]
parent 0e7add1d75
commit 3eca64f157
2 changed files with 31 additions and 26 deletions

View File

@ -49,7 +49,7 @@ typedef struct {
/// Offset 0x08 /// Offset 0x08
/// ///
UINTN CoreStack; UINTN CoreStack;
UINTN Reserved2; VOID *SmmInitUpdPtr;
/// ///
/// IA32: Offset 0x10; X64: Offset 0x18 /// IA32: Offset 0x10; X64: Offset 0x18
/// ///
@ -60,40 +60,39 @@ typedef struct {
/// ///
UINT8 FspMode; UINT8 FspMode;
UINT8 OnSeparateStack; UINT8 OnSeparateStack;
UINT8 Reserved3; UINT8 Reserved2;
UINT32 NumberOfPhases; UINT32 NumberOfPhases;
UINT32 PhasesExecuted; UINT32 PhasesExecuted;
UINT32 Reserved4[8]; UINT32 Reserved3[8];
/// ///
/// IA32: Offset 0x40; X64: Offset 0x48 /// IA32: Offset 0x40; X64: Offset 0x48
/// Start of UINTN and pointer section /// Start of UINTN and pointer section
/// All UINTN and pointer members must be put in this section /// All UINTN and pointer members are put in this section
/// except CoreStack and Reserved2. In addition, the number of /// for maintaining natural alignment for both IA32 and X64 builds.
/// UINTN and pointer members must be even for natural alignment
/// in both IA32 and X64.
/// ///
FSP_PLAT_DATA PlatformData; FSP_PLAT_DATA PlatformData;
VOID *TempRamInitUpdPtr; VOID *TempRamInitUpdPtr;
VOID *MemoryInitUpdPtr; VOID *MemoryInitUpdPtr;
VOID *SiliconInitUpdPtr; VOID *SiliconInitUpdPtr;
VOID *SmmInitUpdPtr;
/// ///
/// IA32: Offset 0x68; X64: Offset 0x98 /// IA32: Offset 0x64; X64: Offset 0x90
/// To store function parameters pointer /// To store function parameters pointer
/// so it can be retrieved after stack switched. /// so it can be retrieved after stack switched.
/// ///
VOID *FunctionParameterPtr; VOID *FunctionParameterPtr;
FSP_INFO_HEADER *FspInfoHeader; FSP_INFO_HEADER *FspInfoHeader;
VOID *UpdDataPtr; VOID *UpdDataPtr;
UINTN Reserved5;
/// ///
/// End of UINTN and pointer section /// End of UINTN and pointer section
/// At this point, next field offset must be either *0h or *8h to
/// meet natural alignment requirement.
/// ///
UINT8 Reserved6[16]; UINT8 Reserved4[16];
UINT32 PerfSig; UINT32 PerfSig;
UINT16 PerfLen; UINT16 PerfLen;
UINT16 Reserved7; UINT16 Reserved5;
UINT32 PerfIdx; UINT32 PerfIdx;
UINT32 Reserved6;
UINT64 PerfData[32]; UINT64 PerfData[32];
} FSP_GLOBAL_DATA; } FSP_GLOBAL_DATA;

View File

@ -959,6 +959,11 @@ EndList
UpdTxtFile = '' UpdTxtFile = ''
FvDir = self._FvDir FvDir = self._FvDir
if GuidList[Index] not in self._MacroDict: if GuidList[Index] not in self._MacroDict:
NoFSPI = False
if GuidList[Index] == 'FSP_I_UPD_TOOL_GUID':
NoFSPI = True
continue
else:
self.Error = "%s definition is missing in DSC file" % (GuidList[Index]) self.Error = "%s definition is missing in DSC file" % (GuidList[Index])
return 1 return 1
@ -1296,6 +1301,7 @@ EndList
elif '_S' in SignatureStr[6:6+2]: elif '_S' in SignatureStr[6:6+2]:
TxtBody.append("#define FSPS_UPD_SIGNATURE %s /* '%s' */\n\n" % (Item['value'], SignatureStr)) TxtBody.append("#define FSPS_UPD_SIGNATURE %s /* '%s' */\n\n" % (Item['value'], SignatureStr))
elif '_I' in SignatureStr[6:6+2]: elif '_I' in SignatureStr[6:6+2]:
if NoFSPI == True:
TxtBody.append("#define FSPI_UPD_SIGNATURE %s /* '%s' */\n\n" % (Item['value'], SignatureStr)) TxtBody.append("#define FSPI_UPD_SIGNATURE %s /* '%s' */\n\n" % (Item['value'], SignatureStr))
TxtBody.append("\n") TxtBody.append("\n")
@ -1702,7 +1708,7 @@ EndList
def Usage(): def Usage():
print ("GenCfgOpt Version 0.58") print ("GenCfgOpt Version 0.59")
print ("Usage:") print ("Usage:")
print (" GenCfgOpt UPDTXT PlatformDscFile BuildFvDir [-D Macros]") print (" GenCfgOpt UPDTXT PlatformDscFile BuildFvDir [-D Macros]")
print (" GenCfgOpt HEADER PlatformDscFile BuildFvDir InputHFile [-D Macros]") print (" GenCfgOpt HEADER PlatformDscFile BuildFvDir InputHFile [-D Macros]")