diff options
Diffstat (limited to 'Core/EM/SMBIOS/SmbiosGetFlashData')
5 files changed, 696 insertions, 0 deletions
diff --git a/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.c b/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.c new file mode 100644 index 0000000..49a35da --- /dev/null +++ b/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.c @@ -0,0 +1,497 @@ +//**********************************************************************// +//**********************************************************************// +//** **// +//** (C)Copyright 1985-2015, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//**********************************************************************// +//**********************************************************************// + +//**********************************************************************// +// $Header: /Alaska/SOURCE/Modules/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.c 11 2/17/15 1:17p Davidd $ +// +// $Revision: 11 $ +// +// $Date: 2/17/15 1:17p $ +//**********************************************************************// +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.c $ +// +// 11 2/17/15 1:17p Davidd +// [TAG] EIP205509 +// [Category] Improvement +// [Description] Merge Aptio V Smbios EIP193807, 193858, 196901 changes +// into Aptio 4 Smbios +// [Files] SmbiosDmiEdit.sdl +// SmbiosDmiEdit.c +// SmbiosNvramFunc.c +// SmbiosGetFlashData.c +// +// 10 5/23/13 6:10p Davidd +// [TAG] EIP124635 +// [Category] Bug Fix +// [Severity] Normal +// [Symptom] When DMIEdit data area in BootBlock is erased with 0x00 +// value, the system hangs at CP 0x62 +// [RootCause] In function FindRawSection, a pointer is used to +// traverse sections in the FFS to locate the DMIEdit raw data section. In +// case the "size" of the header become corrupted (cleared to zero), this +// zero value is added to the pointer causes it not to move making the +// system hang. +// [Solution] Check if the size is zero then break out of the while +// loop +// [Files] SmbiosGetFlashData.c +// +// 9 8/30/11 4:15p Davidd +// [TAG] EIP65648 +// [Category] Improvement +// [Description] Update SMBIOS eModules for uEFI 2.3.1 / PI 1.2 +// compliance +// [Files] Smbios.c +// Smbios.dxs +// SmbiosDMIEdit.c +// SmbiosDMIEditFunc.c +// SmbiosGetFlashData.c +// SmbiosGetFlashData.dxs +// +// 8 5/11/11 12:35p Davidd +// [TAG] EIP58171 +// [Category] Bug Fix +// [Severity] Important +// [Symptom] TABLE_INFO structure of SmbiosDMIEdit is not backward +// compatible for AFU preserve DMI structure feature. +// [RootCause] TABLE_INFO structure of SmbiosDMIEdit is not backward +// compatible. +// [Solution] New TABLE_INFO structure defined for backward +// compatibility and support added. +// [Files] Smbios.c +// SmbiosDMIEdit.h +// SmbiosDMIEditFunc.c +// SmbiosGetFlashData.c +// +// 7 11/02/10 4:14p Davidd +// [TAG] EIP42938 +// [Category] BUG FIX +// [Severity] Critical +// [Symptom] The SMBIOS string field cannot be successfully updated +// if it was programmed to Null by the 3-party SMBIOS tool +// [RootCause] BIOS did not have support for NULL strings +// [Solution] Problem has been fixed with code changes +// [Files] +// Smbios.c +// SmbiosDMIEditFunc.c +// SmbiosGetFlashData.c +// SmbiosDMIEdit.h +// SmbiosFlashData.sdl +// +// 6 6/02/09 11:25a Davidd +// Updated AMI and function headers. (EIP 22180) +// +// 5 12/16/08 2:28a Iminglin +// (EIP17767) The function value of FindFile for compliance. +// +// 4 3/29/07 6:11p Davidd +// Changed the year in the AMI banner and adjust indentation to coding +// standard. +// +// 3 12/15/06 5:47p Davidd +// Code cleanup and reformatted to coding standard. +// +// 2 3/21/06 8:44p Fasihm +// Changed the protocol name FvBlock.h to FirmwareVolumeBlock.h to be +// compatable with the new Aptio 4.5 Core and later. +// +// 1 4/29/05 2:07p Davidd +// Initial checkin. +// +// 2 6/12/04 11:54p Markw +// +// 1 5/20/04 3:41p Markw +// +//********************************************************************** + +#include <AmiDxeLib.h> +#include <Token.h> +#include <Protocol\SmbiosGetFlashDataProtocol.h> +#include <Protocol\FirmwareVolumeBlock.h> + +#define Align4(Value) (((Value)+3) & ~3) +#define Align8(Value) (((Value)+7) & ~7) +#define SECTION_SIZE(SectionHeaderPtr) \ + ( (UINT32) ( *((UINT32 *) ((EFI_COMMON_SECTION_HEADER *)SectionHeaderPtr)->Size) & 0x00ffffff) ) + +#pragma pack(1) + +//<AMI_SHDR_START> +//---------------------------------------------------------------------------- +// Name: TABLE_INFO +// +// Description: DMI data record +//---------------------------------------------------------------------------- +//<AMI_SHDR_END> + +#define DMIEDIT_WRITE_ONCE 0x01 +#define DMIEDIT_DELETE_STRUC 0x02 +#define DMIEDIT_ADD_STRUC 0x04 +#define DMIEDIT_EXTENDED_HDR 0x80 + +typedef struct { + UINT8 Type; + UINT8 Offset; // Structure field offset, or string number for Type 11 and 12 + UINT8 Reserved; // Size of string including \0 or UUID (16) + UINT8 Flags; // Bit0 = Write Once + // Bit1 = Delete Structure + // Bit2 = Add structure + // Bit7 = Extended Header + UINT8 HdrLength; + UINT16 Size; + UINT16 Handle; +} TABLE_INFO; + +//<AMI_SHDR_START> +//---------------------------------------------------------------------------- +// Name: ROM_INFO +// +// Description: DMI Data Table Header +//---------------------------------------------------------------------------- +//<AMI_SHDR_END> +typedef struct { + UINT32 Signature; + UINT32 Size; +} ROM_INFO; + +#pragma pack() + + +EFI_GUID FlashDataFile = {0xFD44820B,0xF1AB,0x41c0,0xAE,0x4E,0x0C,0x55,0x55,0x6E,0xB9,0xBD}; +EFI_GUID ZeroGuid = {0,0,0,0,0,0,0,0,0,0,0}; +EFI_GUID FFGuid = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; + +ROM_INFO gRomInfo; +void *gRomData; + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: CompareGuid +// +// Description: Compares two input GUIDs +// +// Input: IN EFI_GUID *G1 +// IN EFI_GUID *G2 +// +// Output: INT8 - 0/-1 for Equal/Not Equal +// +// Modified: +// +// Referrals: +// +// Notes: +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +INT8 +CompareGuid ( + IN EFI_GUID *G1, + IN EFI_GUID *G2 +) +{ + UINT32 *p1 = (UINT32*)G1, *p2 = (UINT32*)G2; + UINTN i; + for(i=0; i<4; ++i) { + if(p1[i] != p2[i]) return -1; + } + return 0; +} + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: GetFlashTableInfo +// +// Description: Get Flash Data location and size. +// +// Input: IN EFI_SMBIOS_FLASH_DATA_PROTOCOL *This +// IN OUT VOID **Location +// IN OUT UINT32 *Size +// +// Output: EFI_STATUS +// +// Modified: +// +// Referrals: +// +// Notes: +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS +GetFlashTableInfo ( + IN EFI_SMBIOS_FLASH_DATA_PROTOCOL *This, + IN OUT VOID **Location, + IN OUT UINT32 *Size +) +{ + *Location = gRomData; + *Size = gRomInfo.Size; + return EFI_SUCCESS; +} + + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: GetField +// +// Description: Get Flash Data Field +// +// Input: IN EFI_SMBIOS_FLASH_DATA_PROTOCOL *This +// IN UINT8 Table +// IN UINT8 Offset +// IN VOID **Field +// +// Output: EFI_STATUS +// +// Modified: +// +// Referrals: +// +// Notes: +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS +GetField ( + IN EFI_SMBIOS_FLASH_DATA_PROTOCOL *This, + IN UINT8 Table, + IN UINT8 Offset, + IN VOID **Field +) +{ + TABLE_INFO *p = gRomData; + + while ( p->Offset != 0xff && (p->Type != Table || p->Offset != Offset)) { + p = (TABLE_INFO*) ((UINT8*)(p+1) + p->Size); + } + + if (p->Offset != 0xff) { + *Field = p + 1; + return EFI_SUCCESS; + } + + *Field = 0; + return EFI_NOT_FOUND; +} + + +EFI_SMBIOS_FLASH_DATA_PROTOCOL gSmbiosFlashDataProtocol = { + GetFlashTableInfo, + GetField +}; + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: FindRawSection +// +// Description: Find the RAW section +// +// Input: IN VOID *Section +// IN VOID *End +// +// Output: VOID* - Pointer to Raw Section if found +// +// Modified: +// +// Referrals: +// +// Notes: +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +VOID* +FindRawSection ( + IN VOID *Section, + IN VOID *End +) +{ + EFI_COMMON_SECTION_HEADER *p = Section; + while((INT32)p < (INT32)End) //Use signed because 0 = 0x100000000 + { + if (p->Type == EFI_SECTION_RAW) return (p+1); + + if (Align4(SECTION_SIZE(p)) == 0x00) { + return 0; // Section size = 0 indicates data is corrupted + } + + p = (EFI_COMMON_SECTION_HEADER*)((UINT8*)p+Align4(SECTION_SIZE(p))); + } + return 0; +} + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: FindFile +// +// Description: Find file in the FV with the input GUID +// +// Input: IN EFI_GUID *Guid +// IN VOID *File +// IN VOID *EndOfFiles +// +// Output: VOID* - Pointer to File if found +// +// Modified: +// +// Referrals: +// +// Notes: +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +VOID* +FindFile ( + IN EFI_GUID *Guid, + IN VOID *File, + IN VOID *EndOfFiles +) +{ + EFI_FFS_FILE_HEADER *p = File; + + while(((INT32)p < (INT32)EndOfFiles) && + ((INT32)(p+sizeof(EFI_FFS_FILE_HEADER)) < (INT32)EndOfFiles)) // Use signed because 0 = 0x100000000 + { + if (0==CompareGuid(Guid,&p->Name)) { + //Found File. + return FindRawSection( + p+1, + (UINT8*)p + (*(UINT32*)p->Size & 0xffffff) - sizeof(*p) + ); + } + //Check for last of File in firmware volume. + if (0==CompareGuid(&p->Name,&FFGuid) || 0==CompareGuid(&p->Name,&ZeroGuid)) + return NULL; + + p = (EFI_FFS_FILE_HEADER*)((UINT8*)p + Align8((*(UINT32*)p->Size & 0xffffff))); + } + + return NULL; +} + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: GetDataLocation +// +// Description: Find the Flash Data file in the FV. +// +// Input: None +// +// Output: EFI_STATUS +// +// Modified: +// +// Referrals: +// +// Notes: +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS +GetDataLocation (VOID) +{ + EFI_GUID gEfiFirmwareVolumeBlockProtocolGuid = EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID; + EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *FvBlock; + EFI_PHYSICAL_ADDRESS Address; + EFI_HANDLE *HandleBuffer; + EFI_STATUS Status; + UINTN i; + UINTN NumHandles; + void *FirstFile; + void *EndOfFiles; + void *File; + + Status = pBS->LocateHandleBuffer(ByProtocol, + &gEfiFirmwareVolumeBlockProtocolGuid, + NULL, + &NumHandles, + &HandleBuffer); + if (EFI_ERROR(Status)) return Status; + + for (i = 0; i < NumHandles; ++i) { + Status = pBS->HandleProtocol(HandleBuffer[i], + &gEfiFirmwareVolumeBlockProtocolGuid, + &FvBlock); + if (EFI_ERROR(Status)) continue; + + Status = FvBlock->GetPhysicalAddress(FvBlock, &Address); + + if (Status == EFI_SUCCESS) { + FirstFile = (UINT8*)Address + + ((EFI_FIRMWARE_VOLUME_HEADER*)Address)->HeaderLength; + + EndOfFiles = (UINT8*)Address + + ((EFI_FIRMWARE_VOLUME_HEADER*)Address)->FvLength; + + File = FindFile(&FlashDataFile, FirstFile, EndOfFiles); + if (!File) { + Status = EFI_NOT_FOUND; + continue; + } + + gRomInfo = *(ROM_INFO*)File; + gRomData = (ROM_INFO*)File + 1; + break; + } + } + + pBS->FreePool(HandleBuffer); + return Status; +} + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: SmbiosGetFlashDataInstall +// +// Description: Driver entry point for SmbiosGetFlashData +// +// Input: IN EFI_HANDLE ImageHandle +// IN EFI_SYSTEM_TABLE *SystemTable +// +// Output: EFI_STATUS +// +// Modified: +// +// Referrals: +// +// Notes: +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS +SmbiosGetFlashDataInstall ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable +) +{ + EFI_STATUS Status; + EFI_GUID gSmbiosFlashDataProtocolGuid = EFI_SMBIOS_FLASH_DATA_PROTOCOL_GUID; + + InitAmiLib(ImageHandle, SystemTable); + + Status = GetDataLocation(); + if (EFI_ERROR(Status)) return Status; + + return pBS->InstallMultipleProtocolInterfaces( + &ImageHandle, + &gSmbiosFlashDataProtocolGuid,&gSmbiosFlashDataProtocol, + NULL); +} + +//**********************************************************************// +//**********************************************************************// +//** **// +//** (C)Copyright 1985-2015, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//**********************************************************************// +//**********************************************************************// diff --git a/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.cif b/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.cif new file mode 100644 index 0000000..880fa15 --- /dev/null +++ b/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.cif @@ -0,0 +1,11 @@ +<component> + name = "SmbiosGetFlashData" + category = ModulePart + LocalRoot = "Core\EM\SMBios\SmbiosGetFlashData\" + RefName = "SmbiosGetFlashData" +[files] +"\SmbiosGetFlashData.sdl" +"\SmbiosGetFlashData.mak" +"\SmbiosGetFlashData.c" +"\SmbiosGetFlashData.dxs" +<endComponent> diff --git a/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.dxs b/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.dxs new file mode 100644 index 0000000..4e37f65 --- /dev/null +++ b/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.dxs @@ -0,0 +1,70 @@ +//**********************************************************************// +//**********************************************************************// +//** **// +//** (C)Copyright 1985-2009, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//**********************************************************************// +//**********************************************************************// + +//**********************************************************************// +// $Header: /Alaska/SOURCE/Modules/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.dxs 5 8/30/11 4:15p Davidd $ +// +// $Revision: 5 $ +// +// $Date: 8/30/11 4:15p $ +//**********************************************************************// +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.dxs $ +// +// 5 8/30/11 4:15p Davidd +// [TAG] EIP65648 +// [Category] Improvement +// [Description] Update SMBIOS eModules for uEFI 2.3.1 / PI 1.2 +// compliance +// [Files] Smbios.c +// Smbios.dxs +// SmbiosDMIEdit.c +// SmbiosDMIEditFunc.c +// SmbiosGetFlashData.c +// SmbiosGetFlashData.dxs +// +// 4 6/02/09 11:27a Davidd +// Updated AMI header section (EIP 22180) +// +// 3 3/29/07 6:11p Davidd +// Changed the year in the AMI banner and adjust indentation to coding +// standard. +// +// 2 3/21/06 8:45p Fasihm +// Changed the protocol name FvBlock.h to FirmwareVolumeBlock.h to be +// compatable with the new Aptio 4.5 Core and later. +// +// +//********************************************************************** + +#include <Protocol\FirmwareVolumeBlock.h> + +DEPENDENCY_START + EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID +DEPENDENCY_END + +//**********************************************************************// +//**********************************************************************// +//** **// +//** (C)Copyright 1985-2009, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//**********************************************************************// +//**********************************************************************// diff --git a/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.mak b/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.mak new file mode 100644 index 0000000..f174415 --- /dev/null +++ b/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.mak @@ -0,0 +1,82 @@ +#//**********************************************************************// +#//**********************************************************************// +#//** **// +#//** (C)Copyright 1985-2009, American Megatrends, Inc. **// +#//** **// +#//** All Rights Reserved. **// +#//** **// +#//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **// +#//** **// +#//** Phone: (770)-246-8600 **// +#//** **// +#//**********************************************************************// +#//**********************************************************************// + +#************************************************************************// +# $Header: /Alaska/SOURCE/Modules/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.mak 6 8/04/10 2:45p Davidd $ +# +# $Revision: 6 $ +# +# $Date: 8/04/10 2:45p $ +#************************************************************************// +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.mak $ +# +# 6 8/04/10 2:45p Davidd +# Remove environment variables "MAKEFILE" and "INCLUDE" - EIP 40634. +# +# 5 6/02/09 11:23a Davidd +# Updated AMI header section (EIP 22180) +# +# 4 1/28/09 11:54a Davidd +# New changes added to support DMIEdit data storage location in flash +# selectable via SMBIOS_DMIEDIT_DATA_LOC SDL token +# +# 3 12/30/08 3:24p Davidd +# Changes added for x32 and x64 binary support. +# +# 2 3/29/07 6:08p Davidd +# Changed the year in the AMI banner. +# +# 1 4/29/05 2:07p Davidd +# Initial checkin. +# +#************************************************************************// + +!IF "$(SMBIOS_DMIEDIT_DATA_LOC)"!="2" +all : SMBIOS_GETFLASHDATA_SUPPORT + +SMBIOS_GETFLASHDATA_SUPPORT : $(BUILD_DIR)\SmbiosGetFlashData.mak SmbiosGetFlashDataBin + +$(BUILD_DIR)\SmbiosGetFlashData.mak : $(SMBIOS_GETFLASHDATA_DIR)\$(@B).cif $(SMBIOS_GETFLASHDATA_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(SMBIOS_GETFLASHDATA_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +SmbiosGetFlashDataBin : $(AMIDXELIB) + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\SmbiosGetFlashData.mak all\ +!IF "$(x64_BUILD)"=="1" + NAME=SmbiosGetFlashData64 \ +!ELSE + NAME=SmbiosGetFlashData32 \ +!ENDIF + MAKEFILE=$(BUILD_DIR)\SmbiosGetFlashData.mak\ + GUID=DED7956D-7E20-4f20-91A1-190439B04D5B \ + ENTRY_POINT=SmbiosGetFlashDataInstall \ + TYPE=BS_DRIVER \ + COMPRESS=1\ +!ENDIF + +#//**********************************************************************// +#//**********************************************************************// +#//** **// +#//** (C)Copyright 1985-2009, American Megatrends, Inc. **// +#//** **// +#//** All Rights Reserved. **// +#//** **// +#//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **// +#//** **// +#//** Phone: (770)-246-8600 **// +#//** **// +#//**********************************************************************// +#//**********************************************************************// diff --git a/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.sdl b/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.sdl new file mode 100644 index 0000000..2ed3cf2 --- /dev/null +++ b/Core/EM/SMBIOS/SmbiosGetFlashData/SmbiosGetFlashData.sdl @@ -0,0 +1,36 @@ +TOKEN + Name = "SmbiosGetFlashData_SUPPORT" + Value = "1" + Help = "Main switch to enable SmbiosGetFlashData support in Project" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes + Token = "SmbiosDMIEdit_SUPPORT" "=" "1" +End + +PATH + Name = "SMBIOS_GETFLASHDATA_DIR" +End + +MODULE + Help = "Includes SmbiosGetFlashData.mak to Project" + File = "SmbiosGetFlashData.mak" +End + +ELINK + Name = "$(BUILD_DIR)\SmbiosGetFlashData32.ffs" + Parent = "$(SMBIOS_DIR)\SmbiosGetFlashData32.ffs" + InvokeOrder = ReplaceParent + Token = "x64_BUILD" "=" "0" + Token = "SMBIOS_DMIEDIT_DATA_LOC" "!=" "2" +End + +ELINK + Name = "$(BUILD_DIR)\SmbiosGetFlashData64.ffs" + Parent = "$(SMBIOS_DIR)\SmbiosGetFlashData64.ffs" + InvokeOrder = ReplaceParent + Token = "x64_BUILD" "=" "1" + Token = "SMBIOS_DMIEDIT_DATA_LOC" "!=" "2" +End + |