mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-21 12:44:50 +02:00
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:
parent
0e7add1d75
commit
3eca64f157
@ -42,58 +42,57 @@ typedef struct {
|
|||||||
#define FSP_PERFORMANCE_DATA_TIMER_MASK 0xFFFFFFFFFFFFFF
|
#define FSP_PERFORMANCE_DATA_TIMER_MASK 0xFFFFFFFFFFFFFF
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT32 Signature;
|
UINT32 Signature;
|
||||||
UINT8 Version;
|
UINT8 Version;
|
||||||
UINT8 Reserved1[3];
|
UINT8 Reserved1[3];
|
||||||
///
|
///
|
||||||
/// Offset 0x08
|
/// Offset 0x08
|
||||||
///
|
///
|
||||||
UINTN CoreStack;
|
UINTN CoreStack;
|
||||||
UINTN Reserved2;
|
VOID *SmmInitUpdPtr;
|
||||||
///
|
///
|
||||||
/// IA32: Offset 0x10; X64: Offset 0x18
|
/// IA32: Offset 0x10; X64: Offset 0x18
|
||||||
///
|
///
|
||||||
UINT32 StatusCode;
|
UINT32 StatusCode;
|
||||||
UINT8 ApiIdx;
|
UINT8 ApiIdx;
|
||||||
///
|
///
|
||||||
/// 0: FSP in API mode; 1: FSP in DISPATCH mode
|
/// 0: FSP in API mode; 1: FSP in DISPATCH mode
|
||||||
///
|
///
|
||||||
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;
|
||||||
|
|
||||||
|
@ -959,8 +959,13 @@ EndList
|
|||||||
UpdTxtFile = ''
|
UpdTxtFile = ''
|
||||||
FvDir = self._FvDir
|
FvDir = self._FvDir
|
||||||
if GuidList[Index] not in self._MacroDict:
|
if GuidList[Index] not in self._MacroDict:
|
||||||
self.Error = "%s definition is missing in DSC file" % (GuidList[Index])
|
NoFSPI = False
|
||||||
return 1
|
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
|
||||||
|
|
||||||
if UpdTxtFile == '':
|
if UpdTxtFile == '':
|
||||||
UpdTxtFile = os.path.join(FvDir, self._MacroDict[GuidList[Index]] + '.txt')
|
UpdTxtFile = os.path.join(FvDir, self._MacroDict[GuidList[Index]] + '.txt')
|
||||||
@ -1296,7 +1301,8 @@ 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]:
|
||||||
TxtBody.append("#define FSPI_UPD_SIGNATURE %s /* '%s' */\n\n" % (Item['value'], SignatureStr))
|
if NoFSPI == True:
|
||||||
|
TxtBody.append("#define FSPI_UPD_SIGNATURE %s /* '%s' */\n\n" % (Item['value'], SignatureStr))
|
||||||
TxtBody.append("\n")
|
TxtBody.append("\n")
|
||||||
|
|
||||||
for Region in ['UPD']:
|
for Region in ['UPD']:
|
||||||
@ -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]")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user