1## @file
2# CPU SMM driver.
3#
4# This SMM driver performs SMM initialization, deploy SMM Entry Vector,
5# provides CPU specific services in SMM.
6#
7# Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.<BR>
8# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
9#
10# SPDX-License-Identifier: BSD-2-Clause-Patent
11#
12##
13
14[Defines]
15  INF_VERSION                    = 0x00010005
16  BASE_NAME                      = PiSmmCpuDxeSmm
17  MODULE_UNI_FILE                = PiSmmCpuDxeSmm.uni
18  FILE_GUID                      = A3FF0EF5-0C28-42f5-B544-8C7DE1E80014
19  MODULE_TYPE                    = DXE_SMM_DRIVER
20  VERSION_STRING                 = 1.0
21  PI_SPECIFICATION_VERSION       = 0x0001000A
22  ENTRY_POINT                    = PiCpuSmmEntry
23
24#
25# The following information is for reference only and not required by the build tools.
26#
27#  VALID_ARCHITECTURES           = IA32 X64
28#
29
30[Sources]
31  PiSmmCpuDxeSmm.c
32  PiSmmCpuDxeSmm.h
33  MpService.c
34  SyncTimer.c
35  CpuS3.c
36  CpuService.c
37  CpuService.h
38  SmmProfile.c
39  SmmProfile.h
40  SmmProfileInternal.h
41  SmramSaveState.c
42  SmmCpuMemoryManagement.c
43  SmmMp.h
44  SmmMp.c
45
46[Sources.Ia32]
47  Ia32/Semaphore.c
48  Ia32/PageTbl.c
49  Ia32/SmmFuncsArch.c
50  Ia32/SmmProfileArch.c
51  Ia32/SmmProfileArch.h
52  Ia32/SmmInit.nasm
53  Ia32/SmiEntry.nasm
54  Ia32/SmiException.nasm
55  Ia32/MpFuncs.nasm
56  Ia32/Cet.nasm
57
58[Sources.X64]
59  X64/Semaphore.c
60  X64/PageTbl.c
61  X64/SmmFuncsArch.c
62  X64/SmmProfileArch.c
63  X64/SmmProfileArch.h
64  X64/SmmInit.nasm
65  X64/SmiEntry.nasm
66  X64/SmiException.nasm
67  X64/MpFuncs.nasm
68  X64/Cet.nasm
69
70[Packages]
71  MdePkg/MdePkg.dec
72  MdeModulePkg/MdeModulePkg.dec
73  UefiCpuPkg/UefiCpuPkg.dec
74
75[LibraryClasses]
76  UefiDriverEntryPoint
77  UefiRuntimeServicesTableLib
78  PcdLib
79  DebugLib
80  BaseLib
81  SynchronizationLib
82  BaseMemoryLib
83  MtrrLib
84  IoLib
85  TimerLib
86  SmmServicesTableLib
87  MemoryAllocationLib
88  DebugAgentLib
89  HobLib
90  PciLib
91  LocalApicLib
92  UefiCpuLib
93  SmmCpuPlatformHookLib
94  CpuExceptionHandlerLib
95  UefiLib
96  DxeServicesTableLib
97  CpuLib
98  ReportStatusCodeLib
99  SmmCpuFeaturesLib
100  PeCoffGetEntryPointLib
101
102[Protocols]
103  gEfiSmmAccess2ProtocolGuid               ## CONSUMES
104  gEfiMpServiceProtocolGuid                ## CONSUMES
105  gEfiSmmConfigurationProtocolGuid         ## PRODUCES
106  gEfiSmmCpuProtocolGuid                   ## PRODUCES
107  gEfiSmmReadyToLockProtocolGuid           ## NOTIFY
108  gEfiSmmCpuServiceProtocolGuid            ## PRODUCES
109  gEdkiiSmmMemoryAttributeProtocolGuid     ## PRODUCES
110  gEfiMmMpProtocolGuid                    ## PRODUCES
111
112[Guids]
113  gEfiAcpiVariableGuid                     ## SOMETIMES_CONSUMES ## HOB # it is used for S3 boot.
114  gEdkiiPiSmmMemoryAttributesTableGuid     ## CONSUMES ## SystemTable
115  gEfiMemoryAttributesTableGuid            ## CONSUMES ## SystemTable
116
117[FeaturePcd]
118  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmDebug                         ## CONSUMES
119  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmBlockStartupThisAp            ## CONSUMES
120  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmEnableBspElection             ## CONSUMES
121  gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugSupport                   ## CONSUMES
122  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackGuard                    ## CONSUMES
123  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileEnable                 ## CONSUMES
124  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileRingBuffer             ## CONSUMES
125  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmFeatureControlMsrLock         ## CONSUMES
126
127[Pcd]
128  gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber        ## SOMETIMES_CONSUMES
129  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileSize                   ## SOMETIMES_CONSUMES
130  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackSize                     ## CONSUMES
131  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout                 ## CONSUMES
132  gUefiCpuPkgTokenSpaceGuid.PcdCpuS3DataAddress                    ## SOMETIMES_CONSUMES
133  gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugDataAddress               ## SOMETIMES_PRODUCES
134  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmCodeAccessCheckEnable         ## CONSUMES
135  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode                      ## CONSUMES
136  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmShadowStackSize               ## SOMETIMES_CONSUMES
137  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable                   ## CONSUMES
138  gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask    ## CONSUMES
139  gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask    ## CONSUMES
140  gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPropertyMask               ## CONSUMES
141  gEfiMdePkgTokenSpaceGuid.PcdControlFlowEnforcementPropertyMask        ## CONSUMES
142
143[FixedPcd]
144  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmMpTokenCountPerChunk               ## CONSUMES
145
146[Pcd.X64]
147  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmRestrictedMemoryAccess        ## CONSUMES
148
149[Depex]
150  gEfiMpServiceProtocolGuid
151
152[UserExtensions.TianoCore."ExtraFiles"]
153  PiSmmCpuDxeSmmExtra.uni
154