diff options
Diffstat (limited to 'ReferenceCode/Chipset/SystemAgent/SaInit/Smm')
7 files changed, 520 insertions, 0 deletions
diff --git a/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.c b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.c new file mode 100644 index 0000000..45ce0af --- /dev/null +++ b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.c @@ -0,0 +1,204 @@ +/** @file + This SMM driver will handle SA relevant late initialization + +@copyright + Copyright (c) 2012 Intel Corporation. All rights reserved + This software and associated documentation (if any) is furnished + under a license and may only be used or copied in accordance + with the terms of the license. Except as permitted by such + license, no part of this software or documentation may be + reproduced, stored in a retrieval system, or transmitted in any + form or by any means without the express written consent of + Intel Corporation. + + This file contains an 'Intel Peripheral Driver' and uniquely + identified as "Intel Reference Module" and is + licensed for Intel CPUs and chipsets under the terms of your + license agreement with Intel or your vendor. This file may + be modified by the user, subject to additional terms of the + license agreement +**/ + +/// +/// External include files do NOT need to be explicitly specified in real EDKII +/// environment +/// +#if !defined(EDK_RELEASE_VERSION) || (EDK_RELEASE_VERSION < 0x00020000) +#include "SaBuildFlags.h" +#include "EdkIIGlueDxe.h" +#include "SaLateInitSmm.h" +#include "SaRegs.h" +#include "SaAccess.h" +#include "PchAccess.h" +#include "CpuIA32.h" +#include "SaPcieLib.h" +#include EFI_PROTOCOL_DEPENDENCY (SmmIoTrapDispatch) +#include EFI_GUID_DEFINITION (SaDataHob) +#endif + +typedef enum { + EnumSaSmiCallbackForMaxPayLoad, + EnumSaSmiCallbackForSecurityLock, + EnumSaSmiCallbackForLateInit, + EnumSaSmiCallbackForS3resume, + EnumSaSmiCallbackMax +} SMI_OPERATION; + +UINT8 mSaSmiCallbackPhase = EnumSaSmiCallbackForMaxPayLoad; + +/** + A SMI callback to do SA relevant late initialization + + @param[in] DispatchHandle - The handle of this callback, obtained when registering + @param[in] DispatchContext - Pointer to the EFI_SMM_IO_TRAP_DISPATCH_CALLBACK_CONTEXT + + @retval None +**/ +VOID +EFIAPI +SaIoTrapSmiCallback ( + IN EFI_HANDLE DispatchHandle, + IN EFI_SMM_IO_TRAP_DISPATCH_CALLBACK_CONTEXT *CallbackContext + ) +{ + + if (mSaSmiCallbackPhase == EnumSaSmiCallbackMax) { + return; + } + if (mSaSmiCallbackPhase == EnumSaSmiCallbackForMaxPayLoad) { + SaPcieEnumCallback (); + /// + /// Switch to next phase + /// + mSaSmiCallbackPhase = EnumSaSmiCallbackForSecurityLock; + } else if (mSaSmiCallbackPhase == EnumSaSmiCallbackForSecurityLock) { + /// + /// Save platform registers including IGFX BAR & COMMAND registers and PAM + /// + SaSaveRestorePlatform (TRUE); + SaSecurityLock (); + /// + /// Switch to next phase + /// + mSaSmiCallbackPhase = EnumSaSmiCallbackForLateInit; + } else if (mSaSmiCallbackPhase == EnumSaSmiCallbackForLateInit) { + /// + /// Expected to execute in ReadyToBoot point (after OROM) + /// + SaPcieConfigAfterOpRom (); + /// + /// Switch to next phase + /// + mSaSmiCallbackPhase = EnumSaSmiCallbackForS3resume; + } else if (mSaSmiCallbackPhase == EnumSaSmiCallbackForS3resume) { + /// + /// Expected to execute in end of S3 resume flow + /// + SaS3ResumeCallback (); + } +} + +/** + Initializes the SA SMM handler + + @param[in] ImageHandle - The image handle of Wake On Lan driver + @param[in] SystemTable - The standard EFI system table + + @retval EFI_SUCCESS - SA SMM handler was installed or not necessary + @retval EFI_NOT_FOUND - DxePlatformSaPolicy not found +**/ +EFI_STATUS +SaLateInitSmmEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_SMM_IO_TRAP_DISPATCH_PROTOCOL *PchIoTrap; + EFI_HANDLE PchIoTrapHandle; + EFI_SMM_IO_TRAP_DISPATCH_REGISTER_CONTEXT PchIoTrapContext; + SA_DATA_HOB *SaDataHob; + DXE_PLATFORM_SA_POLICY_PROTOCOL *DxePlatformSaPolicy; + BOOLEAN InitPcieAspmAfterOprom; + EFI_PHYSICAL_ADDRESS IotrapAddress; + + DEBUG ((EFI_D_INFO, "SaLateInitSmmEntryPoint()\n")); + + SaDataHob = NULL; + SaDataHob = (SA_DATA_HOB *)GetFirstGuidHob (&gSaDataHobGuid); + Status = EFI_NOT_FOUND; + if ((SaDataHob != NULL)) { + /// + /// Locate the PCH Trap dispatch protocol + /// + Status = gBS->LocateProtocol (&gEfiSmmIoTrapDispatchProtocolGuid, NULL, (VOID **) &PchIoTrap); + ASSERT_EFI_ERROR (Status); + if ((Status == EFI_SUCCESS) && (SaDataHob->SaIotrapSmiAddress != 0)) { + /// + /// Allocate 16 byte range from GCD for this IO trap address + /// + IotrapAddress = SaDataHob->SaIotrapSmiAddress; + DEBUG ((EFI_D_INFO, "Iotrap address=%X\n", SaDataHob->SaIotrapSmiAddress)); + Status = gDS->AllocateIoSpace ( + EfiGcdAllocateAddress, + EfiGcdIoTypeIo, + 0, + 0x10, + &IotrapAddress, + ImageHandle, + NULL + ); + ASSERT_EFI_ERROR (Status); + if (Status == EFI_SUCCESS) { + PchIoTrapContext.Type = ReadWriteTrap; + PchIoTrapContext.Length = 4; + PchIoTrapContext.Address = SaDataHob->SaIotrapSmiAddress; + PchIoTrapContext.Context = NULL; + PchIoTrapContext.MergeDisable = FALSE; + Status = PchIoTrap->Register ( + PchIoTrap, + SaIoTrapSmiCallback, + &PchIoTrapContext, + &PchIoTrapHandle + ); + ASSERT_EFI_ERROR (Status); + if (Status == EFI_SUCCESS) { + InitPcieAspmAfterOprom = SaDataHob->InitPcieAspmAfterOprom; +#if SA_PCIE_ASPM_IN_DXE == 0 + /// + /// There is no DXE ASPM code so always executes SMM code + /// + InitPcieAspmAfterOprom = 1; +#endif + if (InitPcieAspmAfterOprom == 1) { + /// + /// Initialize module global variables - Stepping ID and Platform Policy for runtime SMI handler + /// Get the platform setup policy. + /// + Status = gBS->LocateProtocol (&gDxePlatformSaPolicyGuid, NULL, (VOID **) &DxePlatformSaPolicy); + ASSERT_EFI_ERROR (Status); + if (DxePlatformSaPolicy != NULL) { + SaPcieInitPolicy (DxePlatformSaPolicy); + } + } else { + /// + /// InitPcieAspmAfterOprom was not available or disabled, make this SMI handler directly return. + /// + mSaSmiCallbackPhase = EnumSaSmiCallbackMax; + } + } + } + } + } + + /// + /// For security consideration, if this SMM driver was compiled/executed, the IOTRAP SMI handler must be registered successfully. + /// If not, hang system here + /// + if (Status != EFI_SUCCESS) { + DEBUG ((EFI_D_ERROR, "Failed to register SaIotrapSmiCallback! System halt!\n")); + EFI_DEADLOOP (); + } + + return EFI_SUCCESS; +} diff --git a/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.cif b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.cif new file mode 100644 index 0000000..6fbd4ba --- /dev/null +++ b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.cif @@ -0,0 +1,13 @@ +<component> + name = "SaLateInitSmm" + category = ModulePart + LocalRoot = "ReferenceCode\Chipset\SystemAgent\SaInit\Smm\" + RefName = "SaLateInitSmm" +[files] +"SaLateInitSmm.sdl" +"SaLateInitSmm.mak" +"SaLateInitSmm.h" +"SaLateInitSmm.c" +"SaLateInitSmm.dxs" +"SaLateInitSmm.inf" +<endComponent> diff --git a/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.dxs b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.dxs new file mode 100644 index 0000000..8890d7d --- /dev/null +++ b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.dxs @@ -0,0 +1,45 @@ +/** @file + Dependency expression source file. + +@copyright + Copyright (c) 2012 Intel Corporation. All rights reserved + This software and associated documentation (if any) is furnished + under a license and may only be used or copied in accordance + with the terms of the license. Except as permitted by such + license, no part of this software or documentation may be + reproduced, stored in a retrieval system, or transmitted in any + form or by any means without the express written consent of + Intel Corporation. + + This file contains a 'Sample Driver' and is licensed as such + under the terms of your license agreement with Intel or your + vendor. This file may be modified by the user, subject to + the additional terms of the license agreement + +**/ + + +// +// Common for R8 and R9 codebase +// +#include "AutoGen.h" +#include "DxeDepex.h" + +// +// BUILD_WITH_GLUELIB and BUILD_WITH_EDKII_GLUE_LIB are both "defined" in R8 codebase; +// BUILD_WITH_EDKII_GLUE_LIB is defined in Edk-Dev-Snapshot-20070228 and later version +// BUILD_WITH_GLUELIB and BUILD_WITH_EDKII_GLUE_LIB are "not defined" in R9 codebase. +// +#if defined (BUILD_WITH_GLUELIB) || defined (BUILD_WITH_EDKII_GLUE_LIB) +#include "EfiDepex.h" + +#include EFI_PROTOCOL_DEPENDENCY (SmmBase) +#include EFI_PROTOCOL_DEPENDENCY (SmmIoTrapDispatch) +#include EFI_PROTOCOL_DEPENDENCY (SaPlatformPolicy) +#endif + +DEPENDENCY_START + EFI_SMM_BASE_PROTOCOL_GUID AND + EFI_SMM_IO_TRAP_DISPATCH_PROTOCOL_GUID AND + DXE_PLATFORM_SA_POLICY_GUID +DEPENDENCY_END diff --git a/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.h b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.h new file mode 100644 index 0000000..71ff7e4 --- /dev/null +++ b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.h @@ -0,0 +1,39 @@ +/** @file + Header file for SA SMM Handler + +@copyright + Copyright (c) 2012 Intel Corporation. All rights reserved + This software and associated documentation (if any) is furnished + under a license and may only be used or copied in accordance + with the terms of the license. Except as permitted by such + license, no part of this software or documentation may be + reproduced, stored in a retrieval system, or transmitted in any + form or by any means without the express written consent of + Intel Corporation. + + This file contains an 'Intel Peripheral Driver' and uniquely + identified as "Intel Reference Module" and is + licensed for Intel CPUs and chipsets under the terms of your + license agreement with Intel or your vendor. This file may + be modified by the user, subject to additional terms of the + license agreement +**/ + +#ifndef _SaLateInitSmm_H_ +#define _SaLateInitSmm_H_ + +/// +/// External include files do NOT need to be explicitly specified in real EDKII +/// environment +/// +#if !defined(EDK_RELEASE_VERSION) || (EDK_RELEASE_VERSION < 0x00020000) +#include "EdkIIGlueDxe.h" +/// +/// Driver Consumed Protocol Prototypes +/// +#include EFI_PROTOCOL_DEPENDENCY (SmmBase) +#include EFI_PROTOCOL_DEPENDENCY (SmmIchnDispatch) +#include EFI_PROTOCOL_DEPENDENCY (SaPlatformPolicy) + +#endif +#endif diff --git a/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.inf b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.inf new file mode 100644 index 0000000..3fd8846 --- /dev/null +++ b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.inf @@ -0,0 +1,97 @@ +## @file +# Component description file for the SA late initialization SMM module. +# +#@copyright +# Copyright (c) 2012 Intel Corporation. All rights reserved +# This software and associated documentation (if any) is furnished +# under a license and may only be used or copied in accordance +# with the terms of the license. Except as permitted by such +# license, no part of this software or documentation may be +# reproduced, stored in a retrieval system, or transmitted in any +# form or by any means without the express written consent of +# Intel Corporation. +# +# This file contains a 'Sample Driver' and is licensed as such +# under the terms of your license agreement with Intel or your +# vendor. This file may be modified by the user, subject to +# the additional terms of the license agreement +# + +[defines] +BASE_NAME = SaLateInitSmm +FILE_GUID = 2D1E361C-7B3F-4d15-8B1F-66E551FABDC7 +COMPONENT_TYPE = RT_DRIVER + +[sources.common] + SaLateInitSmm.c + SaLateInitSmm.h + +# +# Edk II Glue Driver Entry Point +# + EdkIIGlueSmmDriverEntryPoint.c + +[includes.common] + $(EDK_SOURCE)/Foundation + $(EDK_SOURCE)/Foundation/Efi + $(EDK_SOURCE)/Foundation/Framework + $(EDK_SOURCE)/Foundation/Include + $(EDK_SOURCE)/Foundation/Efi/Include + $(EDK_SOURCE)/Foundation/Framework/Include + $(EDK_SOURCE)/Foundation/Include/IndustryStandard + $(EDK_SOURCE)/Foundation/Core/Dxe + $(EDK_SOURCE)/Foundation/Core/Dxe/Include + $(EDK_SOURCE)/Foundation/Library/Dxe/Include + $(EDK_SOURCE)/Foundation/Library/EdkIIGlueLib/Include/Pcd + $(EDK_SOURCE)/Foundation/Library/EdkIIGlueLib/Include + $(EDK_SOURCE)/Foundation/Library/EdkIIGlueLib/Include/Library + $(EDK_SOURCE)/Foundation/Cpu/Pentium/Include + $(EFI_SOURCE)/$(PROJECT_SA_ROOT)/Include + $(EFI_SOURCE)/$(PROJECT_SA_ROOT) + $(EFI_SOURCE)/$(PROJECT_SA_ROOT)/Library/SaPcieLib/Common + $(EFI_SOURCE)/$(PROJECT_PCH_ROOT)/Include + $(EFI_SOURCE)/$(PROJECT_PCH_ROOT) + + +[libraries.common] + EdkProtocolLib + ArchProtocolLib + EdkFrameworkProtocolLib + EdkIIGlueBaseLib + EdkIIGlueBaseIoLibIntrinsic + EdkIIGlueBaseMemoryLib + EdkIIGlueDxeMemoryAllocationLib + EdkIIGlueDxeDebugLibReportStatusCode + EdkIIGlueSmmRuntimeDxeReportStatusCodeLib + EdkIIGlueBasePciLibPciExpress + EdkIIGlueUefiLib + EdkIIGlueUefiBootServicesTableLib + EdkIIGlueDxeServicesTableLib + EdkIIGlueUefiRuntimeServicesTableLib + EdkIIGlueUefiDevicePathLib + EfiProtocolLib + $(PROJECT_SA_FAMILY)ProtocolLib + SaGuidLib + EdkIIGlueDxeHobLib + CpuPlatformLib + SaPcieSmmLib + $(PROJECT_PCH_FAMILY)ProtocolLib + +[nmake.common] + IMAGE_ENTRY_POINT=_ModuleEntryPoint + DPX_SOURCE=SaLateInitSmm.dxs + + C_FLAGS = $(C_FLAGS) -D __EDKII_GLUE_MODULE_ENTRY_POINT__=SaLateInitSmmEntryPoint + C_FLAGS = $(C_FLAGS) -D __EDKII_GLUE_BASE_LIB__ \ + -D __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__ \ + -D __EDKII_GLUE_BASE_MEMORY_LIB__ \ + -D __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__ \ + -D __EDKII_GLUE_DXE_DEBUG_LIB_REPORT_STATUS_CODE__ \ + -D __EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__ \ + -D __EDKII_GLUE_UEFI_LIB__\ + -D __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__ \ + -D __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__ \ + -D __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__ \ + -D __EDKII_GLUE_UEFI_DEVICE_PATH_LIB__ \ + -D __EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__ \ + -D __EDKII_GLUE_DXE_HOB_LIB__ diff --git a/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.mak b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.mak new file mode 100644 index 0000000..dfa035d --- /dev/null +++ b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.mak @@ -0,0 +1,96 @@ +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2011, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* + +#--------------------------------------------------------------------------- +# Create SaLateInitSmm Driver +#--------------------------------------------------------------------------- +EDK : SaLateInitSmm +SaLateInitSmm : $(BUILD_DIR)\SaLateInitSmm.mak SaLateInitSmmBin + + +$(BUILD_DIR)\SaLateInitSmm.mak : $(SaLateInitSmm_DIR)\$(@B).cif $(SaLateInitSmm_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(SaLateInitSmm_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +SaLateInitSmm_INCLUDES=\ + $(EdkIIGlueLib_INCLUDES)\ + $(INTEL_MCH_INCLUDES)\ + $(INTEL_PCH_INCLUDES)\ + /I$(INTEL_SYSTEM_AGENT_DIR)\Library\SaPcieLib\Common\ + +SaLateInitSmm_DEFINES = $(MY_DEFINES)\ + /D"__EDKII_GLUE_MODULE_ENTRY_POINT__=SaLateInitSmmEntryPoint"\ + /D __EDKII_GLUE_BASE_LIB__ \ + /D __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__ \ + /D __EDKII_GLUE_BASE_MEMORY_LIB__ \ + /D __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__ \ + /D __EDKII_GLUE_DXE_DEBUG_LIB_REPORT_STATUS_CODE__ \ + /D __EDKII_GLUE_SMM_RUNTIME_DXE_REPORT_STATUS_CODE_LIB__ \ + /D __EDKII_GLUE_UEFI_LIB__ \ + /D __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__ \ + /D __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__ \ + /D __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__ \ + /D __EDKII_GLUE_UEFI_DEVICE_PATH_LIB__ \ + /D __EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__ \ + /D __EDKII_GLUE_DXE_HOB_LIB__ \ + +SaLateInitSmm_LIB_LINKS =\ + $(EDKPROTOCOLLIB)\ + $(ArchProtocolLib)\ + $(EDKFRAMEWORKPROTOCOLLIB)\ + $(EdkIIGlueBaseLib_LIB)\ + $(EdkIIGlueBaseIoLibIntrinsic_LIB)\ + $(EdkIIGlueBaseMemoryLib_LIB)\ + $(EdkIIGlueDxeMemoryAllocationLib_LIB)\ + $(EdkIIGlueDxeDebugLibReportStatusCode_LIB)\ + $(EdkIIGlueSmmRuntimeDxeReportStatusCodeLib_LIB)\ + $(EdkIIGlueBasePciLibPciExpress_LIB)\ + $(EdkIIGlueUefiLib_LIB)\ + $(EdkIIGlueSmmFirmwarePerformanceLib_LIB)\ + $(EdkIIGlueDxeServicesTableLib_LIB)\ + $(EdkIIGlueUefiRuntimeServicesTableLib_LIB)\ + $(EdkIIGlueUefiDevicePathLib_LIB)\ + $(EFIPROTOCOLLIB)\ + $(INTEL_SA_PROTOCOL_LIB)\ + $(SaGuidLib_LIB)\ + $(EdkIIGlueDxeHobLib_LIB)\ + $(CpuPlatformLib_LIB)\ + $(PchPlatformDxeLib_LIB)\ + $(SaPcieSmmLib_LIB)\ + $(INTEL_PCH_PROTOCOL_LIB)\ + +SaLateInitSmmBin: $(COMPILERSTUB) $(SaLateInitSmm_LIB_LINKS) + $(MAKE) /$(MAKEFLAGS) $(EDKIIGLUE_DEFAULTS)\ + /f $(BUILD_DIR)\SaLateInitSmm.mak all \ + "MY_INCLUDES=$(SaLateInitSmm_INCLUDES)" \ + "MY_DEFINES=$(SaLateInitSmm_DEFINES)" \ + GUID=2D1E361C-7B3F-4d15-8B1F-66E551FABDC7\ + ENTRY_POINT=_ModuleEntryPoint \ + TYPE=BS_DRIVER\ + EDKIIModule=SMMDRIVER\ + DEPEX1=$(SaLateInitSmm_DIR)\SaLateInitSmm.dxs\ + DEPEX1_TYPE=EFI_SECTION_DXE_DEPEX \ + COMPRESS=1 +#************************************************************************* +#************************************************************************* +#** ** +#** (C)Copyright 1985-2011, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#************************************************************************* +#************************************************************************* diff --git a/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.sdl b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.sdl new file mode 100644 index 0000000..285ea16 --- /dev/null +++ b/ReferenceCode/Chipset/SystemAgent/SaInit/Smm/SaLateInitSmm.sdl @@ -0,0 +1,26 @@ +TOKEN + Name = "SaLateInitSmm_SUPPORT" + Value = "1" + Help = "Main switch to enable SaLateInitSmm support in Project" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + TargetH = Yes + Master = Yes +End + +PATH + Name = "SaLateInitSmm_DIR" + Help = "SaLateInitSmm file source directory" +End + +MODULE + Help = "Includes SaLateInitSmm.mak to Project" + File = "SaLateInitSmm.mak" +End + +ELINK + Name = "$(BUILD_DIR)\SaLateInitSmm.ffs" + Parent = "FV_MAIN" + InvokeOrder = AfterParent +End
\ No newline at end of file |