#********************************************************************** #********************************************************************** #** ** #** (C)Copyright 1985-2009, American Megatrends, Inc. ** #** ** #** All Rights Reserved. ** #** ** #** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** #** ** #** Phone: (770)-246-8600 ** #** ** #********************************************************************** #********************************************************************** #********************************************************************** # $Header: /Alaska/SOURCE/Core/Modules/NVRAM/NVRAM.mak 12 1/14/14 5:45p Oleksiyy $ # # $Revision: 12 $ # # $Date: 1/14/14 5:45p $ #********************************************************************** # Revision History # ---------------- # $Log: /Alaska/SOURCE/Core/Modules/NVRAM/NVRAM.mak $ # # 12 1/14/14 5:45p Oleksiyy # [TAG] EIP121524 # [Category] New Feature # [Description] Extended Aptio functionality for clearing or restoring # NVRAM to factory default state (preserving only selected Vars). # [Files] NVRAM.sdl # NVRAM.mak # NVRAMDXE.c # NVRAM.cif # # 11 11/07/12 5:42p Oleksiyy # [TAG] EIP98678 # [Category] Improvement # [Description] GetVariable() response slow. Added token to process # only SetVariable through SMI. # [Files] NvramSmi.c, NvramSmi.sdl and NVRAM.mak # # 10 11/11/11 3:23p Felixp # Set DO_NOT_ACCESS_DATA_OUTSIDE_OF_SMM_AT_RUNTIME macro when NvramSmi # eModule is in the project. # # 9 2/04/10 3:58p Felixp # Hook eLinks are renamed # # 8 2/02/10 5:14p Oleksiyy # EIP 33263 : Hooks for SetVariable, GetVariable and GetNextVarName # added # # 7 5/01/09 6:13p Felixp # Bug fix(EIP 19816). $(AMICSPLib) is no longer linked with NVRAM # libraries. # (it caused problems on systems without Core Sources). # $(AMICSPLib) is linked with Runtime and CORE_PEI instead. # # 6 10/09/08 11:47a Felixp # 1. Fault tolerant NVRAM garbage collection support is added. # Use FAULT_TOLERANT_NVRAM_UPDATE SDL token to enable/disable (disabled # by default). # NOTE: This feature requires upgrade of the Board module. # NOTE: This feature requires porting: # Fault tolerant update requires reserved flash area of size NVRAM_SIZE # used for back up during NVRAM garbage collection. # The address of the area is defined by NVRAM_BACKUP_ADDRESS SDL token # defined in Board.sdl. # Size and Base addresses of other firmware volumes may need to be # adjusted to free up space for the NVRAM back up area. # Default ROM layout expects NVRAM back up area immediately below the # main NVRAM area. # For projects with the customized ROM layout Core.mak has to be updated. # 2. Top level NVRAM function updated to be reentrance-safe. # NOTE: This feature requires upgrade of the SB module. # 3. Improved recovery from the flash programming failures and # corruptions within NVRAM area. # 4. More reliable non-fault tolerant garbage collection. # # 5 9/06/07 12:14a Felixp # # 4 8/31/07 3:44p Felixp # NVRAM code has been significantly changed to introduce the following # improvements: # 1. The code is chaned to always use the same amount of memory. # Previous implementation allocated memory as needed, which caused # occasional S4 problems. # Plus S4 resume never worked during the very first boot after the # firmware update. # 2. Support for NVRAM defaults added. # NVRAM image with the default values for the Setup variables is now # generated by the build process. # The image is generated by the HpkTool (included into AMITSE module # part). # In addition to standard Setup defaults it is also possible # to generate manufactoring defaults. Support for the manufactoring # defaults # is disabled by default and can be enabled using # MANUFACTURING_MODE_SUPPORT SDL token. # 3. Support for boot with alternative configurations is added. # Decision to switch to the alternative configuration # (alternative set of values for NVRAM variables) # is based on values returned by the porintg routine in OemPort.c. # During boot with alternative configurations GetVariable service # returns alternative values for the setup-related variables. # If variable does not have an alternative value, current value is # returned. # Two alternative configurations are supported: # Boot with manufactoring settings(activated when IsMfgMode routine in # OemPort.c returns TRUE). # Boot with default settings(activated when IsDefaultConfigMode routine # in OemPort.c returns TRUE). # NOTE: This feature requires of the Board module # 4.NVRAM reset option is added. # If porting routine IsResetConfigMode in OemPort.c returns TRUE in PEI # phase, # NVRAM content will be reset during initialization of the DXE NVRAM # driver. # During reset operation all setup-related variables are reset to their # default values. # All other variables are deleted. # NOTE: This feature requires upgrade of the Board module # 5.Detection of NVRAM update added. # NVRAM implementation detects if NVRAM has been updated since the last # NVRAM call. # This provides ability to use variables services before and after # firmware update. # 6.Overall code clean up and simplification. # 7.Core Sources are no longer required in order to use NV_SIMULATION # option. # 8.PI 1.0 support. # Support for a PI 1.0 complient variable PPI is added. Old PPI is still # preserved in this label for backward compatibility. # New library routines PeiGetVariable and PeiGetNextVariableName are # created in order to hide the differences between two PPIs. # It is recommended to update existing code to use new library routines. # Support of the old PPI may be dropped in the future versions of Core. # 9. NVRAM is now packaged as a raw FFS file embedded into the standard # FV (used to be non-standard FV with raw NVRAM image). # Validation: New NVRAM code has been validated using SCT and EFI version # of Windows Server 2008 # Files modified: Core.sdl, Core.mak, AmiPeiLib.h, PeiLib.c, # ReadOnlyVariable.h, , Token.c, HpkTool.exe, AMITSE.mak, Setup.ini, # NVRAM.sdl, NVRAM.mak, NVRAM.h, NVRAMRead.c, NVRAMPEI.c, # NVRAMDXE.c # # 3 10/13/06 1:27a Felixp # # 2 8/25/06 10:59a Felixp # # 1 8/24/06 12:38p Felixp # #********************************************************************** # # # Name: NVRAM.mak # # Description: # # #********************************************************************** all : NvramPei NvramDxe NVRAM_PEI_OBJECTS=\ $$(BUILD_DIR)\$(NVRAM_DIR)\NVRAMRead.obj\ $$(BUILD_DIR)\$(NVRAM_DIR)\NVRAMPEI.obj NVRAM_DXE_OBJECTS=\ $$(BUILD_DIR)\$(NVRAM_DIR)\NVRAMRead.obj\ $$(BUILD_DIR)\$(NVRAM_DIR)\NVRAMDXE.obj $(BUILD_DIR)\NVRAM.mak : $(NVRAM_DIR)\$(@B).cif $(NVRAM_DIR)\$(@B).mak $(BUILD_RULES) $(CIF2MAK) $(NVRAM_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) Runtime_LIBBin : $(BUILD_DIR)\NVRAMDXE.lib CORE_PEI_LIBBin : $(BUILD_DIR)\NVRAMPEI.lib $(BUILD_DIR)\NVRAMDXE.lib : NvramDxe $(BUILD_DIR)\NVRAMPEI.lib : NvramPei NvramDxe : $(BUILD_DIR)\NVRAM.mak NvramDxeBin NvramPei : $(BUILD_DIR)\NVRAM.mak NvramPeiBin NvramDxeBin : $(ECHO) #define NVRAM_PRESERVE_VARIABLES_LIST $(NvramPreserveVariables) > $(BUILD_DIR)\NvramPreserveList.h $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ /f $(BUILD_DIR)\NVRAM.mak all\ "OBJECTS=$(NVRAM_DXE_OBJECTS)"\ "EXT_HEADERS=$(BUILD_DIR)\token.h\ $(BUILD_DIR)\NvramPreserveList.h" \ TYPE=LIBRARY LIBRARY_NAME=$(BUILD_DIR)\NVRAMDXE.lib\ "MY_DEFINES=/D\"GET_VAR_LIST=$(GetVariableHook)\"\ /D\"GET_NEXT_VAR_NAME_LIST=$(GetNextVariableNameHook)\"\ !IF "$(NvramSmiSupport)"=="1" && "$(NVRAM_SMI_FULL_PROTECTION)"=="1" /D\"DO_NOT_ACCESS_DATA_OUTSIDE_OF_SMM_AT_RUNTIME=1\"\ !ENDIF /D\"SET_VAR_LIST=$(SetVariableHook)\"" NvramPeiBin : $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ /f $(BUILD_DIR)\NVRAM.mak all\ !IF "$(x64_BUILD)"=="1" BUILD_DIR=$(BUILD_DIR)\IA32\ !ELSE BUILD_DIR=$(BUILD_DIR)\ !ENDIF "OBJECTS=$(NVRAM_PEI_OBJECTS)"\ TYPE=PEI_LIBRARY LIBRARY_NAME=$(BUILD_DIR)\NVRAMPEI.lib\ "MY_DEFINES=/D\"PEI_GET_VAR_LIST=$(PeiGetVariableHook)\"\ /D\"PEI_GET_NEXT_VAR_NAME_LIST=$(PeiGetNextVariableNameHook)\"" #********************************************************************** #********************************************************************** #** ** #** (C)Copyright 1985-2009, American Megatrends, Inc. ** #** ** #** All Rights Reserved. ** #** ** #** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** #** ** #** Phone: (770)-246-8600 ** #** ** #********************************************************************** #**********************************************************************