##########################################################################################
!!!!!!!!!!!!!!!!!               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_r5418-5419: Non-Compatible: qhuang8
	Class_Library: Update EfiDriverLib in ECP to make it compatible with EDK1.01(EDK1117),
				   but the change itself is incompatible.
    With this change, EFI1.10 drivers can be directly dropped
    in and built in UEFI build mode. EfiLibInstallAllDriverProtocols2() and
    INSTALL_ALL_DRIVER_PROTOCOLS_OR_PROTOCOLS2() are added to support UEFI driver
    model protocols. Please replace all the occurrences of EfiLibInstallAllDriverProtocols
    and INSTALL_ALL_DRIVER_PROTOCOLS with INSTALL_ALL_DRIVER_PROTOCOLS_OR_PROTOCOLS2
    in Edk 1.04 based source tree.
    
    Code Change:
    1) Edk\Foundation\Include\EfiCompNameSupport.h:
	   Add macro INSTALL_ALL_DRIVER_PROTOCOLS_OR_PROTOCOLS2().
    2) Edk\Foundation\Library\Dxe\EfiDriverLib\EfiDriverModelLib.c
       Edk\Foundation\Library\Dxe\Include\EfiDriverLib.h
       Update EfiLibInstallAllDriverProtocols() and add EfiLibInstallAllDriverProtocols2()

	Possible impact:
	1) If your "EDK style" code base is based on ECP r5417 or below, please replace all the
	   occurrences of EfiLibInstallAllDriverProtocols and INSTALL_ALL_DRIVER_PROTOCOLS with
	   INSTALL_ALL_DRIVER_PROTOCOLS_OR_PROTOCOLS2


==========================================================================================
EDK_r4955: Non-Compatible: qhuang8
	
	Class_HFile: Update the Device Type Value of MEDIA_FV_DP & MEDIA_FV_FILEPATH_DP.
	The definitions in MdePkg have already been updated in r4632. This will remove the
        potential compatibility issues when native EDK II modules & EDK modules built with
        ECP and run with EDK II core.  

	Code Change:
	1) Reverse the value of MEDIA_FV_DP & MEDIA_FV_FILEPATH_DP to fix a UEFI errata. 


	Possible impact:
	1) EDK I modules built with this update might not work with old EDK environment. 	


==========================================================================================
EDK_r4960: Non-Compatible: qhuang8
	
	Class_HFile: Remove the default value 0xE0000000 of EDKII_GLUE_PciExpressBaseAddress.
	It now requires platform DSC file to specify it explicitly to avoid runtime issue
        if they ever uses PciExpressLib in EDK GlueLib.
        Unlike other default value in GlueLib, this value might not function for all real
        platforms.   

	Code Change:
	1) Replace 0xE0000000 to be PCD_EDKII_GLUE_PciExpressBaseAddress. 

	Possible impact:
	1) If a platform ever uses PciExpressLib in Glue Lib. It needs to explictly specify
	the value of PCD_EDKII_GLUE_PciExpressBaseAddress for their platform to function.
	e.g. in EDK II DSC file to build EDK modules: 
       	[BuildOptions]
          *_*_*_CC_FLAGS = /D PCD_EDKII_GLUE_PciExpressBaseAddress=0xC0000000
 
