summaryrefslogtreecommitdiff
path: root/MdePkg/ChangeLog.txt
blob: 2f8af61313995068dc2fb3b3f21fb22093652227 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
##########################################################################################
!!!!!!!!!!!!!!!!!               Notes for this ChangeLog.txt             !!!!!!!!!!!!!!!!!

This log file is used to record two kinds of important information:
 a) "Non-Compatible Changes": all non-compatible changes should be recorded. These info
    will help the package user to merge this package; and some non-compatible changes
    can also be added into release notes as news features when we release this package.
    Normally Non-Compatible Changes contains the following types:
      1) Package's external services were changed/updated
      2) Package's common .h file is renamed, deleted, or the file path is changed.
      3) The definition of package's common data structure is changed
      ...

 b) "Important Compatible Changes": some important compatible changes can aslo be recorded
    in this file, and we can add these updating into release notes when we release this
    package.

Non-Compatible and Compatible example format:
==========================================================================================
EDK_0010: Non-Compatible: owner

	  Class_HFile: PPI A of MdePkg has been removed.

		Code Change :
		1) Removed the .h file: MdePkg\Include\Ppi\A.h

		Possible Impacts:
		1) All modules that used this PPI A should be updated.

==========================================================================================
EDK_0000: Compatible: owner

	  Class_BuildTool: with the EDK_0000 build.exe, the build performance is enhanced great.

		Code Change :
		1) BaseTools\Bin\Win32\build.exe

!!!!!!!!!!!!!!!!!!                     End of Notes                     !!!!!!!!!!!!!!!!!!
##########################################################################################

==========================================================================================
EDK_3983: Non-Compatible: lgao4
	
	Class_Library: Remove CustomDecompressLib library class.
	
	Code Change:
	1) Remove the definition MdePkg\Include\Library\CustomDecompressLib.h and 
	   library instance MdePkg\Library\BaseCustomDecompressLibNull for CustomDecompressLib.
	
	Possible Impacts:
	1) Drivers don't use this library class any longer. But they can use new ExtractGuidedSectionLib
	   library class to extract the compressed guided section data.
	2) The instance of CustomDecompressLib should be changed to register the decode function 
	   into ExtractGuidedSectionHandler list, and not to produce CustomDecompressLib class.
	3) Platform.dsc file doesn't use this library instance any longer.

==========================================================================================
EDK_3980: Non-Compatible: lgao4
	
	Class_Library: Add ExtractGuidedSectionLib library class to replace CustomDecompressLib.
	
	Code Change:
	1) Add the definition MdePkg\Include\Library\ExtractGuidedSectionLib.h and 
	   library instance MdePkg\Library\PeiDxeExtractGuidedSectionLib for new ExtractGuidedSectionLib.
	2) Add gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler in MdePkg, which is used by 
	   PeiDxeExtractGuidedSectionLib library instance.
	3) Update DxeIpl and DxeMain modules of MdeModulePkg to use new ExtractGuidedSectionLib library class.
	4) Update BaseUefiTianoCustomDecompressLib of IntelFrameworkModulePkg not to produce CustomDecompressLib,
	   and to register TianoDecomress handler into ExtractGuidedSectionHandler list.
	
	Possible Impacts:
	1) Platform.dsc file should update library instance and PCD if it contains DxeIpl and DxeMain modules.
	   It should use MdePkg\Library\PeiDxeExtractGuidedSectionLib library instance and 
	   set gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler PCD value.

==========================================================================================
EDK_3871: Non-Compatible: klu2
	
	Class_PIEnable[1]: Use new entry point for PeiCore defined in PI specification.
	
	Code Change:
	1) Remove the definition and library instance for OldPeiCoreEntryPoinLib
	
	Possible Impacts:
	1) Platform should select MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf for 
	   PeiMain module.
	2) The SecCore module should provide parameters for new entry point defined in 
	   MdePkg\Include\Library\PeiCoreEntryPoint.h


