========================================================================================================================
                                                PACKAGE INTERFACE CHANGES
========================================================================================================================
1.  Add InSmm() API in PiSmmCoreSmmServicesTableLib instance.
2.  Add a stride PCD to MdeModulePkg to support 16550 UARTs with a register stride that is not 1 byte.
3.  Add PcdMaxAuthVariableSize declaration.
4.  Add PcdReclaimVariableSpaceAtEndOfDxe for trying to reclaim variable space at EndOfDxe.
5.  Add AuthVariableLib library class and implement a NULL AuthVariableLib library instance.
6.  Add VARIABLE_ENTRY_PROPERTY definition to VarCheck.h.
7.  Add VARIABLE_ENTRY_CONSISTENCY and variable attribute combinations definitions to VariableFormat.h.
8.  Add "TtyTerm" terminal type to TerminalDxe to add support for various *nix terminals that don't behave like standard
    VT terminals.
9.  Move libraries from ShellPkg into MdeModulePkg, including BaseSortLib and UefiSortLib.
10. Copy PCDs from IntelFrameworkModulePkg to MdeModulePkg, including PcdSetupConOutColumn, PcdSetupConOutRow,
    PcdSetupVideoHorizontalResolution and PcdSetupVideoVerticalResolution.
11. Copy two library instances, PeiDxeDebugLibReportStatusCode and LzmaCustomDecompressLib, from IntelFrameworkModulePkg
    to MdeModulePkg.
12. Extend ACPI default PCDs to PCD dynamic type.
13. Extend PcdSerialClockRate to PCD dynamic type to allow platform module to change the serial clock rate per different
    hardware.
14. Move LzmaDecompress GUID definition from IntelFrameworkModulePkg to MdeModulePkg.
15. Move TpmMeasurementLib library class from SecurityPkg to MdeModulePkg and implement a NULL TpmMeasurementLib library
    instance.
16. Move authenticated variable definition from SecurityPkg to MdeModulePkg.
17. Remove CapsulePpi definition in MdeModulePkg as Capsule.h has been added in MdePkg to follow PI 1.4 spec.
18. Remove two protocols never used in DxeNetLib.inf and add HttpLib access in MdeModulePkg.dec.
19. Remove Ip4ConfigDxe and related guid definition as Ip4Config Protocol is deprecated in UEFI 2.5 spec and replaced by
    Ip4Config2 protocol.
20. Update SMBIOS revision to 3.0.
21. Update PcdSmbiosVersion from 0x0207 to 0x0208.
22. Update DSC version from 0.94 to 0.96.

========================================================================================================================
                                                NEW FEATURES AND CHANGES
========================================================================================================================
1.  Add UEFI 2.5 properties table support in DXE core.
2.  Add support for UEFI 2.5 and PI 1.4 PersistentMemory feature.
3.  Add UEFI memory and SMRAM profile support in DxeCore and PiSmmCore.
4.  Add OEM reserved memory type support in DxeCore.
5.  Update implementation of PeiAllocatePages() of PeiCore to allow EfiReservedMemoryType.
6.  Implement the missing SetMemorySpaceCapabilities function in Dxe Core, which is defined in the PI 1.3 spec.
7.  Updates DxeCore to add all EfiGcdMemoryTypeReserved memory into UEFI memory map for PI 1.4 spec.
8.  Introduce SMM Exit Boot Services and Legacy Boot and SMM Ready To Boot protocols in PiSmmCore to let SMM drivers
    get protocol notify on what happened at DXE phase.
9.  Add Memory Capabilities for MMIO and Reserved Range in GetMemoryMap() to follow UEFI 2.5 spec.
10. Add read only memory support.
11. Add memory more reliable support.
12. Add OEM reserved memory type support.
13. Add DxeSmmPerformanceLib to dump all PEI/DXE/SMM performance data.
14. FvSimpleFileSystem: Add a new module to provide access to executable files in FVs.
15. Cleanup gEfiSmmAccess2ProtocolGuid reference as the drivers and library do not reference gEfiSmmAccess2ProtocolGuid
    explicitly now after SmmMemLib introduced.
