Reviewed the description in the FatBinPkg .dec file.
[mirror_edk2.git] / MdePkg / ChangeLog.txt
1 ##########################################################################################
2 !!!!!!!!!!!!!!!!! Notes for this ChangeLog.txt !!!!!!!!!!!!!!!!!
3
4 This log file is used to record two kinds of important information:
5 a) "Non-Compatible Changes": all non-compatible changes should be recorded. These info
6 will help the package user to merge this package; and some non-compatible changes
7 can also be added into release notes as news features when we release this package.
8 Normally Non-Compatible Changes contains the following types:
9 1) Package's external services were changed/updated
10 2) Package's common .h file is renamed, deleted, or the file path is changed.
11 3) The definition of package's common data structure is changed
12 ...
13
14 b) "Important Compatible Changes": some important compatible changes can aslo be recorded
15 in this file, and we can add these updating into release notes when we release this
16 package.
17
18 Non-Compatible and Compatible example format:
19 ==========================================================================================
20 EDK_0010: Non-Compatible: owner
21
22 Class_HFile: PPI A of MdePkg has been removed.
23
24 Code Change :
25 1) Removed the .h file: MdePkg\Include\Ppi\A.h
26
27 Possible Impacts:
28 1) All modules that used this PPI A should be updated.
29
30 ==========================================================================================
31 EDK_0000: Compatible: owner
32
33 Class_BuildTool: with the EDK_0000 build.exe, the build performance is enhanced great.
34
35 Code Change :
36 1) BaseTools\Bin\Win32\build.exe
37
38 !!!!!!!!!!!!!!!!!! End of Notes !!!!!!!!!!!!!!!!!!
39 ##########################################################################################
40
41 ==========================================================================================
42 EDK_3983: Non-Compatible: lgao4
43
44 Class_Library: Remove CustomDecompressLib library class.
45
46 Code Change:
47 1) Remove the definition MdePkg\Include\Library\CustomDecompressLib.h and
48 library instance MdePkg\Library\BaseCustomDecompressLibNull for CustomDecompressLib.
49
50 Possible Impacts:
51 1) Drivers don't use this library class any longer. But they can use new ExtractGuidedSectionLib
52 library class to extract the compressed guided section data.
53 2) The instance of CustomDecompressLib should be changed to register the decode function
54 into ExtractGuidedSectionHandler list, and not to produce CustomDecompressLib class.
55 3) Platform.dsc file doesn't use this library instance any longer.
56
57 ==========================================================================================
58 EDK_3980: Non-Compatible: lgao4
59
60 Class_Library: Add ExtractGuidedSectionLib library class to replace CustomDecompressLib.
61
62 Code Change:
63 1) Add the definition MdePkg\Include\Library\ExtractGuidedSectionLib.h and
64 library instance MdePkg\Library\PeiDxeExtractGuidedSectionLib for new ExtractGuidedSectionLib.
65 2) Add gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler in MdePkg, which is used by
66 PeiDxeExtractGuidedSectionLib library instance.
67 3) Update DxeIpl and DxeMain modules of MdeModulePkg to use new ExtractGuidedSectionLib library class.
68 4) Update BaseUefiTianoCustomDecompressLib of IntelFrameworkModulePkg not to produce CustomDecompressLib,
69 and to register TianoDecomress handler into ExtractGuidedSectionHandler list.
70
71 Possible Impacts:
72 1) Platform.dsc file should update library instance and PCD if it contains DxeIpl and DxeMain modules.
73 It should use MdePkg\Library\PeiDxeExtractGuidedSectionLib library instance and
74 set gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler PCD value.
75
76 ==========================================================================================
77 EDK_3871: Non-Compatible: klu2
78
79 Class_PIEnable[1]: Use new entry point for PeiCore defined in PI specification.
80
81 Code Change:
82 1) Remove the definition and library instance for OldPeiCoreEntryPoinLib
83
84 Possible Impacts:
85 1) Platform should select MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf for
86 PeiMain module.
87 2) The SecCore module should provide parameters for new entry point defined in
88 MdePkg\Include\Library\PeiCoreEntryPoint.h
89
90
91 EDK_3922: Non-Compatible: qwang12, klu2
92 Class_PIEnable[0]: Update PeiServicesLib based on new features defined in PI spec.
93
94 Code Change :
95 1) Add the following services:PeiServicesRegisterForShadow, PeiServicesFfsGetFileInfo, PeiServicesFfsFindFileByName and PeiServicesFfsGetVolumeInfo
96 2) The paramter list of these functiuon has also been updated to replace EFI_FIRMWARE_VOLUME_HEADER to EFI_PEI_FV_HANDLE and EFI_FFS_FILE_HEADER
97 to EFI_PEI_FILE_HANDLE.
98 3) Add CONST to parameter of PeiServices EFI_PEI_SERVICES.EFI_PEI_RESET_SYSTEM
99
100 Possible Impacts:
101
102 1) Platform code should be updated to make use of these new PI features. The functions in MdePkg/Include/Library/PeiServicesLib.h are
103 recommended as PeiServices is saved for every PEI Services API invokation.
104 2) Now PEIM entry point is upadted to pass in PeiServices in type of (CONST EFI_PEI_SERVICS **). Platform code should be updated to
105 add (EFI_PEI_SERVICS **) cast to PeiServices before passing it to the previously defined PPI interface which needs a (EFI_PEI_SERVICS **)
106 type for PeiServices parameter.
107 3) The newly defined PPI should not inlcude PeiSevices in the paramter list as PI spec has standard way to retrive PeiServices (check VOL 1
108 Section 4.4 PEI Sevices Table Retrieval) for details. Beside, GetPeiServicesTablePointer() in MdePkg\Include\Library\PeiServicesTablePointerLib.h
109 also provide convinient way to retrieve the pointer to Pei Service Table.
110
111
112 EDK_4067: Non-Compatible: qwang12
113 Class_PIEnable[1]: Add PeiPiLib library class and replace PiLib with DxePiLib library class.
114
115 Code Change :
116 1) Change MdePkg/Include/Library/PiLib.h to MdePkg/Include/Library/DxePiLib.h. DxePiLib is mainly used
117 for modules in DXE phase. Add a DxePiLib.h library instance at MdePkg/Library/DxePiLib/DxePiLib.inf.
118 2) Add MdePkg/Include/Library/PeiPiLib.h. PeiPiLib is mainly used by modules in PEI phase.
119 Add a DxePiLib.h library instance at MdePkg/Library/PeiPiLib/PeiPiLib.inf.
120 3) Rename API in PeiPiLib.h from PeiPiLibBuildPiFvInfoPpi to PiLibInstallFvInfoPpi.
121 4) Rename APIs originally in PiLib.h with new names defined in DxePiLib.h:
122 4.1) GetSectionFrom*Fv functions are changed to PiLibGetSectionFrom*Fv to reduce possibility of name collision.
123 4.2) Remove API named ImageHandleToFvHandle and GetSectionFromFvFile
124
125
126 Possible Impacts:
127
128 1) Platform modules that reference PeiPiLibBuildPiFvInfoPpi and GetSectionFrom*Fv should reference the new
129 names defined.
130 2) Platform DSC file that specifying library instance for PiLib should be updated to add one line (a example
131 is given below):
132 [LibraryClasses.common.DXE_DRIVER]
133 ...
134 DxePiLib|MdePkg/Library/DxePiLib/DxePiLib.inf
135 ...
136 3) Platform DSC file including modules that make use of API from PeiPiLib.h should add the following line (a example
137 is given below):
138 [LibraryClasses.common.PEIM]
139 ...
140 PeiPiLib|MdePkg/Library/PeiPiLib/PeiPiLib.inf
141 ...
142
143
144 EDK_5835: Non-Compatible: qwang12
145 Class General Definitions: NULL_HANDLE definition is removed from UefiBaseType.h. If any modules referencs NULL_HANDLE, they should be updated to use NULL.
146
147 EDK_5869: Non-Compatible: qhuang8
148 Class General Definitions: Update the macro ALIGN_VARIALBE to drop the second parameter.
149
150 Code Change:
151 The macro ALIGN_VARIABLE in base.h is changed to keep the first paramter
152
153 Possible Impacts:
154 Modules using this macro, it needs to adapt to new interface.
155
156 EDK_5939: Non-Compatible: qwang12
157 Library API moved from HiiLib to UefiLib.
158
159 Code Change:
160 Change HiiLibGetCurrentLanguage to GetCurrentLanguage and moved it from HiiLib to UefiLib.
161
162 Possible Impacts:
163 All module that reference HiiLibGetCurrentLanguage should be updated in the following step:
164 0) Change HiiLibGetCurrentLanguage to GetCurrentLanguage.
165 1) Add UefiLib to [LibraryClass] in INF if it is not included before.
166 2) Remove HiiLib from [LibraryClass] if HiiLibGetCurrentLanguage is the only API from original HiiLib referenced by this module.
167 3) Add UefiLib to [LibraryClasses.common.Module Type] for the affected module if UefiLib is not in the list.
168
169 EDK_5989: Non-Compatible: qwang12
170 Library API name changed:
171 In IfrSupportLib,
172 Rename BufToHexString to BufInReverseOrderToHexString
173 Rename HexStringToBuf to HexStringToBufInReverseOrder
174
175 Possible Impacts:
176 All module that reference BufToHexString or HexStringToBuf should be updated in the following step:
177 0) Change HiiLibGetCurrentLanguage to GetCurrentLanguage.
178 1) Change BufToHexString to BufInReverseOrderToHexString
179 2) Change HexStringToBuf to HexStringToBufInReverseOrder
180
181 EDK_6111: Non-Compatible: qwang12
182 Module type Include file is not included on default.
183 In Protocol/PPI/GUID/Libary header file, the "#include" of the module type header file such as <Base.h>, <PiPei.h>, <PiDxe.h> and
184 <Uefi.h> are removed. The module (DXE driver, UEFI Driver, PEIM) should include these files if required.
185
186 Possible Impacts:
187 Customer's module (DXE driver, UEFI Driver, PEIM) may failed to build as module type header file such as <Base.h>, <PiPei.h>, <PiDxe.h>
188 <Uefi.h> is removed from the Protocol/PPI/GUID/Libary header file. If the module can build before the update but failed after the update
189 because of some undefined basic data type such as "EFI_GUID", module developer should include the module type header file accordingly.
190
191 EDK_6131: Non-Compatible: qwang12
192
193 Base on PI spec, GetPeiServicesTablePointer in PeiServicesTablePointer library is updated to return CONST EFI_PEI_SERVICES**. This is a incompatible changes. All file that reference this must be updated.
194
195 Possible Impacts:
196 Customer's module that reference GetPeiServicesTablePointer in PeiServicesTablePointer library may need to updated. Otherwise
197 a build break (mismatch of data type) may occur.
198
199 EDK_6307: Non-Compatible: qwang12
200
201 Remove SafeFreePool from MemoryAllocationLib as this API's name is misleading. Its implementation only check if a pointer is NULL. If a garbage pointer is passed in, the gBS->FreePool will still ASSERT in debug build and return error code.
202
203 It is recommended that module writer should keep track how a pointer is allocated and free it after use.
204
205 Possible Impacts:
206 Customer's module that reference SafeFreePool need to updated. Otherwise
207 a build break may occur.
208
209 EDK_6455-6460: Non-Compatible: klu2
210 1. Clean up device path protocol header file, move device path utility macros to MdePkg\Include\DevicePathLib.h.
211 2. I remove "Efi" prefix for this utility function macro name.
212 3. The upacked device path type is removed. Should use device path utility macro to access structure's member.
213
214 Possible Impacts:
215 1. Customer's module that access device path node's structure need use DevicePathLib
216 2. Should not use unpacked type device path node, this type is retired.
217 3. If want to access private member in device path node, customer module need DuplicateDevicePath() at first to
218 make sure node is in alignment.
219
220 EDK_6496-6519: Non-Compatible: qhuang8
221
222 A bundle of library class/instance renames, moves and merges:
223 1. Rename library class UsbLib to UefiUsbLib
224 2. Rename library class ScsiLib to UefiScsiLib
225 3. Rename library class PalCallLib to PalLib
226 4. Rename library class DxePiLib to DxeSerivcesLib and drop the prefix "PiLib" to all its APIs.
227 5. Merge library class PiPeiLib to PeiServicesLib and rename the PiLibInstallFvInfoPpi() to PeiServicesInstallFvInfoPpi()
228 6. Move library class HiiLib to MdeModulePkg
229 7. Move library class IfrSupportLib to MdeModulePkg
230 8. Move library class FvbServiceLib to MdeModulePkg
231 9. Rename library instance of BasePalCallLibNull to BasePalLibNull
232 10. Move library instance UefiHiiLib to MdeModulePkg
233 11. Move library instance UefiIfrSupportLib to MdeModulePkg
234
235 Possible Impacts:
236 Every change listed above is non-backward compatible for MdePkg and other packages. It is required to update module
237 sources (*.c;*.h), module meta data files (*.inf) and update the platform DSC files to fix the build break.
238 However, it is less likely to bring about functional issue for these updates.
239
240
241 EDK_6565: Non-Compatible: qhuang8
242
243 Remove some macro in UefiScsiLib:
244 EFI_SCSI_STALL_1_MICROSECOND, EFI_SCSI_STALL_1_MILLISECOND, EFI_SCSI_STALL_1_SECOND & EFI_SCSI_STALL_SECONDS(a)
245
246 Possible Impacts:
247 Modules depending on UefiScsiLib for these macros should update the source to use new UefiLib macros
248 EFI_TIMER_PERIOD_MICROSECONDS(X), EFI_TIMER_PERIOD_MILLISECONDS(X) and EFI_TIMER_PERIOD_SECONDS(X) for managing Timer Events.
249 Especailly, EFI_SCSI_STALL_SECONDS(a) is simply replaced by EFI_TIMER_PERIOD_SECONDS(a)
250
251 EDK_6886: Non-Compatible: mdkinney
252
253 Rename _CR macro defined in MdePkg/Include/Base.h to BASE_CR macro aligned to MdeLib spec.
254
255 Possible Impacts:
256 All source codes that depends on _CR macro must be changed to use BASE_CR.
257
258 EDK_6935: Non-Compatible: lgao4
259
260 In MdePkg/Include/Guid/FileSystemVolumeLabelInfo.h file, to follow UEFI specification.
261 Rename EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID_GUID to EFI_FILE_SYSTEM_VOLUME_LABEL_ID
262 Rename EFI_FILE_SYSTEM_VOLUME_LABEL_INFO to EFI_FILE_SYSTEM_VOLUME_LABEL.
263
264 Possible Impacts:
265 All source codes that refer to EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID_GUID or EFI_FILE_SYSTEM_VOLUME_LABEL_INFO
266 must be changed to use their definitions from UEFI specification.
267
268 EDK_6974: Non-Compatible: lgao4
269
270 In MdePkg/Include/Uefi/UefiSpec.h file, to follow UEFI2.1 specification.
271 Rename struct EFI_KEY_OPTION.KeyOptions to EFI_KEY_OPTION.KeyData
272
273 Possible Impacts:
274 All source codes that refer to EFI_KEY_OPTION.KeyOptions
275 must be changed to use EFI_KEY_OPTION.KeyData from UEFI specification.
276
277 EDK_7057: Non-Compatible: qhuang8
278 Retired the following macros defined in MdePkg/Include/Uefi/UefiBaseType.h:
279 EFI_SIGNATURE_16, EFI_SIGNATURE_32, EFI_SIGNATURE_64, EFI_FIELD_OFFSET, EFI_MAX_BIT & EFI_MAX_ADDRESS
280
281 Possible impacts:
282 All EDKII native source code needs to update to use the equivelent macros (without "EFI_" prefix except for
283 EFI_FIELD_OFFSET) defined in MdePkg\Include\Base.h and MdePkg\Include\$(ARCH)\ProcessorBinding.h:
284 EFI_SIGNATURE_16 -> SIGNATURE_16
285 EFI_SIGNATURE_32 -> SIGNATURE_32
286 EFI_SIGNATURE_64 -> SIGNATURE_64
287 EFI_FIELD_OFFSET -> OFFSET_OF
288 EFI_MAX_BIT -> MAX_BIT
289 EFI_MAX_ADDRESS -> MAX_ADDRESS
290
291 EDK_7467: Non-Compatible: qhuang8
292 Remove the macro value TIME_OUT defined in MdePkg/Include/Uefi/UefiUsbLib.h and replace it with a new PCD entry:
293 gEfiMdePkgTokenSpaceGuid.PcdUsbTransferTimeoutValue
294
295 Possible impacts:
296 All modules depending on macro TIME_OUT in MdePkg/Include/Uefi/UefiUsbLib.h should use PcdGet32 (PcdUsbTransferTimeoutValue)
297 for the USB transaction, include "PcdLib" in INF [LibraryClasses] section and add "#include <Library/PcdLib.h>" in module
298 source.