##########################################################################################
!!!!!!!!!!!!!!!!!               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_4310:  Non-Compatible: qhuang8
  Class_ModuleRemove[0]:  Remove AtapiPassThru module from MdeModulePkg.  AtapiPassThru
      module is only used for testing. We already have a driver in OptionRomPkg to
      produce ScsiPassThru and ExtScsiPassThru based on PCD setting. We can remove it
      from MdeModulePkg.

      Code Change :
      1) Remove module MdeModulePkg/Bus/Pci/AtapiPassThruDxe/AtapiPassThru.inf 

      Impact to platform code:
      If a platform happens to refer to this module in their dsc file, please use the
      counterpart module in OptionRomPkg.

==========================================================================================
EDK_4067:  Non-Compatible: qwang12
  Class_PIEnable[6]:  PEI core does not build FV HOB upon notification of a EFI_PEI_FIRMWARE_VOLUME_INFO_PPI automatically.

      Code Change :
      1) MdeModulePkg/Core/Pei/FwVol/FwVol.c 
      
      Impact to platform code:
      1) If platform module want to inform both PEI core and DXE core about the existance of new FV 
         it must both install EFI_PEI_FIRMWARE_VOLUME_INFO_PPI and FV HOB. 

          A example is given belows:
    
            PiLibInstallFvInfoPpi (
              NULL,
              Buffer,
              (UINT32) FvHeader->FvLength,
              NULL,
              NULL
              );
    
            BuildFvHob (
              (EFI_PHYSICAL_ADDRESS) (UINTN) Buffer,
              (UINT32) FvHeader->FvLength
              );

            PEI core does not automatically build FV HOB upon notification of a EFI_PEI_FIRMWARE_VOLUME_INFO_PPI. 
            The description in Item 2 in Section 4.8.1.2 in Vol 1 of PI spec will be updated to remove the 
            "Create a new firmware volume HOB" wording.
      