EDK_3922:  Non-Compatible: qwang12, klu2
  Class_PIEnable[0]:  Update PeiServicesLib based on new features defined in PI spec.

      Code Change :
      1) Add the following services:PeiServicesRegisterForShadow, PeiServicesFfsGetFileInfo, PeiServicesFfsFindFileByName and PeiServicesFfsGetVolumeInfo
      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
         to EFI_PEI_FILE_HANDLE.
      3) Add CONST to parameter of PeiServices EFI_PEI_SERVICES.EFI_PEI_RESET_SYSTEM

      Possible Impacts:

      1) Platform code should be updated to make use of these new PI features. The functions in MdePkg/Include/Library/PeiServicesLib.h are 
         recommended as PeiServices is saved for every PEI Services API invokation.
      2) Now PEIM entry point is upadted to pass in PeiServices in type of (CONST EFI_PEI_SERVICS **). Platform code should be updated to 
         add (EFI_PEI_SERVICS **) cast to PeiServices before passing it to the previously defined PPI interface which needs a (EFI_PEI_SERVICS **)
         type for PeiServices parameter.
      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
         Section 4.4 PEI Sevices Table Retrieval) for details. Beside, GetPeiServicesTablePointer() in MdePkg\Include\Library\PeiServicesTablePointerLib.h
         also provide convinient way to retrieve the pointer to Pei Service Table.
         

EDK_4067:  Non-Compatible: qwang12
  Class_PIEnable[1]:  Add PeiPiLib library class and replace PiLib with DxePiLib library class.

      Code Change :
      1) Change MdePkg/Include/Library/PiLib.h to MdePkg/Include/Library/DxePiLib.h. DxePiLib is mainly used
         for modules in DXE phase. Add a DxePiLib.h library instance at MdePkg/Library/DxePiLib/DxePiLib.inf.
      2) Add MdePkg/Include/Library/PeiPiLib.h. PeiPiLib is mainly used by modules in PEI phase. 
         Add a DxePiLib.h library instance at MdePkg/Library/PeiPiLib/PeiPiLib.inf.
      3) Rename API in PeiPiLib.h from PeiPiLibBuildPiFvInfoPpi to PiLibInstallFvInfoPpi.
      4) Rename APIs originally in PiLib.h with new names defined in DxePiLib.h:
          4.1) GetSectionFrom*Fv functions are changed to PiLibGetSectionFrom*Fv to reduce possibility of name collision.
          4.2) Remove API named ImageHandleToFvHandle and GetSectionFromFvFile 


      Possible Impacts:

      1) Platform modules that reference PeiPiLibBuildPiFvInfoPpi and GetSectionFrom*Fv should reference the new
         names defined.
      2) Platform DSC file that specifying library instance for PiLib should be updated to add one line (a example 
         is given below):
          [LibraryClasses.common.DXE_DRIVER]
              ...
              DxePiLib|MdePkg/Library/DxePiLib/DxePiLib.inf
              ...
      3) Platform DSC file including modules that make use of API from PeiPiLib.h should add the following line (a example 
         is given below):
          [LibraryClasses.common.PEIM]
              ...
              PeiPiLib|MdePkg/Library/PeiPiLib/PeiPiLib.inf
              ...
          

EDK_5835:  Non-Compatible: qwang12
  Class General Definitions: NULL_HANDLE definition is removed from UefiBaseType.h. If any modules referencs NULL_HANDLE, they should be updated to use NULL. 
  
EDK_5869:  Non-Compatible: qhuang8
  Class General Definitions: Update the macro ALIGN_VARIALBE to drop the second parameter.
  
		Code Change:
			The macro ALIGN_VARIABLE in base.h is changed to keep the first paramter

		Possible Impacts:
			Modules using this macro, it needs to adapt to new interface.
			
EDK_5939:  Non-Compatible: qwang12
  Library API moved from HiiLib to UefiLib.
  
		Code Change:
			Change HiiLibGetCurrentLanguage to GetCurrentLanguage and moved it from HiiLib to UefiLib.

		Possible Impacts:
			All module that reference HiiLibGetCurrentLanguage should be updated in the following step:
			  0) Change HiiLibGetCurrentLanguage to GetCurrentLanguage.
				1) Add UefiLib to [LibraryClass] in INF if it is not included before.
				2) Remove HiiLib from [LibraryClass] if HiiLibGetCurrentLanguage is the only API from original HiiLib referenced by this module.
				3) Add UefiLib to [LibraryClasses.common.Module Type] for the affected module if UefiLib is not in the list.
				
EDK_5989:  Non-Compatible: qwang12
  Library API name changed:
   In IfrSupportLib,
	 Rename BufToHexString to BufInReverseOrderToHexString 
   Rename HexStringToBuf to HexStringToBufInReverseOrder

Possible Impacts:
			All module that reference BufToHexString or HexStringToBuf should be updated in the following step:
			  0) Change HiiLibGetCurrentLanguage to GetCurrentLanguage.
				1) Change BufToHexString to BufInReverseOrderToHexString 
			  2) Change HexStringToBuf to HexStringToBufInReverseOrder