16. Add SMBIOS 64-bit support for SMBIOS 3.0.
17. Add ATTRIBUTE (+/-RT, RO) support in PCD declaration in DSC file. Also update PCD_SERVICE_PEI_VERSION and
    PCD_SERVICE_DXE_VERSION to match with the new PcdDataBase binary generated by BaseTools.
18. Add UFS (Universal Flash Storage) Stack.
19. Expose EFI_NVM_EXPRESS_PASS_THRU protocol in NvmExpressDxe to follow UEFI2.5.
20. BDS refine to add UefiBootManagerLib, PlatformBootManagerNull, BdsDxe, BootManagerMenuApp, DriverHealthManagerDxe
    and UiApp modules.
21. Add BootManagerPolicyDxe to produce BootManagerPolicy protocol.
22. Remove EFI_NOT_FOUND from I2C IO protocol to follow the PI 1.4 spec.
23. Remove EFI_ABORTED from I2C protocols per PI 1.4 spec.
24. Update CapsulePei to consume CapsulePpi defined in PI 1.4 spec.
25. Add Reset2 ppi support in PEI CORE for PI 1.4 spec.
26. Add RecoveryBlockIo2 support on IdeBusPei, UsbBotPei, CdExpressPei and UfsBlockIoPei modules.
27. Add IsaBusDxe driver which follows UEFI driver model and layers on ISA HC protocol defined in PI 1.2.1 spec.
28. Cover EFI_ACPI_TABLE_VERSION_5_0 in AcpiTableDxe to follow PI 1.4 spec.
29. Add ESRT management protocol definition and ESRT management module to provide a repository to cache ESRT info for
    FMP or Non-FMP instance.
30. Add SecurityStorageProtocol support in NvmExpressDxe to produce it for each namespace at NVMe controller.
31. Update UefiBootManagerLib to support HTTP boot option creation.
32. Add PCD in PeiCore to specify PEIM Shadow.
33. Add stack NX support in DxeIpl for UEFI 2.5 spec.
34. Implement variable quota management.
35. Implement VarCheck PROTOCOL and follow UEFI spec to check UEFI defined variables.
36. Add VarCheckLib library class and instance.
37. Add VarCheckUefiLib library instance .
38. Add VarCheckHiiLib library instance.
39. Add VarCheckPcdLib library instance.
40. Add PlatformVarCleanupLib library class and instance.
41. Merge VariableInfo in SecurityPkg to VariableInfo in MdeModulePkg to remove code duplication and reduce
    maintenance effort.
42. Merge from VariablePei in SecurityPkg to VariablePei in MdeModulePkg to remove code duplication and reduce
    maintenance effort.
43. Merge from Auth Variable driver in SecurityPkg to Variable drive in MdeModulePkg to remove code duplication and
    reduce maintenance effort.
44. Update Ip4Dxe driver to support Ip4Config2 protocol and add new UI configuration support in Ip4Dxe driver.
45. Add HttpLib.
46. Add driver to produce EFI_REGULAR_EXPRESSION_PROTOCOL.
47. Support orderedList with default value to follow UEFI 2.5 spec.
48. Enable reconnect request from action request or question flag.
49. Enable refresh opcode to refresh the entire form.
50. Enable buffer type value for default and oneofoption opcode.
51. Add match2 opcode support in SetupBrowserDxe and sample code in DriverSampleDxe.
52. Enable popup dialog when user press the hotkey.
53. Implement HII Config keyword handler protocol defined in PI 1.4 spec.
54. Remove Framework HII "class\subclass" in all VFRs as class/subclass is the obseleted key word.
55. Support delete key in DisplayEngineDxe.
56. Clean DisplayEngineDxe to not depend on the framework code.

=======================================================================================================================
                                                       BUG FIXES
