UDK2017 MdePkg Notes
-
Add Unified Extensible Firmware(UEFI) specification 2.6 defined Protocols/PPIs/GUIDs and their related data structure definitions.
- Protocols: EFI_ERASE_BLOCK_PROTOCOL EFI_HII_IMAGE_DECODER_PROTOCOL EFI_HII_IMAGE_EX_PROTOCOL EFI_RAM_DISK_PROTOCOL EFI_SD_MMC_PASS_THRU_PROTOCOL EFI_SHELL_PROTOCOL EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL EFI_SHELL_PARAMETERS_PROTOCOL EFI_SUPPLICANT_PROTOCOL EFI_TLS_PROTOCOL EFI_TLS_CONFIGURATION_PROTOCOL EFI_WIRELESS_MAC_CONNECTION_II_PROTOCOL
- GUIDs: EFI_MEMORY_ATTRIBUTES_TABLE_GUID EFI_ERROR_SECTION_PROCESSOR_SPECIFIC_IA32X64_GUID
- Miscellaneous UEFI 2.6 elements: a) Add EMMC_DEVICE_PATH, device path b) Move EBC opcode related definitions c) Add new HII action type EFI_BROWSER_ACTION_SUBMITTED d) Add new HII block EFI_HII_IIBT_PNG_BLOCK, EFI_HII_GIBT_VARIABILITY_BLOCK e) Add EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY definition f) Add new enum EfiPlatformConfigurationActionUnsupportedGuid g) Correct EFI_MTFTP6_ERRORCODE_ILLEGAL_OPERATION value from 6 to 4 h) Add new error status EFI_HTTP_ERROR, EFI_WARN_FILE_SYSTEM i) Add new traffic statistics definition for Wireless NIC
-
Add Platform Initialization(PI) specification 1.4a defined Protocols/PPIs/GUIDs and their related data structure definitions.
- Update EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE to 0x00080000
- Remove the fix artificial limitation of SkuId range in PCD SetSkuId()
- Add PI1.5 EFI_PEI_GRAPHICS_DEVICE_INFO_HOB
-
Add/Upgrade Industry standard definitions.
- Add EFI_SMM_COMMUNICATION_ACPI_TABLE_2 to include invocation register support
- Add ACPI6.1 tables
- Update ACPI6.0 tables a) Update MADT Revision b) Add GIC version c) Add Hardware Error Notification types d) Correct I/O Remapping Table signature definition
- Update ACPI5.1 tables a) Add GIC version
- Add DMA Remapping Reporting (DMAR) ACPI table definition
- Add ACPI Low Power Idle Table (LPIT) definitions
- Add additional Atapi definitions
- Add Windows SMM Security Mitigation Table
- Add DHCPv4 and DHCPv6 definitions
- Add SD/EMMC common definitions
- Add HTTP 1.1 industry standard definitions
- Add Transport Layer Security -- TLS 1.0/1.1/1.2 Standard definitions
- Add Ipmi2.0 definitions
- Add NVMe v1.1 definitions.
- Update PCI/PCIE definition a) Add EFI_PCI_CAPABILITY_ID_SHPC b) Update PCIe Extended Capabilities definition c) Remove out-of-Spec IncompatiblePciDevice macros
- Add PCI Express 3.1 definition
- Add Unmap command support in SCSI
- Add DDR3, DDR4 and LPDDR definition
- Update SMBIOS definition a) Add missing SMBIOS definitions for SATA and SAS Ports b) Add new defines for SMBIOS record type 43 c) Add definitions for SMBIOS spec 3.1.0 and 3.1.1
- Add TCG Storage Core and Opal definitions
- Update TPM2 ACPI Table revision to 4
- Add TPM TIS definition
- Add TPM PTP definition
- Update TCG EFI Platform Definition a) Define Startup Locality Event & Indicator b) Add TCG_PCR_EVENT2_HDR definition c) Add UEFI_VARIABLE_DATA
- Update TPM2 to add 3 new TPM_RH Constants
-
Add PCD PcdPort80DataWidth and PcdUartDefaultReceiveFifoDepth.
-
Add new Library classes:
- SmmIoLib
- RngLib
- SmiHandlerProfileLib
-
Add new library APIs in existing library classes:
- Add StrnSizeS(), StrDecimalToUintnS(), StrDecimalToUint64S(), StrHexToUintnS(), StrHexToUint64S(), AsciiStrnSizeS(), AsciiStrDecimalToUintnS(), AsciiStrDecimalToUint64S(), AsciiStrHexToUintnS(), AsciiStrHexToUint64S(), StrToIpv6Address(), StrToIpv4Address(), StrToGuid(), StrHexToBytes(), AsciiStrToIpv6Address(), AsciiStrToIpv4Address(), AsciiStrToGuid(), AsciiStrHexToBytes(), UnicodeStrToAsciiStrS(), UnicodeStrnToAsciiStrS(), AsciiStrToUnicodeStrS(), AsciiStrnToUnicodeStrS() in BaseLib.
- Deprecate AsciiStrToUnicodeStr(), UnicodeStrToAsciiStr() in BaseLib
- Add IsZeroGuid() and IsZeroBuffer() in BaseMemoryLib
- Add ASSERT_RETURN_ERROR() in DebugLib
- Add GetFileDevicePathFromAnyFv() in DxeServicesLib
- Add IoReadFifo'
[8|16|32]'
(), IoWriteFifo'[8|16|32]'
() in IoLib - Add PeCoffSearchImageBase() in PeCoffGetEntryPointLib
- Add SerialPortSetControl(), SerialPortGetControl(), SerialPortSetAttributes() in SerialPortLib
- Add EfiEventGroupSignal(), EfiEventEmptyFunction() in UefiLib
- Add ScsiRead10CommandEx(), ScsiWrite10CommandEx(), ScsiRead16CommandEx(), ScsiWrite16CommandEx() in UefiScsiLib
- Add UnicodeValueToStringS(), AsciiValueToStringS() in PrintLib
- Deprecate UnicodeValueToString(), AsciiValueToString() in PrintLib
-
Add new library instances:
- BasePciSegmentLibPci
- UefiDebugLibDebugPortProtocol
- SmmIoLib
- BaseRngLib
- SmmPciExpressLib
- SmiHandlerProfileLibNull
-
Update Base definition
- Add IPv4_ADDRESS and IPv6_ADDRESS
- Introduce the ARRAY_SIZE() function-like macro
- Add NORETURN attribute and UNREACHABLE() macro.
- Enable new MS VA intrinsics for GNUC x86 64bits build
- Retire NO_BUILTIN_VA_FUNCS macro
- Move CHAR_NULL definition
- Add enumeration size checks
- Add page allocation granularity
-
Disable the C4701 and C4703 warnings for VS2015
-
Add IMAGE_TOKEN() macro to access image resource in C and VFR
-
Add NASM source files
-
Convert all .uni files to utf-8
- Update ASSERT() macro as unreachable for analyzers
- Use gEfiCallerBaseName in DebugAssert to display the module name
- Update S3BootScriptSaveMemPoll() to accept 64-bit LoopTimes
- Update BaseSynchronizationLib
- Add volatile to Interlocked*() APIs
- Do not check timeout if lock released c) Add spin lock alignment for IA32/x64
- Update UefiScsiLib
- Close event when SCSI command fails
- Raise the Tpl of async IO callback to TPL_NOTIFY
- Update BaseLib
- Don't rely on undefined behavior in arithmetic shift in RShiftU64()
- Enhance PathRemoveLastItem() to support "FS0:File.txt"
- Update PathRemoveLastItem to handle root paths properly
- Fix PathCleanUpDirectories to correctly handle "."
- Fix PathCleanUpDirectories to correctly handle "...."
- Don't rely on undefined behavior in arithmetic shift in RShiftU64()
- Enhance SmmIsBufferOutsideSmmValid() check for fixed comm buffer.
- Reinitialize twice-iterated VA_LIST in variadic function UefiDevicePathLibCatPrint()
- Update UefiDevicePathLib
- Validate buffer length before use buffer
- Fix the wrong MAC address length
- Fix FromText bug for multi-instance device path
- Reverse the byte order of BD_ADDR for Bluetooth
- Validate buffer length before use buffer
- Check FV alignment when building FV HOB
- Make GetHobList working before Constructor is called
- Handle potential NULL FvHandle in GetSectionFromFv ()
- Make sure FvInfo has FFS2 format if NULL FvFormat in PeiServicesInstallFvInfoPpi()
- Update BaseMemoryLib
- Check for zero length in ZeroMem ()
- Wide aligned accesses to 32 or 64 bits
- EFI_SIZE_TO_PAGES() macro requires that the input parameter is UINTN data type.
- SecPeiDxeTimerLibCpu library instance can be used by drivers of type DXE_RUNTIME_DRIVER and DXE_SMM_DRIVER in their initialization without any issues. But, those driver needs be careful in the implementation of runtime services and SMI handlers.
- BaseExtractGuidedSectionLib library instance can be used by drivers of type DXE_RUNTIME_DRIVER and DXE_SMM_DRIVER in their initialization without any issues.