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 - 2016, Intel Corporation. All rights reserved.<BR>
8#
9# This program and the accompanying materials
10# are licensed and made available under the terms and conditions of the BSD License
11# which accompanies this distribution.  The full text of the license may be found at
12# http://opensource.org/licenses/bsd-license.php
13#
14# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
15# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16#
17##
18
19[Defines]
20  INF_VERSION                    = 0x00010005
21  BASE_NAME                      = PiSmmCpuDxeSmm
22  MODULE_UNI_FILE                = PiSmmCpuDxeSmm.uni
23  FILE_GUID                      = A3FF0EF5-0C28-42f5-B544-8C7DE1E80014
24  MODULE_TYPE                    = DXE_SMM_DRIVER
25  VERSION_STRING                 = 1.0
26  PI_SPECIFICATION_VERSION       = 0x0001000A
27  ENTRY_POINT                    = PiCpuSmmEntry
28
29#
30# The following information is for reference only and not required by the build tools.
31#
32#  VALID_ARCHITECTURES           = IA32 X64
33#
34
35[Sources]
36  PiSmmCpuDxeSmm.c
37  PiSmmCpuDxeSmm.h
38  MpService.c
39  SyncTimer.c
40  CpuS3.c
41  CpuService.c
42  CpuService.h
43  SmmProfile.c
44  SmmProfile.h
45  SmmProfileInternal.h
46  SmramSaveState.c
47  SmmCpuMemoryManagement.c
48
49[Sources.Ia32]
50  Ia32/Semaphore.c
51  Ia32/PageTbl.c
52  Ia32/SmmFuncsArch.c
53  Ia32/SmmProfileArch.c
54  Ia32/SmmProfileArch.h
55  Ia32/SmmInit.asm
56  Ia32/SmiEntry.asm
57  Ia32/SmiException.asm
58  Ia32/MpFuncs.asm
59
60  Ia32/SmmInit.nasm
61  Ia32/SmiEntry.nasm
62  Ia32/SmiException.nasm
63  Ia32/MpFuncs.nasm
64
65  Ia32/SmmInit.S
66  Ia32/SmiEntry.S
67  Ia32/SmiException.S
68  Ia32/MpFuncs.S
69
70[Sources.X64]
71  X64/Semaphore.c
72  X64/PageTbl.c
73  X64/SmmFuncsArch.c
74  X64/SmmProfileArch.c
75  X64/SmmProfileArch.h
76  X64/SmmInit.asm
77  X64/SmiEntry.asm
78  X64/SmiException.asm
79  X64/MpFuncs.asm
80
81  X64/SmmInit.nasm
82  X64/SmiEntry.nasm
83  X64/SmiException.nasm
84  X64/MpFuncs.nasm
85
86  X64/SmmInit.S
87  X64/SmiEntry.S
88  X64/SmiException.S
89  X64/MpFuncs.S
90
91[Packages]
92  MdePkg/MdePkg.dec
93  MdeModulePkg/MdeModulePkg.dec
94  UefiCpuPkg/UefiCpuPkg.dec
95
96[LibraryClasses]
97  UefiDriverEntryPoint
98  UefiRuntimeServicesTableLib
99  CacheMaintenanceLib
100  PcdLib
101  DebugLib
102  BaseLib
103  SynchronizationLib
104  BaseMemoryLib
105  MtrrLib
106  IoLib
107  TimerLib
108  SmmServicesTableLib
109  MemoryAllocationLib
110  DebugAgentLib
111  HobLib
112  PciLib
113  LocalApicLib
114  UefiCpuLib
115  SmmCpuPlatformHookLib
116  CpuExceptionHandlerLib
117  UefiLib
118  DxeServicesTableLib
119  CpuLib
120  ReportStatusCodeLib
121  SmmCpuFeaturesLib
122  PeCoffGetEntryPointLib
123
124[Protocols]
125  gEfiSmmAccess2ProtocolGuid               ## CONSUMES
126  gEfiMpServiceProtocolGuid                ## CONSUMES
127  gEfiSmmConfigurationProtocolGuid         ## PRODUCES
128  gEfiSmmCpuProtocolGuid                   ## PRODUCES
129  gEfiSmmReadyToLockProtocolGuid           ## NOTIFY
130  gEfiSmmCpuServiceProtocolGuid            ## PRODUCES
131
132[Guids]
133  gEfiAcpiVariableGuid                     ## SOMETIMES_CONSUMES ## HOB # it is used for S3 boot.
134  gEfiGlobalVariableGuid                   ## SOMETIMES_PRODUCES ## Variable:L"SmmProfileData"
135  gEfiAcpi20TableGuid                      ## SOMETIMES_CONSUMES ## SystemTable
136  gEfiAcpi10TableGuid                      ## SOMETIMES_CONSUMES ## SystemTable
137  gEdkiiPiSmmMemoryAttributesTableGuid     ## CONSUMES ## SystemTable
138
139[FeaturePcd]
140  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmDebug                         ## CONSUMES
141  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmBlockStartupThisAp            ## CONSUMES
142  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmEnableBspElection             ## CONSUMES
143  gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugSupport                   ## CONSUMES
144  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackGuard                    ## CONSUMES
145  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileEnable                 ## CONSUMES
146  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileRingBuffer             ## CONSUMES
147  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmFeatureControlMsrLock         ## CONSUMES
148
149[Pcd]
150  gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber        ## SOMETIMES_CONSUMES
151  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileSize                   ## SOMETIMES_CONSUMES
152  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackSize                     ## CONSUMES
153  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout                 ## CONSUMES
154  gUefiCpuPkgTokenSpaceGuid.PcdCpuS3DataAddress                    ## SOMETIMES_CONSUMES
155  gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugDataAddress               ## SOMETIMES_PRODUCES
156  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmCodeAccessCheckEnable         ## CONSUMES
157  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode                      ## CONSUMES
158  gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStaticPageTable               ## CONSUMES
159  gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable                   ## CONSUMES
160
161[Depex]
162  gEfiMpServiceProtocolGuid
163
164[UserExtensions.TianoCore."ExtraFiles"]
165  PiSmmCpuDxeSmmExtra.uni
166