=======================================================================================================================
1.   Fix X64 native function call prolog for EbcDxe.
2.   Fix ReadBlockEx and WriteBlockEx in AtaBusDxe to still signal event when the BufferSize is 0.
     Fix ReadDiskEx and WriteDiskEx in DiskIoDxe to not modify the user's buffer when the BufferSize is 0.
     Fix ReadDiskEx and WriteDiskEx hang issue in DiskIoDxe when the submitted blockio2 task is completed before
     submitting another blockio2 task.
     Fix FlushEx in DiskIoDxe to free the flush task item in callback (memory leak issue).
3.   Remove assumptions below in FTW driver.
     1)  Work space and spare block must be in a FVB with FV header.
     2)  NV region, work space and spare block must have same BlockSize.
     3)  Work space size must be <= one block size.
4.   Add FVH signature check before VerifyFvHeaderChecksum in FwVol.
5.   Check the question value before call CHANGED. Only when question value has been changed, browser will call CHANGED
     callback type.
6.   When D2H FIS received at PIO DATA-IN transfer, check PxTFD.Error register in AtaAtapiPassThru to confirm if there
     is a real error for better device compatibilities with Qemu and Marvel9230 sata controllers.
7.   Fix a bug that not all NIC device implement both memory and IO bar.
8.   Add boundary check for while (IsValidVariableHeader (Variable)).
9.   Refine the get default value logic to base on the input request to get default value for questions.
10.  Fixed user input arrow down/ page down caused form display highlight menu error.
11.  Fix an issue in the PCD service to prevent potential out of bound array access
12.  Fix memory leak in Ip4Config.
13.  Check pointer AllocInfoData in DxeCore before dereferencing.
14.  Unregister DXE FpdtStatusCodeHandler.
15.  Checking if gSmmCorePrivate->CommunicationBuffer is in supported physical address scope.
16.  Fix DxeCore NotifyFwVolBlock() function to make sure FV protocol is installed for all valid PI FV images.
17.  Update the device path info in SetupBrowserDxe for the storage.
18.  DXE FpdtStatusCodeHandler: Check Boolean value in if statement.
19.  Fix an issue in PeiCore FirmwareVolmeInfoPpiNotifyCallback() which should check FvCount when new one is added.
20.  Fix potential FV overflow of 4GB boundary in DxeCore on a 32-bit systems.
21.  Don't set PxSACT bit in AtaAtapiPassThru when issuing command to work with Marvell 9128 controller.
22.  Add code to cover the space which is not covered by browser before. Remove ESC help string for front page screen.
23.  Remove the FV header assumption in variable driver.
24.  Restore question value for question without storage after CHANGING callback return error.
25.  Fix the issue that SPrintLength() and SPrintLengthAsciiFormat() API of DxePrintLibPrint2Protocol library doesn't
     work with 'g', 't' and 'r' option.
26.  Enhance memory profile code to handle possible NULL FilePath.
27.  Fix El Torito support in PartitionDxe when the medium is not a CDROM.
28.  Dispatch the UEFI option rom returned from PciPlatform/PciOverride protocol.
29.  Fix wrong sanity check in CoreTerminateMemoryMap() of DxeMain.
30.  Locate the config route protocol before install the config access protocol in PlatformDriOverrideDxe to fix
     potential issue.
31.  Enforce exclusion between FirmwareCtrl and XFirmwareCtrl of AcpiDxe.
32.  Fixed DxeCore displaying incorrect FV Hob information.
33.  Correct wrong media type detection logic in UsbBotPei.
34.  Move ConfigHdr from browser_storage to Formset_storage, avoid device path lost for drivers.
35.  Record the current boot VarErrorFlag to local variable and leave the variable error flag in NV flash as the last
     boot variable error flag. Before EndOfDxe,Variable:
36.  Use SmmMemLib to check communication buffer.
37.  Initialize data and correct faulty logic in TcpComponentNameGetControllerName() for Tcp4Dxe.
38.  Verified ChildHandle, and correct the name for a child for IscsiDxe.
39.  Enhance the parameter check to avoid potential issue in negotiation for IscsiDxe.
40.  Open default Tcp child via BY_CHILD_CONTROLLER in IscsiDxe.
41.  Use correct granularity when allocating pool pages in DxeCore.
42.  Update DxeCore to use 64 KB granularity for runtime allocations on AArch64
43.  Keep the behavior of Variable Dxe and SMM drivers consistent to return EFI_NOT_FOUND when a specified variable
     doesn't exist and Data parameter is NULL but DataSize parameter is valid in GetVariable() invocation.