EDK_6111:  Non-Compatible: qwang12
  Module type Include file is not included on default.
   In Protocol/PPI/GUID/Libary header file, the "#include" of the module type header file such as <Base.h>, <PiPei.h>, <PiDxe.h> and 
   <Uefi.h> are removed. The module (DXE driver, UEFI Driver, PEIM) should include these files if required.

Possible Impacts:
			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>
			<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
			because of some undefined basic data type such as "EFI_GUID", module developer should include the module type header file accordingly.
				
EDK_6131:  Non-Compatible: qwang12

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.

Possible Impacts:
			Customer's module that reference GetPeiServicesTablePointer in PeiServicesTablePointer library may need to updated. Otherwise
			a build break (mismatch of data type) may occur.
			
EDK_6307:  Non-Compatible: qwang12

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. 

It is recommended that module writer should keep track how a pointer is allocated and free it after use.

Possible Impacts:
			Customer's module that reference SafeFreePool need to updated. Otherwise
			a build break may occur.
			
EDK_6455-6460:  Non-Compatible: klu2
    1. Clean up device path protocol header file, move device path utility macros to MdePkg\Include\DevicePathLib.h.
    2. I remove "Efi" prefix for this utility function macro name. 
    3. The upacked device path type is removed. Should use device path utility macro to access structure's member.

Possible Impacts:
    1. Customer's module that access device path node's structure need use DevicePathLib
    2. Should not use unpacked type device path node, this type is retired.
    3. If want to access private member in device path node, customer module need DuplicateDevicePath() at first to 
       make sure node is in alignment.
              
EDK_6496-6519:  Non-Compatible: qhuang8

	A bundle of library class/instance renames, moves and merges:
	1.  Rename library class UsbLib to UefiUsbLib
	2.  Rename library class ScsiLib to UefiScsiLib
	3.  Rename library class PalCallLib to PalLib
	4.  Rename library class DxePiLib to DxeSerivcesLib and drop the prefix "PiLib" to all its APIs.
	5.  Merge library class PiPeiLib to PeiServicesLib and rename the PiLibInstallFvInfoPpi() to PeiServicesInstallFvInfoPpi()
	6.  Move library class HiiLib to MdeModulePkg
	7.  Move library class IfrSupportLib to MdeModulePkg
	8.  Move library class FvbServiceLib to MdeModulePkg
	9.  Rename library instance of BasePalCallLibNull to BasePalLibNull
	10. Move library instance UefiHiiLib to MdeModulePkg
	11. Move library instance UefiIfrSupportLib to MdeModulePkg

Possible Impacts:
	 Every change listed above is non-backward compatible for MdePkg and other packages. It is required to update module
	 sources (*.c;*.h), module meta data files (*.inf) and update the platform DSC files to fix the build break.
	 However, it is less likely to bring about functional issue for these updates.


EDK_6565:  Non-Compatible: qhuang8
	
	Remove some macro in UefiScsiLib:
	EFI_SCSI_STALL_1_MICROSECOND, EFI_SCSI_STALL_1_MILLISECOND, EFI_SCSI_STALL_1_SECOND & EFI_SCSI_STALL_SECONDS(a)  
	
Possible Impacts:
	Modules depending on UefiScsiLib for these macros should update the source to use new UefiLib macros
	EFI_TIMER_PERIOD_MICROSECONDS(X), EFI_TIMER_PERIOD_MILLISECONDS(X) and EFI_TIMER_PERIOD_SECONDS(X) for managing Timer Events.
	Especailly, EFI_SCSI_STALL_SECONDS(a) is simply replaced by EFI_TIMER_PERIOD_SECONDS(a)

EDK_6886:  Non-Compatible: mdkinney
	
	Rename _CR macro defined in MdePkg/Include/Base.h to BASE_CR macro aligned to MdeLib spec.

Possible Impacts:
	All source codes that depends on _CR macro must be changed to use BASE_CR.	

EDK_6935:  Non-Compatible: lgao4
	
	In MdePkg/Include/Guid/FileSystemVolumeLabelInfo.h file, to follow UEFI specification.
	Rename EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID_GUID to EFI_FILE_SYSTEM_VOLUME_LABEL_ID
	Rename EFI_FILE_SYSTEM_VOLUME_LABEL_INFO to EFI_FILE_SYSTEM_VOLUME_LABEL.

Possible Impacts:
	All source codes that refer to EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID_GUID or EFI_FILE_SYSTEM_VOLUME_LABEL_INFO
	must be changed to use their definitions from UEFI specification.	

EDK_6974:  Non-Compatible: lgao4
	
	In MdePkg/Include/Uefi/UefiSpec.h file, to follow UEFI2.1 specification.
	Rename struct EFI_KEY_OPTION.KeyOptions to EFI_KEY_OPTION.KeyData

