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

View File

@ -959,6 +959,11 @@ EndList
UpdTxtFile = ''
FvDir = self._FvDir
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])
return 1
@ -1296,6 +1301,7 @@ EndList
elif '_S' in SignatureStr[6:6+2]:
TxtBody.append("#define FSPS_UPD_SIGNATURE %s /* '%s' */\n\n" % (Item['value'], SignatureStr))
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("\n")
@ -1702,7 +1708,7 @@ EndList
def Usage():
print ("GenCfgOpt Version 0.58")
print ("GenCfgOpt Version 0.59")
print ("Usage:")
print (" GenCfgOpt UPDTXT PlatformDscFile BuildFvDir [-D Macros]")
print (" GenCfgOpt HEADER PlatformDscFile BuildFvDir InputHFile [-D Macros]")