44.  The restriction of UsbHc2.SyncInterruptTransfer() on interrupt transfer direction is removed. This interface could
     support Interrupt IN/OUT now.
45.  BootScriptExecutorDxe: Use ImageContext.ImageSize to allocate memory for PE image to handle the case PE file
     alignment is not same as PE section alignment.
46.  Add error handling when DXE IPL PPI is not found and add status code report and cpu deadloop when DXE IPL PPI is
     not found.
47.  Enhance the code logic about VariableLock to just return EFI_SUCCESS if the variable has been in the locked list.
48.  Fix possible memory leak issue in NvmExpressDxe driver.
49.  Save initial TSVal from TCP connection initiation packets in Tcp4Dxe.
50.  PiDxeS3BootScriptLib: Initialize the EFI_BOOT_SCRIPT_TABLE_HEADER.Version.
51.  Update PcdDxe to check the input SkuId in SetSku() then GetSku() could return the currently active SkuId.
52.  Fix some grammar and converge formatting of the two versions of TcpInput.c
53.  Update ScsiDisk to set correct value to the Media->IoAlign field of BlockIo protocol instance.
54.  Fix completed xfer length in XhciDxe and XhciPei drivers.
55.  Update NvmExpressDxe to correct Prp list creation algorithm.
56.  Remove GetBootMode() at FirmwarePerformancePeiEntryPoint as Boot mode maybe changed at any point during the PEI
     phase.
57.  Update BaseSortLib and UefiBootManagerLib INF to support DXE_RUNTIME_DRIVER.
58.  Enhance the check for numeric opcode with EFI_IFR_DISPLAY_INT_DEC attribute.
59.  Avoid using same TokenValue for two PCDs.
60.  Change the code of FirmwarePerformanceDataTableDxe to listen EFI_SW_DXE_BS_PC_LEGACY_BOOT_EVENT instead of the
     Legacy Boot event to provide more precise performance data.
61.  Update SmmIplEntry() to not suppress SMM core startup failure.
62.  Update memory profile for OEM reserved memory type.
63.  PiSmmCoreMemoryAllocationLib: Get SMRAM ranges from FullSmramRanges and FullSmramRangeCount in SmmCorePrivate
     by Constructor.
64.  Update Variable to prevent BS variable update in legacy OS runtime.
65.  Enumerate all string packages in one driver when search the keyword.
66.  Fix potential buffer overflow issues in SetupBrowserDxe.
67.  Fix more than one arrow shows for one goto menu.
68.  AtaAtapiPassThruDxe: Support 4K bytes block size HDDs.
69.  Fix browser bug to not call EFI_BROWSER_ACTION_CHANGED when checkbox is selected and unselected.
70.  Fix PciBus hang issue as LocatePciExpressCapabilityRegBlock() doesn't check the return status of Pci.Read().
71.  Update AtaAtapiPassThru to ensure PRDT of IDE is in 64K boundary to follow IDE BUS Master spec.
72.  PiSmmCore dispatcher should not use one Index for three loops.
73.  Add %u and %lu support for PrintLib and DebugLib.
74.  Fix bug of AllocatePages for large alignment.
75.  Add SysPrepOrder and SysPrep#### to global list.
76.  Updating the async polling interval of Usb host controller from 50ms to 1ms for better performance.
77.  PiSmmCore: Free FullSmramRanges at error condition.
78.  PcdDxe: TokenNumber should start from 1 because 0 is reserved as invalid token number.
79.  Move VariableLock install into SmmVariableReady().
80.  Update NvmExpressDxe to open NVME_PASS_THRU rather than PCI_IO with BY_CHILD attribute to create parent-child
     relationship.