==========================================================================================
EDK_4000-4006: Compatible: qhuang8

           Class_UefiEnable[0]: Uefi feature -Add component name 2 protocol support for
                                all drivers that support component name protocol
	

    Code Change :
    1) Update MdeModulePkg/Bus/Pci/*
    2) Update MdeModulePkg/Bus/Scsi/*
    3) Update MdeModulePkg/Bus/Usb/*
    4) Update MdeModulePkg/Universal/Disk/*
    5) Update MdeModulePkg/Universal/DebugPortDxe/*
    6) Update MdeModulePkg/Universal/Console/*
    7) Update MdeModulePkg/Universal/Network/*
   
    possible impact:
    1) To produce the component name 2 protocol, platform DSC file needs to set feature
       flag 'PcdComponentName2Disable' to 'FALSE'

==========================================================================================
EDK_3967:  Non-Compatible: lgao4

	  Class_Library:  Remove PeCoffLoader library class and its instances.

		Code Change :
		1) Remove MdeModulePkg/Include/Library/PeCoffLoaderLib.h
		2) Remove MdeModulePkg/Library/DxePeCoffLoaderFromHobLib and PeiDxePeCoffLoaderLib instance
		3) Modify PeiCore, DxeIpl and DxeCore to use PeCoffLib in place of PeCoffLoaderLib.

		Possible Impacts:
		1) All modules don't use PeCoffloader library class any longer to load PeImage. 
		   If necessary, they should use PeCoffLib of MdePkg to load PeImage.

==========================================================================================
EDK_3931: Non-Compatible: klu2
	
	Class_PIEnable[5]: New library class for S3Resume and Recovery for DxeIpl PEIM.
	
	Code Change:
	1) Add new library class 
	   a) MdeModulePkg/Include/Library/S3Lib.h
	   b) MdeModulePkg/Include/Library/RecoveryLib.h
	2) Add NULL library instances for MdeModulePkg:
	   a) MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf.
	   b) MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf
	3) Add framework implement library instances:
	   a) IntelFrameworkModulePkg/Library/PeiS3Lib/PeiS3Lib.inf
	   b) IntelFrameworkModulePkg/Library/PeiRecovery/PeiRecovery.inf
	
	Possible Impacts:
	1) In DSC file, real platform should select:
	   S3Lib library class       -> IntelFrameworkModulePkg/Library/PeiS3Lib/PeiS3Lib.inf
	   RecoveryLib library class -> IntelFrameworkModulePkg/Library/PeiRecovery/PeiRecovery.inf
	   
	   Nt32 platform should select:
	   S3Lib library class       -> MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf.
	   RecoveryLib library class -> MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf
	   
==========================================================================================
EDK_3922:  Non-Compatible: qwang12, klu2
  Class_PIEnable[2]:  Update PEI core to only consume EFI_PEI_FIRMWARE_VOLUME_INFO_PPI

  Code Change :
  1) Update PEI core to consume EFI_PEI_FIRMWARE_VOLUME_INFO_PPI to get the location of new FVs other than BFV
     reported by PEIMs . 

  Possible Impacts:
  1) Platform code that is going to inform PEI core about the new FVs other than BFV should install 
     EFI_PEI_FIRMWARE_VOLUME_INFO_PPI. A library function named PeiPiLibBuildPiFvInfoPpi() defined in 
     MdePkg\Include\Library\PeiPiLib.h can be used to install the PPI. 
     There are two notes worth mentioning:
     1) Platform PEIMs should report at least FVs containing DXE_CORE and all other PEIM to PEI Core if they
        are not in the BFV. 
     2) PEI core will dispatch PEIMs in the FV reported by PeiPiLibBuildPiFvInfoPpi() and invoke BuildFvHob () to build the 
        FV HOB for this FV (see Section 4.8.1.2 of Vol 1 named Multiple Firmware Volume Support for details). 
        If PEIM only want to inform DXE core about the existance of the new FV, it should call BuildFvHob instead.
  
  
  Class_PIEnable[3]:  Update PEI core to support RegisterForShadow feature introduced by PI spec

     Code Change :
     1) DXEIPL no longer produce EFI_PEI_FV_FILE_LOADER_PPI defined in Framework PEI CIS.

     Possible Impacts:

     1)All PEIMs that need to shadow itself into memory and rerun the entry point should be updated to call RegisterForShadow
     (PeiServicesLibRegisterForShadow () is a helper function).
     2)The depex of PEIMs that including EFI_PEI_FV_FILE_LOADER_PPI (or gEfiPeiFvFileLoaderPpiGuid) should be removed.
 

  Class_PIEnable[4]:  Update PEI core to produce other new features defined in PI spec

      Code Change :
      1) Add the following services: FfsGetFileInfo, FfsFindFileByName and FfsGetVolumeInfo

      Possible Impacts:

      1) Platform code is recommended 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.

==========================================================================================
EDK_3871: Non-Compatible: klu2
	
	Class_PIEnable[1]: Use new entry point for PeiCore defined in PI specification.
	
	Code Change:
	1) PeiMain module use PeiCoreEntryPoint library class but *not* original OldPeiCoreEntryPoint.
	2) The memory service in PeiMain module get CAR base and size from parameter of PeiCore's
	   Entry point directly but *not* computed from stack's base.
	
	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_3866:  Compatible: qhuang8

	  Class_UefiEnable[0]:  Uefi2.1 feature - Add Hardware Error Record Persistence Support 
		Code Change :
		1) Modify MdeModulePkg/Universal/Variable/RuntimeDxe
                2) Modify MdeModulePkg/Universal/Variable/EmuRuntimeDxe

==========================================================================================
EDK_3773:  Non-Compatible: qwang12

	  Class_PIEnable[0]:  Enable DXE Core to produce EFI_FIRMWARE_VOLUME2_PROTOCOL only.

		Code Change :
		1) Modify MdeModulePkg/Core/Dxe/DxeMain.inf module to produce only
		   EFI_FIRMWARE_VOLUME2_PROTOCOL.	Previously, EFI_FIRMWARE_VOLUME_PROTOCOL
		   is produced by Dxe Core.

		Possible Impacts:
		1) All modules that references EFI_FIRMWARE_VOLUME_PROTOCOL must be updated to use
	 	   EFI_FIRMWARE_VOLUME2_PROTOCOL.
		2) All modules that references gEfiFirmwareVolumeProtocolGuid must be updated to
		   use gEfiFirmwareVolume2ProtocolGuid.
		3) The gEfiFirmwareVolumeProtocolGuid in [Depex] section of INF file should updated.
		   And the package dependency should also be changed if needed due to this protocol
		   GUID change.