Possible Impacts:
	All source codes that refer to EFI_KEY_OPTION.KeyOptions
	must be changed to use EFI_KEY_OPTION.KeyData from UEFI specification.	

EDK_7057:  Non-Compatible: qhuang8
	Retired the following macros defined in MdePkg/Include/Uefi/UefiBaseType.h:
	EFI_SIGNATURE_16, EFI_SIGNATURE_32, EFI_SIGNATURE_64, EFI_FIELD_OFFSET, EFI_MAX_BIT & EFI_MAX_ADDRESS
	
Possible impacts:
	All EDKII native source code needs to update to use the equivelent macros (without "EFI_" prefix except for
	EFI_FIELD_OFFSET) defined in MdePkg\Include\Base.h and MdePkg\Include\$(ARCH)\ProcessorBinding.h:
	EFI_SIGNATURE_16 -> SIGNATURE_16
	EFI_SIGNATURE_32 -> SIGNATURE_32
	EFI_SIGNATURE_64 -> SIGNATURE_64
	EFI_FIELD_OFFSET -> OFFSET_OF
	EFI_MAX_BIT      -> MAX_BIT
	EFI_MAX_ADDRESS  -> MAX_ADDRESS

EDK_7467:  Non-Compatible: qhuang8
	Remove the macro value TIME_OUT defined in MdePkg/Include/Uefi/UefiUsbLib.h and replace it with a new PCD entry:
	gEfiMdePkgTokenSpaceGuid.PcdUsbTransferTimeoutValue  
	
Possible impacts:
	All modules depending on macro TIME_OUT in MdePkg/Include/Uefi/UefiUsbLib.h should use PcdGet32 (PcdUsbTransferTimeoutValue)
	for the USB transaction, include "PcdLib" in INF [LibraryClasses] section and add "#include <Library/PcdLib.h>" in module
	source.

EDK_9384: Non-Compatible: xli24

	2 default values of status code PCDs updated in MdePkg.dec.

	1) PcdStatusCodeValueBootServiceExit. Its value is changed from 0x3100019 to 0x3101019, which equals EFI_SOFTWARE_EFI_BOOT_SERVICE | EFI_SW_BS_PC_EXIT_BOOT_SERVICES.
	2) PcdStatusCodeValuePeiHandoffToDxe. Its value is changed from 0x3031001 to 0x3021001, which equals EFI_SOFTWARE_PEI_CORE | EFI_SW_PEI_CORE_PC_HANDOFF_TO_NEXT. 

Possible impacts:
	Platforms which uses the default values of PCD (not overriding in DSC) would get updated report status code values for boot service exit and PEI hand-off.

EDK_9385: Non-Compatible: xli24

	Default value of PcdStatusCodeValueSetVirtualAddressMap updated in MdePkg.dec.
	The value of PcdStatusCodeValueSetVirtualAddressMap is changed from 0x03101004 to 0x03111004, which equals EFI_SOFTWARE_EFI_RUNTIME_SERVICE | EFI_SW_RS_PC_SET_VIRTUAL_ADDRESS_MAP.


Possible impacts:
	Platforms which uses the default value of PCD (not overriding in DSC) would get updated report status code value for setting virtual address map.

EDK_9394: Non-Compatible: qhuang8

	GUID value of EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID and gEfiFirmwareVolumeBlockProtocolGuid has been changed to 
        that of EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL_GUID defined in PI 1.2 spec.
        	

Possible impacts:
	This is a source level compatible change, but not binary level. We might need to rebuild some old binary modules to work with newer version of MdePkg.


EDK_9817: Non-Compatible: qhuang8
	Scrub EFI_ATA_IDENTIFY_DATA and EFI_ATAPI_IDENTIFY_DATA to strict follow newest ATA spec (ATA-8). This is a build non-backward compatible changes for ATA-related modules.
	The ATA5_IDENTIFY_DATA in MdePkg\IndustryStandards\Atapi.h is exactly the same as the original ATA_IDENTIFY_DATA for backward compatibility support to follow ATA-5 spec. 

Possible impacts:
	We can fix the build breaks for some renaming issues (e.g. Word 49 in EFI_ATA_IDENTIFY_DATA renamed from "capabilities" to "capabilities_49")
	For the fields that are "obsolete" in newest ATA spec, we can use type-cast to older ATA spec structure (e.g. ATA5_IDENTIFY_DATA). 
	(There  should not be any runtime issues if the build issues have got solved in the source correctly.)