81.  Fix system hang in setup menu of SetupBrowserDxe when RTC time rollover 1999 to 2000.
82.  Remove DHCP4.TransmitReceive()and DORA process dependency.
83.  Fix DHCP4 driver hang issue in some case.
84.  Update PiSmmCore to unregister end of dxe notification in SmmReadyToLock to avoid potential malicious code to
     trigger end of dxe SMI handler many times.
85.  Update PeiCore to handle specific child FV.
86.  The TPer Reset operation in AtaBus is removed into SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.inf module.
87.  Use safe string functions to replace unsafe String functions.
88.  Merge GCD range before convert it to EFI memory.
89.  Fix media probe logic in PartitionDxe.
90.  Remove NetLib and Ip4Config Protocol dependency in DxeNetLib.
91.  Error handling enhancement for XhcExecTransfer.
92.  Update AcpiTableDxe to install config table at ACPI data change.
93.  Fix the problem that data type conversion may loss data in Mtftp4Dxe.
94.  Fix potential integer overflow issue in SmmLockBoxLib and SmmCorePerformanceLib.
95.  Fix a bug that return type differs from the left one when assigned in Mtftp4Dxe.
96.  Skip install MemoryInfoHob in DxeIpl if this hob exists.
97.  Update TerminalDxe to set NullRemaining to FALSE by default.
98.  Remove a hidden assumption of SMRAM reservation in PiSmmCore.
99.  Remove TransmitReceive() and ActiveChild dependency in Dhcp4Dxe.
100. Fix the issue EfiPxeBcDhcp() may return wrong status in UefiPxeBcDxe.
101. Correct the parameter order in match2 sample opcode of DriverSampleDxe.
102. Correct address pointers from AuthVariableLib in VariableDxe.
103. Add old IPv4_DEVICE_PATH support for new IScsiDxe.
104. Make boot option description unique in UefiBootManagerLib.
105. Read MonotonicCount by ReadUnaligned64() in Variable.
106. BootScriptExecutorDxe: Reduce reserved memory consumption.
107. Update CapsuleX64 to reduce reserved memory consumption.
108. Update CapsuleRuntimeDxe to reduce reserved memory consumption.
109. Support get string from configuration string packages.
110. Add ESC key support in setup browser pop-up message box.
111. Update PiSmmIpl to use AllocateZeroPool() for FullSmramRanges.
112. Fix the issue cannot boot to UEFI Network after reset.
113. Enhance PciBusDxe to handle high 32bit of MEM64 BAR returns 0.
114. Update UiApp to move reset menu from Front Page to BMM Page.
115. Fix the issue FindQuestionFromProgress in SetupBrowserDxe is broken.
116. Move ProcessLibraryConstructorList() to right after CoreInitializeGcdServices() in DxeCore.
117. Fix the issue that refresh the question fail in DriverSample.
118. Adjust TPL of usb stack to not block async transfer during usb enum.
119. Use monotonic count to initialize the NetLib random seed.
120. Fix issue about current Ip4Dxe implementation for DHCP DORA process.
121. Fix the issue that Commit changes and Exit fail when add driver option.
122. Update Variable to handle variable Attributes mismatch case between variable HOB and NV storage.
123. IP4 should re-initiate a DHCP if it detects network reconnection.
124. Make all timeout values in Xhci be consistent with comments.
125. Allocate temp buffer to avoid potential change user input string buffer in HiiDatabaseDxe.
126. Validate the input namespace field to avoid assert in HiiDatabaseDxe.
127. Fix default router table and interface missing error in Ip4Dxe.
128. Update PeiCore to recheck SwitchStackSignal after ProcessNotifyList().
129. Update PiSmmCore to prevent overlap for gSmmCorePrivate and CommBuffer.
130. Update Xhci to remove TDs from transfer ring when timeout happens.
131. Update FaultTolerantWrite error handling for erase operation failure.
132. Replace deprecated function GetEfiGlobalVariable with GetEfiGlobalVariable2.
133. Fix calculate help string page count error in DisplayEngineDxe.
134. Locate IpSec on IP packet processing only if it's installed.
