From 210c258361c00993de72b306950d0ba84f621ae5 Mon Sep 17 00:00:00 2001 From: Zhao Hang Date: Wed, 21 Aug 2024 17:15:56 +0800 Subject: [PATCH 1/4] update to edk2-20220126gitbb1bba3d77-13.2.src.rpm Signed-off-by: Zhao Hang --- ...g-Add-StandardSignatureIsHygonGenuin.patch | 140 - ...g-LocalApicLib-Exclude-second-SendIp.patch | 83 - ...dd-CSV-secure-call-library-on-Hygon-.patch | 672 - ...cg-Add-CsvLib-for-TpmMmioSevDecryptP.patch | 27 - ...esetVector-Support-CSV-in-ResetVecto.patch | 222 - ...latformPei-Initialize-CSV-VM-s-memor.patch | 202 - ...aseMemcryptSevLib-update-page-status.patch | 75 - 0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch | 616 - ...mfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch | 724 - ...eserve-a-CPUID-table-page-for-CSV-gu.patch | 137 - ...ncryptLib-Detect-SEV-live-migration-.patch | 325 - ...ncryptLib-Hypercall-API-for-page-enc.patch | 298 - ...ncryptLib-Invoke-page-encryption-sta.patch | 91 - ...ib-Encryption-state-change-hypercall.patch | 46 - ...Pei-Mark-SEC-GHCB-page-as-unencrypte.patch | 43 - ...e-Add-support-for-SEV-live-migration.patch | 185 - ...aseMemcryptSevLib-Correct-the-calcul.patch | 35 - ...aseMemEncryptLib-Return-SUCCESS-if-n.patch | 36 - ...aseMemEncryptLib-Save-memory-encrypt.patch | 144 - ...ecretDxe-Allocate-secret-location-as.patch | 73 - ...t-call-ProcessLibraryConstructorList.patch | 56 + ...lePkg-Change-use-of-EFI_D_-to-DEBUG_.patch | 11782 +++++++++++ ...licate-BaseRngLibTimerLib-to-MdeModu.patch | 2255 +++ ...ential-UINT32-overflow-in-S3-ResumeC.patch | 66 + ...-Add-GUID-to-describe-unsafe-Rng-alg.patch | 90 + ...eprecated-warning-to-BaseRngLibTimer.patch | 89 + edk2-MdePkg-Apply-uncrustify-changes.patch | 94 + ...b-Add-a-smoketest-for-RDRAND-and-che.patch | 213 + ...-Request-raw-algorithm-instead-of-de.patch | 66 + ...UID-to-describe-Arm-Rndr-Rng-algorit.patch | 91 + ...-MdePkg-Rng-Add-GetRngGuid-to-RngLib.patch | 409 + ...X86UnitTestHost-set-rdrand-cpuid-bit.patch | 63 + ...tworkPkg-Apply-uncrustify-changes.p2.patch | 16641 ++++++++++++++++ ...orkPkg-SECURITY-PATCH-CVE-2023-45237.patch | 1252 ++ ...e-Fixed-system-stuck-on-PXE-boot-flo.patch | 74 + ...TcpDxe-SECURITY-PATCH-CVE-2023-45236.patch | 808 + edk2-OvmfPkg-wire-up-RngDxe.patch | 318 + ...xe-Add-AArch64-RawAlgorithm-support-.patch | 246 + ...Pkg-RngDxe-Add-Arm-support-of-RngDxe.patch | 311 + ...xe-Add-debug-warning-for-NULL-PcdCpu.patch | 58 + ...xe-Check-before-advertising-Cpu-Rng-.patch | 336 + ...xe-Conditionally-install-EFI_RNG_PRO.patch | 79 + ...xe-Correctly-update-mAvailableAlgoAr.patch | 105 + ...xe-Documentation-include-parameter-c.patch | 98 + ...xe-Remove-ArchGetSupportedRngAlgorit.patch | 258 + ...tyPkg-RngDxe-Rename-AArch64-RngDxe.c.patch | 55 + ...xe-Rename-RdRandGenerateEntropy-to-g.patch | 176 + ...xe-Simplify-Rng-algorithm-selection-.patch | 78 + ...xe-Use-GetRngGuid-when-probing-RngLi.patch | 195 + edk2-SecurityPkg-RngDxe-add-rng-test.patch | 57 + ...rityPkg.dec-Move-PcdCpuRngSupportedA.patch | 104 + edk2.spec | 198 +- 52 files changed, 36688 insertions(+), 4207 deletions(-) delete mode 100644 0029-anolis-UefiCpuPkg-Add-StandardSignatureIsHygonGenuin.patch delete mode 100644 0030-anolis-UefiCpuPkg-LocalApicLib-Exclude-second-SendIp.patch delete mode 100644 0031-anolis-OvmfPkg-Add-CSV-secure-call-library-on-Hygon-.patch delete mode 100644 0032-anolis-OvmfPkg-Tcg-Add-CsvLib-for-TpmMmioSevDecryptP.patch delete mode 100644 0033-anolis-OvmfPkg-ResetVector-Support-CSV-in-ResetVecto.patch delete mode 100644 0034-anolis-OvmfPkg-PlatformPei-Initialize-CSV-VM-s-memor.patch delete mode 100644 0035-anolis-OvmfPkg-BaseMemcryptSevLib-update-page-status.patch delete mode 100644 0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch delete mode 100644 0037-anolis-OvmfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch delete mode 100644 0038-anolis-OvmfPkg-Reserve-a-CPUID-table-page-for-CSV-gu.patch delete mode 100644 0039-OvmfPkg-BaseMemEncryptLib-Detect-SEV-live-migration-.patch delete mode 100644 0040-OvmfPkg-BaseMemEncryptLib-Hypercall-API-for-page-enc.patch delete mode 100644 0041-OvmfPkg-BaseMemEncryptLib-Invoke-page-encryption-sta.patch delete mode 100644 0042-OvmfPkg-VmgExitLib-Encryption-state-change-hypercall.patch delete mode 100644 0043-OvmfPkg-PlatformPei-Mark-SEC-GHCB-page-as-unencrypte.patch delete mode 100644 0044-OvmfPkg-AmdSevDxe-Add-support-for-SEV-live-migration.patch delete mode 100644 0045-anolis-OvmfPkg-BaseMemcryptSevLib-Correct-the-calcul.patch delete mode 100644 0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch delete mode 100644 0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch delete mode 100644 0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch create mode 100644 edk2-CryptoPkg-Test-call-ProcessLibraryConstructorList.patch create mode 100644 edk2-MdeModulePkg-Change-use-of-EFI_D_-to-DEBUG_.patch create mode 100644 edk2-MdeModulePkg-Duplicate-BaseRngLibTimerLib-to-MdeModu.patch create mode 100644 edk2-MdeModulePkg-Potential-UINT32-overflow-in-S3-ResumeC.patch create mode 100644 edk2-MdeModulePkg-Rng-Add-GUID-to-describe-unsafe-Rng-alg.patch create mode 100644 edk2-MdePkg-Add-deprecated-warning-to-BaseRngLibTimer.patch create mode 100644 edk2-MdePkg-Apply-uncrustify-changes.patch create mode 100644 edk2-MdePkg-BaseRngLib-Add-a-smoketest-for-RDRAND-and-che.patch create mode 100644 edk2-MdePkg-DxeRngLib-Request-raw-algorithm-instead-of-de.patch create mode 100644 edk2-MdePkg-Rng-Add-GUID-to-describe-Arm-Rndr-Rng-algorit.patch create mode 100644 edk2-MdePkg-Rng-Add-GetRngGuid-to-RngLib.patch create mode 100644 edk2-MdePkg-X86UnitTestHost-set-rdrand-cpuid-bit.patch create mode 100644 edk2-NetworkPkg-Apply-uncrustify-changes.p2.patch create mode 100644 edk2-NetworkPkg-SECURITY-PATCH-CVE-2023-45237.patch create mode 100644 edk2-NetworkPkg-TcpDxe-Fixed-system-stuck-on-PXE-boot-flo.patch create mode 100644 edk2-NetworkPkg-TcpDxe-SECURITY-PATCH-CVE-2023-45236.patch create mode 100644 edk2-OvmfPkg-wire-up-RngDxe.patch create mode 100644 edk2-SecurityPkg-RngDxe-Add-AArch64-RawAlgorithm-support-.patch create mode 100644 edk2-SecurityPkg-RngDxe-Add-Arm-support-of-RngDxe.patch create mode 100644 edk2-SecurityPkg-RngDxe-Add-debug-warning-for-NULL-PcdCpu.patch create mode 100644 edk2-SecurityPkg-RngDxe-Check-before-advertising-Cpu-Rng-.patch create mode 100644 edk2-SecurityPkg-RngDxe-Conditionally-install-EFI_RNG_PRO.patch create mode 100644 edk2-SecurityPkg-RngDxe-Correctly-update-mAvailableAlgoAr.patch create mode 100644 edk2-SecurityPkg-RngDxe-Documentation-include-parameter-c.patch create mode 100644 edk2-SecurityPkg-RngDxe-Remove-ArchGetSupportedRngAlgorit.patch create mode 100644 edk2-SecurityPkg-RngDxe-Rename-AArch64-RngDxe.c.patch create mode 100644 edk2-SecurityPkg-RngDxe-Rename-RdRandGenerateEntropy-to-g.patch create mode 100644 edk2-SecurityPkg-RngDxe-Simplify-Rng-algorithm-selection-.patch create mode 100644 edk2-SecurityPkg-RngDxe-Use-GetRngGuid-when-probing-RngLi.patch create mode 100644 edk2-SecurityPkg-RngDxe-add-rng-test.patch create mode 100644 edk2-SecurityPkg-SecurityPkg.dec-Move-PcdCpuRngSupportedA.patch diff --git a/0029-anolis-UefiCpuPkg-Add-StandardSignatureIsHygonGenuin.patch b/0029-anolis-UefiCpuPkg-Add-StandardSignatureIsHygonGenuin.patch deleted file mode 100644 index 5abf6fc..0000000 --- a/0029-anolis-UefiCpuPkg-Add-StandardSignatureIsHygonGenuin.patch +++ /dev/null @@ -1,140 +0,0 @@ -From c5906a1813f0a370e76d0e4910f1959edd552af4 Mon Sep 17 00:00:00 2001 -From: jiangxin -Date: Thu, 21 Apr 2022 16:03:08 +0800 -Subject: [PATCH 29/46] anolis: UefiCpuPkg: Add - StandardSignatureIsHygonGenuine() in BaseUefiCpuLib - -This function allows IA32/X64 code to determine if it is running on an -Hygon brand processor. - -Signed-off-by: Xin Jiang -Change-Id: I72594196f0ce6003fce43856120e3ca4609b8bb2 ---- - UefiCpuPkg/Include/Library/UefiCpuLib.h | 13 +++++ - UefiCpuPkg/Include/Register/Hygon/Cpuid.h | 47 +++++++++++++++++++ - .../Library/BaseUefiCpuLib/BaseUefiCpuLib.c | 24 ++++++++++ - 3 files changed, 84 insertions(+) - create mode 100644 UefiCpuPkg/Include/Register/Hygon/Cpuid.h - -diff --git a/UefiCpuPkg/Include/Library/UefiCpuLib.h b/UefiCpuPkg/Include/Library/UefiCpuLib.h -index 092c1d2..c64fe26 100644 ---- a/UefiCpuPkg/Include/Library/UefiCpuLib.h -+++ b/UefiCpuPkg/Include/Library/UefiCpuLib.h -@@ -43,6 +43,19 @@ StandardSignatureIsAuthenticAMD ( - VOID - ); - -+/** -+ Determine if the standard CPU signature is "HygonGenuine". -+ -+ @retval TRUE The CPU signature matches. -+ @retval FALSE The CPU signature does not match. -+ -+**/ -+BOOLEAN -+EFIAPI -+StandardSignatureIsHygonGenuine ( -+ VOID -+ ); -+ - /** - Return the 32bit CPU family and model value. - -diff --git a/UefiCpuPkg/Include/Register/Hygon/Cpuid.h b/UefiCpuPkg/Include/Register/Hygon/Cpuid.h -new file mode 100644 -index 0000000..e8a2c76 ---- /dev/null -+++ b/UefiCpuPkg/Include/Register/Hygon/Cpuid.h -@@ -0,0 +1,47 @@ -+/** @file -+ CPUID leaf definitions. -+ -+ Provides defines for CPUID leaf indexes. Data structures are provided for -+ registers returned by a CPUID leaf that contain one or more bit fields. -+ If a register returned is a single 32-bit value, then a data structure is -+ not provided for that register. -+ -+ Copyright (c) 2022, HYGON. All rights reserved.
-+ -+ This program and the accompanying materials are licensed and made available -+ under the terms and conditions of the BSD License which accompanies this -+ distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+**/ -+ -+#ifndef __HYGON_CPUID_H__ -+#define __HYGON_CPUID_H__ -+ -+/** -+CPUID Signature Information -+ -+@param EAX CPUID_SIGNATURE (0x00) -+ -+@retval EAX Returns the highest value the CPUID instruction recognizes for -+ returning basic processor information. The value is returned is -+ processor specific. -+@retval EBX First 4 characters of a vendor identification string. -+@retval ECX Last 4 characters of a vendor identification string. -+@retval EDX Middle 4 characters of a vendor identification string. -+ -+**/ -+ -+/// -+/// @{ CPUID signature values returned by HYGON processors -+/// -+#define CPUID_SIGNATURE_AUTHENTIC_HYGON_EBX SIGNATURE_32 ('H', 'y', 'g', 'o') -+#define CPUID_SIGNATURE_AUTHENTIC_HYGON_EDX SIGNATURE_32 ('n', 'G', 'e', 'n') -+#define CPUID_SIGNATURE_AUTHENTIC_HYGON_ECX SIGNATURE_32 ('u', 'i', 'n', 'e') -+/// -+/// @} -+/// -+ -+#endif -diff --git a/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c b/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c -index 5089161..700d633 100644 ---- a/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c -+++ b/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c -@@ -11,6 +11,7 @@ - - #include - #include -+#include - - #include - #include -@@ -38,6 +39,29 @@ StandardSignatureIsAuthenticAMD ( - RegEdx == CPUID_SIGNATURE_AUTHENTIC_AMD_EDX); - } - -+/** -+ Determine if the standard CPU signature is "HygonGenuine". -+ -+ @retval TRUE The CPU signature matches. -+ @retval FALSE The CPU signature does not match. -+ -+**/ -+BOOLEAN -+EFIAPI -+StandardSignatureIsHygonGenuine ( -+ VOID -+ ) -+{ -+ UINT32 RegEbx; -+ UINT32 RegEcx; -+ UINT32 RegEdx; -+ -+ AsmCpuid (CPUID_SIGNATURE, NULL, &RegEbx, &RegEcx, &RegEdx); -+ return (RegEbx == CPUID_SIGNATURE_AUTHENTIC_HYGON_EBX && -+ RegEcx == CPUID_SIGNATURE_AUTHENTIC_HYGON_ECX && -+ RegEdx == CPUID_SIGNATURE_AUTHENTIC_HYGON_EDX); -+} -+ - /** - Return the 32bit CPU family and model value. - --- -2.17.1 - diff --git a/0030-anolis-UefiCpuPkg-LocalApicLib-Exclude-second-SendIp.patch b/0030-anolis-UefiCpuPkg-LocalApicLib-Exclude-second-SendIp.patch deleted file mode 100644 index ccb5fd6..0000000 --- a/0030-anolis-UefiCpuPkg-LocalApicLib-Exclude-second-SendIp.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 573b40aeb685842d7fd4e7985cd197fc79fe8cff Mon Sep 17 00:00:00 2001 -From: jiangxin -Date: Sun, 10 Apr 2022 21:50:15 -0400 -Subject: [PATCH 30/46] anolis: UefiCpuPkg/LocalApicLib: Exclude second SendIpi - sequence on HYGON hardware - -On HYGON processors the second SendIpi in the SendInitSipiSipi and -SendInitSipiSipiAllExcludingSelf routines is not required, and may cause -undesired side-effects during MP initialization. - -This patch leverages the StandardSignatureIsHygonGenuine check to exclude -the second SendIpi and its associated MicroSecondDelay (200). - -Signed-off-by: Xin Jiang -Change-Id: I59defdaf10fb36981c5dfb7e3b69e8bf5aaf46cc ---- - UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c | 5 +++-- - UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c | 5 +++-- - 2 files changed, 6 insertions(+), 4 deletions(-) - -diff --git a/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c b/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c -index 52bd90d..fac41bd 100644 ---- a/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c -+++ b/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c -@@ -22,6 +22,7 @@ - #include - #include - #include -+#include - - // - // Library internal functions -@@ -527,7 +528,7 @@ SendInitSipiSipi ( - IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_STARTUP; - IcrLow.Bits.Level = 1; - SendIpi (IcrLow.Uint32, ApicId); -- if (!StandardSignatureIsAuthenticAMD ()) { -+ if (!StandardSignatureIsAuthenticAMD () && !StandardSignatureIsHygonGenuine ()) { - MicroSecondDelay (200); - SendIpi (IcrLow.Uint32, ApicId); - } -@@ -563,7 +564,7 @@ SendInitSipiSipiAllExcludingSelf ( - IcrLow.Bits.Level = 1; - IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF; - SendIpi (IcrLow.Uint32, 0); -- if (!StandardSignatureIsAuthenticAMD ()) { -+ if (!StandardSignatureIsAuthenticAMD () && !StandardSignatureIsHygonGenuine ()) { - MicroSecondDelay (200); - SendIpi (IcrLow.Uint32, 0); - } -diff --git a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c b/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c -index cdcbca0..a8fea8b 100644 ---- a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c -+++ b/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c -@@ -23,6 +23,7 @@ - #include - #include - #include -+#include - - // - // Library internal functions -@@ -622,7 +623,7 @@ SendInitSipiSipi ( - IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_STARTUP; - IcrLow.Bits.Level = 1; - SendIpi (IcrLow.Uint32, ApicId); -- if (!StandardSignatureIsAuthenticAMD ()) { -+ if (!StandardSignatureIsAuthenticAMD () && !StandardSignatureIsHygonGenuine ()) { - MicroSecondDelay (200); - SendIpi (IcrLow.Uint32, ApicId); - } -@@ -658,7 +659,7 @@ SendInitSipiSipiAllExcludingSelf ( - IcrLow.Bits.Level = 1; - IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF; - SendIpi (IcrLow.Uint32, 0); -- if (!StandardSignatureIsAuthenticAMD ()) { -+ if (!StandardSignatureIsAuthenticAMD () && !StandardSignatureIsHygonGenuine ()) { - MicroSecondDelay (200); - SendIpi (IcrLow.Uint32, 0); - } --- -2.17.1 - diff --git a/0031-anolis-OvmfPkg-Add-CSV-secure-call-library-on-Hygon-.patch b/0031-anolis-OvmfPkg-Add-CSV-secure-call-library-on-Hygon-.patch deleted file mode 100644 index 72ebc6f..0000000 --- a/0031-anolis-OvmfPkg-Add-CSV-secure-call-library-on-Hygon-.patch +++ /dev/null @@ -1,672 +0,0 @@ -From 98354124fe8c4cd7e6aed0fb6feabbe3a4de1836 Mon Sep 17 00:00:00 2001 -From: Liu Zixing -Date: Fri, 25 Feb 2022 14:25:11 +0800 -Subject: [PATCH 31/46] anolis: OvmfPkg: Add CSV secure call library on Hygon - CPU - -CSV is the secure virtualization feature on Hygon CPU. -A CSV virtual machine is composed of private memory and shared memory. -The private memory or shared memory can be converted to the other by -the following steps: - - guest clear/set the c-bit in the guest page table - - guest send a update command to Hygon Secure Processor - -While the update command has to be forwarded by the VMM to the Secure -Processor, to prevent the malicious VMM from attacking the update -command, a reliable command channel is required between the CSV VM -and the Hygon Secure Processor. - -The secure call library is created to build a secure command channel -between the VM and the Secure Processor by #NPF on a special private -page which the VMM is not able to access. -This special page is called secure call page. -The VM puts command in the secure call page and triggers a #NPF -to reach the Secure Processor. -The Secure Processor then puts the response in the same page and -finishes the #NPF. -The information is protected in the secure call page all the way. - -CsvLib is added to implement the functionality and new PCDs are added -accordingly. - -Signed-off-by: Xin Jiang -Change-Id: If62f0cb37faf003a79ed8a117bf582f8b90cdf89 ---- - OvmfPkg/Include/Library/CsvLib.h | 84 +++++++ - OvmfPkg/Library/CsvLib/CsvLib.c | 82 ++++++ - OvmfPkg/Library/CsvLib/CsvLib.inf | 55 ++++ - .../Library/CsvLib/Ia32/UpdateMemoryCsvLib.c | 53 ++++ - .../Library/CsvLib/X64/UpdateMemoryCsvLib.c | 238 ++++++++++++++++++ - OvmfPkg/OvmfPkg.dec | 8 + - OvmfPkg/OvmfPkgIa32.dsc | 1 + - OvmfPkg/OvmfPkgIa32X64.dsc | 1 + - OvmfPkg/OvmfPkgX64.dsc | 1 + - OvmfPkg/OvmfPkgX64.fdf | 3 + - 10 files changed, 526 insertions(+) - create mode 100644 OvmfPkg/Include/Library/CsvLib.h - create mode 100644 OvmfPkg/Library/CsvLib/CsvLib.c - create mode 100644 OvmfPkg/Library/CsvLib/CsvLib.inf - create mode 100644 OvmfPkg/Library/CsvLib/Ia32/UpdateMemoryCsvLib.c - create mode 100644 OvmfPkg/Library/CsvLib/X64/UpdateMemoryCsvLib.c - -diff --git a/OvmfPkg/Include/Library/CsvLib.h b/OvmfPkg/Include/Library/CsvLib.h -new file mode 100644 -index 0000000..0cb6218 ---- /dev/null -+++ b/OvmfPkg/Include/Library/CsvLib.h -@@ -0,0 +1,84 @@ -+/** @file -+ -+ CSV base library helper function -+ -+ Copyright (c) 2022, HYGON. All rights reserved.
-+ -+ This program and the accompanying materials are licensed and made available -+ under the terms and conditions of the BSD License which accompanies this -+ distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#ifndef _CSV_LIB_H_ -+#define _CSV_LIB_H_ -+ -+#include -+ -+typedef struct { -+ IN UINT64 BaseAddress; -+ IN UINT64 Size; -+} CSV_SECURE_CMD_SHARED_REGION; -+ -+typedef enum { -+ CsvSecureCmdEnc = 1, -+ CsvSecureCmdDec, -+ CsvSecureCmdReset, -+ CsvSecureCmdUpdateSecureCallTable, -+ CsvSecureCmdMapLowerMemory, //secure memory range below 4G -+ CsvSecureCmdMapUpperMemory //secure memory range above 4G -+} CSV_SECURE_COMMAND_TYPE; -+ -+/** -+ Returns a boolean to indicate whether CSV is enabled -+ -+ @retval TRUE CSV is enabled -+ @retval FALSE CSV is not enabled -+**/ -+BOOLEAN -+EFIAPI -+CsvIsEnabled ( -+ VOID -+ ); -+ -+#define CSV_SHARED_MEMORY_SIGNATURE SIGNATURE_32('C','S','V',' ') -+ -+typedef struct { -+ UINTN Signature; -+ LIST_ENTRY Link; -+ UINT64 Start; -+ UINT64 Length; -+} CsvSharedMemoryEntry; -+ -+VOID -+EFIAPI -+CsvUpdateMemory ( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages, -+ IN BOOLEAN Dec -+); -+ -+VOID -+EFIAPI -+CsvResetMemory ( -+ VOID -+); -+ -+VOID -+EFIAPI -+CsvUpdateMapLowerMemory ( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages -+); -+ -+VOID -+EFIAPI -+CsvUpdateMapUpperMemory ( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages -+); -+#endif // _CSV_LIB_H_ -diff --git a/OvmfPkg/Library/CsvLib/CsvLib.c b/OvmfPkg/Library/CsvLib/CsvLib.c -new file mode 100644 -index 0000000..7e7f8ef ---- /dev/null -+++ b/OvmfPkg/Library/CsvLib/CsvLib.c -@@ -0,0 +1,82 @@ -+/** @file -+ -+ CSV library helper function -+ -+ Copyright (c) 2022, HYGON. All rights reserved.
-+ -+ This program and the accompanying materials are licensed and made available -+ under the terms and conditions of the BSD License which accompanies this -+ distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+STATIC BOOLEAN mCsvStatus = FALSE; -+STATIC BOOLEAN mCsvStatusChecked = FALSE; -+ -+/** -+ -+ Reads and sets the status of CSV features -+ **/ -+STATIC -+VOID -+EFIAPI -+InternalCsvStatus ( -+ VOID -+ ) -+{ -+ UINT32 RegEax; -+ -+ // -+ // Check if memory encryption leaf exist -+ // -+ AsmCpuid (CPUID_EXTENDED_FUNCTION, &RegEax, NULL, NULL, NULL); -+ if (RegEax >= CPUID_MEMORY_ENCRYPTION_INFO) { -+ if(StandardSignatureIsHygonGenuine ()){ -+ // -+ // Check MSR_0xC0010131 Bit 30 (Csv Enabled) -+ // -+ MSR_SEV_STATUS_REGISTER Msr; -+ Msr.Uint32 = AsmReadMsr32 (MSR_SEV_STATUS); -+ if (Msr.Uint32 & (1 << 30)) { -+ mCsvStatus = TRUE; -+ DEBUG ((EFI_D_INFO, "CSV is enabled\n")); -+ } -+ } -+ } -+ mCsvStatusChecked = TRUE; -+} -+ -+/** -+ Returns a boolean to indicate whether CSV is enabled -+ -+ @retval TRUE CSV is enabled -+ @retval FALSE CSV is not enabled -+**/ -+BOOLEAN -+EFIAPI -+CsvIsEnabled ( -+ VOID -+ ) -+{ -+ if (!mCsvStatusChecked) { -+ InternalCsvStatus (); -+ } -+ -+ return MemEncryptSevEsIsEnabled () && mCsvStatus; -+} -diff --git a/OvmfPkg/Library/CsvLib/CsvLib.inf b/OvmfPkg/Library/CsvLib/CsvLib.inf -new file mode 100644 -index 0000000..25859c3 ---- /dev/null -+++ b/OvmfPkg/Library/CsvLib/CsvLib.inf -@@ -0,0 +1,55 @@ -+## @file -+# Library provides the helper functions for CSV guest -+# -+# Copyright (c) 2022 HYGON. All rights reserved.
-+# -+# This program and the accompanying materials -+# are licensed and made available under the terms and conditions of the BSD -+# License which accompanies this distribution. The full text of the license -+# may be found at http://opensource.org/licenses/bsd-license.php -+# -+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED. -+# -+# -+## -+ -+[Defines] -+ INF_VERSION = 1.25 -+ BASE_NAME = CsvLib -+ FILE_GUID = 9460ef3a-b9c3-11e9-8324-7371ac35e1e3 -+ MODULE_TYPE = BASE -+ VERSION_STRING = 1.0 -+ LIBRARY_CLASS = CsvLib|PEIM DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_DRIVER -+ -+# -+# The following information is for reference only and not required by the build -+# tools. -+# -+# VALID_ARCHITECTURES = Ia32 X64 -+# -+ -+[Packages] -+ MdePkg/MdePkg.dec -+ OvmfPkg/OvmfPkg.dec -+ UefiCpuPkg/UefiCpuPkg.dec -+ -+[Sources] -+ CsvLib.c -+ -+[Sources.X64] -+ X64/UpdateMemoryCsvLib.c -+[Sources.IA32] -+ Ia32/UpdateMemoryCsvLib.c -+ -+[LibraryClasses] -+ BaseLib -+ CpuLib -+ DebugLib -+ MemEncryptSevLib -+ UefiCpuLib -+ -+[Pcd] -+ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase -+ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize -diff --git a/OvmfPkg/Library/CsvLib/Ia32/UpdateMemoryCsvLib.c b/OvmfPkg/Library/CsvLib/Ia32/UpdateMemoryCsvLib.c -new file mode 100644 -index 0000000..15d3aa8 ---- /dev/null -+++ b/OvmfPkg/Library/CsvLib/Ia32/UpdateMemoryCsvLib.c -@@ -0,0 +1,53 @@ -+/** @file -+ -+ CSV library helper function -+ -+ Copyright (c) 2022, HYGON. All rights reserved.
-+ -+ This program and the accompanying materials are licensed and made available -+ under the terms and conditions of the BSD License which accompanies this -+ distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include -+ -+VOID -+EFIAPI -+CsvUpdateMemory ( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages, -+ IN BOOLEAN Dec -+) -+{ -+} -+ -+VOID -+EFIAPI -+CsvResetMemory ( -+ VOID -+) -+{ -+} -+ -+VOID -+EFIAPI -+CsvUpdateMapLowerMemory ( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages -+) -+{ -+} -+ -+VOID -+EFIAPI -+CsvUpdateMapUpperMemory ( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages -+) -+{ -+} -diff --git a/OvmfPkg/Library/CsvLib/X64/UpdateMemoryCsvLib.c b/OvmfPkg/Library/CsvLib/X64/UpdateMemoryCsvLib.c -new file mode 100644 -index 0000000..13d06d7 ---- /dev/null -+++ b/OvmfPkg/Library/CsvLib/X64/UpdateMemoryCsvLib.c -@@ -0,0 +1,238 @@ -+/** @file -+ -+ CSV library helper function -+ -+ Copyright (c) 2022, HYGON. All rights reserved.
-+ -+ This program and the accompanying materials are licensed and made available -+ under the terms and conditions of the BSD License which accompanies this -+ distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define SECURE_CALL_ENTRY_MAX (254) -+ -+ -+typedef struct { -+ union { -+ UINT8 Guid[16]; -+ UINT64 Guid64[2]; -+ }; -+ UINT32 CmdType; -+ UINT32 Nums; -+ UINT64 Unused; -+ struct { -+ UINT64 BaseAddress; -+ UINT64 Size; -+ } Entry[SECURE_CALL_ENTRY_MAX]; -+} CSV_SECURE_CALL_CMD; -+ -+STATIC UINT32 SecureCallPageIdx = 0; -+ -+STATIC UINTN MemorySizeBelow4G = (UINTN)-1; -+STATIC UINTN MemorySizeAbove4G = (UINTN)-1; -+ -+STATIC -+VOID -+EFIAPI -+CsvSecureCall( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages, -+ IN CSV_SECURE_COMMAND_TYPE CmdType -+) -+{ -+ volatile CSV_SECURE_COMMAND_TYPE CmdAck = 0; -+ -+ CSV_SECURE_CALL_CMD *SecureCallPageRead; -+ CSV_SECURE_CALL_CMD *SecureCallPageWrite; -+ UINTN SecureCallBase = 0; -+ -+ if (CsvIsEnabled () == FALSE) { -+ return ; -+ } -+ -+ SecureCallBase = FixedPcdGet32 (PcdCsvDefaultSecureCallBase); -+ -+ SecureCallPageRead = -+ (CSV_SECURE_CALL_CMD *)(UINT64) -+ (EFI_PAGE_SIZE * SecureCallPageIdx + SecureCallBase); -+ -+ SecureCallPageWrite = -+ (CSV_SECURE_CALL_CMD *) -+ (UINT64)(EFI_PAGE_SIZE * (1 - SecureCallPageIdx) + SecureCallBase); -+ -+ while(1) { -+ SecureCallPageWrite->CmdType = (UINT32)CmdType; -+ SecureCallPageWrite->Nums = 1; -+ SecureCallPageWrite->Entry[0].BaseAddress = (UINT64)BaseAddress; -+ SecureCallPageWrite->Entry[0].Size = (UINT64)NumPages << EFI_PAGE_SHIFT; -+ -+ MemoryFence (); -+ -+ CmdAck = SecureCallPageRead->CmdType; -+ if (CmdAck != CmdType) -+ break; -+ } -+ SecureCallPageIdx = 1 - SecureCallPageIdx; -+} -+ -+STATIC -+UINT8 -+CmosRead8 ( -+ IN UINTN Index -+ ) -+{ -+ IoWrite8 (0x70, (UINT8) Index); -+ return IoRead8 (0x71); -+} -+ -+ -+STATIC -+VOID -+EFIAPI -+CsvGetSystemMemory( -+ VOID -+ ) -+{ -+ UINT8 Cmos0x34; -+ UINT8 Cmos0x35; -+ UINT32 Size; -+ UINTN CmosIndex; -+ -+ // -+ // system memory below 4GB MB -+ // -+ -+ Cmos0x34 = (UINT8) CmosRead8 (0x34); -+ Cmos0x35 = (UINT8) CmosRead8 (0x35); -+ -+ MemorySizeBelow4G = -+ (UINT32) (((UINTN)((Cmos0x35 << 8) + Cmos0x34) << 16) + SIZE_16MB); -+ -+ // -+ // system memory above 4GB MB -+ // -+ -+ Size = 0; -+ for (CmosIndex = 0x5d; CmosIndex >= 0x5b; CmosIndex--) { -+ Size = (UINT32) (Size << 8) + (UINT32) CmosRead8 (CmosIndex); -+ } -+ -+ MemorySizeAbove4G = LShiftU64 (Size, 16); -+} -+ -+STATIC -+BOOLEAN -+EFIAPI -+CsvIsDRAM( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages -+ ) -+{ -+ UINTN Size = EFI_PAGES_TO_SIZE (NumPages); -+ PHYSICAL_ADDRESS EndAddress; -+ -+ Size = EFI_PAGES_TO_SIZE (NumPages); -+ EndAddress = BaseAddress + Size; -+ -+ if (MemorySizeBelow4G == (UINTN)-1 || -+ MemorySizeAbove4G == (UINTN)-1) { -+ CsvGetSystemMemory (); -+ } -+ -+ if (BaseAddress < MemorySizeBelow4G) { -+ return TRUE; -+ } else if (BaseAddress >= BASE_4GB && -+ BaseAddress < (BASE_4GB + MemorySizeAbove4G)) { -+ return TRUE; -+ } else if (EndAddress > BASE_4GB && -+ EndAddress <= (BASE_4GB + MemorySizeAbove4G)) { -+ return TRUE; -+ } else { -+ return FALSE; -+ } -+} -+ -+STATIC -+VOID -+EFIAPI -+CsvUpdateEncryptMemory ( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages -+) -+{ -+ PHYSICAL_ADDRESS PageAddress = BaseAddress & ~EFI_PAGE_MASK; -+ -+ if (CsvIsDRAM (PageAddress, NumPages)) { -+ CsvSecureCall (PageAddress, NumPages, CsvSecureCmdEnc); -+ } -+} -+ -+STATIC -+VOID -+EFIAPI -+CsvUpdateDecryptMemory ( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages -+) -+{ -+ PHYSICAL_ADDRESS PageAddress = BaseAddress & ~EFI_PAGE_MASK; -+ -+ if (CsvIsDRAM (PageAddress, NumPages)) { -+ CsvSecureCall (PageAddress, NumPages, CsvSecureCmdDec); -+ } -+} -+ -+VOID -+EFIAPI -+CsvUpdateMemory ( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages, -+ IN BOOLEAN Dec -+ ) -+{ -+ if (Dec) -+ CsvUpdateDecryptMemory (BaseAddress, NumPages); -+ else -+ CsvUpdateEncryptMemory (BaseAddress, NumPages); -+} -+ -+VOID -+EFIAPI -+CsvResetMemory ( -+ VOID -+) -+{ -+ CsvSecureCall (0, 0, CsvSecureCmdReset); -+} -+ -+VOID -+EFIAPI -+CsvUpdateMapLowerMemory ( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages -+) -+{ -+ CsvSecureCall (BaseAddress, NumPages, CsvSecureCmdMapLowerMemory); -+} -+ -+VOID -+EFIAPI -+CsvUpdateMapUpperMemory ( -+ IN PHYSICAL_ADDRESS BaseAddress, -+ IN UINTN NumPages -+) -+{ -+ CsvSecureCall (BaseAddress, NumPages, CsvSecureCmdMapUpperMemory); -+} -diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec -index 340d83f..6f4afb8 100644 ---- a/OvmfPkg/OvmfPkg.dec -+++ b/OvmfPkg/OvmfPkg.dec -@@ -109,6 +109,10 @@ - # - XenPlatformLib|Include/Library/XenPlatformLib.h - -+ ## @libraryclass CSV Library -+ # -+ CsvLib|Include/Library/CsvLib.h -+ - [Guids] - gUefiOvmfPkgTokenSpaceGuid = {0x93bb96af, 0xb9f2, 0x4eb8, {0x94, 0x62, 0xe0, 0xba, 0x74, 0x56, 0x42, 0x36}} - gEfiXenInfoGuid = {0xd3b46f3b, 0xd441, 0x1244, {0x9a, 0x12, 0x0, 0x12, 0x27, 0x3f, 0xc1, 0x4d}} -@@ -350,6 +354,10 @@ - gUefiOvmfPkgTokenSpaceGuid.PcdBfvRawDataOffset|0|UINT32|0x56 - gUefiOvmfPkgTokenSpaceGuid.PcdBfvRawDataSize|0|UINT32|0x57 - -+ ## the base address of the secure call pages used by CSV. -+ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase|0|UINT32|0x58 -+ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize|0|UINT32|0x59 -+ - [PcdsDynamic, PcdsDynamicEx] - gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2 - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10 -diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc -index a066693..d623ed3 100644 ---- a/OvmfPkg/OvmfPkgIa32.dsc -+++ b/OvmfPkg/OvmfPkgIa32.dsc -@@ -176,6 +176,7 @@ - VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf - LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf - MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -+ CsvLib|OvmfPkg/Library/CsvLib/CsvLib.inf - !if $(SMM_REQUIRE) == FALSE - LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf - !endif -diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc -index 5efeb42..9e4dcce 100644 ---- a/OvmfPkg/OvmfPkgIa32X64.dsc -+++ b/OvmfPkg/OvmfPkgIa32X64.dsc -@@ -180,6 +180,7 @@ - VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf - LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf - MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -+ CsvLib|OvmfPkg/Library/CsvLib/CsvLib.inf - !if $(SMM_REQUIRE) == FALSE - LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf - !endif -diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc -index 10fb7d7..e62b533 100644 ---- a/OvmfPkg/OvmfPkgX64.dsc -+++ b/OvmfPkg/OvmfPkgX64.dsc -@@ -180,6 +180,7 @@ - VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf - LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf - MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -+ CsvLib|OvmfPkg/Library/CsvLib/CsvLib.inf - !if $(SMM_REQUIRE) == FALSE - LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf - !endif -diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf -index 85b4b23..a3634dd 100644 ---- a/OvmfPkg/OvmfPkgX64.fdf -+++ b/OvmfPkg/OvmfPkgX64.fdf -@@ -88,6 +88,9 @@ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvm - 0x00C000|0x001000 - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupSize - -+0x00D000|0x002000 -+gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase|gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize -+ - 0x010000|0x010000 - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize - --- -2.17.1 - diff --git a/0032-anolis-OvmfPkg-Tcg-Add-CsvLib-for-TpmMmioSevDecryptP.patch b/0032-anolis-OvmfPkg-Tcg-Add-CsvLib-for-TpmMmioSevDecryptP.patch deleted file mode 100644 index c00ebcd..0000000 --- a/0032-anolis-OvmfPkg-Tcg-Add-CsvLib-for-TpmMmioSevDecryptP.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 40c0763c88a6a895d4fc58158f3c0f9a17798049 Mon Sep 17 00:00:00 2001 -From: Xin Jiang -Date: Fri, 18 Aug 2023 16:48:03 +0800 -Subject: [PATCH 32/46] anolis: OvmfPkg/Tcg: Add CsvLib for - TpmMmioSevDecryptPei - -Signed-off-by: Xin Jiang -Change-Id: I4a11065abcc679538aabcb7602185f785df60496 ---- - OvmfPkg/Tcg/TpmMmioSevDecryptPei/TpmMmioSevDecryptPei.inf | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/OvmfPkg/Tcg/TpmMmioSevDecryptPei/TpmMmioSevDecryptPei.inf b/OvmfPkg/Tcg/TpmMmioSevDecryptPei/TpmMmioSevDecryptPei.inf -index 51ad6d0..402e4c9 100644 ---- a/OvmfPkg/Tcg/TpmMmioSevDecryptPei/TpmMmioSevDecryptPei.inf -+++ b/OvmfPkg/Tcg/TpmMmioSevDecryptPei/TpmMmioSevDecryptPei.inf -@@ -29,6 +29,7 @@ - PcdLib - PeimEntryPoint - PeiServicesLib -+ CsvLib - - [Ppis] - gOvmfTpmMmioAccessiblePpiGuid ## PRODUCES --- -2.17.1 - diff --git a/0033-anolis-OvmfPkg-ResetVector-Support-CSV-in-ResetVecto.patch b/0033-anolis-OvmfPkg-ResetVector-Support-CSV-in-ResetVecto.patch deleted file mode 100644 index b30e7df..0000000 --- a/0033-anolis-OvmfPkg-ResetVector-Support-CSV-in-ResetVecto.patch +++ /dev/null @@ -1,222 +0,0 @@ -From b08f9e4b2d4aa1f1baec02ecda6ae481ed58c64f Mon Sep 17 00:00:00 2001 -From: Liu Zixing -Date: Fri, 25 Feb 2022 15:55:44 +0800 -Subject: [PATCH 33/46] anolis: OvmfPkg/ResetVector: Support CSV in ResetVector - phase - -- A GUID is written along with the first secure call page address, -by which the Secure Processor can locate the first secure call page -address. - -- Check whether the VM is a CSV VM when setting the first page table - -- CSV VM will update first shared GHCB page address to Secure Processor -by secure call page - -Signed-off-by: Xin Jiang -Change-Id: I422bff00dc88d6738d1dae2d9f6c5c49ec601e95 ---- - OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm | 15 +++ - OvmfPkg/ResetVector/Ia32/AmdSev.asm | 10 ++ - OvmfPkg/ResetVector/Ia32/CsvInit.asm | 107 +++++++++++++++++++ - OvmfPkg/ResetVector/ResetVector.inf | 2 + - OvmfPkg/ResetVector/ResetVector.nasmb | 4 + - 5 files changed, 138 insertions(+) - create mode 100644 OvmfPkg/ResetVector/Ia32/CsvInit.asm - -diff --git a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm -index dee2e3f..c32b608 100644 ---- a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm -+++ b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm -@@ -48,6 +48,21 @@ TIMES (15 - ((guidedStructureEnd - guidedStructureStart + 15) % 16)) DB 0 - guidedStructureStart: - - %ifdef ARCH_X64 -+; -+; CSV secure call table -+; -+; Provide secure call pages when boot up for CSV guest. -+; -+; GUID : 9a5d926f-2fa5-ceba-ab21-6b275d5556a5 -+; -+csvSecureCallBase: -+ DD CSV_DEFAULT_SECURE_CALL_SIZE -+ DD CSV_DEFAULT_SECURE_CALL_BASE -+ DW csvSecureCallEnd - csvSecureCallBase -+ DB 0x6F, 0x92, 0x5D, 0x9A, 0xA5, 0x2F, 0xBA, 0xCE -+ DB 0xAB, 0x21, 0x6B, 0x27, 0x5D, 0x55, 0x56, 0xA5 -+csvSecureCallEnd: -+ - ; - ; TDX Metadata offset block - ; -diff --git a/OvmfPkg/ResetVector/Ia32/AmdSev.asm b/OvmfPkg/ResetVector/Ia32/AmdSev.asm -index 250ac8d..8ce5eb0 100644 ---- a/OvmfPkg/ResetVector/Ia32/AmdSev.asm -+++ b/OvmfPkg/ResetVector/Ia32/AmdSev.asm -@@ -177,6 +177,16 @@ pageTableEntries4kLoop: - mov ecx, (GHCB_BASE & 0x1F_FFFF) >> 12 - mov [ecx * 8 + GHCB_PT_ADDR + 4], strict dword 0 - -+ OneTimeCall CheckCsvFeature -+ test eax, eax -+ jz clearGhcbStart -+ -+ OneTimeCall CsvInit -+ mov eax, 1 -+ test ecx, ecx -+ jz SevEsUnexpectedRespTerminate -+ -+clearGhcbStart: - mov ecx, GHCB_SIZE / 4 - xor eax, eax - clearGhcbMemoryLoop: -diff --git a/OvmfPkg/ResetVector/Ia32/CsvInit.asm b/OvmfPkg/ResetVector/Ia32/CsvInit.asm -new file mode 100644 -index 0000000..0744a35 ---- /dev/null -+++ b/OvmfPkg/ResetVector/Ia32/CsvInit.asm -@@ -0,0 +1,107 @@ -+;------------------------------------------------------------------------------ -+; @file -+; Provide the functions to check whether CSV is enabled. -+; -+; Copyright (c) 2022, HYGON. All rights reserved.
-+; SPDX-License-Identifier: BSD-2-Clause-Patent -+; -+;------------------------------------------------------------------------------ -+ -+BITS 32 -+ -+; If Secure Command returns ok then ECX will be non-zero. -+; If Secure Command returns error then ECX will be zero. -+CsvInit: -+ mov esp, SEV_ES_VC_TOP_OF_STACK -+ push esi -+ push edi -+ -+ ; copy SECURE_CALL_GUID to CSV_DEFAULT_SECURE_CALL_BASE + 4096 -+ cld -+ mov esi, ADDR_OF(SECURE_CALL_GUID) -+ mov edi, CSV_DEFAULT_SECURE_CALL_BASE -+ add edi, 4096 -+ mov ecx, 4 -+ rep movsd -+ -+ ; secure call begin -+ mov esi, CSV_DEFAULT_SECURE_CALL_BASE -+ ; write secure cmd to page B -+ ; 16 bytes of page A/B is GUID, just ignore -+ mov [esi + 4096 + 16], DWORD 2 ; dec command -+ mov [esi + 4096 + 20], DWORD 1 ; 1 entry -+ ; 8 bytes is unused -+ mov [esi + 4096 + 32], DWORD GHCB_BASE; lower address -+ mov [esi + 4096 + 36], DWORD 0 ; upper address -+ mov [esi + 4096 + 40], DWORD 4096 ; lower 32 bit of page size -+ mov [esi + 4096 + 44], DWORD 0 ; upper 32 bit of page size -+ mfence -+ ; read from page A -+ mov ecx, [esi + 16] -+ ; check if the response comes -+ cmp ecx, 2 -+ jne SecureCommandDone -+ ; no secure command response, clean ecx -+ xor ecx, ecx -+ ; secure call end -+ -+SecureCommandDone: -+ pop edi -+ pop esi -+ mov esp, 0 -+ -+ OneTimeCallRet CsvInit -+ -+; Check if CSV feature is enabled. -+; -+; Modified: EAX, EBX, ECX, EDX -+; -+; If CSV is enabled then EAX will be non-zero. -+; If CSV is disabled then EAX will be zero. -+; -+CheckCsvFeature: -+ mov esp, SEV_ES_VC_TOP_OF_STACK -+ mov eax, ADDR_OF(Idtr) -+ lidt [cs:eax] -+ -+ ; Check if vendor Hygon CPUID_SIGNATURE(0x0) -+ ; CPUID raises a #VC exception if running as an SEV-ES guest -+ mov eax, 0 -+ cpuid -+ -+ cmp ebx, 0x6f677948 -+ jne NoCsv -+ cmp ecx, 0x656e6975 -+ jne NoCsv -+ cmp edx, 0x6e65476e -+ jne NoCsv -+ -+ ; Check if CSV is enabled -+ ; MSR_0xC0010131 - Bit 30 (CSV enabled) -+ mov ecx, 0xc0010131 -+ rdmsr -+ and eax, 0x40000000 -+ jmp CsvExit -+ -+NoCsv: -+ xor eax, eax -+ -+CsvExit: -+ ; -+ ; Clear exception handlers and stack -+ ; -+ push eax -+ mov eax, ADDR_OF(IdtrClear) -+ lidt [cs:eax] -+ pop eax -+ mov esp, 0 -+ -+ OneTimeCallRet CheckCsvFeature -+ -+SECURE_CALL_GUID: -+; low 0xceba2fa59a5d926f -+; high 0xa556555d276b21ab -+ dd 0x9a5d926f -+ dd 0xceba2fa5 -+ dd 0x276b21ab -+ dd 0xa556555d -diff --git a/OvmfPkg/ResetVector/ResetVector.inf b/OvmfPkg/ResetVector/ResetVector.inf -index 320e5f2..38c1720 100644 ---- a/OvmfPkg/ResetVector/ResetVector.inf -+++ b/OvmfPkg/ResetVector/ResetVector.inf -@@ -35,6 +35,8 @@ - - [Pcd] - gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaBase -+ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase -+ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBase - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbSize - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbPageTableBase -diff --git a/OvmfPkg/ResetVector/ResetVector.nasmb b/OvmfPkg/ResetVector/ResetVector.nasmb -index 87effed..ca00f64 100644 ---- a/OvmfPkg/ResetVector/ResetVector.nasmb -+++ b/OvmfPkg/ResetVector/ResetVector.nasmb -@@ -104,11 +104,15 @@ - %define SEV_ES_WORK_AREA_ENC_MASK (FixedPcdGet32 (PcdSevEsWorkAreaBase) + 16) - %define SEV_ES_VC_TOP_OF_STACK (FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + FixedPcdGet32 (PcdOvmfSecPeiTempRamSize)) - -+ %define CSV_DEFAULT_SECURE_CALL_BASE FixedPcdGet32 (PcdCsvDefaultSecureCallBase) -+ %define CSV_DEFAULT_SECURE_CALL_SIZE FixedPcdGet32 (PcdCsvDefaultSecureCallSize) -+ - %include "X64/IntelTdxMetadata.asm" - %include "Ia32/Flat32ToFlat64.asm" - %include "Ia32/AmdSev.asm" - %include "Ia32/PageTables64.asm" - %include "Ia32/IntelTdx.asm" -+%include "Ia32/CsvInit.asm" - %endif - - %include "Ia16/Real16ToFlat32.asm" --- -2.17.1 - diff --git a/0034-anolis-OvmfPkg-PlatformPei-Initialize-CSV-VM-s-memor.patch b/0034-anolis-OvmfPkg-PlatformPei-Initialize-CSV-VM-s-memor.patch deleted file mode 100644 index 3a55e93..0000000 --- a/0034-anolis-OvmfPkg-PlatformPei-Initialize-CSV-VM-s-memor.patch +++ /dev/null @@ -1,202 +0,0 @@ -From 9c52c4e45c2fc51308628c8118edb3740bbfae47 Mon Sep 17 00:00:00 2001 -From: Liu Zixing -Date: Fri, 25 Feb 2022 16:12:38 +0800 -Subject: [PATCH 34/46] anolis: OvmfPkg/PlatformPei: Initialize CSV VM's memory - -For CSV VM, the Secure Processor builds a temporary nested -page table to help the guest to run into the PEI phase. - -In PEI phase, CSV VM detects the start address and size of the -guest physical memory. - -The CSV VM sends the memory information to the Secure Processor -to build the permanent nested page table. - -Signed-off-by: Xin Jiang -Change-Id: I853d17ffa4146037038018d934f224fcbf79be1a ---- - OvmfPkg/PlatformPei/Csv.c | 81 +++++++++++++++++++++++++++++ - OvmfPkg/PlatformPei/MemDetect.c | 2 - - OvmfPkg/PlatformPei/Platform.c | 2 + - OvmfPkg/PlatformPei/Platform.h | 14 +++++ - OvmfPkg/PlatformPei/PlatformPei.inf | 4 ++ - 5 files changed, 101 insertions(+), 2 deletions(-) - create mode 100644 OvmfPkg/PlatformPei/Csv.c - -diff --git a/OvmfPkg/PlatformPei/Csv.c b/OvmfPkg/PlatformPei/Csv.c -new file mode 100644 -index 0000000..44e81e1 ---- /dev/null -+++ b/OvmfPkg/PlatformPei/Csv.c -@@ -0,0 +1,81 @@ -+/** @file -+ -+ CSV initialization in PEI -+ -+ Copyright (c) 2022, HYGON. All rights reserved.
-+ -+ This program and the accompanying materials are licensed and made available -+ under the terms and conditions of the BSD License which accompanies this -+ distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "Platform.h" -+ -+VOID -+CsvInitializeMemInfo ( -+ VOID -+ ) -+{ -+ UINT64 LowerMemorySize; -+ UINT64 UpperMemorySize; -+ -+ if (!CsvIsEnabled ()) { -+ return ; -+ } -+ -+ LowerMemorySize = GetSystemMemorySizeBelow4gb (); -+ UpperMemorySize = GetSystemMemorySizeAbove4gb (); -+ -+ CsvUpdateMapLowerMemory ( -+ 0, -+ LowerMemorySize >> EFI_PAGE_SHIFT -+ ); -+ -+ if (UpperMemorySize > 0) { -+ CsvUpdateMapUpperMemory ( -+ BASE_4GB, -+ UpperMemorySize >> EFI_PAGE_SHIFT -+ ); -+ } -+ -+ BuildMemoryAllocationHob ( -+ (EFI_PHYSICAL_ADDRESS)(UINTN) FixedPcdGet32 (PcdCsvDefaultSecureCallBase), -+ (UINT64)(UINTN) FixedPcdGet32 (PcdCsvDefaultSecureCallSize), -+ EfiReservedMemoryType -+ ); -+} -+ -+VOID -+CsvInitializeGhcb ( -+ VOID -+ ) -+{ -+ RETURN_STATUS EncryptStatus; -+ -+ if (!CsvIsEnabled ()) { -+ return ; -+ } -+ -+ // -+ // Encrypt the SecGhcb as it's not a Ghcb any more -+ // -+ EncryptStatus = MemEncryptSevSetPageEncMask( -+ 0, -+ PcdGet32 (PcdOvmfSecGhcbBase), -+ 1 -+ ); -+ ASSERT_RETURN_ERROR (EncryptStatus); -+} -diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c -index d736b85..c2c3cf7 100644 ---- a/OvmfPkg/PlatformPei/MemDetect.c -+++ b/OvmfPkg/PlatformPei/MemDetect.c -@@ -301,8 +301,6 @@ GetSystemMemorySizeBelow4gb ( - return (UINT32) (((UINTN)((Cmos0x35 << 8) + Cmos0x34) << 16) + SIZE_16MB); - } - -- --STATIC - UINT64 - GetSystemMemorySizeAbove4gb ( - ) -diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c -index d0e2c08..79bf4e7 100644 ---- a/OvmfPkg/PlatformPei/Platform.c -+++ b/OvmfPkg/PlatformPei/Platform.c -@@ -743,6 +743,7 @@ InitializePlatform ( - QemuUc32BaseInitialization (); - - InitializeRamRegions (); -+ CsvInitializeMemInfo (); - - if (mBootMode != BOOT_ON_S3_RESUME) { - if (!FeaturePcdGet (PcdSmmSmramRequire)) { -@@ -757,6 +758,7 @@ InitializePlatform ( - - InstallClearCacheCallback (); - AmdSevInitialize (); -+ CsvInitializeGhcb (); - MiscInitialization (); - InstallFeatureControlCallback (); - -diff --git a/OvmfPkg/PlatformPei/Platform.h b/OvmfPkg/PlatformPei/Platform.h -index 8b1d270..89c3bd8 100644 ---- a/OvmfPkg/PlatformPei/Platform.h -+++ b/OvmfPkg/PlatformPei/Platform.h -@@ -102,6 +102,20 @@ AmdSevInitialize ( - VOID - ); - -+VOID -+CsvInitializeMemInfo ( -+ VOID -+); -+ -+VOID -+CsvInitializeGhcb ( -+ VOID -+); -+ -+UINT64 -+GetSystemMemorySizeAbove4gb ( -+); -+ - extern EFI_BOOT_MODE mBootMode; - - extern BOOLEAN mS3Supported; -diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf -index 69eb3ed..cb0582c 100644 ---- a/OvmfPkg/PlatformPei/PlatformPei.inf -+++ b/OvmfPkg/PlatformPei/PlatformPei.inf -@@ -33,6 +33,7 @@ - MemTypeInfo.c - Platform.c - Platform.h -+ Csv.c - - [Packages] - EmbeddedPkg/EmbeddedPkg.dec -@@ -62,6 +63,7 @@ - MtrrLib - MemEncryptSevLib - PcdLib -+ CsvLib - - [Pcd] - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase -@@ -119,6 +121,8 @@ - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupSize - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaBase - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaSize -+ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase -+ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize - - [FeaturePcd] - gUefiOvmfPkgTokenSpaceGuid.PcdCsmEnable --- -2.17.1 - diff --git a/0035-anolis-OvmfPkg-BaseMemcryptSevLib-update-page-status.patch b/0035-anolis-OvmfPkg-BaseMemcryptSevLib-update-page-status.patch deleted file mode 100644 index 1938b99..0000000 --- a/0035-anolis-OvmfPkg-BaseMemcryptSevLib-update-page-status.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 16936ea22fc052576844dfdad6987531aa27a8ec Mon Sep 17 00:00:00 2001 -From: Liu Zixing -Date: Sat, 26 Feb 2022 14:39:06 +0800 -Subject: [PATCH 35/46] anolis: OvmfPkg/BaseMemcryptSevLib: update page status - to Secure Processor for CSV - -For CSV VM, when encrypting/decrypting a shared/private memory region, -guest needs to - - set/clear the c-bit in guest page table - - the Secure Processor should be updated accordingly - -The BaseMemcryptSevLib has done the first step. -Calling the secure call library for second step. - -Signed-off-by: Xin Jiang -Change-Id: Icab502ee201d887d6056bcb0116b2e5a1b9eb6b9 ---- - .../BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf | 1 + - .../BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c | 14 ++++++++++++++ - 2 files changed, 15 insertions(+) - -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -index f2e162d..dc32929 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -@@ -49,6 +49,7 @@ - DebugLib - MemoryAllocationLib - PcdLib -+ CsvLib - - [FeaturePcd] - gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c -index c696745..6726010 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c -@@ -18,6 +18,8 @@ - - #include "VirtualMemory.h" - -+#include -+ - STATIC BOOLEAN mAddressEncMaskChecked = FALSE; - STATIC UINT64 mAddressEncMask; - STATIC PAGE_TABLE_POOL *mPageTablePool = NULL; -@@ -585,6 +587,11 @@ SetMemoryEncDec ( - UINT64 AddressEncMask; - BOOLEAN IsWpEnabled; - RETURN_STATUS Status; -+ PHYSICAL_ADDRESS PageAddress; -+ UINTN PageNum; -+ -+ PageAddress = PhysicalAddress; -+ PageNum = EFI_SIZE_TO_PAGES (Length); - - // - // Set PageMapLevel4Entry to suppress incorrect compiler/analyzer warnings. -@@ -816,6 +823,13 @@ Done: - EnableReadOnlyPageWriteProtect (); - } - -+ if (CsvIsEnabled () && Status == EFI_SUCCESS) { -+ if (Mode == ClearCBit) -+ CsvUpdateMemory (PageAddress, PageNum, TRUE); -+ else -+ CsvUpdateMemory (PageAddress, PageNum, FALSE); -+ } -+ - return Status; - } - --- -2.17.1 - diff --git a/0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch b/0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch deleted file mode 100644 index 0bf6d40..0000000 --- a/0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch +++ /dev/null @@ -1,616 +0,0 @@ -From 4569ddd201843a1fd1e9b0431e971cd4edefff5d Mon Sep 17 00:00:00 2001 -From: Liu Zixing -Date: Fri, 25 Feb 2022 16:34:25 +0800 -Subject: [PATCH 36/46] anolis: OvmfPkg: Add CsvDxe driver - -CsvDxe creates and installs the CsvSharedMemory protocol. - -CSV VM needs the shared memory to exchange data with external devices. - -To improve the performance, CsvSharedMemory protocol pre-allocates -huge shared memory chunk as a pool. - -When reqeusted, it allocates small pieces of shared memory from the -pool and records the allocated memory in a list. - -When finished, the shared memory pieces are returned to the pool and -removed from the record list. - -Signed-off-by: Xin Jiang -Change-Id: I6b41c6e1af34b4f8ad58a61cce2e7fd8e8b5795b ---- - OvmfPkg/CsvDxe/CsvDxe.c | 104 +++++++++++ - OvmfPkg/CsvDxe/CsvDxe.inf | 45 +++++ - OvmfPkg/CsvDxe/CsvSharedMemory.c | 208 +++++++++++++++++++++ - OvmfPkg/CsvDxe/CsvSharedMemory.h | 29 +++ - OvmfPkg/Include/Protocol/CsvSharedMemory.h | 99 ++++++++++ - OvmfPkg/OvmfPkg.dec | 1 + - OvmfPkg/OvmfPkgIa32X64.dsc | 1 + - OvmfPkg/OvmfPkgIa32X64.fdf | 1 + - OvmfPkg/OvmfPkgX64.dsc | 1 + - OvmfPkg/OvmfPkgX64.fdf | 1 + - 10 files changed, 490 insertions(+) - create mode 100644 OvmfPkg/CsvDxe/CsvDxe.c - create mode 100644 OvmfPkg/CsvDxe/CsvDxe.inf - create mode 100644 OvmfPkg/CsvDxe/CsvSharedMemory.c - create mode 100644 OvmfPkg/CsvDxe/CsvSharedMemory.h - create mode 100644 OvmfPkg/Include/Protocol/CsvSharedMemory.h - -diff --git a/OvmfPkg/CsvDxe/CsvDxe.c b/OvmfPkg/CsvDxe/CsvDxe.c -new file mode 100644 -index 0000000..552f3cf ---- /dev/null -+++ b/OvmfPkg/CsvDxe/CsvDxe.c -@@ -0,0 +1,104 @@ -+/** @file -+ -+ Hygon CSV DXE. -+ -+ Copyright (c) 2022, HYGON. All rights reserved.
-+ -+ This program and the accompanying materials are licensed and made available -+ under the terms and conditions of the BSD License which accompanies this -+ distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT -+ WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "CsvSharedMemory.h" -+ -+ -+#define HUGE_PAGE_SIZE 0x200000ULL -+ -+EFI_STATUS -+EFIAPI -+CsvDxeEntryPoint ( -+ IN EFI_HANDLE ImageHandle, -+ IN EFI_SYSTEM_TABLE *SystemTable -+ ) -+{ -+ EFI_STATUS Status; -+ RETURN_STATUS DecryptStatus; -+ CSV_SHARED_MEMORY_PROTOCOL *SharedMemory; -+ EFI_PHYSICAL_ADDRESS Memory; -+ EFI_PHYSICAL_ADDRESS EndMemory; -+ EFI_ALLOCATE_TYPE AllocateType; -+ UINT64 Size; -+ -+ Status = CsvInstallSharedMemoryProtocol (); -+ -+ if (EFI_ERROR (Status)) { -+ DEBUG ((EFI_D_ERROR, "fail to install CsvSharedMemory protocol\n")); -+ return Status; -+ } -+ -+ // -+ // Do nothing more when CSV is not enabled -+ // -+ if (!CsvIsEnabled ()) { -+ return EFI_SUCCESS; -+ } -+ -+ Status = gBS->LocateProtocol ( -+ &gCsvSharedMemoryProtocolGuid, -+ NULL, -+ (VOID**)&SharedMemory -+ ); -+ -+ if (Status == EFI_SUCCESS) { -+ -+ AllocateType = AllocateMaxAddress; -+ Memory = BASE_4GB - 1; -+ -+ Status = gBS->AllocatePages ( -+ AllocateType, -+ EfiBootServicesData, -+ CSV_SHARED_MEMORY_PAGE_NUMBER, -+ &Memory -+ ); -+ -+ if (EFI_ERROR (Status)) { -+ DEBUG ((DEBUG_ERROR, "fail to allocate CsvSharedMemory\n", SharedMemory)); -+ } else { -+ //Align to huge page -+ EndMemory = (Memory + CSV_SHARED_MEMORY_SIZE) & (~(HUGE_PAGE_SIZE - 1)); -+ Memory = ALIGN_VALUE(Memory, HUGE_PAGE_SIZE); -+ Size = (EndMemory > Memory) ? EndMemory - Memory : 0; -+ DecryptStatus = MemEncryptSevClearPageEncMask ( -+ 0, -+ Memory, -+ Size >> EFI_PAGE_SHIFT -+ ); -+ ASSERT_RETURN_ERROR (DecryptStatus); -+ -+ SharedMemory->CsvInitializeSharedMemoryList ( -+ SharedMemory, -+ (UINT64)Memory, -+ Size -+ ); -+ } -+ } else { -+ DEBUG ((DEBUG_ERROR, "fail to LocateProtocol gCsvSharedMemoryProtocolGuid\n")); -+ } -+ -+ return EFI_SUCCESS; -+} -diff --git a/OvmfPkg/CsvDxe/CsvDxe.inf b/OvmfPkg/CsvDxe/CsvDxe.inf -new file mode 100644 -index 0000000..89e3703 ---- /dev/null -+++ b/OvmfPkg/CsvDxe/CsvDxe.inf -@@ -0,0 +1,45 @@ -+#/** @file -+# -+# Secure Isolated Virtualization -+# -+# Copyright (c) 2022, HYGON Inc. All rights reserved.
-+# -+# This program and the accompanying materials are licensed and made available -+# under the terms and conditions of the BSD License which accompanies this -+# distribution. The full text of the license may be found at -+# http://opensource.org/licenses/bsd-license.php -+# -+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED. -+# -+#**/ -+ -+[Defines] -+ INF_VERSION = 1.25 -+ BASE_NAME = CsvDxe -+ FILE_GUID = 829310c0-b9c4-11e9-9e16-9b10d744f884 -+ MODULE_TYPE = DXE_DRIVER -+ VERSION_STRING = 1.0 -+ ENTRY_POINT = CsvDxeEntryPoint -+ -+[Sources] -+ CsvDxe.c -+ CsvSharedMemory.c -+ -+[Packages] -+ MdePkg/MdePkg.dec -+ OvmfPkg/OvmfPkg.dec -+ -+[LibraryClasses] -+ BaseLib -+ BaseMemoryLib -+ DebugLib -+ CsvLib -+ UefiDriverEntryPoint -+ -+[Depex] -+ TRUE -+ -+[Protocols] -+ gCsvSharedMemoryProtocolGuid -diff --git a/OvmfPkg/CsvDxe/CsvSharedMemory.c b/OvmfPkg/CsvDxe/CsvSharedMemory.c -new file mode 100644 -index 0000000..8674eaf ---- /dev/null -+++ b/OvmfPkg/CsvDxe/CsvSharedMemory.c -@@ -0,0 +1,208 @@ -+/** @file -+ -+ The protocol provides allocate, free the CSV shared memory. -+ -+ Copyright (c) 2022, HYGON. All rights reserved.
-+ -+ This program and the accompanying materials are licensed and made available -+ under the terms and conditions of the BSD License which accompanies this -+ distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+ -+STATIC LIST_ENTRY CsvSharedMemoryList = INITIALIZE_LIST_HEAD_VARIABLE (CsvSharedMemoryList); -+ -+// -+// Insert the initial shared memory address and length to list. -+// -+ -+EFI_STATUS -+EFIAPI -+CsvInitializeSharedMemoryList ( -+ IN CSV_SHARED_MEMORY_PROTOCOL *Protocol, -+ IN UINT64 Address, -+ IN UINT64 Length -+ ) -+{ -+ CsvSharedMemoryEntry *Entry; -+ -+ if (Length == 0) { -+ return EFI_INVALID_PARAMETER; -+ } -+ -+ Entry = AllocatePool (sizeof (*Entry)); -+ if (Entry == NULL) { -+ DEBUG((DEBUG_ERROR, "CsvInitializeSharedMemoryList AllocatePool error\n")); -+ return EFI_OUT_OF_RESOURCES; -+ } -+ -+ Entry->Start = Address; -+ Entry->Length = Length; -+ Entry->Signature = CSV_SHARED_MEMORY_SIGNATURE; -+ -+ InsertTailList (&CsvSharedMemoryList, &Entry->Link); -+ -+ return EFI_SUCCESS; -+} -+ -+EFI_STATUS -+EFIAPI -+CsvAllocateSharedMemory ( -+ IN CSV_SHARED_MEMORY_PROTOCOL *Protocol, -+ IN UINTN NumberOfPages, -+ OUT UINT64 *Memory -+ ) -+{ -+ LIST_ENTRY *Link; -+ CsvSharedMemoryEntry *Entry; -+ UINT64 MemoryLength; -+ -+ MemoryLength = (UINT64)NumberOfPages << EFI_PAGE_SHIFT; -+ -+ for (Link = CsvSharedMemoryList.ForwardLink; Link != &CsvSharedMemoryList; Link = Link->ForwardLink) { -+ Entry = CR (Link, CsvSharedMemoryEntry, Link, CSV_SHARED_MEMORY_SIGNATURE); -+ if (Entry->Length > MemoryLength) { -+ *Memory = (EFI_PHYSICAL_ADDRESS)Entry->Start; -+ Entry->Start = *Memory + MemoryLength; -+ Entry->Length -= MemoryLength; -+ break; -+ } else if (Entry->Length == MemoryLength) { -+ *Memory = (EFI_PHYSICAL_ADDRESS)Entry->Start; -+ RemoveEntryList (&Entry->Link); -+ FreePool (Entry); -+ break; -+ } -+ } -+ -+ -+ -+ if (Link == &CsvSharedMemoryList) { -+ DEBUG ((EFI_D_ERROR, "CsvAllocateSharedMemory fail to allocate %u pages\n", NumberOfPages)); -+ return EFI_NOT_FOUND; -+ } -+ else { -+ return EFI_SUCCESS; -+ } -+} -+ -+ -+ -+EFI_STATUS -+EFIAPI -+CsvFreeSharedMemory ( -+ IN CSV_SHARED_MEMORY_PROTOCOL *Protocol, -+ IN UINTN Pages, -+ IN UINT64 HostAddress -+ ) -+{ -+ LIST_ENTRY *Link; -+ CsvSharedMemoryEntry *Entry; -+ CsvSharedMemoryEntry *NewEntry; -+ UINT64 Memory; -+ UINT64 MemoryLength; -+ CsvSharedMemoryEntry *Previous = NULL; -+ BOOLEAN Inserted = FALSE; -+ -+ Memory = (UINT64)HostAddress; -+ MemoryLength = (UINT64)Pages << EFI_PAGE_SHIFT; -+ -+ for (Link = CsvSharedMemoryList.ForwardLink; -+ Link != &CsvSharedMemoryList; -+ Link = Link->ForwardLink) { -+ Entry = CR (Link, CsvSharedMemoryEntry, Link, CSV_SHARED_MEMORY_SIGNATURE); -+ if (Inserted) -+ goto Merge; -+ if (Entry->Start + Entry->Length == Memory) { -+ Entry->Length += MemoryLength; -+ Inserted = TRUE; -+ goto Merge; -+ } else if (Memory + MemoryLength < Entry->Start) { -+ NewEntry = AllocatePool (sizeof *NewEntry); -+ if (NewEntry == NULL) { -+ return EFI_OUT_OF_RESOURCES; -+ } -+ -+ NewEntry->Start = Memory; -+ NewEntry->Length = MemoryLength; -+ NewEntry->Signature = CSV_SHARED_MEMORY_SIGNATURE; -+ -+ InsertTailList (&Entry->Link, &NewEntry->Link); -+ break; -+ } else if (Memory + MemoryLength == Entry->Start) { -+ Entry->Start = Memory; -+ Entry->Length += MemoryLength; -+ break; -+ } else if (Link->ForwardLink == &CsvSharedMemoryList) { -+ // -+ // Insert to tail -+ // -+ NewEntry = AllocatePool (sizeof *NewEntry); -+ if (NewEntry == NULL) { -+ return EFI_OUT_OF_RESOURCES; -+ } -+ -+ NewEntry->Start = Memory; -+ NewEntry->Length = MemoryLength; -+ NewEntry->Signature = CSV_SHARED_MEMORY_SIGNATURE; -+ InsertHeadList (Link, &NewEntry->Link); -+ break; -+ } -+ -+Merge: -+ if (Previous) { -+ if (Previous->Start + Previous->Length == Entry->Start) { -+ Entry->Start = Previous->Start; -+ Entry->Length += Previous->Length; -+ RemoveEntryList (&Previous->Link); -+ FreePool (Previous); -+ } -+ break; -+ } else { -+ Previous = Entry; -+ } -+ } -+ -+ return EFI_SUCCESS; -+} -+ -+CSV_SHARED_MEMORY_PROTOCOL mCsvSharedMemory = { -+ CsvInitializeSharedMemoryList, -+ CsvAllocateSharedMemory, -+ CsvFreeSharedMemory -+}; -+ -+/** -+ Initialize CsvSharedMemory Protocol. -+ -+**/ -+EFI_STATUS -+EFIAPI -+CsvInstallSharedMemoryProtocol ( -+ VOID -+ ) -+{ -+ EFI_STATUS Status; -+ EFI_HANDLE Handle; -+ -+ Handle = NULL; -+ Status = gBS->InstallMultipleProtocolInterfaces ( -+ &Handle, -+ &gCsvSharedMemoryProtocolGuid, -+ &mCsvSharedMemory, -+ NULL -+ ); -+ return Status; -+} -diff --git a/OvmfPkg/CsvDxe/CsvSharedMemory.h b/OvmfPkg/CsvDxe/CsvSharedMemory.h -new file mode 100644 -index 0000000..8828515 ---- /dev/null -+++ b/OvmfPkg/CsvDxe/CsvSharedMemory.h -@@ -0,0 +1,29 @@ -+/** @file -+ CSV shared memory management protocol -+ -+ Copyright (C) 2022 HYGON. -+ -+ This program and the accompanying materials -+ are licensed and made available under the terms and conditions of the BSD License -+ which accompanies this distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#ifndef _CSV_SHARED_MEMORY_H_ -+#define _CSV_SHARED_MEMORY_H_ -+ -+// -+// Install SHARED_MEMORY protocol . -+// -+ -+EFI_STATUS -+EFIAPI -+CsvInstallSharedMemoryProtocol ( -+ VOID -+ ); -+ -+#endif -diff --git a/OvmfPkg/Include/Protocol/CsvSharedMemory.h b/OvmfPkg/Include/Protocol/CsvSharedMemory.h -new file mode 100644 -index 0000000..0c3f23d ---- /dev/null -+++ b/OvmfPkg/Include/Protocol/CsvSharedMemory.h -@@ -0,0 +1,99 @@ -+/** @file -+ CSV shared memory management protocol -+ -+ Copyright (C) 2022 HYGON. -+ -+ This program and the accompanying materials -+ are licensed and made available under the terms and conditions of the BSD License -+ which accompanies this distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#ifndef __PROTOCOL_CSV_SHARED_MEMORY_H__ -+#define __PROTOCOL_CSV_SHARED_MEMORY_H__ -+ -+#define CSV_SHARED_MEMORY_PAGE_NUMBER (16384ULL) -+#define CSV_SHARED_MEMORY_SIZE ((CSV_SHARED_MEMORY_PAGE_NUMBER)*(SIZE_4KB)) -+ -+/// -+/// Forward declaration -+/// -+typedef struct _CSV_SHARED_MEMORY_PROTOCOL CSV_SHARED_MEMORY_PROTOCOL; -+ -+ -+/// -+/// Function prototypes -+/// -+ -+/** -+ Initialize the list to manage the CSV shared memory. -+ Insert the start address and length. -+ -+ @param This A pointer to CSV_SHARED_MEMORY_PROTOCOL instance. -+ @param Address The start address of the shared memory. -+ @param Length The length of the shared memory. -+ -+**/ -+typedef -+EFI_STATUS -+(EFIAPI *CSV_INITIALIZE_SHARED_MEMORY_LIST)( -+ IN CSV_SHARED_MEMORY_PROTOCOL *This, -+ IN UINT64 Address, -+ IN UINT64 Length -+ ); -+ -+/** -+ Allocate buffer from the shared memory. -+ -+ @param This A pointer to CSV_SHARED_MEMORY_PROTOCOL instance. -+ @param NumberOfPages The length of page number. -+ @param Memory When success, allocated memory will be stored in. -+ -+ @return On success, EFI_SUCCESS. Otherwise an errno value -+ indicating the type of failure. -+**/ -+typedef -+EFI_STATUS -+(EFIAPI *CSV_ALLOCATE_SHARED_MEMORY)( -+ IN CSV_SHARED_MEMORY_PROTOCOL *This, -+ IN UINTN NumberOfPages, -+ OUT UINT64 *Memory -+ ); -+ -+/** -+ Free buffer to the shared memory. -+ -+ @param This A pointer to CSV_SHARED_MEMORY_PROTOCOL instance. -+ @param NumberOfPages The page number. -+ @param Memory The allocated memory to be freed. -+ -+ @return On success, EFI_SUCCESS. Otherwise an errno value -+ indicating the type of failure. -+**/ -+typedef -+EFI_STATUS -+(EFIAPI *CSV_FREE_SHARED_MEMORY)( -+ IN CSV_SHARED_MEMORY_PROTOCOL *This, -+ IN UINTN NumberOfPages, -+ IN UINT64 Memory -+ ); -+ -+/// -+/// Protocol structure -+/// -+struct _CSV_SHARED_MEMORY_PROTOCOL { -+ // -+ // Protocol data fields -+ // -+ CSV_INITIALIZE_SHARED_MEMORY_LIST CsvInitializeSharedMemoryList; -+ CSV_ALLOCATE_SHARED_MEMORY CsvAllocateSharedMemory; -+ CSV_FREE_SHARED_MEMORY CsvFreeSharedMemory; -+}; -+ -+extern EFI_GUID gCsvSharedMemoryProtocolGuid; -+ -+#endif -diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec -index 6f4afb8..d8f9be3 100644 ---- a/OvmfPkg/OvmfPkg.dec -+++ b/OvmfPkg/OvmfPkg.dec -@@ -152,6 +152,7 @@ - gEfiLegacyInterruptProtocolGuid = {0x31ce593d, 0x108a, 0x485d, {0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe}} - gEfiVgaMiniPortProtocolGuid = {0xc7735a2f, 0x88f5, 0x4882, {0xae, 0x63, 0xfa, 0xac, 0x8c, 0x8b, 0x86, 0xb3}} - gOvmfLoadedX86LinuxKernelProtocolGuid = {0xa3edc05d, 0xb618, 0x4ff6, {0x95, 0x52, 0x76, 0xd7, 0x88, 0x63, 0x43, 0xc8}} -+ gCsvSharedMemoryProtocolGuid = {0x0c795ed0, 0xbf0a, 0x11e9, {0x99, 0xbe, 0x50, 0x9a, 0x4c, 0x01, 0x1e, 0xd1}} - - [PcdsFixedAtBuild] - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|0x0|UINT32|0 -diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc -index 9e4dcce..edc0f0e 100644 ---- a/OvmfPkg/OvmfPkgIa32X64.dsc -+++ b/OvmfPkg/OvmfPkgIa32X64.dsc -@@ -982,6 +982,7 @@ - OvmfPkg/PlatformDxe/Platform.inf - OvmfPkg/AmdSevDxe/AmdSevDxe.inf - OvmfPkg/IoMmuDxe/IoMmuDxe.inf -+ OvmfPkg/CsvDxe/CsvDxe.inf - - !if $(SMM_REQUIRE) == TRUE - OvmfPkg/SmmAccess/SmmAccess2Dxe.inf -diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf -index e33a40c..f05405b 100644 ---- a/OvmfPkg/OvmfPkgIa32X64.fdf -+++ b/OvmfPkg/OvmfPkgIa32X64.fdf -@@ -339,6 +339,7 @@ INF OvmfPkg/VirtioGpuDxe/VirtioGpu.inf - INF OvmfPkg/PlatformDxe/Platform.inf - INF OvmfPkg/AmdSevDxe/AmdSevDxe.inf - INF OvmfPkg/IoMmuDxe/IoMmuDxe.inf -+INF OvmfPkg/CsvDxe/CsvDxe.inf - - !if $(SMM_REQUIRE) == TRUE - INF OvmfPkg/SmmAccess/SmmAccess2Dxe.inf -diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc -index e62b533..763214d 100644 ---- a/OvmfPkg/OvmfPkgX64.dsc -+++ b/OvmfPkg/OvmfPkgX64.dsc -@@ -980,6 +980,7 @@ - OvmfPkg/PlatformDxe/Platform.inf - OvmfPkg/AmdSevDxe/AmdSevDxe.inf - OvmfPkg/IoMmuDxe/IoMmuDxe.inf -+ OvmfPkg/CsvDxe/CsvDxe.inf - - !if $(SMM_REQUIRE) == TRUE - OvmfPkg/SmmAccess/SmmAccess2Dxe.inf -diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf -index a3634dd..0f04acb 100644 ---- a/OvmfPkg/OvmfPkgX64.fdf -+++ b/OvmfPkg/OvmfPkgX64.fdf -@@ -358,6 +358,7 @@ INF OvmfPkg/VirtioGpuDxe/VirtioGpu.inf - INF OvmfPkg/PlatformDxe/Platform.inf - INF OvmfPkg/AmdSevDxe/AmdSevDxe.inf - INF OvmfPkg/IoMmuDxe/IoMmuDxe.inf -+INF OvmfPkg/CsvDxe/CsvDxe.inf - - !if $(SMM_REQUIRE) == TRUE - INF OvmfPkg/SmmAccess/SmmAccess2Dxe.inf --- -2.17.1 - diff --git a/0037-anolis-OvmfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch b/0037-anolis-OvmfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch deleted file mode 100644 index 9b4b800..0000000 --- a/0037-anolis-OvmfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch +++ /dev/null @@ -1,724 +0,0 @@ -From 8f82f4b8d86ca1b10b9353b484c403c628b3b560 Mon Sep 17 00:00:00 2001 -From: Liu Zixing -Date: Fri, 25 Feb 2022 16:54:44 +0800 -Subject: [PATCH 37/46] anolis: OvmfPkg/IoMmuDxe: Add CsvIoMmu protocol - -Create the dedicated IoMmu protocol for CSV virtual machine. -And Install it during CSV VM boots up. - -It calls the CsvSharedMemoryProtocol to allocate shared memory -for DMA operations. - -- AllocateBuffer() allocates the shared memory. - -- FreeBuffer() frees the shared memory. - -- Map() does nothing when BusMasterCommonBuffer[64] is requested - Otherwise, Map() allocates shared memory. - -- Unmap() does nothing when cleaning up a BusMasterCommonBuffer[64] - operation. Otherwise, Unmap() frees the shared memory. - -Signed-off-by: Xin Jiang -Change-Id: If49857f45c639341a96605722b06babfa1553874 ---- - OvmfPkg/IoMmuDxe/CsvIoMmu.c | 592 ++++++++++++++++++++++++++++++++++ - OvmfPkg/IoMmuDxe/CsvIoMmu.h | 29 ++ - OvmfPkg/IoMmuDxe/IoMmuDxe.c | 10 + - OvmfPkg/IoMmuDxe/IoMmuDxe.inf | 6 +- - 4 files changed, 636 insertions(+), 1 deletion(-) - create mode 100644 OvmfPkg/IoMmuDxe/CsvIoMmu.c - create mode 100644 OvmfPkg/IoMmuDxe/CsvIoMmu.h - -diff --git a/OvmfPkg/IoMmuDxe/CsvIoMmu.c b/OvmfPkg/IoMmuDxe/CsvIoMmu.c -new file mode 100644 -index 0000000..c5df6b9 ---- /dev/null -+++ b/OvmfPkg/IoMmuDxe/CsvIoMmu.c -@@ -0,0 +1,592 @@ -+/** @file -+ -+ The protocol provides support to allocate, free, map and umap a DMA buffer -+ for bus master (e.g PciHostBridge). When CSV is enabled, the DMA operations -+ must be performed on non-secure memory so we have to allocate the DMA buffer -+ from non-secure memory. -+ -+ Copyright (c) 2022, HYGON. All rights reserved.
-+ -+ This program and the accompanying materials are licensed and made available -+ under the terms and conditions of the BSD License which accompanies this -+ distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "CsvIoMmu.h" -+ -+#define MAP_INFO_SIG SIGNATURE_64 ('M', 'A', 'P', '_', 'I', 'N', 'F', 'O') -+ -+typedef struct { -+ UINT64 Signature; -+ LIST_ENTRY Link; -+ EDKII_IOMMU_OPERATION Operation; -+ UINTN NumberOfBytes; -+ UINTN NumberOfPages; -+ EFI_PHYSICAL_ADDRESS SecureAddress; -+ EFI_PHYSICAL_ADDRESS UnSecureAddress; -+} MAP_INFO; -+ -+// -+// List of the MAP_INFO structures that have been set up by IoMmuMap() and not -+// yet torn down by IoMmuUnmap(). The list represents the full set of mappings -+// currently in effect. -+// -+STATIC LIST_ENTRY mMapInfos = INITIALIZE_LIST_HEAD_VARIABLE (mMapInfos); -+ -+// -+// ASCII names for EDKII_IOMMU_OPERATION constants, for debug logging. -+// -+STATIC CONST CHAR8 * CONST -+mBusMasterOperationName[EdkiiIoMmuOperationMaximum] = { -+ "Read", -+ "Write", -+ "CommonBuffer", -+ "Read64", -+ "Write64", -+ "CommonBuffer64" -+}; -+ -+STATIC CSV_SHARED_MEMORY_PROTOCOL *SharedMemory; -+STATIC -+EFI_STATUS -+EFIAPI -+CsvAllocSharedPage( -+ IN UINTN Pages, -+ OUT EFI_PHYSICAL_ADDRESS *Address -+ ) -+{ -+ EFI_STATUS Status; -+ -+ Status = SharedMemory->CsvAllocateSharedMemory ( -+ SharedMemory, -+ Pages, -+ (UINT64*)Address -+ ); -+ -+ return Status; -+} -+ -+STATIC -+EFI_STATUS -+EFIAPI -+CsvFreeSharedPage( -+ IN UINTN Pages, -+ IN VOID *HostAddress -+ ) -+{ -+ EFI_STATUS Status; -+ -+ Status = SharedMemory->CsvFreeSharedMemory ( -+ SharedMemory, -+ Pages, -+ (UINTN)HostAddress -+ ); -+ -+ return Status; -+} -+ -+/** -+ Provides the controller-specific addresses required to access system memory -+ from a DMA bus master. -+ On CSV guest, the DMA openerations must be done on non-secure memory which -+ is the shared memory between the guest and QEMU. -+ -+ @param This The protocol instance pointer. -+ @param Operation Indicates if the bus master is going to read or -+ write to system memory. -+ @param HostAddress The system memory address to map to the PCI -+ controller. -+ @param NumberOfBytes On input the number of bytes to map. On output -+ the number of bytes that were mapped. -+ @param DeviceAddress The resulting map address for the bus master -+ PCI controller to use to access the hosts -+ HostAddress. -+ @param Mapping A resulting value to pass to Unmap(). -+ -+ @retval EFI_SUCCESS The range was mapped for the returned -+ NumberOfBytes. -+ @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common -+ buffer. -+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid. -+ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a -+ lack of resources. -+ @retval EFI_DEVICE_ERROR The system hardware could not map the requested -+ address. -+ -+**/ -+EFI_STATUS -+EFIAPI -+CsvIoMmuMap ( -+ IN EDKII_IOMMU_PROTOCOL *This, -+ IN EDKII_IOMMU_OPERATION Operation, -+ IN VOID *HostAddress, -+ IN OUT UINTN *NumberOfBytes, -+ OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, -+ OUT VOID **Mapping -+ ) -+{ -+ EFI_STATUS Status; -+ MAP_INFO *MapInfo; -+ -+ DEBUG (( -+ DEBUG_VERBOSE, -+ "%a: Operation=%a Operation=%u Host=0x%p Bytes=0x%Lx\n", -+ __FUNCTION__, -+ ((Operation >= 0 && -+ Operation < ARRAY_SIZE (mBusMasterOperationName)) ? -+ mBusMasterOperationName[Operation] : -+ "Invalid"), -+ Operation, -+ HostAddress, -+ (UINT64)((NumberOfBytes == NULL) ? 0 : *NumberOfBytes) -+ )); -+ -+ if (HostAddress == NULL || NumberOfBytes == NULL || DeviceAddress == NULL || -+ Mapping == NULL) { -+ return EFI_INVALID_PARAMETER; -+ } -+ -+ // -+ // Allocate a MAP_INFO structure to remember the mapping when Unmap() is -+ // called later. -+ // -+ MapInfo = AllocatePool (sizeof (MAP_INFO)); -+ if (MapInfo == NULL) { -+ Status = EFI_OUT_OF_RESOURCES; -+ goto Failed; -+ } -+ -+ ZeroMem (&MapInfo->Link, sizeof MapInfo->Link); -+ MapInfo->Operation = Operation; -+ MapInfo->NumberOfBytes = *NumberOfBytes; -+ MapInfo->NumberOfPages = EFI_SIZE_TO_PAGES (MapInfo->NumberOfBytes); -+ MapInfo->Signature = MAP_INFO_SIG; -+ -+ switch (Operation) { -+ // -+ // For BusMasterRead[64] and BusMasterWrite[64] operations, a bounce buffer -+ // is necessary regardless of whether the original (crypted) buffer crosses -+ // the 4GB limit or not -- we have to allocate a separate plaintext buffer. -+ // The only variable is whether the plaintext buffer should be under 4GB. -+ // -+ case EdkiiIoMmuOperationBusMasterRead: -+ case EdkiiIoMmuOperationBusMasterWrite: -+ // -+ // fall through -+ // -+ case EdkiiIoMmuOperationBusMasterRead64: -+ case EdkiiIoMmuOperationBusMasterWrite64: -+ // -+ // Allocate the implicit plaintext bounce buffer. -+ // -+ Status = CsvAllocSharedPage ( -+ MapInfo->NumberOfPages, -+ &MapInfo->UnSecureAddress -+ ); -+ if (EFI_ERROR (Status)) { -+ goto FreeMapInfo; -+ } -+ MapInfo->SecureAddress = (UINTN)HostAddress; -+ if (Operation == EdkiiIoMmuOperationBusMasterRead || -+ Operation == EdkiiIoMmuOperationBusMasterRead64) { -+ CopyMem ( -+ (VOID *) (UINTN) MapInfo->UnSecureAddress, -+ (VOID *) (UINTN) MapInfo->SecureAddress, -+ MapInfo->NumberOfBytes -+ ); -+ } -+ break; -+ -+ // -+ // For BusMasterCommonBuffer[64] operations, -+ // AllocateBuffer already returns the plain-text, -+ // No need to decrypt the data. -+ // -+ case EdkiiIoMmuOperationBusMasterCommonBuffer: -+ case EdkiiIoMmuOperationBusMasterCommonBuffer64: -+ MapInfo->UnSecureAddress = (UINTN)HostAddress; -+ MapInfo->SecureAddress = (UINTN)HostAddress; -+ break; -+ -+ default: -+ // -+ // Operation is invalid -+ // -+ Status = EFI_INVALID_PARAMETER; -+ goto FreeMapInfo; -+ } -+ -+ // -+ // Track all MAP_INFO structures. -+ // -+ InsertHeadList (&mMapInfos, &MapInfo->Link); -+ // -+ // Populate output parameters. -+ // -+ *DeviceAddress = MapInfo->UnSecureAddress; -+ *Mapping = MapInfo; -+ -+ DEBUG (( -+ DEBUG_VERBOSE, -+ "%a: Mapping=0x%p Device=0x%Lx Host=0x%Lx Pages=0x%Lx\n", -+ __FUNCTION__, -+ MapInfo, -+ MapInfo->UnSecureAddress, -+ MapInfo->SecureAddress, -+ (UINT64)MapInfo->NumberOfPages -+ )); -+ -+ return EFI_SUCCESS; -+ -+FreeMapInfo: -+ FreePool (MapInfo); -+ -+Failed: -+ *NumberOfBytes = 0; -+ return Status; -+} -+ -+/** -+ Completes the Map() operation and releases any corresponding resources. -+ -+ This is an internal worker function that only extends the Map() API with -+ the MemoryMapLocked parameter. -+ -+ @param This The protocol instance pointer. -+ @param Mapping The mapping value returned from Map(). -+ @param MemoryMapLocked The function is executing on the stack of -+ gBS->ExitBootServices(); changes to the UEFI -+ memory map are forbidden. -+ -+ @retval EFI_SUCCESS The range was unmapped. -+ @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by -+ Map(). -+ @retval EFI_DEVICE_ERROR The data was not committed to the target system -+ memory. -+**/ -+STATIC -+EFI_STATUS -+EFIAPI -+CsvIoMmuUnmapWorker ( -+ IN EDKII_IOMMU_PROTOCOL *This, -+ IN VOID *Mapping, -+ IN BOOLEAN MemoryMapLocked -+ ) -+{ -+ MAP_INFO *MapInfo; -+ EDKII_IOMMU_OPERATION Operation; -+ -+ if (Mapping == NULL) { -+ return EFI_INVALID_PARAMETER; -+ } -+ -+ MapInfo = (MAP_INFO *)Mapping; -+ Operation = MapInfo->Operation; -+ -+ DEBUG (( -+ DEBUG_VERBOSE, -+ "%a: Mapping=0x%p MemoryMapLocked=%d Operation %a Operation %d\n", -+ __FUNCTION__, -+ Mapping, -+ MemoryMapLocked, -+ ((Operation >= 0 && -+ Operation < ARRAY_SIZE (mBusMasterOperationName)) ? -+ mBusMasterOperationName[Operation] : -+ "Invalid"), -+ Operation -+ )); -+ -+ switch (MapInfo->Operation) { -+ case EdkiiIoMmuOperationBusMasterWrite: -+ case EdkiiIoMmuOperationBusMasterWrite64: -+ CopyMem ( -+ (VOID *) (UINTN) MapInfo->SecureAddress, -+ (VOID *) (UINTN) MapInfo->UnSecureAddress, -+ MapInfo->NumberOfBytes -+ ); -+ case EdkiiIoMmuOperationBusMasterRead: -+ case EdkiiIoMmuOperationBusMasterRead64: -+ ZeroMem ( -+ (VOID *)(UINTN)MapInfo->UnSecureAddress, -+ EFI_PAGES_TO_SIZE (MapInfo->NumberOfPages) -+ ); -+ CsvFreeSharedPage( -+ MapInfo->NumberOfPages, -+ (VOID*)(UINTN)MapInfo->UnSecureAddress -+ ); -+ -+ default: -+ break; -+ } -+ -+ // -+ // Forget the MAP_INFO structure, then free it (unless the UEFI memory map is -+ // locked). -+ // -+ RemoveEntryList (&MapInfo->Link); -+ if (!MemoryMapLocked) { -+ FreePool (MapInfo); -+ } -+ -+ return EFI_SUCCESS; -+ -+} -+ -+/** -+ Completes the Map() operation and releases any corresponding resources. -+ -+ @param This The protocol instance pointer. -+ @param Mapping The mapping value returned from Map(). -+ -+ @retval EFI_SUCCESS The range was unmapped. -+ @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by -+ Map(). -+ @retval EFI_DEVICE_ERROR The data was not committed to the target system -+ memory. -+**/ -+EFI_STATUS -+EFIAPI -+CsvIoMmuUnmap ( -+ IN EDKII_IOMMU_PROTOCOL *This, -+ IN VOID *Mapping -+ ) -+{ -+ return CsvIoMmuUnmapWorker ( -+ This, -+ Mapping, -+ FALSE // MemoryMapLocked -+ ); -+} -+ -+/** -+ Allocates pages that are suitable for an OperationBusMasterCommonBuffer or -+ OperationBusMasterCommonBuffer64 mapping. -+ -+ @param This The protocol instance pointer. -+ @param Type This parameter is not used and must be ignored. -+ @param MemoryType The type of memory to allocate, -+ EfiBootServicesData or EfiRuntimeServicesData. -+ @param Pages The number of pages to allocate. -+ @param HostAddress A pointer to store the base system memory -+ address of the allocated range. -+ @param Attributes The requested bit mask of attributes for the -+ allocated range. -+ -+ @retval EFI_SUCCESS The requested memory pages were allocated. -+ @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal -+ attribute bits are MEMORY_WRITE_COMBINE and -+ MEMORY_CACHED. -+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid. -+ @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated. -+ -+**/ -+EFI_STATUS -+EFIAPI -+CsvIoMmuAllocateBuffer ( -+ IN EDKII_IOMMU_PROTOCOL *This, -+ IN EFI_ALLOCATE_TYPE Type, -+ IN EFI_MEMORY_TYPE MemoryType, -+ IN UINTN Pages, -+ IN OUT VOID **HostAddress, -+ IN UINT64 Attributes -+ ) -+{ -+ EFI_STATUS Status; -+ EFI_PHYSICAL_ADDRESS PhysicalAddress; -+ -+ DEBUG (( -+ DEBUG_VERBOSE, -+ "%a: MemoryType=%u Pages=0x%Lx Attributes=0x%Lx\n", -+ __FUNCTION__, -+ (UINT32)MemoryType, -+ (UINT64)Pages, -+ Attributes -+ )); -+ -+ // -+ // Validate Attributes -+ // -+ if ((Attributes & EDKII_IOMMU_ATTRIBUTE_INVALID_FOR_ALLOCATE_BUFFER) != 0) { -+ return EFI_UNSUPPORTED; -+ } -+ -+ // -+ // Check for invalid inputs -+ // -+ if (HostAddress == NULL) { -+ return EFI_INVALID_PARAMETER; -+ } -+ -+ // -+ // The only valid memory types are EfiBootServicesData and -+ // EfiRuntimeServicesData -+ // -+ if (MemoryType != EfiBootServicesData && -+ MemoryType != EfiRuntimeServicesData) { -+ return EFI_INVALID_PARAMETER; -+ } -+ -+ // -+ // We'll need a header page for the COMMON_BUFFER_HEADER structure. -+ // -+ if (Pages > MAX_UINTN - 1) { -+ return EFI_OUT_OF_RESOURCES; -+ } -+ -+ Status = CsvAllocSharedPage (Pages,&PhysicalAddress); -+ if (Status != EFI_SUCCESS){ -+ goto error; -+ } -+ -+ -+ *HostAddress = (VOID *)(UINTN)PhysicalAddress; -+ -+ return EFI_SUCCESS; -+ -+error: -+ return Status; -+} -+ -+/** -+ Frees memory that was allocated with AllocateBuffer(). -+ -+ @param This The protocol instance pointer. -+ @param Pages The number of pages to free. -+ @param HostAddress The base system memory address of the allocated -+ range. -+ -+ @retval EFI_SUCCESS The requested memory pages were freed. -+ @retval EFI_INVALID_PARAMETER The memory range specified by HostAddress and -+ Pages was not allocated with AllocateBuffer(). -+ -+**/ -+EFI_STATUS -+EFIAPI -+CsvIoMmuFreeBuffer ( -+ IN EDKII_IOMMU_PROTOCOL *This, -+ IN UINTN Pages, -+ IN VOID *HostAddress -+ ) -+{ -+ -+ EFI_STATUS Status; -+ -+ if (HostAddress == NULL || Pages == 0) { -+ return EFI_INVALID_PARAMETER; -+ } -+ -+ DEBUG (( -+ DEBUG_VERBOSE, -+ "%a: Host=0x%p Pages=0x%Lx\n", -+ __FUNCTION__, -+ HostAddress, -+ (UINT64)Pages -+ )); -+ -+ Status = CsvFreeSharedPage (Pages, HostAddress); -+ -+ return Status; -+} -+ -+ -+/** -+ Set IOMMU attribute for a system memory. -+ -+ @param[in] This The protocol instance pointer. -+ @param[in] DeviceHandle The device who initiates the DMA access -+ request. -+ @param[in] Mapping The mapping value returned from Map(). -+ @param[in] IoMmuAccess The IOMMU access. -+ -+ @retval EFI_SUCCESS The IoMmuAccess is set for the memory range -+ specified by DeviceAddress and Length. -+ @retval EFI_INVALID_PARAMETER DeviceHandle is an invalid handle. -+ @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by -+ Map(). -+ @retval EFI_INVALID_PARAMETER IoMmuAccess specified an illegal combination -+ of access. -+ @retval EFI_UNSUPPORTED DeviceHandle is unknown by the IOMMU. -+ @retval EFI_UNSUPPORTED The bit mask of IoMmuAccess is not supported -+ by the IOMMU. -+ @retval EFI_UNSUPPORTED The IOMMU does not support the memory range -+ specified by Mapping. -+ @retval EFI_OUT_OF_RESOURCES There are not enough resources available to -+ modify the IOMMU access. -+ @retval EFI_DEVICE_ERROR The IOMMU device reported an error while -+ attempting the operation. -+ -+**/ -+EFI_STATUS -+EFIAPI -+CsvIoMmuSetAttribute ( -+ IN EDKII_IOMMU_PROTOCOL *This, -+ IN EFI_HANDLE DeviceHandle, -+ IN VOID *Mapping, -+ IN UINT64 IoMmuAccess -+ ) -+{ -+ return EFI_UNSUPPORTED; -+} -+ -+EDKII_IOMMU_PROTOCOL mCsv = { -+ EDKII_IOMMU_PROTOCOL_REVISION, -+ CsvIoMmuSetAttribute, -+ CsvIoMmuMap, -+ CsvIoMmuUnmap, -+ CsvIoMmuAllocateBuffer, -+ CsvIoMmuFreeBuffer, -+}; -+ -+/** -+ Initialize Iommu Protocol. -+ -+**/ -+EFI_STATUS -+EFIAPI -+CsvInstallIoMmuProtocol ( -+ VOID -+ ) -+{ -+ EFI_STATUS Status; -+ EFI_HANDLE Handle; -+ -+ Status = gBS->LocateProtocol ( -+ &gCsvSharedMemoryProtocolGuid, -+ NULL, -+ (VOID**)&SharedMemory -+ ); -+ -+ if (EFI_ERROR (Status)) { -+ goto error; -+ } -+ -+ Handle = NULL; -+ Status = gBS->InstallMultipleProtocolInterfaces ( -+ &Handle, -+ &gEdkiiIoMmuProtocolGuid, -+ &mCsv, -+ NULL -+ ); -+ if (EFI_ERROR (Status)) { -+ goto error; -+ } -+ -+ return EFI_SUCCESS; -+ -+error: -+ return Status; -+} -diff --git a/OvmfPkg/IoMmuDxe/CsvIoMmu.h b/OvmfPkg/IoMmuDxe/CsvIoMmu.h -new file mode 100644 -index 0000000..d48a02c ---- /dev/null -+++ b/OvmfPkg/IoMmuDxe/CsvIoMmu.h -@@ -0,0 +1,29 @@ -+/** @file -+ -+ The protocol provides support to allocate, free, map and umap a DMA buffer -+ for bus master (e.g PciHostBridge). When CSV is enabled, the DMA operations -+ must be performed on unencrypted buffer hence protocol clear the encryption -+ bit from the DMA buffer. -+ -+ Copyright (c) 2022, HYGON. All rights reserved.
-+ -+ This program and the accompanying materials are licensed and made available -+ under the terms and conditions of the BSD License which accompanies this -+ distribution. The full text of the license may be found at -+ http://opensource.org/licenses/bsd-license.php -+ -+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#ifndef _CSV_IOMMU_H_ -+#define _CSV_IOMMU_H_ -+ -+EFI_STATUS -+EFIAPI -+CsvInstallIoMmuProtocol ( -+ VOID -+ ); -+ -+#endif -diff --git a/OvmfPkg/IoMmuDxe/IoMmuDxe.c b/OvmfPkg/IoMmuDxe/IoMmuDxe.c -index 13df8ba..35e5df9 100644 ---- a/OvmfPkg/IoMmuDxe/IoMmuDxe.c -+++ b/OvmfPkg/IoMmuDxe/IoMmuDxe.c -@@ -9,7 +9,9 @@ - - **/ - -+#include - #include "AmdSevIoMmu.h" -+#include "CsvIoMmu.h" - - EFI_STATUS - EFIAPI -@@ -21,6 +23,14 @@ IoMmuDxeEntryPoint ( - EFI_STATUS Status; - EFI_HANDLE Handle; - -+ if (CsvIsEnabled ()) { -+ Status = CsvInstallIoMmuProtocol (); -+ if (Status != EFI_SUCCESS) { -+ DEBUG((EFI_D_ERROR, "fail to install CSV IOMMU\n")); -+ } -+ return Status; -+ } -+ - // - // When SEV is enabled, install IoMmu protocol otherwise install the - // placeholder protocol so that other dependent module can run. -diff --git a/OvmfPkg/IoMmuDxe/IoMmuDxe.inf b/OvmfPkg/IoMmuDxe/IoMmuDxe.inf -index 2ebd74e..6b89c6a 100644 ---- a/OvmfPkg/IoMmuDxe/IoMmuDxe.inf -+++ b/OvmfPkg/IoMmuDxe/IoMmuDxe.inf -@@ -21,6 +21,8 @@ - AmdSevIoMmu.c - AmdSevIoMmu.h - IoMmuDxe.c -+ CsvIoMmu.c -+ CsvIoMmu.h - - [Packages] - MdePkg/MdePkg.dec -@@ -35,10 +37,12 @@ - MemoryAllocationLib - UefiBootServicesTableLib - UefiDriverEntryPoint -+ CsvLib - - [Protocols] - gEdkiiIoMmuProtocolGuid ## SOMETIME_PRODUCES - gIoMmuAbsentProtocolGuid ## SOMETIME_PRODUCES -+ gCsvSharedMemoryProtocolGuid - - [Depex] -- TRUE -+ gCsvSharedMemoryProtocolGuid --- -2.17.1 - diff --git a/0038-anolis-OvmfPkg-Reserve-a-CPUID-table-page-for-CSV-gu.patch b/0038-anolis-OvmfPkg-Reserve-a-CPUID-table-page-for-CSV-gu.patch deleted file mode 100644 index 6aeeadf..0000000 --- a/0038-anolis-OvmfPkg-Reserve-a-CPUID-table-page-for-CSV-gu.patch +++ /dev/null @@ -1,137 +0,0 @@ -From 8a7ac3e25c1e8a62852a64d0a303e948b0e1499a Mon Sep 17 00:00:00 2001 -From: Xin Jiang -Date: Tue, 15 Aug 2023 17:15:53 +0800 -Subject: [PATCH 38/46] anolis: OvmfPkg: Reserve a CPUID table page for CSV - guest - -Reserve a page for CPUID table which will be initialized by firmware. -In future, A CSV guest should get CPUID value from a CPUID table -which has been validated by firmware rather than requesting them from -hypervisor via a VMGEXIT. - -Signed-off-by: Xin Jiang -Change-Id: Ic09af8667c65ac83eef5a2a4a1e69d0506cd89d7 ---- - OvmfPkg/OvmfPkg.dec | 4 ++++ - OvmfPkg/OvmfPkgX64.fdf | 3 +++ - OvmfPkg/PlatformPei/Csv.c | 6 ++++++ - OvmfPkg/PlatformPei/PlatformPei.inf | 2 ++ - OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm | 15 +++++++++++++++ - OvmfPkg/ResetVector/ResetVector.inf | 2 ++ - OvmfPkg/ResetVector/ResetVector.nasmb | 2 ++ - 7 files changed, 34 insertions(+) - -diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec -index d8f9be3..7e6a6a2 100644 ---- a/OvmfPkg/OvmfPkg.dec -+++ b/OvmfPkg/OvmfPkg.dec -@@ -359,6 +359,10 @@ - gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase|0|UINT32|0x58 - gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize|0|UINT32|0x59 - -+ ## the base address of the cpuid table page used by CSV. -+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase|0|UINT32|0x60 -+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize|0|UINT32|0x61 -+ - [PcdsDynamic, PcdsDynamicEx] - gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2 - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10 -diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf -index 0f04acb..04efa62 100644 ---- a/OvmfPkg/OvmfPkgX64.fdf -+++ b/OvmfPkg/OvmfPkgX64.fdf -@@ -91,6 +91,9 @@ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupBase|gUefiOvmfPkgTokenSpaceGuid.P - 0x00D000|0x002000 - gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase|gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize - -+0x00F000|0x001000 -+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize -+ - 0x010000|0x010000 - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize - -diff --git a/OvmfPkg/PlatformPei/Csv.c b/OvmfPkg/PlatformPei/Csv.c -index 44e81e1..f7c87ac 100644 ---- a/OvmfPkg/PlatformPei/Csv.c -+++ b/OvmfPkg/PlatformPei/Csv.c -@@ -56,6 +56,12 @@ CsvInitializeMemInfo ( - (UINT64)(UINTN) FixedPcdGet32 (PcdCsvDefaultSecureCallSize), - EfiReservedMemoryType - ); -+ -+ BuildMemoryAllocationHob ( -+ (EFI_PHYSICAL_ADDRESS)(UINTN) FixedPcdGet32 (PcdOvmfCsvCpuidBase), -+ (UINT64)(UINTN) FixedPcdGet32 (PcdOvmfCsvCpuidSize), -+ EfiReservedMemoryType -+ ); - } - - VOID -diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf -index cb0582c..bed4dcf 100644 ---- a/OvmfPkg/PlatformPei/PlatformPei.inf -+++ b/OvmfPkg/PlatformPei/PlatformPei.inf -@@ -123,6 +123,8 @@ - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaSize - gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase - gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize -+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase -+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize - - [FeaturePcd] - gUefiOvmfPkgTokenSpaceGuid.PcdCsmEnable -diff --git a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm -index c32b608..f282692 100644 ---- a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm -+++ b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm -@@ -63,6 +63,21 @@ csvSecureCallBase: - DB 0xAB, 0x21, 0x6B, 0x27, 0x5D, 0x55, 0x56, 0xA5 - csvSecureCallEnd: - -+; -+; CSV cpuid table -+; -+; Provide cpuid table page when boot up for CSV guest -+; -+; GUID : 1b4c70e6-07e6-4e4e-8f28-0eaf871a0752 -+; -+csvCpuidTableBase: -+ DD CSV_CPUID_TABLE_SIZE -+ DD CSV_CPUID_TABLE_BASE -+ DW csvCpuidTableEnd - csvCpuidTableBase -+ DB 0xE6, 0x70, 0x4C, 0x1B, 0xE6, 0x07, 0x4E, 0x4E -+ DB 0x8F, 0x28, 0x0E, 0xAF, 0x87, 0x1A, 0x07, 0x52 -+csvCpuidTableEnd: -+ - ; - ; TDX Metadata offset block - ; -diff --git a/OvmfPkg/ResetVector/ResetVector.inf b/OvmfPkg/ResetVector/ResetVector.inf -index 38c1720..e35c17b 100644 ---- a/OvmfPkg/ResetVector/ResetVector.inf -+++ b/OvmfPkg/ResetVector/ResetVector.inf -@@ -37,6 +37,8 @@ - gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaBase - gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase - gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize -+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase -+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBase - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbSize - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbPageTableBase -diff --git a/OvmfPkg/ResetVector/ResetVector.nasmb b/OvmfPkg/ResetVector/ResetVector.nasmb -index ca00f64..4e7c7ad 100644 ---- a/OvmfPkg/ResetVector/ResetVector.nasmb -+++ b/OvmfPkg/ResetVector/ResetVector.nasmb -@@ -106,6 +106,8 @@ - - %define CSV_DEFAULT_SECURE_CALL_BASE FixedPcdGet32 (PcdCsvDefaultSecureCallBase) - %define CSV_DEFAULT_SECURE_CALL_SIZE FixedPcdGet32 (PcdCsvDefaultSecureCallSize) -+ %define CSV_CPUID_TABLE_BASE FixedPcdGet32 (PcdOvmfCsvCpuidBase) -+ %define CSV_CPUID_TABLE_SIZE FixedPcdGet32 (PcdOvmfCsvCpuidSize) - - %include "X64/IntelTdxMetadata.asm" - %include "Ia32/Flat32ToFlat64.asm" --- -2.17.1 - diff --git a/0039-OvmfPkg-BaseMemEncryptLib-Detect-SEV-live-migration-.patch b/0039-OvmfPkg-BaseMemEncryptLib-Detect-SEV-live-migration-.patch deleted file mode 100644 index a8c2c34..0000000 --- a/0039-OvmfPkg-BaseMemEncryptLib-Detect-SEV-live-migration-.patch +++ /dev/null @@ -1,325 +0,0 @@ -From 118d8bd819dfd2300798481d8c89a9c37e54a32c Mon Sep 17 00:00:00 2001 -From: Ashish Kalra -Date: Thu, 19 Aug 2021 12:35:50 +0000 -Subject: [PATCH 39/46] OvmfPkg/BaseMemEncryptLib: Detect SEV live migration - feature. - -Add support to check if we are running inside KVM HVM and -KVM HVM supports SEV Live Migration feature. - -Cc: Jordan Justen -Cc: Ard Biesheuvel -Signed-off-by: Ashish Kalra -Change-Id: I29fa5047198c9c3c6965c36b5e221b48c277dfc9 ---- - OvmfPkg/Include/Library/MemEncryptSevLib.h | 12 ++++ - .../DxeMemEncryptSevLibInternal.c | 41 +++++++++++++ - .../PeiDxeMemEncryptSevLibInternal.c | 57 +++++++++++++++++++ - .../PeiDxeMemEncryptSevLibInternal.h | 31 ++++++++++ - .../PeiMemEncryptSevLibInternal.c | 41 +++++++++++++ - .../SecMemEncryptSevLibInternal.c | 18 ++++++ - 6 files changed, 200 insertions(+) - create mode 100644 OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.h - -diff --git a/OvmfPkg/Include/Library/MemEncryptSevLib.h b/OvmfPkg/Include/Library/MemEncryptSevLib.h -index adc490e..ea251f1 100644 ---- a/OvmfPkg/Include/Library/MemEncryptSevLib.h -+++ b/OvmfPkg/Include/Library/MemEncryptSevLib.h -@@ -71,6 +71,18 @@ MemEncryptSevIsEnabled ( - VOID - ); - -+/** -+ Returns a boolean to indicate whether SEV live migration is enabled. -+ -+ @retval TRUE SEV live migration is enabled -+ @retval FALSE SEV live migration is not enabled -+**/ -+BOOLEAN -+EFIAPI -+MemEncryptSevLiveMigrationIsEnabled ( -+ VOID -+ ); -+ - /** - This function clears memory encryption bit for the memory region specified by - BaseAddress and NumPages from the current page table context. -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c -index 2816f85..df73a83 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c -@@ -17,9 +17,13 @@ - #include - #include - -+#include "PeiDxeMemEncryptSevLibInternal.h" -+ - STATIC BOOLEAN mSevStatus = FALSE; - STATIC BOOLEAN mSevEsStatus = FALSE; - STATIC BOOLEAN mSevStatusChecked = FALSE; -+STATIC BOOLEAN mSevLiveMigrationStatus = FALSE; -+STATIC BOOLEAN mSevLiveMigrationStatusChecked = FALSE; - - STATIC UINT64 mSevEncryptionMask = 0; - STATIC BOOLEAN mSevEncryptionMaskSaved = FALSE; -@@ -106,6 +110,24 @@ MemEncryptSevEsIsEnabled ( - return mSevEsStatus; - } - -+/** -+ Figures out if we are running inside KVM HVM and -+ KVM HVM supports SEV Live Migration feature. -+**/ -+STATIC -+VOID -+EFIAPI -+InternalDetectSevLiveMigrationFeature ( -+ VOID -+ ) -+{ -+ if (KvmDetectSevLiveMigrationFeature ()) { -+ mSevLiveMigrationStatus = TRUE; -+ } -+ -+ mSevLiveMigrationStatusChecked = TRUE; -+} -+ - /** - Returns a boolean to indicate whether SEV is enabled. - -@@ -125,6 +147,25 @@ MemEncryptSevIsEnabled ( - return mSevStatus; - } - -+/** -+ Returns a boolean to indicate whether SEV live migration is enabled. -+ -+ @retval TRUE SEV live migration is enabled -+ @retval FALSE SEV live migration is not enabled -+**/ -+BOOLEAN -+EFIAPI -+MemEncryptSevLiveMigrationIsEnabled ( -+ VOID -+ ) -+{ -+ if (!mSevLiveMigrationStatusChecked) { -+ InternalDetectSevLiveMigrationFeature (); -+ } -+ -+ return mSevLiveMigrationStatus; -+} -+ - /** - Returns the SEV encryption mask. - -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c -index b4a9f46..30f2d90 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c -@@ -16,6 +16,8 @@ - #include - #include - -+#include "PeiDxeMemEncryptSevLibInternal.h" -+ - /** - Locate the page range that covers the initial (pre-SMBASE-relocation) SMRAM - Save State Map. -@@ -61,3 +63,58 @@ MemEncryptSevLocateInitialSmramSaveStateMapPages ( - - return RETURN_SUCCESS; - } -+ -+/** -+ Figures out if we are running inside KVM HVM and -+ KVM HVM supports SEV Live Migration feature. -+ -+ @retval TRUE SEV live migration is supported. -+ @retval FALSE SEV live migration is not supported. -+**/ -+BOOLEAN -+EFIAPI -+KvmDetectSevLiveMigrationFeature ( -+ VOID -+ ) -+{ -+ CHAR8 Signature[13]; -+ UINT32 mKvmLeaf; -+ UINT32 RegEax; -+ UINT32 RegEbx; -+ UINT32 RegEcx; -+ UINT32 RegEdx; -+ -+ Signature[12] = '\0'; -+ for (mKvmLeaf = 0x40000000; mKvmLeaf < 0x40010000; mKvmLeaf += 0x100) { -+ AsmCpuid ( -+ mKvmLeaf, -+ NULL, -+ (UINT32 *) &Signature[0], -+ (UINT32 *) &Signature[4], -+ (UINT32 *) &Signature[8]); -+ -+ if (AsciiStrCmp (Signature, "KVMKVMKVM") == 0) { -+ DEBUG (( -+ DEBUG_INFO, -+ "%a: KVM Detected, signature = %a\n", -+ __FUNCTION__, -+ Signature -+ )); -+ -+ RegEax = mKvmLeaf + 1; -+ RegEcx = 0; -+ AsmCpuid (mKvmLeaf + 1, &RegEax, &RegEbx, &RegEcx, &RegEdx); -+ if ((RegEax & KVM_FEATURE_MIGRATION_CONTROL) != 0) { -+ DEBUG (( -+ DEBUG_INFO, -+ "%a: SEV Live Migration feature supported\n", -+ __FUNCTION__ -+ )); -+ -+ return TRUE; -+ } -+ } -+ } -+ -+ return FALSE; -+} -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.h b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.h -new file mode 100644 -index 0000000..30cf5de ---- /dev/null -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.h -@@ -0,0 +1,31 @@ -+/** @file -+ -+ Secure Encrypted Virtualization (SEV) library helper function -+ -+ Copyright (c) 2021, AMD Incorporated. All rights reserved.
-+ -+ SPDX-License-Identifier: BSD-2-Clause-Patent -+ -+**/ -+ -+#ifndef PEI_DXE_MEM_ENCRYPT_SEV_LIB_INTERNAL_H_ -+#define PEI_DXE_MEM_ENCRYPT_SEV_LIB_INTERNAL_H_ -+ -+#include -+ -+#define KVM_FEATURE_MIGRATION_CONTROL BIT17 -+ -+/** -+ Figures out if we are running inside KVM HVM and -+ KVM HVM supports SEV Live Migration feature. -+ -+ @retval TRUE SEV live migration is supported. -+ @retval FALSE SEV live migration is not supported. -+**/ -+BOOLEAN -+EFIAPI -+KvmDetectSevLiveMigrationFeature( -+ VOID -+ ); -+ -+#endif // PEI_DXE_MEM_ENCRYPT_SEV_LIB_INTERNAL_H_ -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c -index e2fd109..9293b56 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c -@@ -17,9 +17,13 @@ - #include - #include - -+#include "PeiDxeMemEncryptSevLibInternal.h" -+ - STATIC BOOLEAN mSevStatus = FALSE; - STATIC BOOLEAN mSevEsStatus = FALSE; - STATIC BOOLEAN mSevStatusChecked = FALSE; -+STATIC BOOLEAN mSevLiveMigrationStatus = FALSE; -+STATIC BOOLEAN mSevLiveMigrationStatusChecked = FALSE; - - STATIC UINT64 mSevEncryptionMask = 0; - STATIC BOOLEAN mSevEncryptionMaskSaved = FALSE; -@@ -87,6 +91,24 @@ InternalMemEncryptSevStatus ( - mSevStatusChecked = TRUE; - } - -+/** -+ Figures out if we are running inside KVM HVM and -+ KVM HVM supports SEV Live Migration feature. -+**/ -+STATIC -+VOID -+EFIAPI -+InternalDetectSevLiveMigrationFeature ( -+ VOID -+ ) -+{ -+ if (KvmDetectSevLiveMigrationFeature ()) { -+ mSevLiveMigrationStatus = TRUE; -+ } -+ -+ mSevLiveMigrationStatusChecked = TRUE; -+} -+ - /** - Returns a boolean to indicate whether SEV-ES is enabled. - -@@ -125,6 +147,25 @@ MemEncryptSevIsEnabled ( - return mSevStatus; - } - -+/** -+ Returns a boolean to indicate whether SEV live migration is enabled. -+ -+ @retval TRUE SEV live migration is enabled -+ @retval FALSE SEV live migration is not enabled -+**/ -+BOOLEAN -+EFIAPI -+MemEncryptSevLiveMigrationIsEnabled ( -+ VOID -+ ) -+{ -+ if (!mSevLiveMigrationStatusChecked) { -+ InternalDetectSevLiveMigrationFeature (); -+ } -+ -+ return mSevLiveMigrationStatus; -+} -+ - /** - Returns the SEV encryption mask. - -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c -index 56d8f3f..d9f7bef 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c -@@ -100,6 +100,24 @@ MemEncryptSevIsEnabled ( - return Msr.Bits.SevBit ? TRUE : FALSE; - } - -+/** -+ Returns a boolean to indicate whether SEV live migration is enabled. -+ -+ @retval TRUE SEV live migration is enabled -+ @retval FALSE SEV live migration is not enabled -+**/ -+BOOLEAN -+EFIAPI -+MemEncryptSevLiveMigrationIsEnabled ( -+ VOID -+ ) -+{ -+ // -+ // Not used in SEC phase. -+ // -+ return FALSE; -+} -+ - /** - Returns the SEV encryption mask. - --- -2.17.1 - diff --git a/0040-OvmfPkg-BaseMemEncryptLib-Hypercall-API-for-page-enc.patch b/0040-OvmfPkg-BaseMemEncryptLib-Hypercall-API-for-page-enc.patch deleted file mode 100644 index 205c5b1..0000000 --- a/0040-OvmfPkg-BaseMemEncryptLib-Hypercall-API-for-page-enc.patch +++ /dev/null @@ -1,298 +0,0 @@ -From f622069729e0abc9b676af25a90b9e142419cf1a Mon Sep 17 00:00:00 2001 -From: Ashish Kalra -Date: Thu, 19 Aug 2021 13:03:00 +0000 -Subject: [PATCH 40/46] OvmfPkg/BaseMemEncryptLib: Hypercall API for page - encryption state change - -Add API to issue hypercall on page encryption state change. - -By default all the SEV guest memory regions are considered encrypted, -if a guest changes the encryption attribute of the page (e.g mark a -page as decrypted) then notify hypervisor. Hypervisor will need to -track the unencrypted pages. The information will be used during -guest live migration, guest page migration and guest debugging. - -This hypercall is used to notify hypervisor when the page's -encryption state changes. - -Cc: Jordan Justen -Cc: Ard Biesheuvel -Signed-off-by: Brijesh Singh -Signed-off-by: Ashish Kalra -Change-Id: Ic0dcf854947f35f633137d2bb052dc79d111971f ---- - OvmfPkg/Include/Library/MemEncryptSevLib.h | 52 +++++++++++++++ - .../DxeMemEncryptSevLib.inf | 1 + - .../Ia32/MemEncryptSevLib.c | 27 ++++++++ - .../PeiMemEncryptSevLib.inf | 1 + - .../SecMemEncryptSevLibInternal.c | 20 ++++++ - .../X64/AsmHelperStub.nasm | 33 ++++++++++ - .../X64/MemEncryptSevLib.c | 64 +++++++++++++++++++ - 7 files changed, 198 insertions(+) - create mode 100644 OvmfPkg/Library/BaseMemEncryptSevLib/X64/AsmHelperStub.nasm - -diff --git a/OvmfPkg/Include/Library/MemEncryptSevLib.h b/OvmfPkg/Include/Library/MemEncryptSevLib.h -index ea251f1..8ed6242 100644 ---- a/OvmfPkg/Include/Library/MemEncryptSevLib.h -+++ b/OvmfPkg/Include/Library/MemEncryptSevLib.h -@@ -215,4 +215,56 @@ MemEncryptSevClearMmioPageEncMask ( - IN UINTN NumPages - ); - -+/** -+ This hypercall is used to notify hypervisor when the page's encryption -+ state changes. -+ -+ @param[in] PhysicalAddress The physical address that is the start address -+ of a memory region. -+ @param[in] Pages Number of pages in memory region. -+ @param[in] IsEncrypted Encrypted or Decrypted. -+ -+ @retval RETURN_SUCCESS Hypercall returned success. -+ @retval RETURN_UNSUPPORTED Hypercall not supported. -+ @retval RETURN_NO_MAPPING Hypercall returned error. -+**/ -+RETURN_STATUS -+EFIAPI -+SetMemoryEncDecHypercall3 ( -+ IN UINTN PhysicalAddress, -+ IN UINTN Pages, -+ IN BOOLEAN IsEncrypted -+ ); -+ -+#define KVM_HC_MAP_GPA_RANGE 12 -+#define KVM_MAP_GPA_RANGE_PAGE_SZ_4K 0 -+#define KVM_MAP_GPA_RANGE_PAGE_SZ_2M BIT0 -+#define KVM_MAP_GPA_RANGE_PAGE_SZ_1G BIT1 -+#define KVM_MAP_GPA_RANGE_ENC_STATE(n) ((n) << 4) -+#define KVM_MAP_GPA_RANGE_ENCRYPTED KVM_MAP_GPA_RANGE_ENC_STATE(1) -+#define KVM_MAP_GPA_RANGE_DECRYPTED KVM_MAP_GPA_RANGE_ENC_STATE(0) -+ -+/** -+ Interface exposed by the ASM implementation of the core hypercall -+ -+ @param[in] HypercallNum KVM_HC_MAP_GPA_RANGE hypercall. -+ @param[in] PhysicalAddress The physical address that is the start address -+ of a memory region. -+ @param[in] Pages Number of pages in memory region. -+ @param[in] Attributes Bits 3:0 - preferred page size encoding, -+ 0 = 4kb, 1 = 2mb, 2 = 1gb, etc... -+ Bit 4 - plaintext = 0, encrypted = 1 -+ Bits 63:5 - reserved (must be zero) -+ -+ @retval Hypercall returned status. -+**/ -+UINTN -+EFIAPI -+SetMemoryEncDecHypercall3AsmStub ( -+ IN UINTN HypercallNum, -+ IN UINTN PhysicalAddress, -+ IN UINTN Pages, -+ IN UINTN Attributes -+ ); -+ - #endif // _MEM_ENCRYPT_SEV_LIB_H_ -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -index dc32929..8ea8d3a 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -@@ -38,6 +38,7 @@ - X64/PeiDxeVirtualMemory.c - X64/VirtualMemory.c - X64/VirtualMemory.h -+ X64/AsmHelperStub.nasm - - [Sources.IA32] - Ia32/MemEncryptSevLib.c -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/Ia32/MemEncryptSevLib.c b/OvmfPkg/Library/BaseMemEncryptSevLib/Ia32/MemEncryptSevLib.c -index be260e0..516d639 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/Ia32/MemEncryptSevLib.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/Ia32/MemEncryptSevLib.c -@@ -136,3 +136,30 @@ MemEncryptSevClearMmioPageEncMask ( - // - return RETURN_UNSUPPORTED; - } -+ -+/** -+ This hyercall is used to notify hypervisor when the page's encryption -+ state changes. -+ -+ @param[in] PhysicalAddress The physical address that is the start address -+ of a memory region. -+ @param[in] Pages Number of Pages in the memory region. -+ @param[in] IsEncrypted Encrypted or Decrypted. -+ -+ @retval RETURN_SUCCESS Hypercall returned success. -+ @retval RETURN_UNSUPPORTED Hypercall not supported. -+ @retval RETURN_NO_MAPPING Hypercall returned error. -+**/ -+RETURN_STATUS -+EFIAPI -+SetMemoryEncDecHypercall3 ( -+ IN UINTN PhysicalAddress, -+ IN UINTN Pages, -+ IN BOOLEAN IsEncrypted -+ ) -+{ -+ // -+ // Memory encryption bit is not accessible in 32-bit mode -+ // -+ return RETURN_UNSUPPORTED; -+} -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf -index 03a78c3..3233ca7 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf -@@ -38,6 +38,7 @@ - X64/PeiDxeVirtualMemory.c - X64/VirtualMemory.c - X64/VirtualMemory.h -+ X64/AsmHelperStub.nasm - - [Sources.IA32] - Ia32/MemEncryptSevLib.c -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c -index d9f7bef..ebb1c39 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c -@@ -118,6 +118,26 @@ MemEncryptSevLiveMigrationIsEnabled ( - return FALSE; - } - -+/** -+ Interface exposed by the ASM implementation of the core hypercall -+ -+ @retval Hypercall returned status. -+**/ -+UINTN -+EFIAPI -+SetMemoryEncDecHypercall3AsmStub ( -+ IN UINTN HypercallNum, -+ IN UINTN PhysicalAddress, -+ IN UINTN Pages, -+ IN UINTN Attributes -+ ) -+{ -+ // -+ // Not used in SEC phase. -+ // -+ return RETURN_UNSUPPORTED; -+} -+ - /** - Returns the SEV encryption mask. - -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/AsmHelperStub.nasm b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/AsmHelperStub.nasm -new file mode 100644 -index 0000000..0ec35dd ---- /dev/null -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/AsmHelperStub.nasm -@@ -0,0 +1,33 @@ -+/** @file -+ -+ ASM helper stub to invoke hypercall -+ -+ Copyright (c) 2021, AMD Incorporated. All rights reserved.
-+ -+ SPDX-License-Identifier: BSD-2-Clause-Patent -+ -+**/ -+ -+DEFAULT REL -+SECTION .text -+ -+; UINTN -+; EFIAPI -+; SetMemoryEncDecHypercall3AsmStub ( -+; IN UINTN HypercallNum, -+; IN UINTN Arg1, -+; IN UINTN Arg2, -+; IN UINTN Arg3 -+; ); -+global ASM_PFX(SetMemoryEncDecHypercall3AsmStub) -+ASM_PFX(SetMemoryEncDecHypercall3AsmStub): -+ ; UEFI calling conventions require RBX to -+ ; be nonvolatile/callee-saved. -+ push rbx -+ mov rax, rcx ; Copy HypercallNumber to rax -+ mov rbx, rdx ; Copy Arg1 to the register expected by KVM -+ mov rcx, r8 ; Copy Arg2 to register expected by KVM -+ mov rdx, r9 ; Copy Arg3 to register expected by KVM -+ vmmcall ; Call VMMCALL -+ pop rbx -+ ret -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c -index a57e8fd..a6246d4 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c -@@ -143,3 +143,67 @@ MemEncryptSevClearMmioPageEncMask ( - ); - - } -+ -+/** -+ This hyercall is used to notify hypervisor when the page's encryption -+ state changes. -+ -+ @param[in] PhysicalAddress The physical address that is the start address -+ of a memory region. -+ @param[in] Pages Number of Pages in the memory region. -+ @param[in] IsEncrypted Encrypted or Decrypted. -+ -+ @retval RETURN_SUCCESS Hypercall returned success. -+ @retval RETURN_UNSUPPORTED Hypercall not supported. -+ @retval RETURN_NO_MAPPING Hypercall returned error. -+**/ -+RETURN_STATUS -+EFIAPI -+SetMemoryEncDecHypercall3 ( -+ IN UINTN PhysicalAddress, -+ IN UINTN Pages, -+ IN BOOLEAN IsEncrypted -+ ) -+{ -+ RETURN_STATUS Ret; -+ UINTN Error; -+ UINTN EncryptState; -+ -+ Ret = RETURN_UNSUPPORTED; -+ -+ if (MemEncryptSevLiveMigrationIsEnabled ()) { -+ Ret = RETURN_SUCCESS; -+ // -+ // The encryption bit is set/clear on the smallest page size, hence -+ // use the 4k page size in MAP_GPA_RANGE hypercall below. -+ // -+ // Also, when the GCD map is being walked and the c-bit being cleared -+ // from MMIO and NonExistent memory spaces, the physical address -+ // range being passed may not be page-aligned and adding an assert -+ // here prevents booting. Hence, rounding it down when calling -+ // SetMemoryEncDecHypercall3AsmStub below. -+ // -+ -+ EncryptState = IsEncrypted ? KVM_MAP_GPA_RANGE_ENCRYPTED : -+ KVM_MAP_GPA_RANGE_DECRYPTED; -+ -+ Error = SetMemoryEncDecHypercall3AsmStub ( -+ KVM_HC_MAP_GPA_RANGE, -+ PhysicalAddress & ~EFI_PAGE_MASK, -+ Pages, -+ KVM_MAP_GPA_RANGE_PAGE_SZ_4K | EncryptState -+ ); -+ -+ if (Error != 0) { -+ DEBUG ((DEBUG_ERROR, -+ "SetMemoryEncDecHypercall3 failed, Phys = %x, Pages = %d, Err = %Ld\n", -+ PhysicalAddress, -+ Pages, -+ (INT64)Error)); -+ -+ Ret = RETURN_NO_MAPPING; -+ } -+ } -+ -+ return Ret; -+} --- -2.17.1 - diff --git a/0041-OvmfPkg-BaseMemEncryptLib-Invoke-page-encryption-sta.patch b/0041-OvmfPkg-BaseMemEncryptLib-Invoke-page-encryption-sta.patch deleted file mode 100644 index 1c865a3..0000000 --- a/0041-OvmfPkg-BaseMemEncryptLib-Invoke-page-encryption-sta.patch +++ /dev/null @@ -1,91 +0,0 @@ -From ee0ca422f17da55350c4da25ef9ca38127d79e3f Mon Sep 17 00:00:00 2001 -From: Ashish Kalra -Date: Thu, 19 Aug 2021 13:04:56 +0000 -Subject: [PATCH 41/46] OvmfPkg/BaseMemEncryptLib: Invoke page encryption state - change hypercall - -Invoke the hypercall API to notify hypervisor when the page's -encryption state changes. - -Cc: Jordan Justen -Cc: Ard Biesheuvel -Signed-off-by: Brijesh Singh -Signed-off-by: Ashish Kalra -Change-Id: Ia61155777fe3bf66f1d059978c0e8b1d1c833ef7 ---- - .../X64/PeiDxeVirtualMemory.c | 20 +++++++++++++++++++ - 1 file changed, 20 insertions(+) - -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c -index 6726010..0b67577 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c -@@ -582,10 +582,13 @@ SetMemoryEncDec ( - PAGE_MAP_AND_DIRECTORY_POINTER *PageDirectoryPointerEntry; - PAGE_TABLE_1G_ENTRY *PageDirectory1GEntry; - PAGE_TABLE_ENTRY *PageDirectory2MEntry; -+ PHYSICAL_ADDRESS OrigPhysicalAddress; - PAGE_TABLE_4K_ENTRY *PageTableEntry; - UINT64 PgTableMask; - UINT64 AddressEncMask; - BOOLEAN IsWpEnabled; -+ BOOLEAN CBitChanged; -+ UINTN OrigLength; - RETURN_STATUS Status; - PHYSICAL_ADDRESS PageAddress; - UINTN PageNum; -@@ -642,6 +645,9 @@ SetMemoryEncDec ( - } - - Status = EFI_SUCCESS; -+ OrigLength = Length; -+ CBitChanged = FALSE; -+ OrigPhysicalAddress = PhysicalAddress; - - while (Length != 0) - { -@@ -702,6 +708,7 @@ SetMemoryEncDec ( - )); - PhysicalAddress += BIT30; - Length -= BIT30; -+ CBitChanged = TRUE; - } else { - // - // We must split the page -@@ -756,6 +763,7 @@ SetMemoryEncDec ( - SetOrClearCBit (&PageDirectory2MEntry->Uint64, Mode); - PhysicalAddress += BIT21; - Length -= BIT21; -+ CBitChanged = TRUE; - } else { - // - // We must split up this page into 4K pages -@@ -798,6 +806,7 @@ SetMemoryEncDec ( - SetOrClearCBit (&PageTableEntry->Uint64, Mode); - PhysicalAddress += EFI_PAGE_SIZE; - Length -= EFI_PAGE_SIZE; -+ CBitChanged = TRUE; - } - } - } -@@ -815,6 +824,17 @@ SetMemoryEncDec ( - // - CpuFlushTlb(); - -+ // -+ // Notify Hypervisor on C-bit status -+ // -+ if (CBitChanged) { -+ Status = SetMemoryEncDecHypercall3 ( -+ OrigPhysicalAddress, -+ EFI_SIZE_TO_PAGES (OrigLength), -+ (Mode == SetCBit) ? TRUE : FALSE -+ ); -+ } -+ - Done: - // - // Restore page table write protection, if any. --- -2.17.1 - diff --git a/0042-OvmfPkg-VmgExitLib-Encryption-state-change-hypercall.patch b/0042-OvmfPkg-VmgExitLib-Encryption-state-change-hypercall.patch deleted file mode 100644 index c37eb4a..0000000 --- a/0042-OvmfPkg-VmgExitLib-Encryption-state-change-hypercall.patch +++ /dev/null @@ -1,46 +0,0 @@ -From b9e68850125194c9c183a0ab2239a6c73b1d67c3 Mon Sep 17 00:00:00 2001 -From: Ashish Kalra -Date: Thu, 19 Aug 2021 13:06:40 +0000 -Subject: [PATCH 42/46] OvmfPkg/VmgExitLib: Encryption state change hypercall - support in VC handler - -Make the #VC handler aware of the page encryption state -change hypercall by adding support to check KVM_HC_MAP_GPA_RANGE -hypercall and add the additional register values used by -hypercall in the GHCB. - -Cc: Jordan Justen -Cc: Ard Biesheuvel -Signed-off-by: Ashish Kalra -Change-Id: Iaab77f063455837393f290ee80962e6f3d2f5593 ---- - OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c b/OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c -index 41b0c8c..2d06343 100644 ---- a/OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c -+++ b/OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c -@@ -1171,6 +1171,19 @@ VmmCallExit ( - Ghcb->SaveArea.Cpl = (UINT8) (Regs->Cs & 0x3); - VmgSetOffsetValid (Ghcb, GhcbCpl); - -+ if (Regs->Rax == KVM_HC_MAP_GPA_RANGE) { -+ // -+ // KVM_HC_MAP_GPA_RANGE hypercall requires these -+ // extra registers. -+ // -+ Ghcb->SaveArea.Rbx = Regs->Rbx; -+ VmgSetOffsetValid (Ghcb, GhcbRbx); -+ Ghcb->SaveArea.Rcx = Regs->Rcx; -+ VmgSetOffsetValid (Ghcb, GhcbRcx); -+ Ghcb->SaveArea.Rdx = Regs->Rdx; -+ VmgSetOffsetValid (Ghcb, GhcbRdx); -+ } -+ - Status = VmgExit (Ghcb, SVM_EXIT_VMMCALL, 0, 0); - if (Status != 0) { - return Status; --- -2.17.1 - diff --git a/0043-OvmfPkg-PlatformPei-Mark-SEC-GHCB-page-as-unencrypte.patch b/0043-OvmfPkg-PlatformPei-Mark-SEC-GHCB-page-as-unencrypte.patch deleted file mode 100644 index dd2ca14..0000000 --- a/0043-OvmfPkg-PlatformPei-Mark-SEC-GHCB-page-as-unencrypte.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 4f2273d02335039e85d8b47b1e43715e3db86c33 Mon Sep 17 00:00:00 2001 -From: Ashish Kalra -Date: Thu, 19 Aug 2021 13:09:07 +0000 -Subject: [PATCH 43/46] OvmfPkg/PlatformPei: Mark SEC GHCB page as unencrypted - via hypercall - -Mark the SEC GHCB page (that is mapped as unencrypted in -ResetVector code) in the hypervisor's guest page encryption -state tracking. - -Cc: Jordan Justen -Cc: Ard Biesheuvel -Signed-off-by: Ashish Kalra -Change-Id: Iedcde6367e12106e44e0cb1cc07a4ed386f67c19 ---- - OvmfPkg/PlatformPei/AmdSev.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/OvmfPkg/PlatformPei/AmdSev.c b/OvmfPkg/PlatformPei/AmdSev.c -index a8bf610..1d38056 100644 ---- a/OvmfPkg/PlatformPei/AmdSev.c -+++ b/OvmfPkg/PlatformPei/AmdSev.c -@@ -52,6 +52,17 @@ AmdSevEsInitialize ( - PcdStatus = PcdSetBoolS (PcdSevEsIsEnabled, TRUE); - ASSERT_RETURN_ERROR (PcdStatus); - -+ // -+ // The SEC Ghcb setup during reset-vector needs to be marked as -+ // decrypted in the hypervisor's guest page encryption state -+ // tracking. -+ // -+ SetMemoryEncDecHypercall3 ( -+ FixedPcdGet32 (PcdOvmfSecGhcbBase), -+ EFI_SIZE_TO_PAGES(FixedPcdGet32 (PcdOvmfSecGhcbSize)), -+ FALSE -+ ); -+ - // - // Allocate GHCB and per-CPU variable pages. - // Since the pages must survive across the UEFI to OS transition --- -2.17.1 - diff --git a/0044-OvmfPkg-AmdSevDxe-Add-support-for-SEV-live-migration.patch b/0044-OvmfPkg-AmdSevDxe-Add-support-for-SEV-live-migration.patch deleted file mode 100644 index edb8b39..0000000 --- a/0044-OvmfPkg-AmdSevDxe-Add-support-for-SEV-live-migration.patch +++ /dev/null @@ -1,185 +0,0 @@ -From f751df6533d370a14412fab4850ad05ce99b7b85 Mon Sep 17 00:00:00 2001 -From: Ashish Kalra -Date: Thu, 19 Aug 2021 13:14:31 +0000 -Subject: [PATCH 44/46] OvmfPkg/AmdSevDxe: Add support for SEV live migration. - -Check for SEV live migration feature support, if detected -setup a new UEFI enviroment variable to indicate OVMF -support for SEV live migration. - -This environment variable is created by UEFI but consumed -by the (guest) linux kernel. This is actually part of a -3-way negotiation of the live migration feature between -hypervisor, guest OVMF and guest kernel. Host indicates -support for live migration, which is detected by OVMF -and correspondingly OVMF sets this SetLiveMigrationEnabled -UEFI variable, which is read by the guest kernel and it -indicates to the guest kernel that both host and OVMF -support and have enabled the live migration feature. - -The new runtime UEFI environment variable is set via the -notification function registered for the -EFI_END_OF_DXE_EVENT_GROUP_GUID event in AmdSevDxe driver. - -AmdSevDxe module is an apriori driver so it gets loaded between PEI -and DXE phases and the SetVariable call will fail at the driver's -entry point as the Variable DXE module is still not loaded yet. -So we need to wait for an event notification which is signaled -after the Variable DXE module is loaded, hence, using the -EndOfDxe event notification to make this call. - -Signed-off-by: Ashish Kalra -Change-Id: Iff6eee8f56fd60d1aedf48a5253b7b09e9aa9c7e ---- - OvmfPkg/AmdSevDxe/AmdSevDxe.c | 64 ++++++++++++++++++++++ - OvmfPkg/AmdSevDxe/AmdSevDxe.inf | 4 ++ - OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h | 20 +++++++ - OvmfPkg/OvmfPkg.dec | 1 + - 4 files changed, 89 insertions(+) - create mode 100644 OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h - -diff --git a/OvmfPkg/AmdSevDxe/AmdSevDxe.c b/OvmfPkg/AmdSevDxe/AmdSevDxe.c -index c66c4e9..0750949 100644 ---- a/OvmfPkg/AmdSevDxe/AmdSevDxe.c -+++ b/OvmfPkg/AmdSevDxe/AmdSevDxe.c -@@ -15,10 +15,47 @@ - #include - #include - #include -+#include - #include - #include -+#include -+#include -+#include - #include - -+STATIC -+VOID -+EFIAPI -+AmdSevDxeOnEndOfDxe ( -+ IN EFI_EVENT Event, -+ IN VOID *EventToSignal -+ ) -+{ -+ EFI_STATUS Status; -+ BOOLEAN SevLiveMigrationEnabled; -+ -+ SevLiveMigrationEnabled = MemEncryptSevLiveMigrationIsEnabled (); -+ -+ if (SevLiveMigrationEnabled) { -+ Status = gRT->SetVariable ( -+ L"SevLiveMigrationEnabled", -+ &gAmdSevMemEncryptGuid, -+ EFI_VARIABLE_NON_VOLATILE | -+ EFI_VARIABLE_BOOTSERVICE_ACCESS | -+ EFI_VARIABLE_RUNTIME_ACCESS, -+ sizeof SevLiveMigrationEnabled, -+ &SevLiveMigrationEnabled -+ ); -+ -+ DEBUG (( -+ DEBUG_INFO, -+ "%a: Setting SevLiveMigrationEnabled variable, status = %lx\n", -+ __FUNCTION__, -+ Status -+ )); -+ } -+} -+ - EFI_STATUS - EFIAPI - AmdSevDxeEntryPoint ( -@@ -30,6 +67,7 @@ AmdSevDxeEntryPoint ( - EFI_GCD_MEMORY_SPACE_DESCRIPTOR *AllDescMap; - UINTN NumEntries; - UINTN Index; -+ EFI_EVENT Event; - - // - // Do nothing when SEV is not enabled -@@ -130,5 +168,31 @@ AmdSevDxeEntryPoint ( - } - } - -+ // -+ // AmdSevDxe module is an apriori driver so it gets loaded between PEI -+ // and DXE phases and the SetVariable call will fail at the driver's -+ // entry point as the Variable DXE module is still not loaded yet. -+ // So we need to wait for an event notification which is signaled -+ // after the Variable DXE module is loaded, hence, using the -+ // EndOfDxe event notification to make this call. -+ // -+ // Register EFI_END_OF_DXE_EVENT_GROUP_GUID event. -+ // The notification function sets the runtime variable indicating OVMF -+ // support for SEV live migration. -+ // -+ Status = gBS->CreateEventEx ( -+ EVT_NOTIFY_SIGNAL, -+ TPL_CALLBACK, -+ AmdSevDxeOnEndOfDxe, -+ NULL, -+ &gEfiEndOfDxeEventGroupGuid, -+ &Event -+ ); -+ -+ if (EFI_ERROR (Status)) { -+ DEBUG ((DEBUG_ERROR, "%a: CreateEventEx(): %r\n", -+ __FUNCTION__, Status)); -+ } -+ - return EFI_SUCCESS; - } -diff --git a/OvmfPkg/AmdSevDxe/AmdSevDxe.inf b/OvmfPkg/AmdSevDxe/AmdSevDxe.inf -index 0676fcc..2ad1fb8 100644 ---- a/OvmfPkg/AmdSevDxe/AmdSevDxe.inf -+++ b/OvmfPkg/AmdSevDxe/AmdSevDxe.inf -@@ -45,3 +45,7 @@ - - [Pcd] - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId -+ -+[Guids] -+ gAmdSevMemEncryptGuid -+ gEfiEndOfDxeEventGroupGuid ## CONSUMES ## Event -diff --git a/OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h b/OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h -new file mode 100644 -index 0000000..1c948fb ---- /dev/null -+++ b/OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h -@@ -0,0 +1,20 @@ -+/** @file -+ -+ AMD Memory Encryption GUID, define a new GUID for defining -+ new UEFI environment variables assocaiated with SEV Memory Encryption. -+ -+ Copyright (c) 2021, AMD Inc. All rights reserved.
-+ -+ SPDX-License-Identifier: BSD-2-Clause-Patent -+ -+**/ -+ -+#ifndef __AMD_SEV_MEMENCRYPT_LIB_H__ -+#define __AMD_SEV_MEMENCRYPT_LIB_H__ -+ -+#define AMD_SEV_MEMENCRYPT_GUID \ -+{0x0cf29b71, 0x9e51, 0x433a, {0xa3, 0xb7, 0x81, 0xf3, 0xab, 0x16, 0xb8, 0x75}} -+ -+extern EFI_GUID gAmdSevMemEncryptGuid; -+ -+#endif -diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec -index 7e6a6a2..b6f88e0 100644 ---- a/OvmfPkg/OvmfPkg.dec -+++ b/OvmfPkg/OvmfPkg.dec -@@ -128,6 +128,7 @@ - gQemuKernelLoaderFsMediaGuid = {0x1428f772, 0xb64a, 0x441e, {0xb8, 0xc3, 0x9e, 0xbd, 0xd7, 0xf8, 0x93, 0xc7}} - gGrubFileGuid = {0xb5ae312c, 0xbc8a, 0x43b1, {0x9c, 0x62, 0xeb, 0xb8, 0x26, 0xdd, 0x5d, 0x07}} - gConfidentialComputingSecretGuid = {0xadf956ad, 0xe98c, 0x484c, {0xae, 0x11, 0xb5, 0x1c, 0x7d, 0x33, 0x64, 0x47}} -+ gAmdSevMemEncryptGuid = {0x0cf29b71, 0x9e51, 0x433a, {0xa3, 0xb7, 0x81, 0xf3, 0xab, 0x16, 0xb8, 0x75}} - - [Ppis] - # PPI whose presence in the PPI database signals that the TPM base address --- -2.17.1 - diff --git a/0045-anolis-OvmfPkg-BaseMemcryptSevLib-Correct-the-calcul.patch b/0045-anolis-OvmfPkg-BaseMemcryptSevLib-Correct-the-calcul.patch deleted file mode 100644 index d152d63..0000000 --- a/0045-anolis-OvmfPkg-BaseMemcryptSevLib-Correct-the-calcul.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 1f244d5fec68cbd76fd902819d906c5222577a69 Mon Sep 17 00:00:00 2001 -From: hanliyang -Date: Mon, 17 Jan 2022 01:19:21 -0500 -Subject: [PATCH 45/46] anolis: OvmfPkg/BaseMemcryptSevLib: Correct the - calculation of page range that notified to hypervisor - -Correct the calculation of page range that notified to hypervisor. - -Change-Id: Ie2ac4a4e894095ea9ae3b1d44afed04681b9d491 ---- - .../Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c -index 0b67577..4dbf829 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c -@@ -828,9 +828,13 @@ SetMemoryEncDec ( - // Notify Hypervisor on C-bit status - // - if (CBitChanged) { -+ UINTN StartPfn = OrigPhysicalAddress >> EFI_PAGE_SHIFT; -+ UINTN EndPfn = (OrigPhysicalAddress + OrigLength + -+ ((1 << EFI_PAGE_SHIFT) - 1)) >> EFI_PAGE_SHIFT; -+ - Status = SetMemoryEncDecHypercall3 ( - OrigPhysicalAddress, -- EFI_SIZE_TO_PAGES (OrigLength), -+ (EndPfn - StartPfn), - (Mode == SetCBit) ? TRUE : FALSE - ); - } --- -2.17.1 - diff --git a/0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch b/0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch deleted file mode 100644 index 5da0f2b..0000000 --- a/0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 901330a9161de852bf99ad7b2c629bae00af2b7a Mon Sep 17 00:00:00 2001 -From: hanliyang -Date: Sun, 19 Jun 2022 18:12:35 +0800 -Subject: [PATCH 46/46] anolis: OvmfPkg/BaseMemEncryptLib: Return SUCCESS if - not support SEV live migration - -Add this change to avoid trigger 'ASSERT_EFI_ERROR (Status = Unsupported)' -when QEMU doesn't support SEV live migration. - -Change-Id: I48066d6cf1b4357c984496bcb6450be4d35b7e16 ---- - OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c -index a6246d4..e50231c 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c -@@ -169,10 +169,12 @@ SetMemoryEncDecHypercall3 ( - UINTN Error; - UINTN EncryptState; - -- Ret = RETURN_UNSUPPORTED; -+ // -+ // Return success if not support migration. -+ // -+ Ret = RETURN_SUCCESS; - - if (MemEncryptSevLiveMigrationIsEnabled ()) { -- Ret = RETURN_SUCCESS; - // - // The encryption bit is set/clear on the smallest page size, hence - // use the 4k page size in MAP_GPA_RANGE hypercall below. --- -2.17.1 - diff --git a/0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch b/0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch deleted file mode 100644 index 00380bc..0000000 --- a/0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch +++ /dev/null @@ -1,144 +0,0 @@ -From 644748015685d9a13e43d7e689f1e7379adcc959 Mon Sep 17 00:00:00 2001 -From: Xin Jiang -Date: Fri, 12 Jan 2024 10:39:28 +0800 -Subject: [PATCH] anolis: OvmfPkg/BaseMemEncryptLib: Save memory encrypt status - in reserved memory - -The MMIO routine of VC handler will get memory encrypt status to -validate MMIO address. MemEncryptSevGetEncryptionMask() will enable -interrupt while interrupt must be disabled during VC. - -During DXE stage, VC routine as below: -CcExitHandleVc->MemEncryptSevGetAddressRangeState-> -MemEncryptSevGetEncryptionMask->PcdGet64(PcdPteMemoryEncryptionAddressOrMask) - -Unfortunately, PcdGet64() will enable interrupt in VC context. - -Change-Id: I89aedeac4a90ec79f9acb35daf638b7fb507f24c -Signed-off-by: Xin Jiang ---- - .../BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf | 4 ++++ - .../BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c | 10 ++-------- - OvmfPkg/OvmfPkg.dec | 4 ++++ - OvmfPkg/OvmfPkgX64.fdf | 5 ++++- - OvmfPkg/PlatformPei/AmdSev.c | 2 ++ - OvmfPkg/PlatformPei/Csv.c | 6 ++++++ - OvmfPkg/PlatformPei/PlatformPei.inf | 2 ++ - 7 files changed, 24 insertions(+), 9 deletions(-) - -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -index 8ea8d3a..55e75ef 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf -@@ -57,3 +57,7 @@ - - [Pcd] - gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask -+ -+[FixedPcd] -+ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusBase -+ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusSize -diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c -index df73a83..44d9ad1 100644 ---- a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c -+++ b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c -@@ -25,9 +25,6 @@ STATIC BOOLEAN mSevStatusChecked = FALSE; - STATIC BOOLEAN mSevLiveMigrationStatus = FALSE; - STATIC BOOLEAN mSevLiveMigrationStatusChecked = FALSE; - --STATIC UINT64 mSevEncryptionMask = 0; --STATIC BOOLEAN mSevEncryptionMaskSaved = FALSE; -- - /** - Reads and sets the status of SEV features. - -@@ -177,10 +174,7 @@ MemEncryptSevGetEncryptionMask ( - VOID - ) - { -- if (!mSevEncryptionMaskSaved) { -- mSevEncryptionMask = PcdGet64 (PcdPteMemoryEncryptionAddressOrMask); -- mSevEncryptionMaskSaved = TRUE; -- } -+ UINT64 *MemEncryptStatus = (UINT64 *)(UINT64)FixedPcdGet32 (PcdMemEncrpytStatusBase); - -- return mSevEncryptionMask; -+ return *MemEncryptStatus; - } -diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec -index b6f88e0..2c09ad4 100644 ---- a/OvmfPkg/OvmfPkg.dec -+++ b/OvmfPkg/OvmfPkg.dec -@@ -364,6 +364,10 @@ - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase|0|UINT32|0x60 - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize|0|UINT32|0x61 - -+ ## the base address of memory encryption status.^M -+ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusBase|0|UINT32|0x62 -+ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusSize|0|UINT32|0x63 -+ - [PcdsDynamic, PcdsDynamicEx] - gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2 - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10 -diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf -index 04efa62..0cc12b8 100644 ---- a/OvmfPkg/OvmfPkgX64.fdf -+++ b/OvmfPkg/OvmfPkgX64.fdf -@@ -94,7 +94,10 @@ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase|gUefiOvmfPkgTokenSpaceGui - 0x00F000|0x001000 - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize - --0x010000|0x010000 -+0x010000|0x001000 -+gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusBase|gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusSize -+ -+0x011000|0x00F000 - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize - - 0x020000|0x0E0000 -diff --git a/OvmfPkg/PlatformPei/AmdSev.c b/OvmfPkg/PlatformPei/AmdSev.c -index 1d38056..33fc83a 100644 ---- a/OvmfPkg/PlatformPei/AmdSev.c -+++ b/OvmfPkg/PlatformPei/AmdSev.c -@@ -167,6 +167,8 @@ AmdSevInitialize ( - PcdStatus = PcdSet64S (PcdPteMemoryEncryptionAddressOrMask, EncryptionMask); - ASSERT_RETURN_ERROR (PcdStatus); - -+ *(UINT64 *)(UINT64)FixedPcdGet32 (PcdMemEncrpytStatusBase) = EncryptionMask; -+ - DEBUG ((DEBUG_INFO, "SEV is enabled (mask 0x%lx)\n", EncryptionMask)); - - // -diff --git a/OvmfPkg/PlatformPei/Csv.c b/OvmfPkg/PlatformPei/Csv.c -index f7c87ac..f8293ab 100644 ---- a/OvmfPkg/PlatformPei/Csv.c -+++ b/OvmfPkg/PlatformPei/Csv.c -@@ -32,6 +32,12 @@ CsvInitializeMemInfo ( - UINT64 LowerMemorySize; - UINT64 UpperMemorySize; - -+ BuildMemoryAllocationHob ( -+ (EFI_PHYSICAL_ADDRESS)(UINTN) FixedPcdGet32 (PcdMemEncrpytStatusBase), -+ (UINT64)(UINTN) FixedPcdGet32 (PcdMemEncrpytStatusSize), -+ EfiReservedMemoryType -+ ); -+ - if (!CsvIsEnabled ()) { - return ; - } -diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf -index bed4dcf..7bf667c 100644 ---- a/OvmfPkg/PlatformPei/PlatformPei.inf -+++ b/OvmfPkg/PlatformPei/PlatformPei.inf -@@ -125,6 +125,8 @@ - gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase - gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize -+ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusBase -+ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusSize - - [FeaturePcd] - gUefiOvmfPkgTokenSpaceGuid.PcdCsmEnable --- -2.17.1 - diff --git a/0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch b/0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch deleted file mode 100644 index e80d369..0000000 --- a/0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 02916fa2f7b92b060bbdc70b2083d0fcf6139624 Mon Sep 17 00:00:00 2001 -From: Dov Murik -Date: Thu, 15 Dec 2022 13:11:51 +0000 -Subject: [PATCH] OvmfPkg/AmdSev/SecretDxe: Allocate secret location as - EfiACPIReclaimMemory - -BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4186 - -Commit 079a58276b98 ("OvmfPkg/AmdSev/SecretPei: Mark SEV launch secret -area as reserved") marked the launch secret area itself (1 page) as -reserved so the guest OS can use it during the lifetime of the OS. -However, the address and size of the secret area held in the -CONFIDENTIAL_COMPUTING_SECRET_LOCATION struct are declared as STATIC in -OVMF (in AmdSev/SecretDxe); therefore there's no guarantee that it will -not be written over by OS data. - -Fix this by allocating the memory for the -CONFIDENTIAL_COMPUTING_SECRET_LOCATION struct with the -EfiACPIReclaimMemory memory type to ensure the guest OS will not reuse -this memory. - -Fixes: 079a58276b98 ("OvmfPkg/AmdSev/SecretPei: Mark SEV launch secret ...") -Signed-off-by: Dov Murik -Reviewed-by: Tom Lendacky -Reviewed-by: Ard Biesheuvel ---- - OvmfPkg/AmdSev/SecretDxe/SecretDxe.c | 22 ++++++++++++++++------ - 1 file changed, 16 insertions(+), 6 deletions(-) - -diff --git a/OvmfPkg/AmdSev/SecretDxe/SecretDxe.c b/OvmfPkg/AmdSev/SecretDxe/SecretDxe.c -index 934ad20..c851176 100644 ---- a/OvmfPkg/AmdSev/SecretDxe/SecretDxe.c -+++ b/OvmfPkg/AmdSev/SecretDxe/SecretDxe.c -@@ -8,11 +8,6 @@ - #include - #include - --STATIC CONFIDENTIAL_COMPUTING_SECRET_LOCATION mSecretDxeTable = { -- FixedPcdGet32 (PcdSevLaunchSecretBase), -- FixedPcdGet32 (PcdSevLaunchSecretSize), --}; -- - EFI_STATUS - EFIAPI - InitializeSecretDxe( -@@ -20,8 +15,23 @@ InitializeSecretDxe( - IN EFI_SYSTEM_TABLE *SystemTable - ) - { -+ EFI_STATUS Status; -+ CONFIDENTIAL_COMPUTING_SECRET_LOCATION *SecretDxeTable; -+ -+ Status = gBS->AllocatePool ( -+ EfiACPIReclaimMemory, -+ sizeof (CONFIDENTIAL_COMPUTING_SECRET_LOCATION), -+ (VOID **)&SecretDxeTable -+ ); -+ if (EFI_ERROR (Status)) { -+ return Status; -+ } -+ -+ SecretDxeTable->Base = FixedPcdGet32 (PcdSevLaunchSecretBase); -+ SecretDxeTable->Size = FixedPcdGet32 (PcdSevLaunchSecretSize); -+ - return gBS->InstallConfigurationTable ( - &gConfidentialComputingSecretGuid, -- &mSecretDxeTable -+ SecretDxeTable - ); - } --- -2.41.0 - diff --git a/edk2-CryptoPkg-Test-call-ProcessLibraryConstructorList.patch b/edk2-CryptoPkg-Test-call-ProcessLibraryConstructorList.patch new file mode 100644 index 0000000..1ae0b2a --- /dev/null +++ b/edk2-CryptoPkg-Test-call-ProcessLibraryConstructorList.patch @@ -0,0 +1,56 @@ +From 045496325e278716e724ffdf9685667a8766d4f3 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 10:34:52 -0400 +Subject: [PATCH 28/31] CryptoPkg/Test: call ProcessLibraryConstructorList + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [28/31] 5ff484fbc68d094fbcdda2772c2869818c67de8d + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit 94961b8817eec6f8d0434555ac50a7aa51c22201 +Author: Gerd Hoffmann +Date: Fri Jun 14 11:45:49 2024 +0200 + + CryptoPkg/Test: call ProcessLibraryConstructorList + + Needed to properly initialize BaseRngLib. + + Signed-off-by: Gerd Hoffmann + +Signed-off-by: Jon Maloy +--- + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMain.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMain.c b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMain.c +index 88a3f96305..0ba9f35840 100644 +--- a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMain.c ++++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMain.c +@@ -8,6 +8,11 @@ + **/ + #include "TestBaseCryptLib.h" + ++VOID ++EFIAPI ++ProcessLibraryConstructorList ( ++ VOID ++ ); + + /** + Initialize the unit test framework, suite, and unit tests for the +@@ -77,5 +82,6 @@ main ( + char *argv[] + ) + { ++ ProcessLibraryConstructorList (); + return UefiTestMain (); + } +-- +2.39.3 + diff --git a/edk2-MdeModulePkg-Change-use-of-EFI_D_-to-DEBUG_.patch b/edk2-MdeModulePkg-Change-use-of-EFI_D_-to-DEBUG_.patch new file mode 100644 index 0000000..9726ce4 --- /dev/null +++ b/edk2-MdeModulePkg-Change-use-of-EFI_D_-to-DEBUG_.patch @@ -0,0 +1,11782 @@ +From 3d6c7242687a2253d5d70e3c9aedb73ba300df0c Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Mon, 10 Jun 2024 18:13:29 -0400 +Subject: [PATCH 01/31] MdeModulePkg: Change use of EFI_D_* to DEBUG_* + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [1/31] a5706fbb91131cd294fc93e56f18ce9973824c5d + +JIRA: https://issues.redhat.com/browse/RHEL-40099 +CVE: CVE-2024-1298 +Upstream: Merged + +commit 87000d77082339be464d07855d9fc194c6b4e8a6 +Author: Michael D Kinney +Date: Tue Nov 16 19:21:29 2021 -0800 + + MdeModulePkg: Change use of EFI_D_* to DEBUG_* + + REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3739 + + Update all use of EFI_D_* defines in DEBUG() macros to DEBUG_* defines. + + Cc: Andrew Fish + Cc: Leif Lindholm + Cc: Michael Kubacki + Signed-off-by: Michael D Kinney + Reviewed-by: Liming Gao + +Signed-off-by: Jon Maloy +--- + .../MemoryProfileInfo/MemoryProfileInfo.c | 12 +- + .../Bus/Ata/AtaAtapiPassThru/AhciMode.c | 15 +- + .../Ata/AtaAtapiPassThru/AtaAtapiPassThru.c | 9 +- + .../Bus/Ata/AtaAtapiPassThru/IdeMode.c | 43 ++- + MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBus.c | 11 +- + .../Bus/Ata/AtaBusDxe/AtaPassThruExecute.c | 24 +- + MdeModulePkg/Bus/I2c/I2cDxe/I2cBus.c | 18 +- + MdeModulePkg/Bus/I2c/I2cDxe/I2cHost.c | 20 +- + MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c | 53 ++-- + MdeModulePkg/Bus/Pci/EhciDxe/EhciDebug.c | 124 ++++----- + MdeModulePkg/Bus/Pci/EhciDxe/EhciReg.c | 14 +- + MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c | 12 +- + MdeModulePkg/Bus/Pci/EhciDxe/UsbHcMem.c | 2 +- + MdeModulePkg/Bus/Pci/IdeBusPei/AtapiPeim.c | 34 +-- + .../Bus/Pci/NvmExpressDxe/NvmExpress.c | 18 +- + .../Bus/Pci/NvmExpressDxe/NvmExpressHci.c | 74 ++--- + .../Pci/NvmExpressDxe/NvmExpressPassthru.c | 107 ++++--- + .../Bus/Pci/PciBusDxe/PciEnumerator.c | 3 +- + .../Bus/Pci/PciBusDxe/PciEnumeratorSupport.c | 23 +- + MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c | 36 +-- + .../Bus/Pci/PciHostBridgeDxe/PciHostBridge.c | 22 +- + .../Pci/PciHostBridgeDxe/PciRootBridgeIo.c | 14 +- + MdeModulePkg/Bus/Pci/PciSioSerialDxe/Serial.c | 6 +- + .../Bus/Pci/PciSioSerialDxe/SerialIo.c | 12 +- + .../Pci/SataControllerDxe/SataController.c | 21 +- + .../Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.c | 2 +- + .../Bus/Pci/UfsPciHcPei/UfsPciHcPei.c | 2 +- + MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c | 5 +- + MdeModulePkg/Bus/Pci/UhciDxe/UhciDebug.c | 51 ++-- + MdeModulePkg/Bus/Pci/UhciDxe/UhciReg.c | 10 +- + MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c | 4 +- + MdeModulePkg/Bus/Pci/UhciDxe/UsbHcMem.c | 2 +- + MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c | 2 +- + MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c | 63 +++-- + MdeModulePkg/Bus/Pci/XhciDxe/XhciReg.c | 25 +- + MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 122 ++++---- + MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.c | 59 ++-- + MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c | 121 ++++---- + MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c | 44 +-- + .../Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.c | 6 +- + MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcHci.c | 37 ++- + MdeModulePkg/Bus/Sd/EmmcDxe/EmmcBlockIo.c | 3 +- + MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.c | 5 +- + .../Bus/Sd/SdBlockIoPei/SdBlockIoPei.c | 2 +- + MdeModulePkg/Bus/Sd/SdBlockIoPei/SdHci.c | 60 ++-- + MdeModulePkg/Bus/Sd/SdDxe/SdBlockIo.c | 5 +- + MdeModulePkg/Bus/Sd/SdDxe/SdDxe.c | 5 +- + .../Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.c | 24 +- + MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c | 61 ++-- + MdeModulePkg/Bus/Usb/UsbBotPei/PeiAtapi.c | 4 +- + MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c | 24 +- + MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c | 26 +- + MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.c | 78 +++--- + MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.c | 34 +-- + MdeModulePkg/Bus/Usb/UsbBusDxe/UsbUtility.c | 5 +- + MdeModulePkg/Bus/Usb/UsbBusPei/HubPeim.c | 8 +- + MdeModulePkg/Bus/Usb/UsbBusPei/UsbIoPeim.c | 4 +- + MdeModulePkg/Bus/Usb/UsbBusPei/UsbPeim.c | 42 ++- + .../Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c | 16 +- + .../Bus/Usb/UsbMassStorageDxe/UsbMassBot.c | 11 +- + .../Bus/Usb/UsbMassStorageDxe/UsbMassCbi.c | 6 +- + .../Bus/Usb/UsbMassStorageDxe/UsbMassImpl.c | 40 +-- + MdeModulePkg/Core/Dxe/Dispatcher/Dispatcher.c | 2 +- + MdeModulePkg/Core/Dxe/Event/Tpl.c | 4 +- + MdeModulePkg/Core/Dxe/FwVol/FwVol.c | 6 +- + MdeModulePkg/Core/Dxe/Gcd/Gcd.c | 4 +- + MdeModulePkg/Core/Dxe/Image/Image.c | 8 +- + .../Core/Dxe/Mem/MemoryProfileRecord.c | 2 +- + MdeModulePkg/Core/Dxe/Misc/DebugImageInfo.c | 4 +- + .../Core/Dxe/Misc/MemoryAttributesTable.c | 22 +- + .../Core/DxeIplPeim/Ia32/DxeLoadFunc.c | 3 +- + .../Core/DxeIplPeim/X64/DxeLoadFunc.c | 2 +- + MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c | 37 ++- + MdeModulePkg/Core/Pei/FwVol/FwVol.c | 36 +-- + MdeModulePkg/Core/Pei/Hob/Hob.c | 6 +- + MdeModulePkg/Core/Pei/Image/Image.c | 18 +- + MdeModulePkg/Core/Pei/Memory/MemoryServices.c | 8 +- + MdeModulePkg/Core/Pei/PeiMain/PeiMain.c | 2 +- + MdeModulePkg/Core/Pei/Ppi/Ppi.c | 11 +- + MdeModulePkg/Core/PiSmmCore/Dispatcher.c | 4 +- + MdeModulePkg/Core/PiSmmCore/PiSmmCore.c | 2 +- + MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c | 6 +- + .../Core/PiSmmCore/SmramProfileRecord.c | 129 +++++---- + .../BootMaintenanceManagerUiLib/BootOption.c | 3 +- + .../Library/BootManagerUiLib/BootManager.c | 3 +- + .../DxeIpmiLibIpmiProtocol.c | 2 +- + .../FrameBufferBltLib/FrameBufferBltLib.c | 14 +- + .../PciHostBridgeLibNull.c | 8 +- + .../PeiIpmiLibIpmiPpi/PeiIpmiLibIpmiPpi.c | 2 +- + .../ReportStatusCodeLib.c | 2 +- + .../PiDxeS3BootScriptLib/BootScriptExecute.c | 261 +++++++++--------- + .../PiDxeS3BootScriptLib/BootScriptSave.c | 4 +- + .../PlatformVarCleanupLib/PlatVarCleanupLib.c | 28 +- + .../SmmIpmiLibSmmIpmiProtocol.c | 2 +- + .../Library/UefiBootManagerLib/BmBoot.c | 6 +- + .../Library/UefiBootManagerLib/BmConsole.c | 4 +- + .../UefiBootManagerLib/BmDriverHealth.c | 10 +- + .../Library/UefiBootManagerLib/BmHotkey.c | 14 +- + .../Library/UefiBootManagerLib/BmLoadOption.c | 2 +- + .../Library/UefiBootManagerLib/BmMisc.c | 16 +- + .../Library/VarCheckLib/VarCheckLib.c | 14 +- + .../VarCheckPcdLib/VarCheckPcdLibNullClass.c | 70 ++--- + .../VarCheckUefiLibNullClass.c | 4 +- + .../Universal/Acpi/AcpiTableDxe/AcpiSdt.c | 4 +- + .../Acpi/AcpiTableDxe/AmlNamespace.c | 18 +- + .../Universal/Acpi/AcpiTableDxe/AmlString.c | 14 +- + .../BootScriptExecutorDxe/ScriptExecute.c | 3 +- + .../FirmwarePerformanceDxe.c | 20 +- + .../FirmwarePerformancePei.c | 12 +- + .../Acpi/S3SaveStateDxe/AcpiS3ContextSave.c | 17 +- + MdeModulePkg/Universal/BdsDxe/BdsEntry.c | 24 +- + .../Universal/CapsulePei/X64/X64Entry.c | 2 +- + .../X64/SaveLongModeContext.c | 2 +- + .../Console/ConSplitterDxe/ConSplitter.c | 6 +- + .../GraphicsConsoleDxe/GraphicsConsole.c | 6 +- + .../GraphicsOutputDxe/GraphicsOutput.c | 8 +- + .../Console/TerminalDxe/TerminalConIn.c | 2 +- + .../Disk/CdExpressPei/PeiCdExpress.c | 18 +- + .../Universal/Disk/DiskIoDxe/DiskIo.c | 8 +- + .../Universal/Disk/PartitionDxe/ElTorito.c | 8 +- + .../Universal/Disk/PartitionDxe/Gpt.c | 74 ++--- + .../Universal/Disk/PartitionDxe/Mbr.c | 2 +- + .../Universal/Disk/PartitionDxe/Partition.c | 5 +- + .../Universal/Disk/RamDiskDxe/RamDiskDriver.c | 6 +- + .../Disk/RamDiskDxe/RamDiskProtocol.c | 6 +- + .../DriverHealthManagerDxe.c | 6 +- + MdeModulePkg/Universal/EbcDxe/EbcInt.c | 18 +- + MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c | 10 +- + MdeModulePkg/Universal/EsrtDxe/EsrtImpl.c | 8 +- + .../FaultTolerantWrite.c | 25 +- + .../FaultTolerantWriteSmm.c | 20 +- + .../Universal/FaultTolerantWriteDxe/FtwMisc.c | 39 ++- + .../UpdateWorkingBlock.c | 10 +- + .../FaultTolerantWritePei.c | 16 +- + .../HiiDatabaseDxe/ConfigKeywordHandler.c | 4 +- + .../Universal/LockBox/SmmLockBox/SmmLockBox.c | 28 +- + MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.c | 36 +-- + .../SmbiosMeasurementDxe.c | 66 ++--- + .../SmmCommunicationBufferDxe.c | 20 +- + .../Universal/TimestampDxe/TimestampDxe.c | 2 +- + .../Universal/Variable/Pei/Variable.c | 6 +- + .../Variable/RuntimeDxe/Measurement.c | 6 +- + .../Universal/Variable/RuntimeDxe/Variable.c | 35 ++- + .../Variable/RuntimeDxe/VariableDxe.c | 3 +- + .../Variable/RuntimeDxe/VariableSmm.c | 30 +- + .../WatchdogTimerDxe/WatchdogTimer.c | 2 +- + 146 files changed, 1563 insertions(+), 1622 deletions(-) + +diff --git a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c +index 191c310685..99a2d52db1 100644 +--- a/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c ++++ b/MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c +@@ -1027,7 +1027,7 @@ GetUefiMemoryProfileData ( + + Status = gBS->LocateProtocol (&gEdkiiMemoryProfileGuid, NULL, (VOID **) &ProfileProtocol); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UefiMemoryProfile: Locate MemoryProfile protocol - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UefiMemoryProfile: Locate MemoryProfile protocol - %r\n", Status)); + return Status; + } + +@@ -1136,7 +1136,7 @@ GetSmramProfileData ( + + Status = gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL, (VOID **) &SmmCommunication); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SmramProfile: Locate SmmCommunication protocol - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SmramProfile: Locate SmmCommunication protocol - %r\n", Status)); + return Status; + } + +@@ -1157,7 +1157,7 @@ GetSmramProfileData ( + (VOID **) &PiSmmCommunicationRegionTable + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SmramProfile: Get PiSmmCommunicationRegionTable - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SmramProfile: Get PiSmmCommunicationRegionTable - %r\n", Status)); + return Status; + } + ASSERT (PiSmmCommunicationRegionTable != NULL); +@@ -1193,7 +1193,7 @@ GetSmramProfileData ( + CommSize = sizeof (EFI_GUID) + sizeof (UINTN) + CommHeader->MessageLength; + Status = SmmCommunication->Communicate (SmmCommunication, CommBuffer, &CommSize); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SmramProfile: SmmCommunication - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SmramProfile: SmmCommunication - %r\n", Status)); + return Status; + } + +@@ -1349,12 +1349,12 @@ UefiMain ( + + Status = GetUefiMemoryProfileData (); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "GetUefiMemoryProfileData - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "GetUefiMemoryProfileData - %r\n", Status)); + } + + Status = GetSmramProfileData (); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "GetSmramProfileData - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "GetSmramProfileData - %r\n", Status)); + } + + return EFI_SUCCESS; +diff --git a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c +index bda900a161..aec7d0cfbe 100644 +--- a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c ++++ b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AhciMode.c +@@ -1723,7 +1723,7 @@ AhciAtaSmartReturnStatusCheck ( + // + // The threshold exceeded condition is not detected by the device + // +- DEBUG ((EFI_D_INFO, "The S.M.A.R.T threshold exceeded condition is not detected\n")); ++ DEBUG ((DEBUG_INFO, "The S.M.A.R.T threshold exceeded condition is not detected\n")); + REPORT_STATUS_CODE ( + EFI_PROGRESS_CODE, + (EFI_IO_BUS_ATA_ATAPI | EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD) +@@ -1732,7 +1732,7 @@ AhciAtaSmartReturnStatusCheck ( + // + // The threshold exceeded condition is detected by the device + // +- DEBUG ((EFI_D_INFO, "The S.M.A.R.T threshold exceeded condition is detected\n")); ++ DEBUG ((DEBUG_INFO, "The S.M.A.R.T threshold exceeded condition is detected\n")); + REPORT_STATUS_CODE ( + EFI_PROGRESS_CODE, + (EFI_IO_BUS_ATA_ATAPI | EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD) +@@ -1775,7 +1775,7 @@ AhciAtaSmartSupport ( + // + // S.M.A.R.T is not supported by the device + // +- DEBUG ((EFI_D_INFO, "S.M.A.R.T feature is not supported at port [%d] PortMultiplier [%d]!\n", ++ DEBUG ((DEBUG_INFO, "S.M.A.R.T feature is not supported at port [%d] PortMultiplier [%d]!\n", + Port, PortMultiplier)); + REPORT_STATUS_CODE ( + EFI_ERROR_CODE | EFI_ERROR_MINOR, +@@ -1851,7 +1851,7 @@ AhciAtaSmartSupport ( + AtaStatusBlock + ); + +- DEBUG ((EFI_D_INFO, "Enabled S.M.A.R.T feature at port [%d] PortMultiplier [%d]!\n", ++ DEBUG ((DEBUG_INFO, "Enabled S.M.A.R.T feature at port [%d] PortMultiplier [%d]!\n", + Port, PortMultiplier)); + } + +@@ -2785,7 +2785,7 @@ AhciModeInitialization ( + NULL + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_WARN, ++ DEBUG ((DEBUG_WARN, + "AhciModeInitialization: failed to enable 64-bit DMA on 64-bit capable controller (%r)\n", + Status)); + } +@@ -2991,7 +2991,7 @@ AhciModeInitialization ( + &SupportedModes + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Calculate Mode Fail, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Calculate Mode Fail, Status = %r\n", Status)); + continue; + } + +@@ -3022,7 +3022,7 @@ AhciModeInitialization ( + + Status = AhciDeviceSetFeature (PciIo, AhciRegisters, Port, 0, 0x03, (UINT32)(*(UINT8 *)&TransferMode), ATA_ATAPI_TIMEOUT); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Set transfer Mode Fail, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Set transfer Mode Fail, Status = %r\n", Status)); + continue; + } + +@@ -3061,4 +3061,3 @@ AhciModeInitialization ( + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.c b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.c +index 86fe9d954f..1c94b5f39d 100644 +--- a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.c ++++ b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.c +@@ -682,7 +682,7 @@ AtaAtapiPassThruStart ( + Instance = NULL; + OriginalPciAttributes = 0; + +- DEBUG ((EFI_D_INFO, "==AtaAtapiPassThru Start== Controller = %x\n", Controller)); ++ DEBUG ((DEBUG_INFO, "==AtaAtapiPassThru Start== Controller = %x\n", Controller)); + + Status = gBS->OpenProtocol ( + Controller, +@@ -694,7 +694,7 @@ AtaAtapiPassThruStart ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Open Ide_Controller_Init Error, Status=%r", Status)); ++ DEBUG ((DEBUG_ERROR, "Open Ide_Controller_Init Error, Status=%r", Status)); + goto ErrorExit; + } + +@@ -707,7 +707,7 @@ AtaAtapiPassThruStart ( + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Get Pci_Io Protocol Error, Status=%r", Status)); ++ DEBUG ((DEBUG_ERROR, "Get Pci_Io Protocol Error, Status=%r", Status)); + goto ErrorExit; + } + +@@ -872,7 +872,7 @@ AtaAtapiPassThruStop ( + EFI_PCI_IO_PROTOCOL *PciIo; + EFI_AHCI_REGISTERS *AhciRegisters; + +- DEBUG ((EFI_D_INFO, "==AtaAtapiPassThru Stop== Controller = %x\n", Controller)); ++ DEBUG ((DEBUG_INFO, "==AtaAtapiPassThru Stop== Controller = %x\n", Controller)); + + Status = gBS->OpenProtocol ( + Controller, +@@ -2646,4 +2646,3 @@ Exit: + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/IdeMode.c b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/IdeMode.c +index d284cc600b..9a6d0e60e4 100644 +--- a/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/IdeMode.c ++++ b/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/IdeMode.c +@@ -252,36 +252,36 @@ DumpAllIdeRegisters ( + + DEBUG_CODE_BEGIN (); + if ((StatusBlock.AtaStatus & ATA_STSREG_DWF) != 0) { +- DEBUG ((EFI_D_ERROR, "CheckRegisterStatus()-- %02x : Error : Write Fault\n", StatusBlock.AtaStatus)); ++ DEBUG ((DEBUG_ERROR, "CheckRegisterStatus()-- %02x : Error : Write Fault\n", StatusBlock.AtaStatus)); + } + + if ((StatusBlock.AtaStatus & ATA_STSREG_CORR) != 0) { +- DEBUG ((EFI_D_ERROR, "CheckRegisterStatus()-- %02x : Error : Corrected Data\n", StatusBlock.AtaStatus)); ++ DEBUG ((DEBUG_ERROR, "CheckRegisterStatus()-- %02x : Error : Corrected Data\n", StatusBlock.AtaStatus)); + } + + if ((StatusBlock.AtaStatus & ATA_STSREG_ERR) != 0) { + if ((StatusBlock.AtaError & ATA_ERRREG_BBK) != 0) { +- DEBUG ((EFI_D_ERROR, "CheckRegisterStatus()-- %02x : Error : Bad Block Detected\n", StatusBlock.AtaError)); ++ DEBUG ((DEBUG_ERROR, "CheckRegisterStatus()-- %02x : Error : Bad Block Detected\n", StatusBlock.AtaError)); + } + + if ((StatusBlock.AtaError & ATA_ERRREG_UNC) != 0) { +- DEBUG ((EFI_D_ERROR, "CheckRegisterStatus()-- %02x : Error : Uncorrectable Data\n", StatusBlock.AtaError)); ++ DEBUG ((DEBUG_ERROR, "CheckRegisterStatus()-- %02x : Error : Uncorrectable Data\n", StatusBlock.AtaError)); + } + + if ((StatusBlock.AtaError & ATA_ERRREG_MC) != 0) { +- DEBUG ((EFI_D_ERROR, "CheckRegisterStatus()-- %02x : Error : Media Change\n", StatusBlock.AtaError)); ++ DEBUG ((DEBUG_ERROR, "CheckRegisterStatus()-- %02x : Error : Media Change\n", StatusBlock.AtaError)); + } + + if ((StatusBlock.AtaError & ATA_ERRREG_ABRT) != 0) { +- DEBUG ((EFI_D_ERROR, "CheckRegisterStatus()-- %02x : Error : Abort\n", StatusBlock.AtaError)); ++ DEBUG ((DEBUG_ERROR, "CheckRegisterStatus()-- %02x : Error : Abort\n", StatusBlock.AtaError)); + } + + if ((StatusBlock.AtaError & ATA_ERRREG_TK0NF) != 0) { +- DEBUG ((EFI_D_ERROR, "CheckRegisterStatus()-- %02x : Error : Track 0 Not Found\n", StatusBlock.AtaError)); ++ DEBUG ((DEBUG_ERROR, "CheckRegisterStatus()-- %02x : Error : Track 0 Not Found\n", StatusBlock.AtaError)); + } + + if ((StatusBlock.AtaError & ATA_ERRREG_AMNF) != 0) { +- DEBUG ((EFI_D_ERROR, "CheckRegisterStatus()-- %02x : Error : Address Mark Not Found\n", StatusBlock.AtaError)); ++ DEBUG ((DEBUG_ERROR, "CheckRegisterStatus()-- %02x : Error : Address Mark Not Found\n", StatusBlock.AtaError)); + } + } + DEBUG_CODE_END (); +@@ -1162,7 +1162,7 @@ AtaUdmStatusWait ( + IoPortForBmis = (UINT16) (IdeRegisters->BusMasterBaseAddr + BMIS_OFFSET); + RegisterValue = IdeReadPortB (PciIo, IoPortForBmis); + if (((RegisterValue & BMIS_ERROR) != 0) || (Timeout == 0)) { +- DEBUG ((EFI_D_ERROR, "ATA UDMA operation fails\n")); ++ DEBUG ((DEBUG_ERROR, "ATA UDMA operation fails\n")); + Status = EFI_DEVICE_ERROR; + break; + } +@@ -1217,7 +1217,7 @@ AtaUdmStatusCheck ( + RegisterValue = IdeReadPortB (PciIo, IoPortForBmis); + + if ((RegisterValue & BMIS_ERROR) != 0) { +- DEBUG ((EFI_D_ERROR, "ATA UDMA operation fails\n")); ++ DEBUG ((DEBUG_ERROR, "ATA UDMA operation fails\n")); + return EFI_DEVICE_ERROR; + } + +@@ -2077,7 +2077,7 @@ IdeAtaSmartReturnStatusCheck ( + // + // The threshold exceeded condition is not detected by the device + // +- DEBUG ((EFI_D_INFO, "The S.M.A.R.T threshold exceeded condition is not detected\n")); ++ DEBUG ((DEBUG_INFO, "The S.M.A.R.T threshold exceeded condition is not detected\n")); + REPORT_STATUS_CODE ( + EFI_PROGRESS_CODE, + (EFI_IO_BUS_ATA_ATAPI | EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD) +@@ -2086,7 +2086,7 @@ IdeAtaSmartReturnStatusCheck ( + // + // The threshold exceeded condition is detected by the device + // +- DEBUG ((EFI_D_INFO, "The S.M.A.R.T threshold exceeded condition is detected\n")); ++ DEBUG ((DEBUG_INFO, "The S.M.A.R.T threshold exceeded condition is detected\n")); + REPORT_STATUS_CODE ( + EFI_PROGRESS_CODE, + (EFI_IO_BUS_ATA_ATAPI | EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD) +@@ -2126,7 +2126,7 @@ IdeAtaSmartSupport ( + // + // S.M.A.R.T is not supported by the device + // +- DEBUG ((EFI_D_INFO, "S.M.A.R.T feature is not supported at [%a] channel [%a] device!\n", ++ DEBUG ((DEBUG_INFO, "S.M.A.R.T feature is not supported at [%a] channel [%a] device!\n", + (Channel == 1) ? "secondary" : "primary", (Device == 1) ? "slave" : "master")); + REPORT_STATUS_CODE ( + EFI_ERROR_CODE | EFI_ERROR_MINOR, +@@ -2195,7 +2195,7 @@ IdeAtaSmartSupport ( + } + } + +- DEBUG ((EFI_D_INFO, "Enabled S.M.A.R.T feature at [%a] channel [%a] device!\n", ++ DEBUG ((DEBUG_INFO, "Enabled S.M.A.R.T feature at [%a] channel [%a] device!\n", + (Channel == 1) ? "secondary" : "primary", (Device == 1) ? "slave" : "master")); + + } +@@ -2392,7 +2392,7 @@ DetectAndConfigIdeDevice ( + + Status = WaitForBSYClear (PciIo, IdeRegisters, 350000000); + if (EFI_ERROR (Status)) { +- DEBUG((EFI_D_ERROR, "New detecting method: Send Execute Diagnostic Command: WaitForBSYClear: Status: %d\n", Status)); ++ DEBUG((DEBUG_ERROR, "New detecting method: Send Execute Diagnostic Command: WaitForBSYClear: Status: %d\n", Status)); + continue; + } + +@@ -2453,7 +2453,7 @@ DetectAndConfigIdeDevice ( + continue; + } + +- DEBUG ((EFI_D_INFO, "[%a] channel [%a] [%a] device\n", ++ DEBUG ((DEBUG_INFO, "[%a] channel [%a] [%a] device\n", + (IdeChannel == 1) ? "secondary" : "primary ", (IdeDevice == 1) ? "slave " : "master", + DeviceType == EfiIdeCdrom ? "cdrom " : "harddisk")); + // +@@ -2484,7 +2484,7 @@ DetectAndConfigIdeDevice ( + &SupportedModes + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Calculate Mode Fail, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Calculate Mode Fail, Status = %r\n", Status)); + continue; + } + +@@ -2503,7 +2503,7 @@ DetectAndConfigIdeDevice ( + Status = SetDeviceTransferMode (Instance, IdeChannel, IdeDevice, &TransferMode, NULL); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Set transfer Mode Fail, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Set transfer Mode Fail, Status = %r\n", Status)); + continue; + } + } +@@ -2520,7 +2520,7 @@ DetectAndConfigIdeDevice ( + Status = SetDeviceTransferMode (Instance, IdeChannel, IdeDevice, &TransferMode, NULL); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Set transfer Mode Fail, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Set transfer Mode Fail, Status = %r\n", Status)); + continue; + } + } else if (SupportedModes->MultiWordDmaMode.Valid) { +@@ -2529,7 +2529,7 @@ DetectAndConfigIdeDevice ( + Status = SetDeviceTransferMode (Instance, IdeChannel, IdeDevice, &TransferMode, NULL); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Set transfer Mode Fail, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Set transfer Mode Fail, Status = %r\n", Status)); + continue; + } + } +@@ -2619,7 +2619,7 @@ IdeModeInitialization ( + &MaxDevices + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "[GetChannel, Status=%x]", Status)); ++ DEBUG ((DEBUG_ERROR, "[GetChannel, Status=%x]", Status)); + continue; + } + +@@ -2658,4 +2658,3 @@ IdeModeInitialization ( + ErrorExit: + return Status; + } +- +diff --git a/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBus.c b/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBus.c +index 28f8638c52..6c3268896b 100644 +--- a/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBus.c ++++ b/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBus.c +@@ -358,7 +358,7 @@ RegisterAtaDevice ( + // If yes, then install Storage Security Protocol at the ata device handle. + // + if ((AtaDevice->IdentifyData->trusted_computing_support & BIT0) != 0) { +- DEBUG ((EFI_D_INFO, "Found TCG support in Port %x PortMultiplierPort %x\n", Port, PortMultiplierPort)); ++ DEBUG ((DEBUG_INFO, "Found TCG support in Port %x PortMultiplierPort %x\n", Port, PortMultiplierPort)); + Status = gBS->InstallProtocolInterface ( + &AtaDevice->Handle, + &gEfiStorageSecurityCommandProtocolGuid, +@@ -368,7 +368,7 @@ RegisterAtaDevice ( + if (EFI_ERROR (Status)) { + goto Done; + } +- DEBUG ((EFI_D_INFO, "Successfully Install Storage Security Protocol on the ATA device\n")); ++ DEBUG ((DEBUG_INFO, "Successfully Install Storage Security Protocol on the ATA device\n")); + } + + gBS->OpenProtocol ( +@@ -387,7 +387,7 @@ Done: + + if (EFI_ERROR (Status) && (AtaDevice != NULL)) { + ReleaseAtaResources (AtaDevice); +- DEBUG ((EFI_D_ERROR | EFI_D_INIT, "Failed to initialize Port %x PortMultiplierPort %x, status = %r\n", Port, PortMultiplierPort, Status)); ++ DEBUG ((DEBUG_ERROR | DEBUG_INIT, "Failed to initialize Port %x PortMultiplierPort %x, status = %r\n", Port, PortMultiplierPort, Status)); + } + return Status; + } +@@ -1537,7 +1537,7 @@ AtaStorageSecurityReceiveData ( + ATA_DEVICE *Private; + EFI_TPL OldTpl; + +- DEBUG ((EFI_D_INFO, "EFI Storage Security Protocol - Read\n")); ++ DEBUG ((DEBUG_INFO, "EFI Storage Security Protocol - Read\n")); + if ((PayloadBuffer == NULL || PayloadTransferSize == NULL) && PayloadBufferSize != 0) { + return EFI_INVALID_PARAMETER; + } +@@ -1647,7 +1647,7 @@ AtaStorageSecuritySendData ( + ATA_DEVICE *Private; + EFI_TPL OldTpl; + +- DEBUG ((EFI_D_INFO, "EFI Storage Security Protocol - Send\n")); ++ DEBUG ((DEBUG_INFO, "EFI Storage Security Protocol - Send\n")); + if ((PayloadBuffer == NULL) && (PayloadBufferSize != 0)) { + return EFI_INVALID_PARAMETER; + } +@@ -1709,4 +1709,3 @@ InitializeAtaBus( + + return Status; + } +- +diff --git a/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaPassThruExecute.c b/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaPassThruExecute.c +index 79026a4a95..8655da599d 100644 +--- a/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaPassThruExecute.c ++++ b/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaPassThruExecute.c +@@ -309,7 +309,7 @@ IdentifyAtaDevice ( + return EFI_UNSUPPORTED; + } + +- DEBUG ((EFI_D_INFO, "AtaBus - Identify Device: Port %x PortMultiplierPort %x\n", AtaDevice->Port, AtaDevice->PortMultiplierPort)); ++ DEBUG ((DEBUG_INFO, "AtaBus - Identify Device: Port %x PortMultiplierPort %x\n", AtaDevice->Port, AtaDevice->PortMultiplierPort)); + + // + // Check whether the WORD 88 (supported UltraDMA by drive) is valid +@@ -674,7 +674,7 @@ AtaNonBlockingCallBack ( + } + + DEBUG (( +- EFI_D_BLKIO, ++ DEBUG_BLKIO, + "NON-BLOCKING EVENT FINISHED!- STATUS = %r\n", + Task->Token->TransactionStatus + )); +@@ -683,7 +683,7 @@ AtaNonBlockingCallBack ( + // Reduce the SubEventCount, till it comes to zero. + // + (*Task->UnsignalledEventCount) --; +- DEBUG ((EFI_D_BLKIO, "UnsignalledEventCount = %d\n", *Task->UnsignalledEventCount)); ++ DEBUG ((DEBUG_BLKIO, "UnsignalledEventCount = %d\n", *Task->UnsignalledEventCount)); + + // + // Remove the SubTask from the Task list. +@@ -696,7 +696,7 @@ AtaNonBlockingCallBack ( + // + if (!(*Task->IsError)) { + gBS->SignalEvent (Task->Token->Event); +- DEBUG ((EFI_D_BLKIO, "Signal the upper layer event!\n")); ++ DEBUG ((DEBUG_BLKIO, "Signal the upper layer event!\n")); + } + + FreePool (Task->UnsignalledEventCount); +@@ -709,8 +709,8 @@ AtaNonBlockingCallBack ( + if (!IsListEmpty (&AtaDevice->AtaTaskList)) { + Entry = GetFirstNode (&AtaDevice->AtaTaskList); + AtaTask = ATA_ASYN_TASK_FROM_ENTRY (Entry); +- DEBUG ((EFI_D_BLKIO, "Start to embark a new Ata Task\n")); +- DEBUG ((EFI_D_BLKIO, "AtaTask->NumberOfBlocks = %x; AtaTask->Token=%x\n", AtaTask->NumberOfBlocks, AtaTask->Token)); ++ DEBUG ((DEBUG_BLKIO, "Start to embark a new Ata Task\n")); ++ DEBUG ((DEBUG_BLKIO, "AtaTask->NumberOfBlocks = %x; AtaTask->Token=%x\n", AtaTask->NumberOfBlocks, AtaTask->Token)); + Status = AccessAtaDevice ( + AtaTask->AtaDevice, + AtaTask->Buffer, +@@ -729,7 +729,7 @@ AtaNonBlockingCallBack ( + } + + DEBUG (( +- EFI_D_BLKIO, ++ DEBUG_BLKIO, + "PACKET INFO: Write=%s, Length=%x, LowCylinder=%x, HighCylinder=%x, SectionNumber=%x\n", + Task->Packet.OutDataBuffer != NULL ? L"YES" : L"NO", + Task->Packet.OutDataBuffer != NULL ? Task->Packet.OutTransferLength : Task->Packet.InTransferLength, +@@ -838,13 +838,13 @@ AccessAtaDevice( + FreePool (EventCount); + return EFI_OUT_OF_RESOURCES; + } +- DEBUG ((EFI_D_BLKIO, "Allocation IsError Addr=%x\n", IsError)); ++ DEBUG ((DEBUG_BLKIO, "Allocation IsError Addr=%x\n", IsError)); + *IsError = FALSE; + TempCount = (NumberOfBlocks + MaxTransferBlockNumber - 1) / MaxTransferBlockNumber; + *EventCount = TempCount; +- DEBUG ((EFI_D_BLKIO, "AccessAtaDevice, NumberOfBlocks=%x\n", NumberOfBlocks)); +- DEBUG ((EFI_D_BLKIO, "AccessAtaDevice, MaxTransferBlockNumber=%x\n", MaxTransferBlockNumber)); +- DEBUG ((EFI_D_BLKIO, "AccessAtaDevice, EventCount=%x\n", TempCount)); ++ DEBUG ((DEBUG_BLKIO, "AccessAtaDevice, NumberOfBlocks=%x\n", NumberOfBlocks)); ++ DEBUG ((DEBUG_BLKIO, "AccessAtaDevice, MaxTransferBlockNumber=%x\n", MaxTransferBlockNumber)); ++ DEBUG ((DEBUG_BLKIO, "AccessAtaDevice, EventCount=%x\n", TempCount)); + } else { + while (!IsListEmpty (&AtaDevice->AtaTaskList) || !IsListEmpty (&AtaDevice->AtaSubTaskList)) { + // +@@ -906,7 +906,7 @@ AccessAtaDevice( + // + // Blocking Mode. + // +- DEBUG ((EFI_D_BLKIO, "Blocking AccessAtaDevice, TransferBlockNumber=%x; StartLba = %x\n", TransferBlockNumber, StartLba)); ++ DEBUG ((DEBUG_BLKIO, "Blocking AccessAtaDevice, TransferBlockNumber=%x; StartLba = %x\n", TransferBlockNumber, StartLba)); + Status = TransferAtaDevice (AtaDevice, NULL, Buffer, StartLba, (UINT32) TransferBlockNumber, IsWrite, NULL); + } + +diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cBus.c b/MdeModulePkg/Bus/I2c/I2cDxe/I2cBus.c +index 1833c0afb8..fa58632703 100644 +--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cBus.c ++++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cBus.c +@@ -312,7 +312,7 @@ CheckRemainingDevicePath ( + ((!SystemHasControllerNode) && (RemainingHasControllerNode) && (RemainingControllerNumber == 0)) || + ((SystemHasControllerNode) && (RemainingHasControllerNode) && (SystemControllerNumber == RemainingControllerNumber)) || + ((!SystemHasControllerNode) && (!RemainingHasControllerNode))) { +- DEBUG ((EFI_D_ERROR, "This I2C device has been already started.\n")); ++ DEBUG ((DEBUG_ERROR, "This I2C device has been already started.\n")); + Status = EFI_UNSUPPORTED; + break; + } +@@ -572,7 +572,7 @@ I2cBusDriverStart ( + EFI_OPEN_PROTOCOL_BY_DRIVER + ); + if (EFI_ERROR (Status) && (Status != EFI_ALREADY_STARTED)) { +- DEBUG ((EFI_D_ERROR, "I2cBus: open I2C host error, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "I2cBus: open I2C host error, Status = %r\n", Status)); + return Status; + } + +@@ -586,7 +586,7 @@ I2cBusDriverStart ( + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "I2cBus: open private protocol error, Status = %r.\n", Status)); ++ DEBUG ((DEBUG_ERROR, "I2cBus: open private protocol error, Status = %r.\n", Status)); + return Status; + } + } +@@ -603,7 +603,7 @@ I2cBusDriverStart ( + EFI_OPEN_PROTOCOL_BY_DRIVER + ); + if (EFI_ERROR (Status) && (Status != EFI_ALREADY_STARTED)) { +- DEBUG ((EFI_D_ERROR, "I2cBus: open I2C enumerate error, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "I2cBus: open I2C enumerate error, Status = %r\n", Status)); + goto Error; + } + +@@ -616,7 +616,7 @@ I2cBusDriverStart ( + EFI_OPEN_PROTOCOL_BY_DRIVER + ); + if (EFI_ERROR (Status) && (Status != EFI_ALREADY_STARTED)) { +- DEBUG ((EFI_D_ERROR, "I2cBus: open device path error, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "I2cBus: open device path error, Status = %r\n", Status)); + goto Error; + } + +@@ -637,7 +637,7 @@ I2cBusDriverStart ( + // + I2cBusContext = AllocateZeroPool (sizeof (I2C_BUS_CONTEXT)); + if (I2cBusContext == NULL) { +- DEBUG ((EFI_D_ERROR, "I2cBus: there is no enough memory to allocate.\n")); ++ DEBUG ((DEBUG_ERROR, "I2cBus: there is no enough memory to allocate.\n")); + Status = EFI_OUT_OF_RESOURCES; + goto Error; + } +@@ -676,7 +676,7 @@ I2cBusDriverStart ( + NULL + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "I2cBus: install private protocol error, Status = %r.\n", Status)); ++ DEBUG ((DEBUG_ERROR, "I2cBus: install private protocol error, Status = %r.\n", Status)); + goto Error; + } + } +@@ -690,7 +690,7 @@ I2cBusDriverStart ( + + Error: + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "I2cBus: Start() function failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "I2cBus: Start() function failed, Status = %r\n", Status)); + if (ParentDevicePath != NULL) { + gBS->CloseProtocol ( + Controller, +@@ -921,7 +921,7 @@ RegisterI2cDevice ( + // Determine if the device info is valid + // + if ((Device->DeviceGuid == NULL) || (Device->SlaveAddressCount == 0) || (Device->SlaveAddressArray == NULL)) { +- DEBUG ((EFI_D_ERROR, "Invalid EFI_I2C_DEVICE reported by I2c Enumerate protocol.\n")); ++ DEBUG ((DEBUG_ERROR, "Invalid EFI_I2C_DEVICE reported by I2c Enumerate protocol.\n")); + continue; + } + +diff --git a/MdeModulePkg/Bus/I2c/I2cDxe/I2cHost.c b/MdeModulePkg/Bus/I2c/I2cDxe/I2cHost.c +index 95294c9c98..8dec43bcb1 100644 +--- a/MdeModulePkg/Bus/I2c/I2cDxe/I2cHost.c ++++ b/MdeModulePkg/Bus/I2c/I2cDxe/I2cHost.c +@@ -343,7 +343,7 @@ I2cHostDriverStart ( + EFI_OPEN_PROTOCOL_BY_DRIVER + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "I2cHost: Open I2C bus configuration error, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "I2cHost: Open I2C bus configuration error, Status = %r\n", Status)); + return Status; + } + +@@ -359,7 +359,7 @@ I2cHostDriverStart ( + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "I2cHost: Open I2C master error, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "I2cHost: Open I2C master error, Status = %r\n", Status)); + goto Exit; + } + +@@ -368,7 +368,7 @@ I2cHostDriverStart ( + // + I2cHostContext = AllocateZeroPool (sizeof (I2C_HOST_CONTEXT)); + if (I2cHostContext == NULL) { +- DEBUG ((EFI_D_ERROR, "I2cHost: there is no enough memory to allocate.\n")); ++ DEBUG ((DEBUG_ERROR, "I2cHost: there is no enough memory to allocate.\n")); + Status = EFI_OUT_OF_RESOURCES; + goto Exit; + } +@@ -387,7 +387,7 @@ I2cHostDriverStart ( + // + Status = I2cMaster->Reset (I2cMaster); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "I2cHost: I2C controller reset failed!\n")); ++ DEBUG ((DEBUG_ERROR, "I2cHost: I2C controller reset failed!\n")); + goto Exit; + } + +@@ -402,7 +402,7 @@ I2cHostDriverStart ( + &I2cHostContext->I2cEvent + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "I2cHost: create complete event error, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "I2cHost: create complete event error, Status = %r\n", Status)); + goto Exit; + } + +@@ -417,7 +417,7 @@ I2cHostDriverStart ( + &I2cHostContext->I2cBusConfigurationEvent + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "I2cHost: create bus available event error, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "I2cHost: create bus available event error, Status = %r\n", Status)); + goto Exit; + } + +@@ -438,7 +438,7 @@ I2cHostDriverStart ( + ); + Exit: + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "I2cHost: Start() function failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "I2cHost: Start() function failed, Status = %r\n", Status)); + if (I2cBusConfigurationManagement != NULL) { + gBS->CloseProtocol ( + Controller, +@@ -514,7 +514,7 @@ I2cHostDriverStop ( + + TplPrevious = EfiGetCurrentTpl (); + if (TplPrevious > TPL_I2C_SYNC) { +- DEBUG ((EFI_D_ERROR, "I2cHost: TPL %d is too high in Stop.\n", TplPrevious)); ++ DEBUG ((DEBUG_ERROR, "I2cHost: TPL %d is too high in Stop.\n", TplPrevious)); + return EFI_DEVICE_ERROR; + } + +@@ -982,7 +982,7 @@ I2cHostQueueRequest ( + // + TplPrevious = EfiGetCurrentTpl (); + if ((TplPrevious > TPL_I2C_SYNC) || ((Event == NULL) && (TplPrevious > TPL_CALLBACK))) { +- DEBUG ((EFI_D_ERROR, "ERROR - TPL %d is too high!\n", TplPrevious)); ++ DEBUG ((DEBUG_ERROR, "ERROR - TPL %d is too high!\n", TplPrevious)); + return EFI_INVALID_PARAMETER; + } + +@@ -991,7 +991,7 @@ I2cHostQueueRequest ( + // + I2cRequest = AllocateZeroPool (sizeof (I2C_REQUEST)); + if (I2cRequest == NULL) { +- DEBUG ((EFI_D_ERROR, "WARNING - Failed to allocate I2C_REQUEST!\n")); ++ DEBUG ((DEBUG_ERROR, "WARNING - Failed to allocate I2C_REQUEST!\n")); + return EFI_OUT_OF_RESOURCES; + } + +diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c b/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c +index bdd9c27db5..0e41ee17ec 100644 +--- a/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c ++++ b/MdeModulePkg/Bus/Pci/EhciDxe/Ehci.c +@@ -85,7 +85,7 @@ EhcGetCapability ( + *PortNumber = (UINT8) (Ehc->HcStructParams & HCSP_NPORTS); + *Is64BitCapable = (UINT8) Ehc->Support64BitDma; + +- DEBUG ((EFI_D_INFO, "EhcGetCapability: %d ports, 64 bit %d\n", *PortNumber, *Is64BitCapable)); ++ DEBUG ((DEBUG_INFO, "EhcGetCapability: %d ports, 64 bit %d\n", *PortNumber, *Is64BitCapable)); + + gBS->RestoreTPL (OldTpl); + return EFI_SUCCESS; +@@ -181,7 +181,7 @@ EhcReset ( + } + + ON_EXIT: +- DEBUG ((EFI_D_INFO, "EhcReset: exit status %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "EhcReset: exit status %r\n", Status)); + gBS->RestoreTPL (OldTpl); + return Status; + } +@@ -225,7 +225,7 @@ EhcGetState ( + + gBS->RestoreTPL (OldTpl); + +- DEBUG ((EFI_D_INFO, "EhcGetState: current state %d\n", *State)); ++ DEBUG ((DEBUG_INFO, "EhcGetState: current state %d\n", *State)); + return EFI_SUCCESS; + } + +@@ -299,7 +299,7 @@ EhcSetState ( + Status = EFI_INVALID_PARAMETER; + } + +- DEBUG ((EFI_D_INFO, "EhcSetState: exit status %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "EhcSetState: exit status %r\n", Status)); + gBS->RestoreTPL (OldTpl); + return Status; + } +@@ -470,7 +470,7 @@ EhcSetRootHubPortFeature ( + Status = EhcRunHC (Ehc, EHC_GENERIC_TIMEOUT); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "EhcSetRootHubPortFeature :failed to start HC - %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "EhcSetRootHubPortFeature :failed to start HC - %r\n", Status)); + break; + } + } +@@ -503,7 +503,7 @@ EhcSetRootHubPortFeature ( + } + + ON_EXIT: +- DEBUG ((EFI_D_INFO, "EhcSetRootHubPortFeature: exit status %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "EhcSetRootHubPortFeature: exit status %r\n", Status)); + + gBS->RestoreTPL (OldTpl); + return Status; +@@ -638,7 +638,7 @@ EhcClearRootHubPortFeature ( + } + + ON_EXIT: +- DEBUG ((EFI_D_INFO, "EhcClearRootHubPortFeature: exit status %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "EhcClearRootHubPortFeature: exit status %r\n", Status)); + gBS->RestoreTPL (OldTpl); + return Status; + } +@@ -729,7 +729,7 @@ EhcControlTransfer ( + *TransferResult = EFI_USB_ERR_SYSTEM; + + if (EhcIsHalt (Ehc) || EhcIsSysError (Ehc)) { +- DEBUG ((EFI_D_ERROR, "EhcControlTransfer: HC halted at entrance\n")); ++ DEBUG ((DEBUG_ERROR, "EhcControlTransfer: HC halted at entrance\n")); + + EhcAckAllInterrupt (Ehc); + goto ON_EXIT; +@@ -765,7 +765,7 @@ EhcControlTransfer ( + ); + + if (Urb == NULL) { +- DEBUG ((EFI_D_ERROR, "EhcControlTransfer: failed to create URB")); ++ DEBUG ((DEBUG_ERROR, "EhcControlTransfer: failed to create URB")); + + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; +@@ -794,7 +794,7 @@ ON_EXIT: + gBS->RestoreTPL (OldTpl); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcControlTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); ++ DEBUG ((DEBUG_ERROR, "EhcControlTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); + } + + return Status; +@@ -878,7 +878,7 @@ EhcBulkTransfer ( + Status = EFI_DEVICE_ERROR; + + if (EhcIsHalt (Ehc) || EhcIsSysError (Ehc)) { +- DEBUG ((EFI_D_ERROR, "EhcBulkTransfer: HC is halted\n")); ++ DEBUG ((DEBUG_ERROR, "EhcBulkTransfer: HC is halted\n")); + + EhcAckAllInterrupt (Ehc); + goto ON_EXIT; +@@ -908,7 +908,7 @@ EhcBulkTransfer ( + ); + + if (Urb == NULL) { +- DEBUG ((EFI_D_ERROR, "EhcBulkTransfer: failed to create URB\n")); ++ DEBUG ((DEBUG_ERROR, "EhcBulkTransfer: failed to create URB\n")); + + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; +@@ -934,7 +934,7 @@ ON_EXIT: + gBS->RestoreTPL (OldTpl); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcBulkTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); ++ DEBUG ((DEBUG_ERROR, "EhcBulkTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); + } + + return Status; +@@ -1023,14 +1023,14 @@ EhcAsyncInterruptTransfer ( + if (!IsNewTransfer) { + Status = EhciDelAsyncIntTransfer (Ehc, DeviceAddress, EndPointAddress, DataToggle); + +- DEBUG ((EFI_D_INFO, "EhcAsyncInterruptTransfer: remove old transfer - %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "EhcAsyncInterruptTransfer: remove old transfer - %r\n", Status)); + goto ON_EXIT; + } + + Status = EFI_SUCCESS; + + if (EhcIsHalt (Ehc) || EhcIsSysError (Ehc)) { +- DEBUG ((EFI_D_ERROR, "EhcAsyncInterruptTransfer: HC is halt\n")); ++ DEBUG ((DEBUG_ERROR, "EhcAsyncInterruptTransfer: HC is halt\n")); + EhcAckAllInterrupt (Ehc); + + Status = EFI_DEVICE_ERROR; +@@ -1139,7 +1139,7 @@ EhcSyncInterruptTransfer ( + Status = EFI_DEVICE_ERROR; + + if (EhcIsHalt (Ehc) || EhcIsSysError (Ehc)) { +- DEBUG ((EFI_D_ERROR, "EhcSyncInterruptTransfer: HC is halt\n")); ++ DEBUG ((DEBUG_ERROR, "EhcSyncInterruptTransfer: HC is halt\n")); + + EhcAckAllInterrupt (Ehc); + goto ON_EXIT; +@@ -1165,7 +1165,7 @@ EhcSyncInterruptTransfer ( + ); + + if (Urb == NULL) { +- DEBUG ((EFI_D_ERROR, "EhcSyncInterruptTransfer: failed to create URB\n")); ++ DEBUG ((DEBUG_ERROR, "EhcSyncInterruptTransfer: failed to create URB\n")); + + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; +@@ -1189,7 +1189,7 @@ ON_EXIT: + gBS->RestoreTPL (OldTpl); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcSyncInterruptTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); ++ DEBUG ((DEBUG_ERROR, "EhcSyncInterruptTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); + } + + return Status; +@@ -1562,7 +1562,7 @@ EhcCreateUsb2Hc ( + Ehc->HcCapParams = EhcReadCapRegister (Ehc, EHC_HCCPARAMS_OFFSET); + Ehc->CapLen = EhcReadCapRegister (Ehc, EHC_CAPLENGTH_OFFSET) & 0x0FF; + +- DEBUG ((EFI_D_INFO, "EhcCreateUsb2Hc: capability length %d\n", Ehc->CapLen)); ++ DEBUG ((DEBUG_INFO, "EhcCreateUsb2Hc: capability length %d\n", Ehc->CapLen)); + + // + // EHCI Controllers with a CapLen of 0 are ignored. +@@ -1723,7 +1723,7 @@ EhcDriverBindingStart ( + } + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcDriverBindingStart: failed to enable controller\n")); ++ DEBUG ((DEBUG_ERROR, "EhcDriverBindingStart: failed to enable controller\n")); + goto CLOSE_PCIIO; + } + +@@ -1834,7 +1834,7 @@ EhcDriverBindingStart ( + Ehc = EhcCreateUsb2Hc (PciIo, HcDevicePath, OriginalPciAttributes); + + if (Ehc == NULL) { +- DEBUG ((EFI_D_ERROR, "EhcDriverBindingStart: failed to create USB2_HC\n")); ++ DEBUG ((DEBUG_ERROR, "EhcDriverBindingStart: failed to create USB2_HC\n")); + + Status = EFI_OUT_OF_RESOURCES; + goto CLOSE_PCIIO; +@@ -1854,7 +1854,7 @@ EhcDriverBindingStart ( + if (!EFI_ERROR (Status)) { + Ehc->Support64BitDma = TRUE; + } else { +- DEBUG ((EFI_D_WARN, ++ DEBUG ((DEBUG_WARN, + "%a: failed to enable 64-bit DMA on 64-bit capable controller @ %p (%r)\n", + __FUNCTION__, Controller, Status)); + } +@@ -1868,7 +1868,7 @@ EhcDriverBindingStart ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcDriverBindingStart: failed to install USB2_HC Protocol\n")); ++ DEBUG ((DEBUG_ERROR, "EhcDriverBindingStart: failed to install USB2_HC Protocol\n")); + goto FREE_POOL; + } + +@@ -1887,7 +1887,7 @@ EhcDriverBindingStart ( + Status = EhcInitHC (Ehc); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcDriverBindingStart: failed to init host controller\n")); ++ DEBUG ((DEBUG_ERROR, "EhcDriverBindingStart: failed to init host controller\n")); + goto UNINSTALL_USBHC; + } + +@@ -1897,7 +1897,7 @@ EhcDriverBindingStart ( + Status = gBS->SetTimer (Ehc->PollTimer, TimerPeriodic, EHC_ASYNC_POLL_INTERVAL); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcDriverBindingStart: failed to start async interrupt monitor\n")); ++ DEBUG ((DEBUG_ERROR, "EhcDriverBindingStart: failed to start async interrupt monitor\n")); + + EhcHaltHC (Ehc, EHC_GENERIC_TIMEOUT); + goto UNINSTALL_USBHC; +@@ -1938,7 +1938,7 @@ EhcDriverBindingStart ( + ); + + +- DEBUG ((EFI_D_INFO, "EhcDriverBindingStart: EHCI started for controller @ %p\n", Controller)); ++ DEBUG ((DEBUG_INFO, "EhcDriverBindingStart: EHCI started for controller @ %p\n", Controller)); + return EFI_SUCCESS; + + UNINSTALL_USBHC: +@@ -2083,4 +2083,3 @@ EhcDriverBindingStop ( + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/EhciDebug.c b/MdeModulePkg/Bus/Pci/EhciDxe/EhciDebug.c +index db0e2c6d39..55cbb68570 100644 +--- a/MdeModulePkg/Bus/Pci/EhciDxe/EhciDebug.c ++++ b/MdeModulePkg/Bus/Pci/EhciDxe/EhciDebug.c +@@ -23,38 +23,38 @@ EhcDumpStatus ( + ) + { + if (EHC_BIT_IS_SET (State, QTD_STAT_DO_PING)) { +- DEBUG ((EFI_D_VERBOSE, " Do_Ping")); ++ DEBUG ((DEBUG_VERBOSE, " Do_Ping")); + } else { +- DEBUG ((EFI_D_VERBOSE, " Do_Out")); ++ DEBUG ((DEBUG_VERBOSE, " Do_Out")); + } + + if (EHC_BIT_IS_SET (State, QTD_STAT_DO_CS)) { +- DEBUG ((EFI_D_VERBOSE, " Do_CS")); ++ DEBUG ((DEBUG_VERBOSE, " Do_CS")); + } else { +- DEBUG ((EFI_D_VERBOSE, " Do_SS")); ++ DEBUG ((DEBUG_VERBOSE, " Do_SS")); + } + + if (EHC_BIT_IS_SET (State, QTD_STAT_TRANS_ERR)) { +- DEBUG ((EFI_D_VERBOSE, " Transfer_Error")); ++ DEBUG ((DEBUG_VERBOSE, " Transfer_Error")); + } + + if (EHC_BIT_IS_SET (State, QTD_STAT_BABBLE_ERR)) { +- DEBUG ((EFI_D_VERBOSE, " Babble_Error")); ++ DEBUG ((DEBUG_VERBOSE, " Babble_Error")); + } + + if (EHC_BIT_IS_SET (State, QTD_STAT_BUFF_ERR)) { +- DEBUG ((EFI_D_VERBOSE, " Buffer_Error")); ++ DEBUG ((DEBUG_VERBOSE, " Buffer_Error")); + } + + if (EHC_BIT_IS_SET (State, QTD_STAT_HALTED)) { +- DEBUG ((EFI_D_VERBOSE, " Halted")); ++ DEBUG ((DEBUG_VERBOSE, " Halted")); + } + + if (EHC_BIT_IS_SET (State, QTD_STAT_ACTIVE)) { +- DEBUG ((EFI_D_VERBOSE, " Active")); ++ DEBUG ((DEBUG_VERBOSE, " Active")); + } + +- DEBUG ((EFI_D_VERBOSE, "\n")); ++ DEBUG ((DEBUG_VERBOSE, "\n")); + } + + +@@ -75,37 +75,37 @@ EhcDumpQtd ( + UINTN Index; + + if (Msg != NULL) { +- DEBUG ((EFI_D_VERBOSE, Msg)); ++ DEBUG ((DEBUG_VERBOSE, Msg)); + } + +- DEBUG ((EFI_D_VERBOSE, "Queue TD @ 0x%p, data length %d\n", Qtd, (UINT32)Qtd->DataLen)); ++ DEBUG ((DEBUG_VERBOSE, "Queue TD @ 0x%p, data length %d\n", Qtd, (UINT32)Qtd->DataLen)); + + QtdHw = &Qtd->QtdHw; + +- DEBUG ((EFI_D_VERBOSE, "Next QTD : %x\n", QtdHw->NextQtd)); +- DEBUG ((EFI_D_VERBOSE, "AltNext QTD : %x\n", QtdHw->AltNext)); +- DEBUG ((EFI_D_VERBOSE, "Status : %x\n", QtdHw->Status)); ++ DEBUG ((DEBUG_VERBOSE, "Next QTD : %x\n", QtdHw->NextQtd)); ++ DEBUG ((DEBUG_VERBOSE, "AltNext QTD : %x\n", QtdHw->AltNext)); ++ DEBUG ((DEBUG_VERBOSE, "Status : %x\n", QtdHw->Status)); + EhcDumpStatus (QtdHw->Status); + + if (QtdHw->Pid == QTD_PID_SETUP) { +- DEBUG ((EFI_D_VERBOSE, "PID : Setup\n")); ++ DEBUG ((DEBUG_VERBOSE, "PID : Setup\n")); + + } else if (QtdHw->Pid == QTD_PID_INPUT) { +- DEBUG ((EFI_D_VERBOSE, "PID : IN\n")); ++ DEBUG ((DEBUG_VERBOSE, "PID : IN\n")); + + } else if (QtdHw->Pid == QTD_PID_OUTPUT) { +- DEBUG ((EFI_D_VERBOSE, "PID : OUT\n")); ++ DEBUG ((DEBUG_VERBOSE, "PID : OUT\n")); + + } + +- DEBUG ((EFI_D_VERBOSE, "Error Count : %d\n", QtdHw->ErrCnt)); +- DEBUG ((EFI_D_VERBOSE, "Current Page : %d\n", QtdHw->CurPage)); +- DEBUG ((EFI_D_VERBOSE, "IOC : %d\n", QtdHw->Ioc)); +- DEBUG ((EFI_D_VERBOSE, "Total Bytes : %d\n", QtdHw->TotalBytes)); +- DEBUG ((EFI_D_VERBOSE, "Data Toggle : %d\n", QtdHw->DataToggle)); ++ DEBUG ((DEBUG_VERBOSE, "Error Count : %d\n", QtdHw->ErrCnt)); ++ DEBUG ((DEBUG_VERBOSE, "Current Page : %d\n", QtdHw->CurPage)); ++ DEBUG ((DEBUG_VERBOSE, "IOC : %d\n", QtdHw->Ioc)); ++ DEBUG ((DEBUG_VERBOSE, "Total Bytes : %d\n", QtdHw->TotalBytes)); ++ DEBUG ((DEBUG_VERBOSE, "Data Toggle : %d\n", QtdHw->DataToggle)); + + for (Index = 0; Index < 5; Index++) { +- DEBUG ((EFI_D_VERBOSE, "Page[%d] : 0x%x\n", (UINT32)Index, QtdHw->Page[Index])); ++ DEBUG ((DEBUG_VERBOSE, "Page[%d] : 0x%x\n", (UINT32)Index, QtdHw->Page[Index])); + } + } + +@@ -131,60 +131,60 @@ EhcDumpQh ( + UINTN Index; + + if (Msg != NULL) { +- DEBUG ((EFI_D_VERBOSE, Msg)); ++ DEBUG ((DEBUG_VERBOSE, Msg)); + } + +- DEBUG ((EFI_D_VERBOSE, "Queue head @ 0x%p, interval %ld, next qh %p\n", ++ DEBUG ((DEBUG_VERBOSE, "Queue head @ 0x%p, interval %ld, next qh %p\n", + Qh, (UINT64)Qh->Interval, Qh->NextQh)); + + QhHw = &Qh->QhHw; + +- DEBUG ((EFI_D_VERBOSE, "Hoziontal link: %x\n", QhHw->HorizonLink)); +- DEBUG ((EFI_D_VERBOSE, "Device address: %d\n", QhHw->DeviceAddr)); +- DEBUG ((EFI_D_VERBOSE, "Inactive : %d\n", QhHw->Inactive)); +- DEBUG ((EFI_D_VERBOSE, "EP number : %d\n", QhHw->EpNum)); +- DEBUG ((EFI_D_VERBOSE, "EP speed : %d\n", QhHw->EpSpeed)); +- DEBUG ((EFI_D_VERBOSE, "DT control : %d\n", QhHw->DtCtrl)); +- DEBUG ((EFI_D_VERBOSE, "Reclaim head : %d\n", QhHw->ReclaimHead)); +- DEBUG ((EFI_D_VERBOSE, "Max packet len: %d\n", QhHw->MaxPacketLen)); +- DEBUG ((EFI_D_VERBOSE, "Ctrl EP : %d\n", QhHw->CtrlEp)); +- DEBUG ((EFI_D_VERBOSE, "Nak reload : %d\n", QhHw->NakReload)); +- +- DEBUG ((EFI_D_VERBOSE, "SMask : %x\n", QhHw->SMask)); +- DEBUG ((EFI_D_VERBOSE, "CMask : %x\n", QhHw->CMask)); +- DEBUG ((EFI_D_VERBOSE, "Hub address : %d\n", QhHw->HubAddr)); +- DEBUG ((EFI_D_VERBOSE, "Hub port : %d\n", QhHw->PortNum)); +- DEBUG ((EFI_D_VERBOSE, "Multiplier : %d\n", QhHw->Multiplier)); +- +- DEBUG ((EFI_D_VERBOSE, "Cur QTD : %x\n", QhHw->CurQtd)); +- +- DEBUG ((EFI_D_VERBOSE, "Next QTD : %x\n", QhHw->NextQtd)); +- DEBUG ((EFI_D_VERBOSE, "AltNext QTD : %x\n", QhHw->AltQtd)); +- DEBUG ((EFI_D_VERBOSE, "Status : %x\n", QhHw->Status)); ++ DEBUG ((DEBUG_VERBOSE, "Hoziontal link: %x\n", QhHw->HorizonLink)); ++ DEBUG ((DEBUG_VERBOSE, "Device address: %d\n", QhHw->DeviceAddr)); ++ DEBUG ((DEBUG_VERBOSE, "Inactive : %d\n", QhHw->Inactive)); ++ DEBUG ((DEBUG_VERBOSE, "EP number : %d\n", QhHw->EpNum)); ++ DEBUG ((DEBUG_VERBOSE, "EP speed : %d\n", QhHw->EpSpeed)); ++ DEBUG ((DEBUG_VERBOSE, "DT control : %d\n", QhHw->DtCtrl)); ++ DEBUG ((DEBUG_VERBOSE, "Reclaim head : %d\n", QhHw->ReclaimHead)); ++ DEBUG ((DEBUG_VERBOSE, "Max packet len: %d\n", QhHw->MaxPacketLen)); ++ DEBUG ((DEBUG_VERBOSE, "Ctrl EP : %d\n", QhHw->CtrlEp)); ++ DEBUG ((DEBUG_VERBOSE, "Nak reload : %d\n", QhHw->NakReload)); ++ ++ DEBUG ((DEBUG_VERBOSE, "SMask : %x\n", QhHw->SMask)); ++ DEBUG ((DEBUG_VERBOSE, "CMask : %x\n", QhHw->CMask)); ++ DEBUG ((DEBUG_VERBOSE, "Hub address : %d\n", QhHw->HubAddr)); ++ DEBUG ((DEBUG_VERBOSE, "Hub port : %d\n", QhHw->PortNum)); ++ DEBUG ((DEBUG_VERBOSE, "Multiplier : %d\n", QhHw->Multiplier)); ++ ++ DEBUG ((DEBUG_VERBOSE, "Cur QTD : %x\n", QhHw->CurQtd)); ++ ++ DEBUG ((DEBUG_VERBOSE, "Next QTD : %x\n", QhHw->NextQtd)); ++ DEBUG ((DEBUG_VERBOSE, "AltNext QTD : %x\n", QhHw->AltQtd)); ++ DEBUG ((DEBUG_VERBOSE, "Status : %x\n", QhHw->Status)); + + EhcDumpStatus (QhHw->Status); + + if (QhHw->Pid == QTD_PID_SETUP) { +- DEBUG ((EFI_D_VERBOSE, "PID : Setup\n")); ++ DEBUG ((DEBUG_VERBOSE, "PID : Setup\n")); + + } else if (QhHw->Pid == QTD_PID_INPUT) { +- DEBUG ((EFI_D_VERBOSE, "PID : IN\n")); ++ DEBUG ((DEBUG_VERBOSE, "PID : IN\n")); + + } else if (QhHw->Pid == QTD_PID_OUTPUT) { +- DEBUG ((EFI_D_VERBOSE, "PID : OUT\n")); ++ DEBUG ((DEBUG_VERBOSE, "PID : OUT\n")); + } + +- DEBUG ((EFI_D_VERBOSE, "Error Count : %d\n", QhHw->ErrCnt)); +- DEBUG ((EFI_D_VERBOSE, "Current Page : %d\n", QhHw->CurPage)); +- DEBUG ((EFI_D_VERBOSE, "IOC : %d\n", QhHw->Ioc)); +- DEBUG ((EFI_D_VERBOSE, "Total Bytes : %d\n", QhHw->TotalBytes)); +- DEBUG ((EFI_D_VERBOSE, "Data Toggle : %d\n", QhHw->DataToggle)); ++ DEBUG ((DEBUG_VERBOSE, "Error Count : %d\n", QhHw->ErrCnt)); ++ DEBUG ((DEBUG_VERBOSE, "Current Page : %d\n", QhHw->CurPage)); ++ DEBUG ((DEBUG_VERBOSE, "IOC : %d\n", QhHw->Ioc)); ++ DEBUG ((DEBUG_VERBOSE, "Total Bytes : %d\n", QhHw->TotalBytes)); ++ DEBUG ((DEBUG_VERBOSE, "Data Toggle : %d\n", QhHw->DataToggle)); + + for (Index = 0; Index < 5; Index++) { +- DEBUG ((EFI_D_VERBOSE, "Page[%d] : 0x%x\n", Index, QhHw->Page[Index])); ++ DEBUG ((DEBUG_VERBOSE, "Page[%d] : 0x%x\n", Index, QhHw->Page[Index])); + } + +- DEBUG ((EFI_D_VERBOSE, "\n")); ++ DEBUG ((DEBUG_VERBOSE, "\n")); + + BASE_LIST_FOR_EACH (Entry, &Qh->Qtds) { + Qtd = EFI_LIST_CONTAINER (Entry, EHC_QTD, QtdList); +@@ -214,13 +214,11 @@ EhcDumpBuf ( + + for (Index = 0; Index < Len; Index++) { + if (Index % 16 == 0) { +- DEBUG ((EFI_D_VERBOSE,"\n")); ++ DEBUG ((DEBUG_VERBOSE,"\n")); + } + +- DEBUG ((EFI_D_VERBOSE, "%02x ", Buf[Index])); ++ DEBUG ((DEBUG_VERBOSE, "%02x ", Buf[Index])); + } + +- DEBUG ((EFI_D_VERBOSE, "\n")); ++ DEBUG ((DEBUG_VERBOSE, "\n")); + } +- +- +diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/EhciReg.c b/MdeModulePkg/Bus/Pci/EhciDxe/EhciReg.c +index ca63736f20..7bd01c1aee 100644 +--- a/MdeModulePkg/Bus/Pci/EhciDxe/EhciReg.c ++++ b/MdeModulePkg/Bus/Pci/EhciDxe/EhciReg.c +@@ -40,7 +40,7 @@ EhcReadCapRegister ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcReadCapRegister: Pci Io read error - %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "EhcReadCapRegister: Pci Io read error - %r at %d\n", Status, Offset)); + Data = 0xFFFF; + } + +@@ -76,7 +76,7 @@ EhcReadDbgRegister ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcReadDbgRegister: Pci Io read error - %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "EhcReadDbgRegister: Pci Io read error - %r at %d\n", Status, Offset)); + Data = 0xFFFF; + } + +@@ -168,7 +168,7 @@ EhcReadOpReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcReadOpReg: Pci Io Read error - %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "EhcReadOpReg: Pci Io Read error - %r at %d\n", Status, Offset)); + Data = 0xFFFF; + } + +@@ -205,7 +205,7 @@ EhcWriteOpReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcWriteOpReg: Pci Io Write error: %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "EhcWriteOpReg: Pci Io Write error: %r at %d\n", Status, Offset)); + } + } + +@@ -310,7 +310,7 @@ EhcClearLegacySupport ( + UINT32 Value; + UINT32 TimeOut; + +- DEBUG ((EFI_D_INFO, "EhcClearLegacySupport: called to clear legacy support\n")); ++ DEBUG ((DEBUG_INFO, "EhcClearLegacySupport: called to clear legacy support\n")); + + PciIo = Ehc->PciIo; + ExtendCap = (Ehc->HcCapParams >> 8) & 0xFF; +@@ -654,14 +654,14 @@ EhcInitHC ( + Status = EhcEnablePeriodSchd (Ehc, EHC_GENERIC_TIMEOUT); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcInitHC: failed to enable period schedule\n")); ++ DEBUG ((DEBUG_ERROR, "EhcInitHC: failed to enable period schedule\n")); + return Status; + } + + Status = EhcEnableAsyncSchd (Ehc, EHC_GENERIC_TIMEOUT); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcInitHC: failed to enable async schedule\n")); ++ DEBUG ((DEBUG_ERROR, "EhcInitHC: failed to enable async schedule\n")); + return Status; + } + +diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c b/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c +index 5fe7cf4669..34ee40c4bb 100644 +--- a/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c ++++ b/MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.c +@@ -377,7 +377,7 @@ EhcUnlinkQhFromAsync ( + Status = EhcSetAndWaitDoorBell (Ehc, EHC_GENERIC_TIMEOUT); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcUnlinkQhFromAsync: Failed to synchronize with doorbell\n")); ++ DEBUG ((DEBUG_ERROR, "EhcUnlinkQhFromAsync: Failed to synchronize with doorbell\n")); + } + } + +@@ -636,13 +636,13 @@ EhcCheckUrbResult ( + // + PciAddr = UsbHcGetPciAddressForHostMem (Ehc->MemPool, Ehc->ShortReadStop, sizeof (EHC_QTD)); + if (QtdHw->AltNext == QTD_LINK (PciAddr, FALSE)) { +- DEBUG ((EFI_D_VERBOSE, "EhcCheckUrbResult: Short packet read, break\n")); ++ DEBUG ((DEBUG_VERBOSE, "EhcCheckUrbResult: Short packet read, break\n")); + + Finished = TRUE; + goto ON_EXIT; + } + +- DEBUG ((EFI_D_VERBOSE, "EhcCheckUrbResult: Short packet read, continue\n")); ++ DEBUG ((DEBUG_VERBOSE, "EhcCheckUrbResult: Short packet read, continue\n")); + } + } + } +@@ -713,13 +713,13 @@ EhcExecTransfer ( + } + + if (!Finished) { +- DEBUG ((EFI_D_ERROR, "EhcExecTransfer: transfer not finished in %dms\n", (UINT32)TimeOut)); ++ DEBUG ((DEBUG_ERROR, "EhcExecTransfer: transfer not finished in %dms\n", (UINT32)TimeOut)); + EhcDumpQh (Urb->Qh, NULL, FALSE); + + Status = EFI_TIMEOUT; + + } else if (Urb->Result != EFI_USB_NOERROR) { +- DEBUG ((EFI_D_ERROR, "EhcExecTransfer: transfer failed with %x\n", Urb->Result)); ++ DEBUG ((DEBUG_ERROR, "EhcExecTransfer: transfer failed with %x\n", Urb->Result)); + EhcDumpQh (Urb->Qh, NULL, FALSE); + + Status = EFI_DEVICE_ERROR; +@@ -1069,7 +1069,7 @@ EhcMonitorAsyncRequests ( + // + Status = EhcFlushAsyncIntMap (Ehc, Urb); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EhcMonitorAsyncRequests: Fail to Flush AsyncInt Mapped Memeory\n")); ++ DEBUG ((DEBUG_ERROR, "EhcMonitorAsyncRequests: Fail to Flush AsyncInt Mapped Memeory\n")); + } + + // +diff --git a/MdeModulePkg/Bus/Pci/EhciDxe/UsbHcMem.c b/MdeModulePkg/Bus/Pci/EhciDxe/UsbHcMem.c +index 43d0968dca..f39d0b57c0 100644 +--- a/MdeModulePkg/Bus/Pci/EhciDxe/UsbHcMem.c ++++ b/MdeModulePkg/Bus/Pci/EhciDxe/UsbHcMem.c +@@ -470,7 +470,7 @@ UsbHcAllocateMem ( + NewBlock = UsbHcAllocMemBlock (Pool, Pages); + + if (NewBlock == NULL) { +- DEBUG ((EFI_D_ERROR, "UsbHcAllocateMem: failed to allocate block\n")); ++ DEBUG ((DEBUG_ERROR, "UsbHcAllocateMem: failed to allocate block\n")); + return NULL; + } + +diff --git a/MdeModulePkg/Bus/Pci/IdeBusPei/AtapiPeim.c b/MdeModulePkg/Bus/Pci/IdeBusPei/AtapiPeim.c +index 2f888424d9..436d5971d0 100644 +--- a/MdeModulePkg/Bus/Pci/IdeBusPei/AtapiPeim.c ++++ b/MdeModulePkg/Bus/Pci/IdeBusPei/AtapiPeim.c +@@ -76,7 +76,7 @@ AtapiPeimEntry ( + AtapiBlkIoDev->PpiDescriptor2.Guid = &gEfiPeiVirtualBlockIo2PpiGuid; + AtapiBlkIoDev->PpiDescriptor2.Ppi = &AtapiBlkIoDev->AtapiBlkIo2; + +- DEBUG ((EFI_D_INFO, "Atatpi Device Count is %d\n", AtapiBlkIoDev->DeviceCount)); ++ DEBUG ((DEBUG_INFO, "Atatpi Device Count is %d\n", AtapiBlkIoDev->DeviceCount)); + if (AtapiBlkIoDev->DeviceCount != 0) { + Status = PeiServicesInstallPpi (&AtapiBlkIoDev->PpiDescriptor); + if (EFI_ERROR (Status)) { +@@ -189,11 +189,11 @@ AtapiGetBlockDeviceMediaInfo ( + // + // probe media and retrieve latest media information + // +- DEBUG ((EFI_D_INFO, "Atatpi GetInfo DevicePosition is %d\n", AtapiBlkIoDev->DeviceInfo[Index].DevicePosition)); +- DEBUG ((EFI_D_INFO, "Atatpi GetInfo DeviceType is %d\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.DeviceType)); +- DEBUG ((EFI_D_INFO, "Atatpi GetInfo MediaPresent is %d\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.MediaPresent)); +- DEBUG ((EFI_D_INFO, "Atatpi GetInfo BlockSize is 0x%x\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.BlockSize)); +- DEBUG ((EFI_D_INFO, "Atatpi GetInfo LastBlock is 0x%x\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.LastBlock)); ++ DEBUG ((DEBUG_INFO, "Atatpi GetInfo DevicePosition is %d\n", AtapiBlkIoDev->DeviceInfo[Index].DevicePosition)); ++ DEBUG ((DEBUG_INFO, "Atatpi GetInfo DeviceType is %d\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.DeviceType)); ++ DEBUG ((DEBUG_INFO, "Atatpi GetInfo MediaPresent is %d\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.MediaPresent)); ++ DEBUG ((DEBUG_INFO, "Atatpi GetInfo BlockSize is 0x%x\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.BlockSize)); ++ DEBUG ((DEBUG_INFO, "Atatpi GetInfo LastBlock is 0x%x\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.LastBlock)); + + Status = DetectMedia ( + AtapiBlkIoDev, +@@ -205,11 +205,11 @@ AtapiGetBlockDeviceMediaInfo ( + return EFI_DEVICE_ERROR; + } + +- DEBUG ((EFI_D_INFO, "Atatpi GetInfo DevicePosition is %d\n", AtapiBlkIoDev->DeviceInfo[Index].DevicePosition)); +- DEBUG ((EFI_D_INFO, "Atatpi GetInfo DeviceType is %d\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.DeviceType)); +- DEBUG ((EFI_D_INFO, "Atatpi GetInfo MediaPresent is %d\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.MediaPresent)); +- DEBUG ((EFI_D_INFO, "Atatpi GetInfo BlockSize is 0x%x\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.BlockSize)); +- DEBUG ((EFI_D_INFO, "Atatpi GetInfo LastBlock is 0x%x\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.LastBlock)); ++ DEBUG ((DEBUG_INFO, "Atatpi GetInfo DevicePosition is %d\n", AtapiBlkIoDev->DeviceInfo[Index].DevicePosition)); ++ DEBUG ((DEBUG_INFO, "Atatpi GetInfo DeviceType is %d\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.DeviceType)); ++ DEBUG ((DEBUG_INFO, "Atatpi GetInfo MediaPresent is %d\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.MediaPresent)); ++ DEBUG ((DEBUG_INFO, "Atatpi GetInfo BlockSize is 0x%x\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.BlockSize)); ++ DEBUG ((DEBUG_INFO, "Atatpi GetInfo LastBlock is 0x%x\n", AtapiBlkIoDev->DeviceInfo[Index].MediaInfo.LastBlock)); + + // + // Get media info from AtapiBlkIoDev +@@ -549,7 +549,7 @@ AtapiEnumerateDevices ( + // Allow SATA Devices to spin-up. This is needed if + // SEC and PEI phase is too short, for example Release Build. + // +- DEBUG ((EFI_D_INFO, "Delay for %d seconds for SATA devices to spin-up\n", PcdGet16 (PcdSataSpinUpDelayInSecForRecoveryPath))); ++ DEBUG ((DEBUG_INFO, "Delay for %d seconds for SATA devices to spin-up\n", PcdGet16 (PcdSataSpinUpDelayInSecForRecoveryPath))); + MicroSecondDelay (PcdGet16 (PcdSataSpinUpDelayInSecForRecoveryPath) * 1000 * 1000); // + + // +@@ -600,10 +600,10 @@ AtapiEnumerateDevices ( + CopyMem (&(AtapiBlkIoDev->DeviceInfo[DeviceCount].MediaInfo), &MediaInfo, sizeof (MediaInfo)); + CopyMem (&(AtapiBlkIoDev->DeviceInfo[DeviceCount].MediaInfo2), &MediaInfo2, sizeof (MediaInfo2)); + +- DEBUG ((EFI_D_INFO, "Atatpi Device Position is %d\n", DevicePosition)); +- DEBUG ((EFI_D_INFO, "Atatpi DeviceType is %d\n", MediaInfo.DeviceType)); +- DEBUG ((EFI_D_INFO, "Atatpi MediaPresent is %d\n", MediaInfo.MediaPresent)); +- DEBUG ((EFI_D_INFO, "Atatpi BlockSize is 0x%x\n", MediaInfo.BlockSize)); ++ DEBUG ((DEBUG_INFO, "Atatpi Device Position is %d\n", DevicePosition)); ++ DEBUG ((DEBUG_INFO, "Atatpi DeviceType is %d\n", MediaInfo.DeviceType)); ++ DEBUG ((DEBUG_INFO, "Atatpi MediaPresent is %d\n", MediaInfo.MediaPresent)); ++ DEBUG ((DEBUG_INFO, "Atatpi BlockSize is 0x%x\n", MediaInfo.BlockSize)); + + if (EFI_ERROR (Status)) { + AtapiBlkIoDev->DeviceInfo[DeviceCount].MediaInfo.MediaPresent = FALSE; +@@ -1764,7 +1764,7 @@ DetectMedia ( + SenseBuffers, + &SenseCounts + ); +- DEBUG ((EFI_D_INFO, "Atapi Request Sense Count is %d\n", SenseCounts)); ++ DEBUG ((DEBUG_INFO, "Atapi Request Sense Count is %d\n", SenseCounts)); + if (IsDeviceStateUnclear (SenseBuffers, SenseCounts) || IsNoMedia (SenseBuffers, SenseCounts)) { + // + // We are not sure whether the media is present or not, try again +diff --git a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c +index 62886d5c91..f60c2fcd79 100644 +--- a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c ++++ b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpress.c +@@ -271,11 +271,11 @@ EnumerateNvmeDevNamespace ( + // + // Dump NvmExpress Identify Namespace Data + // +- DEBUG ((EFI_D_INFO, " == NVME IDENTIFY NAMESPACE [%d] DATA ==\n", NamespaceId)); +- DEBUG ((EFI_D_INFO, " NSZE : 0x%x\n", NamespaceData->Nsze)); +- DEBUG ((EFI_D_INFO, " NCAP : 0x%x\n", NamespaceData->Ncap)); +- DEBUG ((EFI_D_INFO, " NUSE : 0x%x\n", NamespaceData->Nuse)); +- DEBUG ((EFI_D_INFO, " LBAF0.LBADS : 0x%x\n", (NamespaceData->LbaFormat[0].Lbads))); ++ DEBUG ((DEBUG_INFO, " == NVME IDENTIFY NAMESPACE [%d] DATA ==\n", NamespaceId)); ++ DEBUG ((DEBUG_INFO, " NSZE : 0x%x\n", NamespaceData->Nsze)); ++ DEBUG ((DEBUG_INFO, " NCAP : 0x%x\n", NamespaceData->Ncap)); ++ DEBUG ((DEBUG_INFO, " NUSE : 0x%x\n", NamespaceData->Nuse)); ++ DEBUG ((DEBUG_INFO, " LBAF0.LBADS : 0x%x\n", (NamespaceData->LbaFormat[0].Lbads))); + + // + // Build controller name for Component Name (2) protocol. +@@ -906,7 +906,7 @@ NvmExpressDriverBindingStart ( + UINTN Bytes; + EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL *Passthru; + +- DEBUG ((EFI_D_INFO, "NvmExpressDriverBindingStart: start\n")); ++ DEBUG ((DEBUG_INFO, "NvmExpressDriverBindingStart: start\n")); + + Private = NULL; + Passthru = NULL; +@@ -944,7 +944,7 @@ NvmExpressDriverBindingStart ( + Private = AllocateZeroPool (sizeof (NVME_CONTROLLER_PRIVATE_DATA)); + + if (Private == NULL) { +- DEBUG ((EFI_D_ERROR, "NvmExpressDriverBindingStart: allocating pool for Nvme Private Data failed!\n")); ++ DEBUG ((DEBUG_ERROR, "NvmExpressDriverBindingStart: allocating pool for Nvme Private Data failed!\n")); + Status = EFI_OUT_OF_RESOURCES; + goto Exit; + } +@@ -1084,7 +1084,7 @@ NvmExpressDriverBindingStart ( + } + } + +- DEBUG ((EFI_D_INFO, "NvmExpressDriverBindingStart: end successfully\n")); ++ DEBUG ((DEBUG_INFO, "NvmExpressDriverBindingStart: end successfully\n")); + return EFI_SUCCESS; + + Exit: +@@ -1122,7 +1122,7 @@ Exit: + Controller + ); + +- DEBUG ((EFI_D_INFO, "NvmExpressDriverBindingStart: end with %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "NvmExpressDriverBindingStart: end with %r\n", Status)); + + return Status; + } +diff --git a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressHci.c b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressHci.c +index 450d372b2f..08f9d50ff5 100644 +--- a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressHci.c ++++ b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressHci.c +@@ -128,13 +128,13 @@ WriteNvmeControllerConfiguration ( + return Status; + } + +- DEBUG ((EFI_D_INFO, "Cc.En: %d\n", Cc->En)); +- DEBUG ((EFI_D_INFO, "Cc.Css: %d\n", Cc->Css)); +- DEBUG ((EFI_D_INFO, "Cc.Mps: %d\n", Cc->Mps)); +- DEBUG ((EFI_D_INFO, "Cc.Ams: %d\n", Cc->Ams)); +- DEBUG ((EFI_D_INFO, "Cc.Shn: %d\n", Cc->Shn)); +- DEBUG ((EFI_D_INFO, "Cc.Iosqes: %d\n", Cc->Iosqes)); +- DEBUG ((EFI_D_INFO, "Cc.Iocqes: %d\n", Cc->Iocqes)); ++ DEBUG ((DEBUG_INFO, "Cc.En: %d\n", Cc->En)); ++ DEBUG ((DEBUG_INFO, "Cc.Css: %d\n", Cc->Css)); ++ DEBUG ((DEBUG_INFO, "Cc.Mps: %d\n", Cc->Mps)); ++ DEBUG ((DEBUG_INFO, "Cc.Ams: %d\n", Cc->Ams)); ++ DEBUG ((DEBUG_INFO, "Cc.Shn: %d\n", Cc->Shn)); ++ DEBUG ((DEBUG_INFO, "Cc.Iosqes: %d\n", Cc->Iosqes)); ++ DEBUG ((DEBUG_INFO, "Cc.Iocqes: %d\n", Cc->Iocqes)); + + return EFI_SUCCESS; + } +@@ -214,8 +214,8 @@ WriteNvmeAdminQueueAttributes ( + return Status; + } + +- DEBUG ((EFI_D_INFO, "Aqa.Asqs: %d\n", Aqa->Asqs)); +- DEBUG ((EFI_D_INFO, "Aqa.Acqs: %d\n", Aqa->Acqs)); ++ DEBUG ((DEBUG_INFO, "Aqa.Asqs: %d\n", Aqa->Asqs)); ++ DEBUG ((DEBUG_INFO, "Aqa.Acqs: %d\n", Aqa->Acqs)); + + return EFI_SUCCESS; + } +@@ -257,7 +257,7 @@ WriteNvmeAdminSubmissionQueueBaseAddress ( + return Status; + } + +- DEBUG ((EFI_D_INFO, "Asq: %lx\n", *Asq)); ++ DEBUG ((DEBUG_INFO, "Asq: %lx\n", *Asq)); + + return EFI_SUCCESS; + } +@@ -300,7 +300,7 @@ WriteNvmeAdminCompletionQueueBaseAddress ( + return Status; + } + +- DEBUG ((EFI_D_INFO, "Acq: %lxh\n", *Acq)); ++ DEBUG ((DEBUG_INFO, "Acq: %lxh\n", *Acq)); + + return EFI_SUCCESS; + } +@@ -379,7 +379,7 @@ NvmeDisableController ( + ); + } + +- DEBUG ((EFI_D_INFO, "NVMe controller is disabled with status [%r].\n", Status)); ++ DEBUG ((DEBUG_INFO, "NVMe controller is disabled with status [%r].\n", Status)); + return Status; + } + +@@ -453,7 +453,7 @@ NvmeEnableController ( + ); + } + +- DEBUG ((EFI_D_INFO, "NVMe controller is enabled with status [%r].\n", Status)); ++ DEBUG ((DEBUG_INFO, "NVMe controller is enabled with status [%r].\n", Status)); + return Status; + } + +@@ -764,7 +764,7 @@ NvmeControllerInit ( + } + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "NvmeControllerInit: failed to enable controller\n")); ++ DEBUG ((DEBUG_INFO, "NvmeControllerInit: failed to enable controller\n")); + return Status; + } + +@@ -778,7 +778,7 @@ NvmeControllerInit ( + NULL + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_WARN, "NvmeControllerInit: failed to enable 64-bit DMA (%r)\n", Status)); ++ DEBUG ((DEBUG_WARN, "NvmeControllerInit: failed to enable 64-bit DMA (%r)\n", Status)); + } + + // +@@ -790,7 +790,7 @@ NvmeControllerInit ( + } + + if (Private->Cap.Css != 0x01) { +- DEBUG ((EFI_D_INFO, "NvmeControllerInit: the controller doesn't support NVMe command set\n")); ++ DEBUG ((DEBUG_INFO, "NvmeControllerInit: the controller doesn't support NVMe command set\n")); + return EFI_UNSUPPORTED; + } + +@@ -854,15 +854,15 @@ NvmeControllerInit ( + Private->CqBuffer[2] = (NVME_CQ *)(UINTN)(Private->Buffer + 5 * EFI_PAGE_SIZE); + Private->CqBufferPciAddr[2] = (NVME_CQ *)(UINTN)(Private->BufferPciAddr + 5 * EFI_PAGE_SIZE); + +- DEBUG ((EFI_D_INFO, "Private->Buffer = [%016X]\n", (UINT64)(UINTN)Private->Buffer)); +- DEBUG ((EFI_D_INFO, "Admin Submission Queue size (Aqa.Asqs) = [%08X]\n", Aqa.Asqs)); +- DEBUG ((EFI_D_INFO, "Admin Completion Queue size (Aqa.Acqs) = [%08X]\n", Aqa.Acqs)); +- DEBUG ((EFI_D_INFO, "Admin Submission Queue (SqBuffer[0]) = [%016X]\n", Private->SqBuffer[0])); +- DEBUG ((EFI_D_INFO, "Admin Completion Queue (CqBuffer[0]) = [%016X]\n", Private->CqBuffer[0])); +- DEBUG ((EFI_D_INFO, "Sync I/O Submission Queue (SqBuffer[1]) = [%016X]\n", Private->SqBuffer[1])); +- DEBUG ((EFI_D_INFO, "Sync I/O Completion Queue (CqBuffer[1]) = [%016X]\n", Private->CqBuffer[1])); +- DEBUG ((EFI_D_INFO, "Async I/O Submission Queue (SqBuffer[2]) = [%016X]\n", Private->SqBuffer[2])); +- DEBUG ((EFI_D_INFO, "Async I/O Completion Queue (CqBuffer[2]) = [%016X]\n", Private->CqBuffer[2])); ++ DEBUG ((DEBUG_INFO, "Private->Buffer = [%016X]\n", (UINT64)(UINTN)Private->Buffer)); ++ DEBUG ((DEBUG_INFO, "Admin Submission Queue size (Aqa.Asqs) = [%08X]\n", Aqa.Asqs)); ++ DEBUG ((DEBUG_INFO, "Admin Completion Queue size (Aqa.Acqs) = [%08X]\n", Aqa.Acqs)); ++ DEBUG ((DEBUG_INFO, "Admin Submission Queue (SqBuffer[0]) = [%016X]\n", Private->SqBuffer[0])); ++ DEBUG ((DEBUG_INFO, "Admin Completion Queue (CqBuffer[0]) = [%016X]\n", Private->CqBuffer[0])); ++ DEBUG ((DEBUG_INFO, "Sync I/O Submission Queue (SqBuffer[1]) = [%016X]\n", Private->SqBuffer[1])); ++ DEBUG ((DEBUG_INFO, "Sync I/O Completion Queue (CqBuffer[1]) = [%016X]\n", Private->CqBuffer[1])); ++ DEBUG ((DEBUG_INFO, "Async I/O Submission Queue (SqBuffer[2]) = [%016X]\n", Private->SqBuffer[2])); ++ DEBUG ((DEBUG_INFO, "Async I/O Completion Queue (CqBuffer[2]) = [%016X]\n", Private->CqBuffer[2])); + + // + // Program admin queue attributes. +@@ -925,20 +925,20 @@ NvmeControllerInit ( + Sn[20] = 0; + CopyMem (Mn, Private->ControllerData->Mn, sizeof (Private->ControllerData->Mn)); + Mn[40] = 0; +- DEBUG ((EFI_D_INFO, " == NVME IDENTIFY CONTROLLER DATA ==\n")); +- DEBUG ((EFI_D_INFO, " PCI VID : 0x%x\n", Private->ControllerData->Vid)); +- DEBUG ((EFI_D_INFO, " PCI SSVID : 0x%x\n", Private->ControllerData->Ssvid)); +- DEBUG ((EFI_D_INFO, " SN : %a\n", Sn)); +- DEBUG ((EFI_D_INFO, " MN : %a\n", Mn)); +- DEBUG ((EFI_D_INFO, " FR : 0x%x\n", *((UINT64*)Private->ControllerData->Fr))); ++ DEBUG ((DEBUG_INFO, " == NVME IDENTIFY CONTROLLER DATA ==\n")); ++ DEBUG ((DEBUG_INFO, " PCI VID : 0x%x\n", Private->ControllerData->Vid)); ++ DEBUG ((DEBUG_INFO, " PCI SSVID : 0x%x\n", Private->ControllerData->Ssvid)); ++ DEBUG ((DEBUG_INFO, " SN : %a\n", Sn)); ++ DEBUG ((DEBUG_INFO, " MN : %a\n", Mn)); ++ DEBUG ((DEBUG_INFO, " FR : 0x%x\n", *((UINT64*)Private->ControllerData->Fr))); + DEBUG ((DEBUG_INFO, " TNVMCAP (high 8-byte) : 0x%lx\n", *((UINT64*)(Private->ControllerData->Tnvmcap + 8)))); + DEBUG ((DEBUG_INFO, " TNVMCAP (low 8-byte) : 0x%lx\n", *((UINT64*)Private->ControllerData->Tnvmcap))); +- DEBUG ((EFI_D_INFO, " RAB : 0x%x\n", Private->ControllerData->Rab)); +- DEBUG ((EFI_D_INFO, " IEEE : 0x%x\n", *(UINT32*)Private->ControllerData->Ieee_oui)); +- DEBUG ((EFI_D_INFO, " AERL : 0x%x\n", Private->ControllerData->Aerl)); +- DEBUG ((EFI_D_INFO, " SQES : 0x%x\n", Private->ControllerData->Sqes)); +- DEBUG ((EFI_D_INFO, " CQES : 0x%x\n", Private->ControllerData->Cqes)); +- DEBUG ((EFI_D_INFO, " NN : 0x%x\n", Private->ControllerData->Nn)); ++ DEBUG ((DEBUG_INFO, " RAB : 0x%x\n", Private->ControllerData->Rab)); ++ DEBUG ((DEBUG_INFO, " IEEE : 0x%x\n", *(UINT32*)Private->ControllerData->Ieee_oui)); ++ DEBUG ((DEBUG_INFO, " AERL : 0x%x\n", Private->ControllerData->Aerl)); ++ DEBUG ((DEBUG_INFO, " SQES : 0x%x\n", Private->ControllerData->Sqes)); ++ DEBUG ((DEBUG_INFO, " CQES : 0x%x\n", Private->ControllerData->Cqes)); ++ DEBUG ((DEBUG_INFO, " NN : 0x%x\n", Private->ControllerData->Nn)); + + // + // Create two I/O completion queues. +diff --git a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressPassthru.c b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressPassthru.c +index e9357b1239..a46a098258 100644 +--- a/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressPassthru.c ++++ b/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressPassthru.c +@@ -21,80 +21,80 @@ NvmeDumpStatus ( + IN NVME_CQ *Cq + ) + { +- DEBUG ((EFI_D_VERBOSE, "Dump NVMe Completion Entry Status from [0x%x]:\n", Cq)); ++ DEBUG ((DEBUG_VERBOSE, "Dump NVMe Completion Entry Status from [0x%x]:\n", Cq)); + +- DEBUG ((EFI_D_VERBOSE, " SQ Identifier : [0x%x], Phase Tag : [%d], Cmd Identifier : [0x%x]\n", Cq->Sqid, Cq->Pt, Cq->Cid)); ++ DEBUG ((DEBUG_VERBOSE, " SQ Identifier : [0x%x], Phase Tag : [%d], Cmd Identifier : [0x%x]\n", Cq->Sqid, Cq->Pt, Cq->Cid)); + +- DEBUG ((EFI_D_VERBOSE, " NVMe Cmd Execution Result - ")); ++ DEBUG ((DEBUG_VERBOSE, " NVMe Cmd Execution Result - ")); + + switch (Cq->Sct) { + case 0x0: + switch (Cq->Sc) { + case 0x0: +- DEBUG ((EFI_D_VERBOSE, "Successful Completion\n")); ++ DEBUG ((DEBUG_VERBOSE, "Successful Completion\n")); + break; + case 0x1: +- DEBUG ((EFI_D_VERBOSE, "Invalid Command Opcode\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Command Opcode\n")); + break; + case 0x2: +- DEBUG ((EFI_D_VERBOSE, "Invalid Field in Command\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Field in Command\n")); + break; + case 0x3: +- DEBUG ((EFI_D_VERBOSE, "Command ID Conflict\n")); ++ DEBUG ((DEBUG_VERBOSE, "Command ID Conflict\n")); + break; + case 0x4: +- DEBUG ((EFI_D_VERBOSE, "Data Transfer Error\n")); ++ DEBUG ((DEBUG_VERBOSE, "Data Transfer Error\n")); + break; + case 0x5: +- DEBUG ((EFI_D_VERBOSE, "Commands Aborted due to Power Loss Notification\n")); ++ DEBUG ((DEBUG_VERBOSE, "Commands Aborted due to Power Loss Notification\n")); + break; + case 0x6: +- DEBUG ((EFI_D_VERBOSE, "Internal Device Error\n")); ++ DEBUG ((DEBUG_VERBOSE, "Internal Device Error\n")); + break; + case 0x7: +- DEBUG ((EFI_D_VERBOSE, "Command Abort Requested\n")); ++ DEBUG ((DEBUG_VERBOSE, "Command Abort Requested\n")); + break; + case 0x8: +- DEBUG ((EFI_D_VERBOSE, "Command Aborted due to SQ Deletion\n")); ++ DEBUG ((DEBUG_VERBOSE, "Command Aborted due to SQ Deletion\n")); + break; + case 0x9: +- DEBUG ((EFI_D_VERBOSE, "Command Aborted due to Failed Fused Command\n")); ++ DEBUG ((DEBUG_VERBOSE, "Command Aborted due to Failed Fused Command\n")); + break; + case 0xA: +- DEBUG ((EFI_D_VERBOSE, "Command Aborted due to Missing Fused Command\n")); ++ DEBUG ((DEBUG_VERBOSE, "Command Aborted due to Missing Fused Command\n")); + break; + case 0xB: +- DEBUG ((EFI_D_VERBOSE, "Invalid Namespace or Format\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Namespace or Format\n")); + break; + case 0xC: +- DEBUG ((EFI_D_VERBOSE, "Command Sequence Error\n")); ++ DEBUG ((DEBUG_VERBOSE, "Command Sequence Error\n")); + break; + case 0xD: +- DEBUG ((EFI_D_VERBOSE, "Invalid SGL Last Segment Descriptor\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid SGL Last Segment Descriptor\n")); + break; + case 0xE: +- DEBUG ((EFI_D_VERBOSE, "Invalid Number of SGL Descriptors\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Number of SGL Descriptors\n")); + break; + case 0xF: +- DEBUG ((EFI_D_VERBOSE, "Data SGL Length Invalid\n")); ++ DEBUG ((DEBUG_VERBOSE, "Data SGL Length Invalid\n")); + break; + case 0x10: +- DEBUG ((EFI_D_VERBOSE, "Metadata SGL Length Invalid\n")); ++ DEBUG ((DEBUG_VERBOSE, "Metadata SGL Length Invalid\n")); + break; + case 0x11: +- DEBUG ((EFI_D_VERBOSE, "SGL Descriptor Type Invalid\n")); ++ DEBUG ((DEBUG_VERBOSE, "SGL Descriptor Type Invalid\n")); + break; + case 0x80: +- DEBUG ((EFI_D_VERBOSE, "LBA Out of Range\n")); ++ DEBUG ((DEBUG_VERBOSE, "LBA Out of Range\n")); + break; + case 0x81: +- DEBUG ((EFI_D_VERBOSE, "Capacity Exceeded\n")); ++ DEBUG ((DEBUG_VERBOSE, "Capacity Exceeded\n")); + break; + case 0x82: +- DEBUG ((EFI_D_VERBOSE, "Namespace Not Ready\n")); ++ DEBUG ((DEBUG_VERBOSE, "Namespace Not Ready\n")); + break; + case 0x83: +- DEBUG ((EFI_D_VERBOSE, "Reservation Conflict\n")); ++ DEBUG ((DEBUG_VERBOSE, "Reservation Conflict\n")); + break; + } + break; +@@ -102,61 +102,61 @@ NvmeDumpStatus ( + case 0x1: + switch (Cq->Sc) { + case 0x0: +- DEBUG ((EFI_D_VERBOSE, "Completion Queue Invalid\n")); ++ DEBUG ((DEBUG_VERBOSE, "Completion Queue Invalid\n")); + break; + case 0x1: +- DEBUG ((EFI_D_VERBOSE, "Invalid Queue Identifier\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Queue Identifier\n")); + break; + case 0x2: +- DEBUG ((EFI_D_VERBOSE, "Maximum Queue Size Exceeded\n")); ++ DEBUG ((DEBUG_VERBOSE, "Maximum Queue Size Exceeded\n")); + break; + case 0x3: +- DEBUG ((EFI_D_VERBOSE, "Abort Command Limit Exceeded\n")); ++ DEBUG ((DEBUG_VERBOSE, "Abort Command Limit Exceeded\n")); + break; + case 0x5: +- DEBUG ((EFI_D_VERBOSE, "Asynchronous Event Request Limit Exceeded\n")); ++ DEBUG ((DEBUG_VERBOSE, "Asynchronous Event Request Limit Exceeded\n")); + break; + case 0x6: +- DEBUG ((EFI_D_VERBOSE, "Invalid Firmware Slot\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Firmware Slot\n")); + break; + case 0x7: +- DEBUG ((EFI_D_VERBOSE, "Invalid Firmware Image\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Firmware Image\n")); + break; + case 0x8: +- DEBUG ((EFI_D_VERBOSE, "Invalid Interrupt Vector\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Interrupt Vector\n")); + break; + case 0x9: +- DEBUG ((EFI_D_VERBOSE, "Invalid Log Page\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Log Page\n")); + break; + case 0xA: +- DEBUG ((EFI_D_VERBOSE, "Invalid Format\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Format\n")); + break; + case 0xB: +- DEBUG ((EFI_D_VERBOSE, "Firmware Application Requires Conventional Reset\n")); ++ DEBUG ((DEBUG_VERBOSE, "Firmware Application Requires Conventional Reset\n")); + break; + case 0xC: +- DEBUG ((EFI_D_VERBOSE, "Invalid Queue Deletion\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Queue Deletion\n")); + break; + case 0xD: +- DEBUG ((EFI_D_VERBOSE, "Feature Identifier Not Saveable\n")); ++ DEBUG ((DEBUG_VERBOSE, "Feature Identifier Not Saveable\n")); + break; + case 0xE: +- DEBUG ((EFI_D_VERBOSE, "Feature Not Changeable\n")); ++ DEBUG ((DEBUG_VERBOSE, "Feature Not Changeable\n")); + break; + case 0xF: +- DEBUG ((EFI_D_VERBOSE, "Feature Not Namespace Specific\n")); ++ DEBUG ((DEBUG_VERBOSE, "Feature Not Namespace Specific\n")); + break; + case 0x10: +- DEBUG ((EFI_D_VERBOSE, "Firmware Application Requires NVM Subsystem Reset\n")); ++ DEBUG ((DEBUG_VERBOSE, "Firmware Application Requires NVM Subsystem Reset\n")); + break; + case 0x80: +- DEBUG ((EFI_D_VERBOSE, "Conflicting Attributes\n")); ++ DEBUG ((DEBUG_VERBOSE, "Conflicting Attributes\n")); + break; + case 0x81: +- DEBUG ((EFI_D_VERBOSE, "Invalid Protection Information\n")); ++ DEBUG ((DEBUG_VERBOSE, "Invalid Protection Information\n")); + break; + case 0x82: +- DEBUG ((EFI_D_VERBOSE, "Attempted Write to Read Only Range\n")); ++ DEBUG ((DEBUG_VERBOSE, "Attempted Write to Read Only Range\n")); + break; + } + break; +@@ -164,25 +164,25 @@ NvmeDumpStatus ( + case 0x2: + switch (Cq->Sc) { + case 0x80: +- DEBUG ((EFI_D_VERBOSE, "Write Fault\n")); ++ DEBUG ((DEBUG_VERBOSE, "Write Fault\n")); + break; + case 0x81: +- DEBUG ((EFI_D_VERBOSE, "Unrecovered Read Error\n")); ++ DEBUG ((DEBUG_VERBOSE, "Unrecovered Read Error\n")); + break; + case 0x82: +- DEBUG ((EFI_D_VERBOSE, "End-to-end Guard Check Error\n")); ++ DEBUG ((DEBUG_VERBOSE, "End-to-end Guard Check Error\n")); + break; + case 0x83: +- DEBUG ((EFI_D_VERBOSE, "End-to-end Application Tag Check Error\n")); ++ DEBUG ((DEBUG_VERBOSE, "End-to-end Application Tag Check Error\n")); + break; + case 0x84: +- DEBUG ((EFI_D_VERBOSE, "End-to-end Reference Tag Check Error\n")); ++ DEBUG ((DEBUG_VERBOSE, "End-to-end Reference Tag Check Error\n")); + break; + case 0x85: +- DEBUG ((EFI_D_VERBOSE, "Compare Failure\n")); ++ DEBUG ((DEBUG_VERBOSE, "Compare Failure\n")); + break; + case 0x86: +- DEBUG ((EFI_D_VERBOSE, "Access Denied\n")); ++ DEBUG ((DEBUG_VERBOSE, "Access Denied\n")); + break; + } + break; +@@ -268,7 +268,7 @@ NvmeCreatePrpList ( + ); + + if (EFI_ERROR (Status) || (Bytes != EFI_PAGES_TO_SIZE (*PrpListNo))) { +- DEBUG ((EFI_D_ERROR, "NvmeCreatePrpList: create PrpList failure!\n")); ++ DEBUG ((DEBUG_ERROR, "NvmeCreatePrpList: create PrpList failure!\n")); + goto EXIT; + } + // +@@ -578,7 +578,7 @@ NvmExpressPassThru ( + // + ASSERT (Sq->Psdt == 0); + if (Sq->Psdt != 0) { +- DEBUG ((EFI_D_ERROR, "NvmExpressPassThru: doesn't support SGL mechanism\n")); ++ DEBUG ((DEBUG_ERROR, "NvmExpressPassThru: doesn't support SGL mechanism\n")); + return EFI_UNSUPPORTED; + } + +@@ -1182,4 +1182,3 @@ Exit: + + return Status; + } +- +diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c +index 8db1ebf8ec..99f8642f13 100644 +--- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c ++++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c +@@ -1003,7 +1003,7 @@ PciHostBridgeAdjustAllocation ( + Status = RejectPciDevice (PciResNode->PciDev); + if (Status == EFI_SUCCESS) { + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + "PciBus: [%02x|%02x|%02x] was rejected due to resource confliction.\n", + PciResNode->PciDev->BusNumber, PciResNode->PciDev->DeviceNumber, PciResNode->PciDev->FunctionNumber + )); +@@ -2207,4 +2207,3 @@ AddHostBridgeEnumerator ( + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c +index 3a238d4e46..5111bd513a 100644 +--- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c ++++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c +@@ -231,7 +231,7 @@ PciSearchDevice ( + PciIoDevice = NULL; + + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "PciBus: Discovered %s @ [%02x|%02x|%02x]\n", + IS_PCI_BRIDGE (Pci) ? L"PPB" : + IS_CARDBUS_BRIDGE (Pci) ? L"P2C" : +@@ -398,7 +398,7 @@ DumpPpbPaddingResource ( + + if ((Type != PciBarTypeUnknown) && ((ResourceType == PciBarTypeUnknown) || (ResourceType == Type))) { + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + " Padding: Type = %s; Alignment = 0x%lx;\tLength = 0x%lx\n", + mBarTypeStr[Type], Descriptor->AddrRangeMax, Descriptor->AddrLen + )); +@@ -425,7 +425,7 @@ DumpPciBars ( + } + + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + " BAR[%d]: Type = %s; Alignment = 0x%lx;\tLength = 0x%lx;\tOffset = 0x%02x\n", + Index, mBarTypeStr[MIN (PciIoDevice->PciBar[Index].BarType, PciBarTypeMaxType)], + PciIoDevice->PciBar[Index].Alignment, PciIoDevice->PciBar[Index].Length, PciIoDevice->PciBar[Index].Offset +@@ -438,13 +438,13 @@ DumpPciBars ( + } + + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + " VFBAR[%d]: Type = %s; Alignment = 0x%lx;\tLength = 0x%lx;\tOffset = 0x%02x\n", + Index, mBarTypeStr[MIN (PciIoDevice->VfPciBar[Index].BarType, PciBarTypeMaxType)], + PciIoDevice->VfPciBar[Index].Alignment, PciIoDevice->VfPciBar[Index].Length, PciIoDevice->VfPciBar[Index].Offset + )); + } +- DEBUG ((EFI_D_INFO, "\n")); ++ DEBUG ((DEBUG_INFO, "\n")); + } + + /** +@@ -1903,7 +1903,7 @@ PciParseBar ( + // Fix the length to support some special 64 bit BAR + // + if (Value == 0) { +- DEBUG ((EFI_D_INFO, "[PciBus]BAR probing for upper 32bit of MEM64 BAR returns 0, change to 0xFFFFFFFF.\n")); ++ DEBUG ((DEBUG_INFO, "[PciBus]BAR probing for upper 32bit of MEM64 BAR returns 0, change to 0xFFFFFFFF.\n")); + Value = (UINT32) -1; + } else { + Value |= ((UINT32)(-1) << HighBitSet32 (Value)); +@@ -2282,7 +2282,7 @@ CreatePciIoDevice ( + &Data32 + ); + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + " ARI: forwarding enabled for PPB[%02x:%02x:%02x]\n", + Bridge->BusNumber, + Bridge->DeviceNumber, +@@ -2291,7 +2291,7 @@ CreatePciIoDevice ( + } + } + +- DEBUG ((EFI_D_INFO, " ARI: CapOffset = 0x%x\n", PciIoDevice->AriCapabilityOffset)); ++ DEBUG ((DEBUG_INFO, " ARI: CapOffset = 0x%x\n", PciIoDevice->AriCapabilityOffset)); + } + } + +@@ -2401,12 +2401,12 @@ CreatePciIoDevice ( + PciIoDevice->ReservedBusNum = (UINT16)(EFI_PCI_BUS_OF_RID (LastVF) - Bus + 1); + + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + " SR-IOV: SupportedPageSize = 0x%x; SystemPageSize = 0x%x; FirstVFOffset = 0x%x;\n", + SupportedPageSize, PciIoDevice->SystemPageSize >> 12, FirstVFOffset + )); + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + " InitialVFs = 0x%x; ReservedBusNum = 0x%x; CapOffset = 0x%x\n", + PciIoDevice->InitialVFs, PciIoDevice->ReservedBusNum, PciIoDevice->SrIovCapabilityOffset + )); +@@ -2421,7 +2421,7 @@ CreatePciIoDevice ( + NULL + ); + if (!EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, " MR-IOV: CapOffset = 0x%x\n", PciIoDevice->MrIovCapabilityOffset)); ++ DEBUG ((DEBUG_INFO, " MR-IOV: CapOffset = 0x%x\n", PciIoDevice->MrIovCapabilityOffset)); + } + } + +@@ -2869,4 +2869,3 @@ ResetAllPpbBusNumber ( + } + } + } +- +diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c b/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c +index 4caac56f1d..0ad1dfa526 100644 +--- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c ++++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c +@@ -215,7 +215,7 @@ DumpBridgeResource ( + + if ((BridgeResource != NULL) && (BridgeResource->Length != 0)) { + DEBUG (( +- EFI_D_INFO, "Type = %s; Base = 0x%lx;\tLength = 0x%lx;\tAlignment = 0x%lx\n", ++ DEBUG_INFO, "Type = %s; Base = 0x%lx;\tLength = 0x%lx;\tAlignment = 0x%lx\n", + mBarTypeStr[MIN (BridgeResource->ResType, PciBarTypeMaxType)], + BridgeResource->PciDev->PciBar[BridgeResource->Bar].BaseAddress, + BridgeResource->Length, BridgeResource->Alignment +@@ -228,7 +228,7 @@ DumpBridgeResource ( + if (Resource->ResourceUsage == PciResUsageTypical) { + Bar = Resource->Virtual ? Resource->PciDev->VfPciBar : Resource->PciDev->PciBar; + DEBUG (( +- EFI_D_INFO, " Base = 0x%lx;\tLength = 0x%lx;\tAlignment = 0x%lx;\tOwner = %s [%02x|%02x|%02x:", ++ DEBUG_INFO, " Base = 0x%lx;\tLength = 0x%lx;\tAlignment = 0x%lx;\tOwner = %s [%02x|%02x|%02x:", + Bar[Resource->Bar].BaseAddress, Resource->Length, Resource->Alignment, + IS_PCI_BRIDGE (&Resource->PciDev->Pci) ? L"PPB" : + IS_CARDBUS_BRIDGE (&Resource->PciDev->Pci) ? L"P2C" : +@@ -244,20 +244,20 @@ DumpBridgeResource ( + // + // The resource requirement comes from the device itself. + // +- DEBUG ((EFI_D_INFO, "%02x]", Bar[Resource->Bar].Offset)); ++ DEBUG ((DEBUG_INFO, "%02x]", Bar[Resource->Bar].Offset)); + } else { + // + // The resource requirement comes from the subordinate devices. + // +- DEBUG ((EFI_D_INFO, "**]")); ++ DEBUG ((DEBUG_INFO, "**]")); + } + } else { +- DEBUG ((EFI_D_INFO, " Base = Padding;\tLength = 0x%lx;\tAlignment = 0x%lx", Resource->Length, Resource->Alignment)); ++ DEBUG ((DEBUG_INFO, " Base = Padding;\tLength = 0x%lx;\tAlignment = 0x%lx", Resource->Length, Resource->Alignment)); + } + if (BridgeResource->ResType != Resource->ResType) { +- DEBUG ((EFI_D_INFO, "; Type = %s", mBarTypeStr[MIN (Resource->ResType, PciBarTypeMaxType)])); ++ DEBUG ((DEBUG_INFO, "; Type = %s", mBarTypeStr[MIN (Resource->ResType, PciBarTypeMaxType)])); + } +- DEBUG ((EFI_D_INFO, "\n")); ++ DEBUG ((DEBUG_INFO, "\n")); + } + } + } +@@ -321,7 +321,7 @@ DumpResourceMap ( + PCI_RESOURCE_NODE **ChildResources; + UINTN ChildResourceCount; + +- DEBUG ((EFI_D_INFO, "PciBus: Resource Map for ")); ++ DEBUG ((DEBUG_INFO, "PciBus: Resource Map for ")); + + Status = gBS->OpenProtocol ( + Bridge->Handle, +@@ -333,7 +333,7 @@ DumpResourceMap ( + ); + if (EFI_ERROR (Status)) { + DEBUG (( +- EFI_D_INFO, "Bridge [%02x|%02x|%02x]\n", ++ DEBUG_INFO, "Bridge [%02x|%02x|%02x]\n", + Bridge->BusNumber, Bridge->DeviceNumber, Bridge->FunctionNumber + )); + } else { +@@ -342,7 +342,7 @@ DumpResourceMap ( + FALSE, + FALSE + ); +- DEBUG ((EFI_D_INFO, "Root Bridge %s\n", Str != NULL ? Str : L"")); ++ DEBUG ((DEBUG_INFO, "Root Bridge %s\n", Str != NULL ? Str : L"")); + if (Str != NULL) { + FreePool (Str); + } +@@ -351,7 +351,7 @@ DumpResourceMap ( + for (Index = 0; Index < ResourceCount; Index++) { + DumpBridgeResource (Resources[Index]); + } +- DEBUG ((EFI_D_INFO, "\n")); ++ DEBUG ((DEBUG_INFO, "\n")); + + for ( Link = Bridge->ChildList.ForwardLink + ; Link != &Bridge->ChildList +@@ -622,7 +622,7 @@ PciHostBridgeResourceAllocator ( + // If SubmitResources returns error, PciBus isn't able to start. + // It's a fatal error so assertion is added. + // +- DEBUG ((EFI_D_INFO, "PciBus: HostBridge->SubmitResources() - %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "PciBus: HostBridge->SubmitResources() - %r\n", Status)); + ASSERT_EFI_ERROR (Status); + } + +@@ -654,7 +654,7 @@ PciHostBridgeResourceAllocator ( + // Notify platform to start to program the resource + // + Status = NotifyPhase (PciResAlloc, EfiPciHostBridgeAllocateResources); +- DEBUG ((EFI_D_INFO, "PciBus: HostBridge->NotifyPhase(AllocateResources) - %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "PciBus: HostBridge->NotifyPhase(AllocateResources) - %r\n", Status)); + if (!FeaturePcdGet (PcdPciBusHotplugDeviceSupport)) { + // + // If Hot Plug is not supported +@@ -1340,9 +1340,9 @@ PciScanBus ( + TempReservedBusNum = PciDevice->ReservedBusNum; + + if (Func == 0) { +- DEBUG ((EFI_D_INFO, "PCI-IOV ScanBus - SubBusNumber - 0x%x\n", *SubBusNumber)); ++ DEBUG ((DEBUG_INFO, "PCI-IOV ScanBus - SubBusNumber - 0x%x\n", *SubBusNumber)); + } else { +- DEBUG ((EFI_D_INFO, "PCI-IOV ScanBus - SubBusNumber - 0x%x (Update)\n", *SubBusNumber)); ++ DEBUG ((DEBUG_INFO, "PCI-IOV ScanBus - SubBusNumber - 0x%x (Update)\n", *SubBusNumber)); + } + } + } +@@ -1522,7 +1522,7 @@ PciHostBridgeEnumerator ( + return Status; + } + +- DEBUG((EFI_D_INFO, "PCI Bus First Scanning\n")); ++ DEBUG((DEBUG_INFO, "PCI Bus First Scanning\n")); + RootBridgeHandle = NULL; + while (PciResAlloc->GetNextRootBridge (PciResAlloc, &RootBridgeHandle) == EFI_SUCCESS) { + +@@ -1601,7 +1601,7 @@ PciHostBridgeEnumerator ( + Status = AllRootHPCInitialized (STALL_1_SECOND * 15); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Some root HPC failed to initialize\n")); ++ DEBUG ((DEBUG_ERROR, "Some root HPC failed to initialize\n")); + return Status; + } + +@@ -1614,7 +1614,7 @@ PciHostBridgeEnumerator ( + return Status; + } + +- DEBUG((EFI_D_INFO, "PCI Bus Second Scanning\n")); ++ DEBUG((DEBUG_INFO, "PCI Bus Second Scanning\n")); + RootBridgeHandle = NULL; + while (PciResAlloc->GetNextRootBridge (PciResAlloc, &RootBridgeHandle) == EFI_SUCCESS) { + +diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c +index 163e931dd9..a71518652d 100644 +--- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c ++++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c +@@ -119,13 +119,13 @@ IntersectIoDescriptor ( + Status = gDS->AddIoSpace (EfiGcdIoTypeIo, IntersectionBase, + IntersectionEnd - IntersectionBase); + +- DEBUG ((EFI_ERROR (Status) ? EFI_D_ERROR : EFI_D_VERBOSE, ++ DEBUG ((EFI_ERROR (Status) ? DEBUG_ERROR : DEBUG_VERBOSE, + "%a: %a: add [%Lx, %Lx): %r\n", gEfiCallerBaseName, __FUNCTION__, + IntersectionBase, IntersectionEnd, Status)); + return Status; + } + +- DEBUG ((EFI_D_ERROR, "%a: %a: desc [%Lx, %Lx) type %u conflicts with " ++ DEBUG ((DEBUG_ERROR, "%a: %a: desc [%Lx, %Lx) type %u conflicts with " + "aperture [%Lx, %Lx)\n", gEfiCallerBaseName, __FUNCTION__, + Descriptor->BaseAddress, Descriptor->BaseAddress + Descriptor->Length, + (UINT32)Descriptor->GcdIoType, Base, Base + Length)); +@@ -155,7 +155,7 @@ AddIoSpace ( + + Status = gDS->GetIoSpaceMap (&NumberOfDescriptors, &IoSpaceMap); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "%a: %a: GetIoSpaceMap(): %r\n", ++ DEBUG ((DEBUG_ERROR, "%a: %a: GetIoSpaceMap(): %r\n", + gEfiCallerBaseName, __FUNCTION__, Status)); + return Status; + } +@@ -263,13 +263,13 @@ IntersectMemoryDescriptor ( + IntersectionBase, IntersectionEnd - IntersectionBase, + Capabilities); + +- DEBUG ((EFI_ERROR (Status) ? EFI_D_ERROR : EFI_D_VERBOSE, ++ DEBUG ((EFI_ERROR (Status) ? DEBUG_ERROR : DEBUG_VERBOSE, + "%a: %a: add [%Lx, %Lx): %r\n", gEfiCallerBaseName, __FUNCTION__, + IntersectionBase, IntersectionEnd, Status)); + return Status; + } + +- DEBUG ((EFI_D_ERROR, "%a: %a: desc [%Lx, %Lx) type %u cap %Lx conflicts " ++ DEBUG ((DEBUG_ERROR, "%a: %a: desc [%Lx, %Lx) type %u cap %Lx conflicts " + "with aperture [%Lx, %Lx) cap %Lx\n", gEfiCallerBaseName, __FUNCTION__, + Descriptor->BaseAddress, Descriptor->BaseAddress + Descriptor->Length, + (UINT32)Descriptor->GcdMemoryType, Descriptor->Capabilities, +@@ -302,7 +302,7 @@ AddMemoryMappedIoSpace ( + + Status = gDS->GetMemorySpaceMap (&NumberOfDescriptors, &MemorySpaceMap); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "%a: %a: GetMemorySpaceMap(): %r\n", ++ DEBUG ((DEBUG_ERROR, "%a: %a: GetMemorySpaceMap(): %r\n", + gEfiCallerBaseName, __FUNCTION__, Status)); + return Status; + } +@@ -828,7 +828,7 @@ NotifyPhase ( + } + } + +- DEBUG ((EFI_D_INFO, "PciHostBridge: NotifyPhase (AllocateResources)\n")); ++ DEBUG ((DEBUG_INFO, "PciHostBridge: NotifyPhase (AllocateResources)\n")); + for (Link = GetFirstNode (&HostBridge->RootBridges) + ; !IsNull (&HostBridge->RootBridges, Link) + ; Link = GetNextNode (&HostBridge->RootBridges, Link) +@@ -838,7 +838,7 @@ NotifyPhase ( + } + + RootBridge = ROOT_BRIDGE_FROM_LINK (Link); +- DEBUG ((EFI_D_INFO, " RootBridge: %s\n", RootBridge->DevicePathStr)); ++ DEBUG ((DEBUG_INFO, " RootBridge: %s\n", RootBridge->DevicePathStr)); + + for (Index1 = TypeIo; Index1 < TypeBus; Index1++) { + if (RootBridge->ResAllocNode[Index1].Status == ResNone) { +@@ -1360,7 +1360,7 @@ SubmitResources ( + ) { + RootBridge = ROOT_BRIDGE_FROM_LINK (Link); + if (RootBridgeHandle == RootBridge->Handle) { +- DEBUG ((EFI_D_INFO, "PciHostBridge: SubmitResources for %s\n", RootBridge->DevicePathStr)); ++ DEBUG ((DEBUG_INFO, "PciHostBridge: SubmitResources for %s\n", RootBridge->DevicePathStr)); + // + // Check the resource descriptors. + // If the Configuration includes one or more invalid resource descriptors, all the resource +@@ -1371,11 +1371,11 @@ SubmitResources ( + return EFI_INVALID_PARAMETER; + } + +- DEBUG ((EFI_D_INFO, " %s: Granularity/SpecificFlag = %ld / %02x%s\n", ++ DEBUG ((DEBUG_INFO, " %s: Granularity/SpecificFlag = %ld / %02x%s\n", + mAcpiAddressSpaceTypeStr[Descriptor->ResType], Descriptor->AddrSpaceGranularity, Descriptor->SpecificFlag, + (Descriptor->SpecificFlag & EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE) != 0 ? L" (Prefetchable)" : L"" + )); +- DEBUG ((EFI_D_INFO, " Length/Alignment = 0x%lx / 0x%lx\n", Descriptor->AddrLen, Descriptor->AddrRangeMax)); ++ DEBUG ((DEBUG_INFO, " Length/Alignment = 0x%lx / 0x%lx\n", Descriptor->AddrLen, Descriptor->AddrRangeMax)); + switch (Descriptor->ResType) { + case ACPI_ADDRESS_SPACE_TYPE_MEM: + if (Descriptor->AddrSpaceGranularity != 32 && Descriptor->AddrSpaceGranularity != 64) { +diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c +index d304fae422..2f1bed853d 100644 +--- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c ++++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c +@@ -71,17 +71,17 @@ CreateRootBridge ( + + DevicePathStr = NULL; + +- DEBUG ((EFI_D_INFO, "RootBridge: ")); +- DEBUG ((EFI_D_INFO, "%s\n", DevicePathStr = ConvertDevicePathToText (Bridge->DevicePath, FALSE, FALSE))); +- DEBUG ((EFI_D_INFO, " Support/Attr: %lx / %lx\n", Bridge->Supports, Bridge->Attributes)); +- DEBUG ((EFI_D_INFO, " DmaAbove4G: %s\n", Bridge->DmaAbove4G ? L"Yes" : L"No")); +- DEBUG ((EFI_D_INFO, "NoExtConfSpace: %s\n", Bridge->NoExtendedConfigSpace ? L"Yes" : L"No")); +- DEBUG ((EFI_D_INFO, " AllocAttr: %lx (%s%s)\n", Bridge->AllocationAttributes, ++ DEBUG ((DEBUG_INFO, "RootBridge: ")); ++ DEBUG ((DEBUG_INFO, "%s\n", DevicePathStr = ConvertDevicePathToText (Bridge->DevicePath, FALSE, FALSE))); ++ DEBUG ((DEBUG_INFO, " Support/Attr: %lx / %lx\n", Bridge->Supports, Bridge->Attributes)); ++ DEBUG ((DEBUG_INFO, " DmaAbove4G: %s\n", Bridge->DmaAbove4G ? L"Yes" : L"No")); ++ DEBUG ((DEBUG_INFO, "NoExtConfSpace: %s\n", Bridge->NoExtendedConfigSpace ? L"Yes" : L"No")); ++ DEBUG ((DEBUG_INFO, " AllocAttr: %lx (%s%s)\n", Bridge->AllocationAttributes, + (Bridge->AllocationAttributes & EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM) != 0 ? L"CombineMemPMem " : L"", + (Bridge->AllocationAttributes & EFI_PCI_HOST_BRIDGE_MEM64_DECODE) != 0 ? L"Mem64Decode" : L"" + )); + DEBUG (( +- EFI_D_INFO, " Bus: %lx - %lx Translation=%lx\n", ++ DEBUG_INFO, " Bus: %lx - %lx Translation=%lx\n", + Bridge->Bus.Base, Bridge->Bus.Limit, Bridge->Bus.Translation + )); + // +diff --git a/MdeModulePkg/Bus/Pci/PciSioSerialDxe/Serial.c b/MdeModulePkg/Bus/Pci/PciSioSerialDxe/Serial.c +index 9fe8a482e0..4a9b49e347 100644 +--- a/MdeModulePkg/Bus/Pci/PciSioSerialDxe/Serial.c ++++ b/MdeModulePkg/Bus/Pci/PciSioSerialDxe/Serial.c +@@ -943,7 +943,7 @@ SerialControllerDriverStart ( + Node = NextDevicePathNode (Node); + } while (!IsDevicePathEnd (Node)); + Status = CreateSerialDevice (Controller, Uart, ParentDevicePath, FALSE, Acpi->UID, ParentIo, NULL, NULL); +- DEBUG ((EFI_D_INFO, "PciSioSerial: Create SIO child serial device - %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "PciSioSerial: Create SIO child serial device - %r\n", Status)); + } + } else { + Status = ParentIo.PciIo->Pci.Read (ParentIo.PciIo, EfiPciIoWidthUint8, 0, sizeof (Pci), &Pci); +@@ -1024,7 +1024,7 @@ SerialControllerDriverStart ( + } + + Status = CreateSerialDevice (Controller, Uart, ParentDevicePath, FALSE, 0, ParentIo, PciSerialParameter, PciDeviceInfo); +- DEBUG ((EFI_D_INFO, "PciSioSerial: Create PCI child serial device (single) - %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "PciSioSerial: Create PCI child serial device (single) - %r\n", Status)); + if (!EFI_ERROR (Status)) { + PciDeviceInfo->ChildCount++; + } +@@ -1045,7 +1045,7 @@ SerialControllerDriverStart ( + // + Status = CreateSerialDevice (Controller, Uart, ParentDevicePath, TRUE, PciSerialCount, ParentIo, PciSerialParameter, PciDeviceInfo); + PciSerialCount++; +- DEBUG ((EFI_D_INFO, "PciSioSerial: Create PCI child serial device (multiple) - %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "PciSioSerial: Create PCI child serial device (multiple) - %r\n", Status)); + if (!EFI_ERROR (Status)) { + PciDeviceInfo->ChildCount++; + } +diff --git a/MdeModulePkg/Bus/Pci/PciSioSerialDxe/SerialIo.c b/MdeModulePkg/Bus/Pci/PciSioSerialDxe/SerialIo.c +index 56c5faf5db..f8b9a0e3ee 100644 +--- a/MdeModulePkg/Bus/Pci/PciSioSerialDxe/SerialIo.c ++++ b/MdeModulePkg/Bus/Pci/PciSioSerialDxe/SerialIo.c +@@ -134,9 +134,9 @@ VerifyUartParameters ( + } + + Percent = DivU64x32 (MultU64x32 (BaudRate, 100), ComputedBaudRate); +- DEBUG ((EFI_D_INFO, "ClockRate = %d\n", ClockRate)); +- DEBUG ((EFI_D_INFO, "Divisor = %ld\n", ComputedDivisor)); +- DEBUG ((EFI_D_INFO, "BaudRate/Actual (%ld/%d) = %d%%\n", BaudRate, ComputedBaudRate, Percent)); ++ DEBUG ((DEBUG_INFO, "ClockRate = %d\n", ClockRate)); ++ DEBUG ((DEBUG_INFO, "Divisor = %ld\n", ComputedDivisor)); ++ DEBUG ((DEBUG_INFO, "BaudRate/Actual (%ld/%d) = %d%%\n", BaudRate, ComputedBaudRate, Percent)); + + // + // If the requested BaudRate is not supported: +@@ -176,9 +176,9 @@ VerifyUartParameters ( + return FALSE; + } + +- DEBUG ((EFI_D_INFO, "ClockRate = %d\n", ClockRate)); +- DEBUG ((EFI_D_INFO, "Divisor = %ld\n", ComputedDivisor)); +- DEBUG ((EFI_D_INFO, "BaudRate/Actual (%ld/%d) = %d%%\n", BaudRate, ComputedBaudRate, Percent)); ++ DEBUG ((DEBUG_INFO, "ClockRate = %d\n", ClockRate)); ++ DEBUG ((DEBUG_INFO, "Divisor = %ld\n", ComputedDivisor)); ++ DEBUG ((DEBUG_INFO, "BaudRate/Actual (%ld/%d) = %d%%\n", BaudRate, ComputedBaudRate, Percent)); + + if (ActualBaudRate != NULL) { + *ActualBaudRate = ComputedBaudRate; +diff --git a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c +index ab06e2833c..1133e1c935 100644 +--- a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c ++++ b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c +@@ -89,7 +89,7 @@ CalculateBestPioMode ( + if ((IdentifyData->AtaData.field_validity & 0x02) == 0x02) { + + AdvancedPioMode = IdentifyData->AtaData.advanced_pio_modes; +- DEBUG ((EFI_D_INFO, "CalculateBestPioMode: AdvancedPioMode = %x\n", AdvancedPioMode)); ++ DEBUG ((DEBUG_INFO, "CalculateBestPioMode: AdvancedPioMode = %x\n", AdvancedPioMode)); + + for (Index = 0; Index < 8; Index++) { + if ((AdvancedPioMode & 0x01) != 0) { +@@ -203,7 +203,7 @@ CalculateBestUdmaMode ( + } + + DeviceUDmaMode = IdentifyData->AtaData.ultra_dma_mode; +- DEBUG ((EFI_D_INFO, "CalculateBestUdmaMode: DeviceUDmaMode = %x\n", DeviceUDmaMode)); ++ DEBUG ((DEBUG_INFO, "CalculateBestUdmaMode: DeviceUDmaMode = %x\n", DeviceUDmaMode)); + DeviceUDmaMode &= 0x3f; + TempMode = 0; // initialize it to UDMA-0 + +@@ -362,7 +362,7 @@ SataControllerStart ( + UINT64 Supports; + UINT8 MaxPortNumber; + +- DEBUG ((EFI_D_INFO, "SataControllerStart start\n")); ++ DEBUG ((DEBUG_INFO, "SataControllerStart start\n")); + + Private = NULL; + +@@ -378,7 +378,7 @@ SataControllerStart ( + EFI_OPEN_PROTOCOL_BY_DRIVER + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SataControllerStart error. return status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SataControllerStart error. return status = %r\n", Status)); + return Status; + } + +@@ -419,7 +419,7 @@ SataControllerStart ( + } + + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "Original PCI Attributes = 0x%llx\n", + Private->OriginalPciAttributes + )); +@@ -434,7 +434,7 @@ SataControllerStart ( + goto Done; + } + +- DEBUG ((EFI_D_INFO, "Supported PCI Attributes = 0x%llx\n", Supports)); ++ DEBUG ((DEBUG_INFO, "Supported PCI Attributes = 0x%llx\n", Supports)); + + Supports &= (UINT64)EFI_PCI_DEVICE_ENABLE; + Status = PciIo->Attributes ( +@@ -447,7 +447,7 @@ SataControllerStart ( + goto Done; + } + +- DEBUG ((EFI_D_INFO, "Enabled PCI Attributes = 0x%llx\n", Supports)); ++ DEBUG ((DEBUG_INFO, "Enabled PCI Attributes = 0x%llx\n", Supports)); + Private->PciAttributesChanged = TRUE; + + Status = PciIo->Pci.Read ( +@@ -561,7 +561,7 @@ Done: + } + } + +- DEBUG ((EFI_D_INFO, "SataControllerStart end with %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "SataControllerStart end with %r\n", Status)); + + return Status; + } +@@ -1048,7 +1048,7 @@ IdeInitCalculateMode ( + } else { + (*SupportedModes)->PioMode.Valid = FALSE; + } +- DEBUG ((EFI_D_INFO, "IdeInitCalculateMode: PioMode = %x\n", (*SupportedModes)->PioMode.Mode)); ++ DEBUG ((DEBUG_INFO, "IdeInitCalculateMode: PioMode = %x\n", (*SupportedModes)->PioMode.Mode)); + + Status = CalculateBestUdmaMode ( + IdentifyData, +@@ -1063,7 +1063,7 @@ IdeInitCalculateMode ( + } else { + (*SupportedModes)->UdmaMode.Valid = FALSE; + } +- DEBUG ((EFI_D_INFO, "IdeInitCalculateMode: UdmaMode = %x\n", (*SupportedModes)->UdmaMode.Mode)); ++ DEBUG ((DEBUG_INFO, "IdeInitCalculateMode: UdmaMode = %x\n", (*SupportedModes)->UdmaMode.Mode)); + + // + // The modes other than PIO and UDMA are not supported +@@ -1105,4 +1105,3 @@ IdeInitSetTiming ( + { + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.c b/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.c +index 3aa11f8eed..9c18e6fddc 100644 +--- a/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.c ++++ b/MdeModulePkg/Bus/Pci/SdMmcPciHcPei/SdMmcPciHcPei.c +@@ -108,7 +108,7 @@ InitializeSdMmcHcPeim ( + + Private = (SD_MMC_HC_PEI_PRIVATE_DATA *) AllocateZeroPool (sizeof (SD_MMC_HC_PEI_PRIVATE_DATA)); + if (Private == NULL) { +- DEBUG ((EFI_D_ERROR, "Failed to allocate memory for SD_MMC_HC_PEI_PRIVATE_DATA! \n")); ++ DEBUG ((DEBUG_ERROR, "Failed to allocate memory for SD_MMC_HC_PEI_PRIVATE_DATA! \n")); + return EFI_OUT_OF_RESOURCES; + } + +diff --git a/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.c b/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.c +index 86f1529eec..68bfade9c2 100644 +--- a/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.c ++++ b/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.c +@@ -99,7 +99,7 @@ InitializeUfsHcPeim ( + + Private = (UFS_HC_PEI_PRIVATE_DATA *) AllocateZeroPool (sizeof (UFS_HC_PEI_PRIVATE_DATA)); + if (Private == NULL) { +- DEBUG ((EFI_D_ERROR, "Failed to allocate memory for UFS_HC_PEI_PRIVATE_DATA! \n")); ++ DEBUG ((DEBUG_ERROR, "Failed to allocate memory for UFS_HC_PEI_PRIVATE_DATA! \n")); + return EFI_OUT_OF_RESOURCES; + } + +diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c b/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c +index 3ec5ecf0e4..9f78f3dbd3 100644 +--- a/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c ++++ b/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c +@@ -323,7 +323,7 @@ Uhci2GetCapability ( + + Uhc->RootPorts = *PortNumber; + +- DEBUG ((EFI_D_INFO, "Uhci2GetCapability: %d ports\n", (UINT32)Uhc->RootPorts)); ++ DEBUG ((DEBUG_INFO, "Uhci2GetCapability: %d ports\n", (UINT32)Uhc->RootPorts)); + return EFI_SUCCESS; + } + +@@ -378,7 +378,7 @@ Uhci2GetRootHubPortStatus ( + } + + if ((PortSC & USBPORTSC_SUSP) != 0) { +- DEBUG ((EFI_D_INFO, "Uhci2GetRootHubPortStatus: port %d is suspended\n", PortNumber)); ++ DEBUG ((DEBUG_INFO, "Uhci2GetRootHubPortStatus: port %d is suspended\n", PortNumber)); + PortStatus->PortStatus |= USB_PORT_STAT_SUSPEND; + } + +@@ -1880,4 +1880,3 @@ UhciDriverBindingStop ( + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/UhciDebug.c b/MdeModulePkg/Bus/Pci/UhciDxe/UhciDebug.c +index 517780a5f4..3d499c9baf 100644 +--- a/MdeModulePkg/Bus/Pci/UhciDxe/UhciDebug.c ++++ b/MdeModulePkg/Bus/Pci/UhciDxe/UhciDebug.c +@@ -20,12 +20,12 @@ UhciDumpQh ( + IN UHCI_QH_SW *QhSw + ) + { +- DEBUG ((EFI_D_VERBOSE, "&QhSw @ 0x%p\n", QhSw)); +- DEBUG ((EFI_D_VERBOSE, "QhSw.NextQh - 0x%p\n", QhSw->NextQh)); +- DEBUG ((EFI_D_VERBOSE, "QhSw.TDs - 0x%p\n", QhSw->TDs)); +- DEBUG ((EFI_D_VERBOSE, "QhSw.QhHw:\n")); +- DEBUG ((EFI_D_VERBOSE, " Horizon Link - %x\n", QhSw->QhHw.HorizonLink)); +- DEBUG ((EFI_D_VERBOSE, " Vertical Link - %x\n\n", QhSw->QhHw.VerticalLink)); ++ DEBUG ((DEBUG_VERBOSE, "&QhSw @ 0x%p\n", QhSw)); ++ DEBUG ((DEBUG_VERBOSE, "QhSw.NextQh - 0x%p\n", QhSw->NextQh)); ++ DEBUG ((DEBUG_VERBOSE, "QhSw.TDs - 0x%p\n", QhSw->TDs)); ++ DEBUG ((DEBUG_VERBOSE, "QhSw.QhHw:\n")); ++ DEBUG ((DEBUG_VERBOSE, " Horizon Link - %x\n", QhSw->QhHw.HorizonLink)); ++ DEBUG ((DEBUG_VERBOSE, " Vertical Link - %x\n\n", QhSw->QhHw.VerticalLink)); + } + + +@@ -45,27 +45,26 @@ UhciDumpTds ( + CurTdSw = TdSw; + + while (CurTdSw != NULL) { +- DEBUG ((EFI_D_VERBOSE, "TdSw @ 0x%p\n", CurTdSw)); +- DEBUG ((EFI_D_VERBOSE, "TdSw.NextTd - 0x%p\n", CurTdSw->NextTd)); +- DEBUG ((EFI_D_VERBOSE, "TdSw.DataLen - %d\n", CurTdSw->DataLen)); +- DEBUG ((EFI_D_VERBOSE, "TdSw.Data - 0x%p\n", CurTdSw->Data)); +- DEBUG ((EFI_D_VERBOSE, "TdHw:\n")); +- DEBUG ((EFI_D_VERBOSE, " NextLink - 0x%x\n", CurTdSw->TdHw.NextLink)); +- DEBUG ((EFI_D_VERBOSE, " ActualLen - %d\n", CurTdSw->TdHw.ActualLen)); +- DEBUG ((EFI_D_VERBOSE, " Status - 0x%x\n", CurTdSw->TdHw.Status)); +- DEBUG ((EFI_D_VERBOSE, " IOC - %d\n", CurTdSw->TdHw.IntOnCpl)); +- DEBUG ((EFI_D_VERBOSE, " IsIsoCh - %d\n", CurTdSw->TdHw.IsIsoch)); +- DEBUG ((EFI_D_VERBOSE, " LowSpeed - %d\n", CurTdSw->TdHw.LowSpeed)); +- DEBUG ((EFI_D_VERBOSE, " ErrorCount - %d\n", CurTdSw->TdHw.ErrorCount)); +- DEBUG ((EFI_D_VERBOSE, " ShortPacket - %d\n", CurTdSw->TdHw.ShortPacket)); +- DEBUG ((EFI_D_VERBOSE, " PidCode - 0x%x\n", CurTdSw->TdHw.PidCode)); +- DEBUG ((EFI_D_VERBOSE, " DevAddr - %d\n", CurTdSw->TdHw.DeviceAddr)); +- DEBUG ((EFI_D_VERBOSE, " EndPoint - %d\n", CurTdSw->TdHw.EndPoint)); +- DEBUG ((EFI_D_VERBOSE, " DataToggle - %d\n", CurTdSw->TdHw.DataToggle)); +- DEBUG ((EFI_D_VERBOSE, " MaxPacketLen - %d\n", CurTdSw->TdHw.MaxPacketLen)); +- DEBUG ((EFI_D_VERBOSE, " DataBuffer - 0x%x\n\n",CurTdSw->TdHw.DataBuffer)); ++ DEBUG ((DEBUG_VERBOSE, "TdSw @ 0x%p\n", CurTdSw)); ++ DEBUG ((DEBUG_VERBOSE, "TdSw.NextTd - 0x%p\n", CurTdSw->NextTd)); ++ DEBUG ((DEBUG_VERBOSE, "TdSw.DataLen - %d\n", CurTdSw->DataLen)); ++ DEBUG ((DEBUG_VERBOSE, "TdSw.Data - 0x%p\n", CurTdSw->Data)); ++ DEBUG ((DEBUG_VERBOSE, "TdHw:\n")); ++ DEBUG ((DEBUG_VERBOSE, " NextLink - 0x%x\n", CurTdSw->TdHw.NextLink)); ++ DEBUG ((DEBUG_VERBOSE, " ActualLen - %d\n", CurTdSw->TdHw.ActualLen)); ++ DEBUG ((DEBUG_VERBOSE, " Status - 0x%x\n", CurTdSw->TdHw.Status)); ++ DEBUG ((DEBUG_VERBOSE, " IOC - %d\n", CurTdSw->TdHw.IntOnCpl)); ++ DEBUG ((DEBUG_VERBOSE, " IsIsoCh - %d\n", CurTdSw->TdHw.IsIsoch)); ++ DEBUG ((DEBUG_VERBOSE, " LowSpeed - %d\n", CurTdSw->TdHw.LowSpeed)); ++ DEBUG ((DEBUG_VERBOSE, " ErrorCount - %d\n", CurTdSw->TdHw.ErrorCount)); ++ DEBUG ((DEBUG_VERBOSE, " ShortPacket - %d\n", CurTdSw->TdHw.ShortPacket)); ++ DEBUG ((DEBUG_VERBOSE, " PidCode - 0x%x\n", CurTdSw->TdHw.PidCode)); ++ DEBUG ((DEBUG_VERBOSE, " DevAddr - %d\n", CurTdSw->TdHw.DeviceAddr)); ++ DEBUG ((DEBUG_VERBOSE, " EndPoint - %d\n", CurTdSw->TdHw.EndPoint)); ++ DEBUG ((DEBUG_VERBOSE, " DataToggle - %d\n", CurTdSw->TdHw.DataToggle)); ++ DEBUG ((DEBUG_VERBOSE, " MaxPacketLen - %d\n", CurTdSw->TdHw.MaxPacketLen)); ++ DEBUG ((DEBUG_VERBOSE, " DataBuffer - 0x%x\n\n",CurTdSw->TdHw.DataBuffer)); + + CurTdSw = CurTdSw->NextTd; + } + } +- +diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/UhciReg.c b/MdeModulePkg/Bus/Pci/UhciDxe/UhciReg.c +index 582c25e78d..44bcde4c4e 100644 +--- a/MdeModulePkg/Bus/Pci/UhciDxe/UhciReg.c ++++ b/MdeModulePkg/Bus/Pci/UhciDxe/UhciReg.c +@@ -38,7 +38,7 @@ UhciReadReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UhciReadReg: PciIo Io.Read error: %r at offset %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "UhciReadReg: PciIo Io.Read error: %r at offset %d\n", Status, Offset)); + + Data = 0xFFFF; + } +@@ -74,7 +74,7 @@ UhciWriteReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UhciWriteReg: PciIo Io.Write error: %r at offset %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "UhciWriteReg: PciIo Io.Write error: %r at offset %d\n", Status, Offset)); + } + } + +@@ -144,7 +144,7 @@ UhciAckAllInterrupt ( + // is a temporary error status. + // + if (!UhciIsHcWorking (Uhc->PciIo)) { +- DEBUG ((EFI_D_ERROR, "UhciAckAllInterrupt: re-enable the UHCI from system error\n")); ++ DEBUG ((DEBUG_ERROR, "UhciAckAllInterrupt: re-enable the UHCI from system error\n")); + Uhc->Usb2Hc.SetState (&Uhc->Usb2Hc, EfiUsbHcStateOperational); + } + } +@@ -208,7 +208,7 @@ UhciIsHcWorking ( + UsbSts = UhciReadReg (PciIo, USBSTS_OFFSET); + + if ((UsbSts & (USBSTS_HCPE | USBSTS_HSE | USBSTS_HCH)) != 0) { +- DEBUG ((EFI_D_ERROR, "UhciIsHcWorking: current USB state is %x\n", UsbSts)); ++ DEBUG ((DEBUG_ERROR, "UhciIsHcWorking: current USB state is %x\n", UsbSts)); + return FALSE; + } + +@@ -245,7 +245,7 @@ UhciSetFrameListBaseAddr ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UhciSetFrameListBaseAddr: PciIo Io.Write error: %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UhciSetFrameListBaseAddr: PciIo Io.Write error: %r\n", Status)); + } + } + +diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c b/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c +index e216418849..0829bc2a8c 100644 +--- a/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c ++++ b/MdeModulePkg/Bus/Pci/UhciDxe/UhciSched.c +@@ -600,14 +600,14 @@ UhciExecuteTransfer ( + } + + if (!Finished) { +- DEBUG ((EFI_D_ERROR, "UhciExecuteTransfer: execution not finished for %dms\n", (UINT32)TimeOut)); ++ DEBUG ((DEBUG_ERROR, "UhciExecuteTransfer: execution not finished for %dms\n", (UINT32)TimeOut)); + UhciDumpQh (Qh); + UhciDumpTds (Td); + + Status = EFI_TIMEOUT; + + } else if (QhResult->Result != EFI_USB_NOERROR) { +- DEBUG ((EFI_D_ERROR, "UhciExecuteTransfer: execution failed with result %x\n", QhResult->Result)); ++ DEBUG ((DEBUG_ERROR, "UhciExecuteTransfer: execution failed with result %x\n", QhResult->Result)); + UhciDumpQh (Qh); + UhciDumpTds (Td); + +diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/UsbHcMem.c b/MdeModulePkg/Bus/Pci/UhciDxe/UsbHcMem.c +index 9aade19f8e..a8c098f9c3 100644 +--- a/MdeModulePkg/Bus/Pci/UhciDxe/UsbHcMem.c ++++ b/MdeModulePkg/Bus/Pci/UhciDxe/UsbHcMem.c +@@ -468,7 +468,7 @@ UsbHcAllocateMem ( + NewBlock = UsbHcAllocMemBlock (Pool, Pages); + + if (NewBlock == NULL) { +- DEBUG ((EFI_D_INFO, "UsbHcAllocateMem: failed to allocate block\n")); ++ DEBUG ((DEBUG_INFO, "UsbHcAllocateMem: failed to allocate block\n")); + return NULL; + } + +diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c b/MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c +index aa69c47aad..005820e011 100644 +--- a/MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c ++++ b/MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c +@@ -503,7 +503,7 @@ UsbHcAllocateMem ( + NewBlock = UsbHcAllocMemBlock (Pool, Pages); + + if (NewBlock == NULL) { +- DEBUG ((EFI_D_ERROR, "UsbHcAllocateMem: failed to allocate block\n")); ++ DEBUG ((DEBUG_ERROR, "UsbHcAllocateMem: failed to allocate block\n")); + return NULL; + } + +diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c b/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c +index 43c53bad4e..5a1f907ff0 100644 +--- a/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c ++++ b/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c +@@ -120,7 +120,7 @@ XhcGetCapability ( + *MaxSpeed = EFI_USB_SPEED_SUPER; + *PortNumber = (UINT8) (Xhc->HcSParams1.Data.MaxPorts); + *Is64BitCapable = (UINT8) Xhc->Support64BitDma; +- DEBUG ((EFI_D_INFO, "XhcGetCapability: %d ports, 64 bit %d\n", *PortNumber, *Is64BitCapable)); ++ DEBUG ((DEBUG_INFO, "XhcGetCapability: %d ports, 64 bit %d\n", *PortNumber, *Is64BitCapable)); + + gBS->RestoreTPL (OldTpl); + +@@ -216,7 +216,7 @@ XhcReset ( + } + + ON_EXIT: +- DEBUG ((EFI_D_INFO, "XhcReset: status %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcReset: status %r\n", Status)); + gBS->RestoreTPL (OldTpl); + + return Status; +@@ -260,7 +260,7 @@ XhcGetState ( + *State = EfiUsbHcStateOperational; + } + +- DEBUG ((EFI_D_INFO, "XhcGetState: current state %d\n", *State)); ++ DEBUG ((DEBUG_INFO, "XhcGetState: current state %d\n", *State)); + gBS->RestoreTPL (OldTpl); + + return EFI_SUCCESS; +@@ -336,7 +336,7 @@ XhcSetState ( + Status = EFI_INVALID_PARAMETER; + } + +- DEBUG ((EFI_D_INFO, "XhcSetState: status %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcSetState: status %r\n", Status)); + gBS->RestoreTPL (OldTpl); + + return Status; +@@ -530,7 +530,7 @@ XhcSetRootHubPortFeature ( + break; + + case EfiUsbPortReset: +- DEBUG ((EFI_D_INFO, "XhcUsbPortReset!\n")); ++ DEBUG ((DEBUG_INFO, "XhcUsbPortReset!\n")); + // + // Make sure Host Controller not halt before reset it + // +@@ -538,7 +538,7 @@ XhcSetRootHubPortFeature ( + Status = XhcRunHC (Xhc, XHC_GENERIC_TIMEOUT); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "XhcSetRootHubPortFeature :failed to start HC - %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcSetRootHubPortFeature :failed to start HC - %r\n", Status)); + break; + } + } +@@ -571,7 +571,7 @@ XhcSetRootHubPortFeature ( + } + + ON_EXIT: +- DEBUG ((EFI_D_INFO, "XhcSetRootHubPortFeature: status %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcSetRootHubPortFeature: status %r\n", Status)); + gBS->RestoreTPL (OldTpl); + + return Status; +@@ -706,7 +706,7 @@ XhcClearRootHubPortFeature ( + } + + ON_EXIT: +- DEBUG ((EFI_D_INFO, "XhcClearRootHubPortFeature: status %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcClearRootHubPortFeature: status %r\n", Status)); + gBS->RestoreTPL (OldTpl); + + return Status; +@@ -914,7 +914,7 @@ XhcControlTransfer ( + Len = 0; + + if (XhcIsHalt (Xhc) || XhcIsSysError (Xhc)) { +- DEBUG ((EFI_D_ERROR, "XhcControlTransfer: HC halted at entrance\n")); ++ DEBUG ((DEBUG_ERROR, "XhcControlTransfer: HC halted at entrance\n")); + goto ON_EXIT; + } + +@@ -1043,7 +1043,7 @@ XhcControlTransfer ( + // Don't support multi-TT feature for super speed hub now. + // + MTT = 0; +- DEBUG ((EFI_D_ERROR, "XHCI: Don't support multi-TT feature for Hub now. (force to disable MTT)\n")); ++ DEBUG ((DEBUG_ERROR, "XHCI: Don't support multi-TT feature for Hub now. (force to disable MTT)\n")); + } else { + MTT = 0; + } +@@ -1162,7 +1162,7 @@ XhcControlTransfer ( + + ON_EXIT: + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcControlTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); ++ DEBUG ((DEBUG_ERROR, "XhcControlTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); + } + + gBS->RestoreTPL (OldTpl); +@@ -1250,7 +1250,7 @@ XhcBulkTransfer ( + Status = EFI_DEVICE_ERROR; + + if (XhcIsHalt (Xhc) || XhcIsSysError (Xhc)) { +- DEBUG ((EFI_D_ERROR, "XhcBulkTransfer: HC is halted\n")); ++ DEBUG ((DEBUG_ERROR, "XhcBulkTransfer: HC is halted\n")); + goto ON_EXIT; + } + +@@ -1282,7 +1282,7 @@ XhcBulkTransfer ( + + ON_EXIT: + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcBulkTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); ++ DEBUG ((DEBUG_ERROR, "XhcBulkTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); + } + gBS->RestoreTPL (OldTpl); + +@@ -1386,14 +1386,14 @@ XhcAsyncInterruptTransfer ( + } + + Status = XhciDelAsyncIntTransfer (Xhc, DeviceAddress, EndPointAddress); +- DEBUG ((EFI_D_INFO, "XhcAsyncInterruptTransfer: remove old transfer for addr %d, Status = %r\n", DeviceAddress, Status)); ++ DEBUG ((DEBUG_INFO, "XhcAsyncInterruptTransfer: remove old transfer for addr %d, Status = %r\n", DeviceAddress, Status)); + goto ON_EXIT; + } + + Status = EFI_SUCCESS; + + if (XhcIsHalt (Xhc) || XhcIsSysError (Xhc)) { +- DEBUG ((EFI_D_ERROR, "XhcAsyncInterruptTransfer: HC is halt\n")); ++ DEBUG ((DEBUG_ERROR, "XhcAsyncInterruptTransfer: HC is halt\n")); + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; + } +@@ -1508,7 +1508,7 @@ XhcSyncInterruptTransfer ( + Status = EFI_DEVICE_ERROR; + + if (XhcIsHalt (Xhc) || XhcIsSysError (Xhc)) { +- DEBUG ((EFI_D_ERROR, "EhcSyncInterruptTransfer: HC is halt\n")); ++ DEBUG ((DEBUG_ERROR, "EhcSyncInterruptTransfer: HC is halt\n")); + goto ON_EXIT; + } + +@@ -1536,7 +1536,7 @@ XhcSyncInterruptTransfer ( + + ON_EXIT: + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcSyncInterruptTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); ++ DEBUG ((DEBUG_ERROR, "XhcSyncInterruptTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); + } + gBS->RestoreTPL (OldTpl); + +@@ -1805,14 +1805,14 @@ XhcCreateUsbHc ( + Xhc->UsbLegSupOffset = XhcGetCapabilityAddr (Xhc, XHC_CAP_USB_LEGACY); + Xhc->DebugCapSupOffset = XhcGetCapabilityAddr (Xhc, XHC_CAP_USB_DEBUG); + +- DEBUG ((EFI_D_INFO, "XhcCreateUsb3Hc: Capability length 0x%x\n", Xhc->CapLength)); +- DEBUG ((EFI_D_INFO, "XhcCreateUsb3Hc: HcSParams1 0x%x\n", Xhc->HcSParams1)); +- DEBUG ((EFI_D_INFO, "XhcCreateUsb3Hc: HcSParams2 0x%x\n", Xhc->HcSParams2)); +- DEBUG ((EFI_D_INFO, "XhcCreateUsb3Hc: HcCParams 0x%x\n", Xhc->HcCParams)); +- DEBUG ((EFI_D_INFO, "XhcCreateUsb3Hc: DBOff 0x%x\n", Xhc->DBOff)); +- DEBUG ((EFI_D_INFO, "XhcCreateUsb3Hc: RTSOff 0x%x\n", Xhc->RTSOff)); +- DEBUG ((EFI_D_INFO, "XhcCreateUsb3Hc: UsbLegSupOffset 0x%x\n", Xhc->UsbLegSupOffset)); +- DEBUG ((EFI_D_INFO, "XhcCreateUsb3Hc: DebugCapSupOffset 0x%x\n", Xhc->DebugCapSupOffset)); ++ DEBUG ((DEBUG_INFO, "XhcCreateUsb3Hc: Capability length 0x%x\n", Xhc->CapLength)); ++ DEBUG ((DEBUG_INFO, "XhcCreateUsb3Hc: HcSParams1 0x%x\n", Xhc->HcSParams1)); ++ DEBUG ((DEBUG_INFO, "XhcCreateUsb3Hc: HcSParams2 0x%x\n", Xhc->HcSParams2)); ++ DEBUG ((DEBUG_INFO, "XhcCreateUsb3Hc: HcCParams 0x%x\n", Xhc->HcCParams)); ++ DEBUG ((DEBUG_INFO, "XhcCreateUsb3Hc: DBOff 0x%x\n", Xhc->DBOff)); ++ DEBUG ((DEBUG_INFO, "XhcCreateUsb3Hc: RTSOff 0x%x\n", Xhc->RTSOff)); ++ DEBUG ((DEBUG_INFO, "XhcCreateUsb3Hc: UsbLegSupOffset 0x%x\n", Xhc->UsbLegSupOffset)); ++ DEBUG ((DEBUG_INFO, "XhcCreateUsb3Hc: DebugCapSupOffset 0x%x\n", Xhc->DebugCapSupOffset)); + + // + // Create AsyncRequest Polling Timer +@@ -1972,7 +1972,7 @@ XhcDriverBindingStart ( + } + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcDriverBindingStart: failed to enable controller\n")); ++ DEBUG ((DEBUG_ERROR, "XhcDriverBindingStart: failed to enable controller\n")); + goto CLOSE_PCIIO; + } + +@@ -1982,7 +1982,7 @@ XhcDriverBindingStart ( + Xhc = XhcCreateUsbHc (PciIo, HcDevicePath, OriginalPciAttributes); + + if (Xhc == NULL) { +- DEBUG ((EFI_D_ERROR, "XhcDriverBindingStart: failed to create USB2_HC\n")); ++ DEBUG ((DEBUG_ERROR, "XhcDriverBindingStart: failed to create USB2_HC\n")); + return EFI_OUT_OF_RESOURCES; + } + +@@ -2000,7 +2000,7 @@ XhcDriverBindingStart ( + if (!EFI_ERROR (Status)) { + Xhc->Support64BitDma = TRUE; + } else { +- DEBUG ((EFI_D_WARN, ++ DEBUG ((DEBUG_WARN, + "%a: failed to enable 64-bit DMA on 64-bit capable controller @ %p (%r)\n", + __FUNCTION__, Controller, Status)); + } +@@ -2032,7 +2032,7 @@ XhcDriverBindingStart ( + // + Status = gBS->SetTimer (Xhc->PollTimer, TimerPeriodic, XHC_ASYNC_TIMER_INTERVAL); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcDriverBindingStart: failed to start async interrupt monitor\n")); ++ DEBUG ((DEBUG_ERROR, "XhcDriverBindingStart: failed to start async interrupt monitor\n")); + XhcHaltHC (Xhc, XHC_GENERIC_TIMEOUT); + goto FREE_POOL; + } +@@ -2078,11 +2078,11 @@ XhcDriverBindingStart ( + &Xhc->Usb2Hc + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcDriverBindingStart: failed to install USB2_HC Protocol\n")); ++ DEBUG ((DEBUG_ERROR, "XhcDriverBindingStart: failed to install USB2_HC Protocol\n")); + goto FREE_POOL; + } + +- DEBUG ((EFI_D_INFO, "XhcDriverBindingStart: XHCI started for controller @ %x\n", Controller)); ++ DEBUG ((DEBUG_INFO, "XhcDriverBindingStart: XHCI started for controller @ %x\n", Controller)); + return EFI_SUCCESS; + + FREE_POOL: +@@ -2233,4 +2233,3 @@ XhcDriverBindingStop ( + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciReg.c b/MdeModulePkg/Bus/Pci/XhciDxe/XhciReg.c +index 2bab09415b..70102a7fcf 100644 +--- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciReg.c ++++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciReg.c +@@ -38,7 +38,7 @@ XhcReadCapReg8 ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcReadCapReg: Pci Io read error - %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "XhcReadCapReg: Pci Io read error - %r at %d\n", Status, Offset)); + Data = 0xFF; + } + +@@ -74,7 +74,7 @@ XhcReadCapReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcReadCapReg: Pci Io read error - %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "XhcReadCapReg: Pci Io read error - %r at %d\n", Status, Offset)); + Data = 0xFFFFFFFF; + } + +@@ -112,7 +112,7 @@ XhcReadOpReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcReadOpReg: Pci Io Read error - %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "XhcReadOpReg: Pci Io Read error - %r at %d\n", Status, Offset)); + Data = 0xFFFFFFFF; + } + +@@ -148,7 +148,7 @@ XhcWriteOpReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcWriteOpReg: Pci Io Write error: %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "XhcWriteOpReg: Pci Io Write error: %r at %d\n", Status, Offset)); + } + } + +@@ -185,7 +185,7 @@ XhcWriteDoorBellReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcWriteOpReg: Pci Io Write error: %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "XhcWriteOpReg: Pci Io Write error: %r at %d\n", Status, Offset)); + } + } + +@@ -219,7 +219,7 @@ XhcReadRuntimeReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcReadRuntimeReg: Pci Io Read error - %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "XhcReadRuntimeReg: Pci Io Read error - %r at %d\n", Status, Offset)); + Data = 0xFFFFFFFF; + } + +@@ -255,7 +255,7 @@ XhcWriteRuntimeReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcWriteRuntimeReg: Pci Io Write error: %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "XhcWriteRuntimeReg: Pci Io Write error: %r at %d\n", Status, Offset)); + } + } + +@@ -289,7 +289,7 @@ XhcReadExtCapReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcReadExtCapReg: Pci Io Read error - %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "XhcReadExtCapReg: Pci Io Read error - %r at %d\n", Status, Offset)); + Data = 0xFFFFFFFF; + } + +@@ -325,7 +325,7 @@ XhcWriteExtCapReg ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcWriteExtCapReg: Pci Io Write error: %r at %d\n", Status, Offset)); ++ DEBUG ((DEBUG_ERROR, "XhcWriteExtCapReg: Pci Io Write error: %r at %d\n", Status, Offset)); + } + } + +@@ -508,7 +508,7 @@ XhcSetBiosOwnership ( + return; + } + +- DEBUG ((EFI_D_INFO, "XhcSetBiosOwnership: called to set BIOS ownership\n")); ++ DEBUG ((DEBUG_INFO, "XhcSetBiosOwnership: called to set BIOS ownership\n")); + + Buffer = XhcReadExtCapReg (Xhc, Xhc->UsbLegSupOffset); + Buffer = ((Buffer & (~USBLEGSP_OS_SEMAPHORE)) | USBLEGSP_BIOS_SEMAPHORE); +@@ -532,7 +532,7 @@ XhcClearBiosOwnership ( + return; + } + +- DEBUG ((EFI_D_INFO, "XhcClearBiosOwnership: called to clear BIOS ownership\n")); ++ DEBUG ((DEBUG_INFO, "XhcClearBiosOwnership: called to clear BIOS ownership\n")); + + Buffer = XhcReadExtCapReg (Xhc, Xhc->UsbLegSupOffset); + Buffer = ((Buffer & (~USBLEGSP_BIOS_SEMAPHORE)) | USBLEGSP_OS_SEMAPHORE); +@@ -666,7 +666,7 @@ XhcResetHC ( + + Status = EFI_SUCCESS; + +- DEBUG ((EFI_D_INFO, "XhcResetHC!\n")); ++ DEBUG ((DEBUG_INFO, "XhcResetHC!\n")); + // + // Host can only be reset when it is halt. If not so, halt it + // +@@ -748,4 +748,3 @@ XhcRunHC ( + Status = XhcWaitOpRegBit (Xhc, XHC_USBSTS_OFFSET, XHC_USBSTS_HALT, FALSE, Timeout); + return Status; + } +- +diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c +index 6fcd2be627..92f63c29fc 100644 +--- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c ++++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c +@@ -82,7 +82,7 @@ XhcCmdTransfer ( + Status = EFI_DEVICE_ERROR; + + if (XhcIsHalt (Xhc) || XhcIsSysError (Xhc)) { +- DEBUG ((EFI_D_ERROR, "XhcCmdTransfer: HC is halted\n")); ++ DEBUG ((DEBUG_ERROR, "XhcCmdTransfer: HC is halted\n")); + goto ON_EXIT; + } + +@@ -92,7 +92,7 @@ XhcCmdTransfer ( + Urb = XhcCreateCmdTrb (Xhc, CmdTrb); + + if (Urb == NULL) { +- DEBUG ((EFI_D_ERROR, "XhcCmdTransfer: failed to create URB\n")); ++ DEBUG ((DEBUG_ERROR, "XhcCmdTransfer: failed to create URB\n")); + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } +@@ -172,7 +172,7 @@ XhcCreateUrb ( + Status = XhcCreateTransferTrb (Xhc, Urb); + ASSERT_EFI_ERROR (Status); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcCreateUrb: XhcCreateTransferTrb Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcCreateUrb: XhcCreateTransferTrb Failed, Status = %r\n", Status)); + FreePool (Urb); + Urb = NULL; + } +@@ -269,7 +269,7 @@ XhcCreateTransferTrb ( + Status = Xhc->PciIo->Map (Xhc->PciIo, MapOp, Urb->Data, &Len, &PhyAddr, &Map); + + if (EFI_ERROR (Status) || (Len != Urb->DataLen)) { +- DEBUG ((EFI_D_ERROR, "XhcCreateTransferTrb: Fail to map Urb->Data.\n")); ++ DEBUG ((DEBUG_ERROR, "XhcCreateTransferTrb: Fail to map Urb->Data.\n")); + return EFI_OUT_OF_RESOURCES; + } + +@@ -446,7 +446,7 @@ XhcCreateTransferTrb ( + break; + + default: +- DEBUG ((EFI_D_INFO, "Not supported EPType 0x%x!\n",EPType)); ++ DEBUG ((DEBUG_INFO, "Not supported EPType 0x%x!\n",EPType)); + ASSERT (FALSE); + break; + } +@@ -582,7 +582,7 @@ XhcInitSched ( + XhcWriteOpReg (Xhc, XHC_DCBAAP_OFFSET, XHC_LOW_32BIT(DcbaaPhy)); + XhcWriteOpReg (Xhc, XHC_DCBAAP_OFFSET + 4, XHC_HIGH_32BIT (DcbaaPhy)); + +- DEBUG ((EFI_D_INFO, "XhcInitSched:DCBAA=0x%x\n", (UINT64)(UINTN)Xhc->DCBAA)); ++ DEBUG ((DEBUG_INFO, "XhcInitSched:DCBAA=0x%x\n", (UINT64)(UINTN)Xhc->DCBAA)); + + // + // Define the Command Ring Dequeue Pointer by programming the Command Ring Control Register +@@ -660,14 +660,14 @@ XhcRecoverHaltedEndpoint ( + Dci = XhcEndpointToDci (Urb->Ep.EpAddr, (UINT8)(Urb->Ep.Direction)); + ASSERT (Dci < 32); + +- DEBUG ((EFI_D_INFO, "Recovery Halted Slot = %x,Dci = %x\n", SlotId, Dci)); ++ DEBUG ((DEBUG_INFO, "Recovery Halted Slot = %x,Dci = %x\n", SlotId, Dci)); + + // + // 1) Send Reset endpoint command to transit from halt to stop state + // + Status = XhcResetEndpoint(Xhc, SlotId, Dci); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcRecoverHaltedEndpoint: Reset Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcRecoverHaltedEndpoint: Reset Endpoint Failed, Status = %r\n", Status)); + goto Done; + } + +@@ -676,7 +676,7 @@ XhcRecoverHaltedEndpoint ( + // + Status = XhcSetTrDequeuePointer(Xhc, SlotId, Dci, Urb); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcRecoverHaltedEndpoint: Set Transfer Ring Dequeue Pointer Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcRecoverHaltedEndpoint: Set Transfer Ring Dequeue Pointer Failed, Status = %r\n", Status)); + goto Done; + } + +@@ -722,14 +722,14 @@ XhcDequeueTrbFromEndpoint ( + Dci = XhcEndpointToDci (Urb->Ep.EpAddr, (UINT8)(Urb->Ep.Direction)); + ASSERT (Dci < 32); + +- DEBUG ((EFI_D_INFO, "Stop Slot = %x,Dci = %x\n", SlotId, Dci)); ++ DEBUG ((DEBUG_INFO, "Stop Slot = %x,Dci = %x\n", SlotId, Dci)); + + // + // 1) Send Stop endpoint command to stop xHC from executing of the TDs on the endpoint + // + Status = XhcStopEndpoint(Xhc, SlotId, Dci, Urb); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcDequeueTrbFromEndpoint: Stop Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcDequeueTrbFromEndpoint: Stop Endpoint Failed, Status = %r\n", Status)); + goto Done; + } + +@@ -1159,25 +1159,25 @@ XhcCheckUrbResult ( + case TRB_COMPLETION_STALL_ERROR: + CheckedUrb->Result |= EFI_USB_ERR_STALL; + CheckedUrb->Finished = TRUE; +- DEBUG ((EFI_D_ERROR, "XhcCheckUrbResult: STALL_ERROR! Completecode = %x\n",EvtTrb->Completecode)); ++ DEBUG ((DEBUG_ERROR, "XhcCheckUrbResult: STALL_ERROR! Completecode = %x\n",EvtTrb->Completecode)); + goto EXIT; + + case TRB_COMPLETION_BABBLE_ERROR: + CheckedUrb->Result |= EFI_USB_ERR_BABBLE; + CheckedUrb->Finished = TRUE; +- DEBUG ((EFI_D_ERROR, "XhcCheckUrbResult: BABBLE_ERROR! Completecode = %x\n",EvtTrb->Completecode)); ++ DEBUG ((DEBUG_ERROR, "XhcCheckUrbResult: BABBLE_ERROR! Completecode = %x\n",EvtTrb->Completecode)); + goto EXIT; + + case TRB_COMPLETION_DATA_BUFFER_ERROR: + CheckedUrb->Result |= EFI_USB_ERR_BUFFER; + CheckedUrb->Finished = TRUE; +- DEBUG ((EFI_D_ERROR, "XhcCheckUrbResult: ERR_BUFFER! Completecode = %x\n",EvtTrb->Completecode)); ++ DEBUG ((DEBUG_ERROR, "XhcCheckUrbResult: ERR_BUFFER! Completecode = %x\n",EvtTrb->Completecode)); + goto EXIT; + + case TRB_COMPLETION_USB_TRANSACTION_ERROR: + CheckedUrb->Result |= EFI_USB_ERR_TIMEOUT; + CheckedUrb->Finished = TRUE; +- DEBUG ((EFI_D_ERROR, "XhcCheckUrbResult: TRANSACTION_ERROR! Completecode = %x\n",EvtTrb->Completecode)); ++ DEBUG ((DEBUG_ERROR, "XhcCheckUrbResult: TRANSACTION_ERROR! Completecode = %x\n",EvtTrb->Completecode)); + goto EXIT; + + case TRB_COMPLETION_STOPPED: +@@ -1193,7 +1193,7 @@ XhcCheckUrbResult ( + case TRB_COMPLETION_SHORT_PACKET: + case TRB_COMPLETION_SUCCESS: + if (EvtTrb->Completecode == TRB_COMPLETION_SHORT_PACKET) { +- DEBUG ((EFI_D_VERBOSE, "XhcCheckUrbResult: short packet happens!\n")); ++ DEBUG ((DEBUG_VERBOSE, "XhcCheckUrbResult: short packet happens!\n")); + } + + TRBType = (UINT8) (TRBPtr->Type); +@@ -1206,7 +1206,7 @@ XhcCheckUrbResult ( + break; + + default: +- DEBUG ((EFI_D_ERROR, "Transfer Default Error Occur! Completecode = 0x%x!\n",EvtTrb->Completecode)); ++ DEBUG ((DEBUG_ERROR, "Transfer Default Error Occur! Completecode = 0x%x!\n",EvtTrb->Completecode)); + CheckedUrb->Result |= EFI_USB_ERR_TIMEOUT; + CheckedUrb->Finished = TRUE; + goto EXIT; +@@ -1396,7 +1396,7 @@ XhciDelAsyncIntTransfer ( + // + Status = XhcDequeueTrbFromEndpoint (Xhc, Urb); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhciDelAsyncIntTransfer: XhcDequeueTrbFromEndpoint failed\n")); ++ DEBUG ((DEBUG_ERROR, "XhciDelAsyncIntTransfer: XhcDequeueTrbFromEndpoint failed\n")); + } + + RemoveEntryList (&Urb->UrbList); +@@ -1434,7 +1434,7 @@ XhciDelAllAsyncIntTransfers ( + // + Status = XhcDequeueTrbFromEndpoint (Xhc, Urb); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhciDelAllAsyncIntTransfers: XhcDequeueTrbFromEndpoint failed\n")); ++ DEBUG ((DEBUG_ERROR, "XhciDelAllAsyncIntTransfers: XhcDequeueTrbFromEndpoint failed\n")); + } + + RemoveEntryList (&Urb->UrbList); +@@ -1644,7 +1644,7 @@ XhcMonitorAsyncRequests ( + // + Status = XhcFlushAsyncIntMap (Xhc, Urb); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcMonitorAsyncRequests: Fail to Flush AsyncInt Mapped Memeory\n")); ++ DEBUG ((DEBUG_ERROR, "XhcMonitorAsyncRequests: Fail to Flush AsyncInt Mapped Memeory\n")); + } + + // +@@ -2139,11 +2139,11 @@ XhcInitializeDeviceSlot ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcInitializeDeviceSlot: Enable Slot Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcInitializeDeviceSlot: Enable Slot Failed, Status = %r\n", Status)); + return Status; + } + ASSERT (EvtTrb->SlotId <= Xhc->MaxSlotsEn); +- DEBUG ((EFI_D_INFO, "Enable Slot Successfully, The Slot ID = 0x%x\n", EvtTrb->SlotId)); ++ DEBUG ((DEBUG_INFO, "Enable Slot Successfully, The Slot ID = 0x%x\n", EvtTrb->SlotId)); + SlotId = (UINT8)EvtTrb->SlotId; + ASSERT (SlotId != 0); + +@@ -2296,7 +2296,7 @@ XhcInitializeDeviceSlot ( + ); + if (!EFI_ERROR (Status)) { + DeviceAddress = (UINT8) ((DEVICE_CONTEXT *) OutputContext)->Slot.DeviceAddress; +- DEBUG ((EFI_D_INFO, " Address %d assigned successfully\n", DeviceAddress)); ++ DEBUG ((DEBUG_INFO, " Address %d assigned successfully\n", DeviceAddress)); + Xhc->UsbDevContext[SlotId].XhciDevAddr = DeviceAddress; + } else { + DEBUG ((DEBUG_ERROR, " Slot %d address not assigned successfully. Status = %r\n", SlotId, Status)); +@@ -2352,11 +2352,11 @@ XhcInitializeDeviceSlot64 ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcInitializeDeviceSlot64: Enable Slot Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcInitializeDeviceSlot64: Enable Slot Failed, Status = %r\n", Status)); + return Status; + } + ASSERT (EvtTrb->SlotId <= Xhc->MaxSlotsEn); +- DEBUG ((EFI_D_INFO, "Enable Slot Successfully, The Slot ID = 0x%x\n", EvtTrb->SlotId)); ++ DEBUG ((DEBUG_INFO, "Enable Slot Successfully, The Slot ID = 0x%x\n", EvtTrb->SlotId)); + SlotId = (UINT8)EvtTrb->SlotId; + ASSERT (SlotId != 0); + +@@ -2509,7 +2509,7 @@ XhcInitializeDeviceSlot64 ( + ); + if (!EFI_ERROR (Status)) { + DeviceAddress = (UINT8) ((DEVICE_CONTEXT_64 *) OutputContext)->Slot.DeviceAddress; +- DEBUG ((EFI_D_INFO, " Address %d assigned successfully\n", DeviceAddress)); ++ DEBUG ((DEBUG_INFO, " Address %d assigned successfully\n", DeviceAddress)); + Xhc->UsbDevContext[SlotId].XhciDevAddr = DeviceAddress; + } else { + DEBUG ((DEBUG_ERROR, " Slot %d address not assigned successfully. Status = %r\n", SlotId, Status)); +@@ -2556,7 +2556,7 @@ XhcDisableSlotCmd ( + Status = XhcDisableSlotCmd (Xhc, Xhc->UsbDevContext[Index + 1].SlotId); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcDisableSlotCmd: failed to disable child, ignore error\n")); ++ DEBUG ((DEBUG_ERROR, "XhcDisableSlotCmd: failed to disable child, ignore error\n")); + Xhc->UsbDevContext[Index + 1].SlotId = 0; + } + } +@@ -2564,7 +2564,7 @@ XhcDisableSlotCmd ( + // + // Construct the disable slot command + // +- DEBUG ((EFI_D_INFO, "Disable device slot %d!\n", SlotId)); ++ DEBUG ((DEBUG_INFO, "Disable device slot %d!\n", SlotId)); + + ZeroMem (&CmdTrbDisSlot, sizeof (CmdTrbDisSlot)); + CmdTrbDisSlot.CycleBit = 1; +@@ -2577,7 +2577,7 @@ XhcDisableSlotCmd ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcDisableSlotCmd: Disable Slot Command Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcDisableSlotCmd: Disable Slot Command Failed, Status = %r\n", Status)); + return Status; + } + // +@@ -2663,7 +2663,7 @@ XhcDisableSlotCmd64 ( + Status = XhcDisableSlotCmd64 (Xhc, Xhc->UsbDevContext[Index + 1].SlotId); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcDisableSlotCmd: failed to disable child, ignore error\n")); ++ DEBUG ((DEBUG_ERROR, "XhcDisableSlotCmd: failed to disable child, ignore error\n")); + Xhc->UsbDevContext[Index + 1].SlotId = 0; + } + } +@@ -2671,7 +2671,7 @@ XhcDisableSlotCmd64 ( + // + // Construct the disable slot command + // +- DEBUG ((EFI_D_INFO, "Disable device slot %d!\n", SlotId)); ++ DEBUG ((DEBUG_INFO, "Disable device slot %d!\n", SlotId)); + + ZeroMem (&CmdTrbDisSlot, sizeof (CmdTrbDisSlot)); + CmdTrbDisSlot.CycleBit = 1; +@@ -2684,7 +2684,7 @@ XhcDisableSlotCmd64 ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcDisableSlotCmd: Disable Slot Command Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcDisableSlotCmd: Disable Slot Command Failed, Status = %r\n", Status)); + return Status; + } + // +@@ -2851,7 +2851,7 @@ XhcInitializeEndpointContext ( + // + // Do not support isochronous transfer now. + // +- DEBUG ((EFI_D_INFO, "XhcInitializeEndpointContext: Unsupport ISO EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcInitializeEndpointContext: Unsupport ISO EP found, Transfer ring is not allocated.\n")); + EpDesc = (USB_ENDPOINT_DESCRIPTOR *)((UINTN)EpDesc + EpDesc->Length); + continue; + case USB_ENDPOINT_INTERRUPT: +@@ -2903,9 +2903,9 @@ XhcInitializeEndpointContext ( + // + // Do not support control transfer now. + // +- DEBUG ((EFI_D_INFO, "XhcInitializeEndpointContext: Unsupport Control EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcInitializeEndpointContext: Unsupport Control EP found, Transfer ring is not allocated.\n")); + default: +- DEBUG ((EFI_D_INFO, "XhcInitializeEndpointContext: Unknown EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcInitializeEndpointContext: Unknown EP found, Transfer ring is not allocated.\n")); + EpDesc = (USB_ENDPOINT_DESCRIPTOR *)((UINTN)EpDesc + EpDesc->Length); + continue; + } +@@ -3043,7 +3043,7 @@ XhcInitializeEndpointContext64 ( + // + // Do not support isochronous transfer now. + // +- DEBUG ((EFI_D_INFO, "XhcInitializeEndpointContext64: Unsupport ISO EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcInitializeEndpointContext64: Unsupport ISO EP found, Transfer ring is not allocated.\n")); + EpDesc = (USB_ENDPOINT_DESCRIPTOR *)((UINTN)EpDesc + EpDesc->Length); + continue; + case USB_ENDPOINT_INTERRUPT: +@@ -3095,9 +3095,9 @@ XhcInitializeEndpointContext64 ( + // + // Do not support control transfer now. + // +- DEBUG ((EFI_D_INFO, "XhcInitializeEndpointContext64: Unsupport Control EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcInitializeEndpointContext64: Unsupport Control EP found, Transfer ring is not allocated.\n")); + default: +- DEBUG ((EFI_D_INFO, "XhcInitializeEndpointContext64: Unknown EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcInitializeEndpointContext64: Unknown EP found, Transfer ring is not allocated.\n")); + EpDesc = (USB_ENDPOINT_DESCRIPTOR *)((UINTN)EpDesc + EpDesc->Length); + continue; + } +@@ -3192,7 +3192,7 @@ XhcSetConfigCmd ( + CmdTrbCfgEP.CycleBit = 1; + CmdTrbCfgEP.Type = TRB_TYPE_CON_ENDPOINT; + CmdTrbCfgEP.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "Configure Endpoint\n")); ++ DEBUG ((DEBUG_INFO, "Configure Endpoint\n")); + Status = XhcCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbCfgEP, +@@ -3200,7 +3200,7 @@ XhcSetConfigCmd ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcSetConfigCmd: Config Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcSetConfigCmd: Config Endpoint Failed, Status = %r\n", Status)); + } else { + Xhc->UsbDevContext[SlotId].ActiveConfiguration = ConfigDesc->ConfigurationValue; + } +@@ -3282,7 +3282,7 @@ XhcSetConfigCmd64 ( + CmdTrbCfgEP.CycleBit = 1; + CmdTrbCfgEP.Type = TRB_TYPE_CON_ENDPOINT; + CmdTrbCfgEP.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "Configure Endpoint\n")); ++ DEBUG ((DEBUG_INFO, "Configure Endpoint\n")); + Status = XhcCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbCfgEP, +@@ -3290,7 +3290,7 @@ XhcSetConfigCmd64 ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcSetConfigCmd64: Config Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcSetConfigCmd64: Config Endpoint Failed, Status = %r\n", Status)); + } else { + Xhc->UsbDevContext[SlotId].ActiveConfiguration = ConfigDesc->ConfigurationValue; + } +@@ -3323,7 +3323,7 @@ XhcStopEndpoint ( + EVT_TRB_COMMAND_COMPLETION *EvtTrb; + CMD_TRB_STOP_ENDPOINT CmdTrbStopED; + +- DEBUG ((EFI_D_INFO, "XhcStopEndpoint: Slot = 0x%x, Dci = 0x%x\n", SlotId, Dci)); ++ DEBUG ((DEBUG_INFO, "XhcStopEndpoint: Slot = 0x%x, Dci = 0x%x\n", SlotId, Dci)); + + // + // When XhcCheckUrbResult waits for the Stop_Endpoint completion, it also checks +@@ -3363,7 +3363,7 @@ XhcStopEndpoint ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcStopEndpoint: Stop Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcStopEndpoint: Stop Endpoint Failed, Status = %r\n", Status)); + } + + Xhc->PendingUrb = NULL; +@@ -3394,7 +3394,7 @@ XhcResetEndpoint ( + EVT_TRB_COMMAND_COMPLETION *EvtTrb; + CMD_TRB_RESET_ENDPOINT CmdTrbResetED; + +- DEBUG ((EFI_D_INFO, "XhcResetEndpoint: Slot = 0x%x, Dci = 0x%x\n", SlotId, Dci)); ++ DEBUG ((DEBUG_INFO, "XhcResetEndpoint: Slot = 0x%x, Dci = 0x%x\n", SlotId, Dci)); + + // + // Send stop endpoint command to transit Endpoint from running to stop state +@@ -3411,7 +3411,7 @@ XhcResetEndpoint ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcResetEndpoint: Reset Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcResetEndpoint: Reset Endpoint Failed, Status = %r\n", Status)); + } + + return Status; +@@ -3444,7 +3444,7 @@ XhcSetTrDequeuePointer ( + CMD_SET_TR_DEQ_POINTER CmdSetTRDeq; + EFI_PHYSICAL_ADDRESS PhyAddr; + +- DEBUG ((EFI_D_INFO, "XhcSetTrDequeuePointer: Slot = 0x%x, Dci = 0x%x, Urb = 0x%x\n", SlotId, Dci, Urb)); ++ DEBUG ((DEBUG_INFO, "XhcSetTrDequeuePointer: Slot = 0x%x, Dci = 0x%x, Urb = 0x%x\n", SlotId, Dci, Urb)); + + // + // Send stop endpoint command to transit Endpoint from running to stop state +@@ -3464,7 +3464,7 @@ XhcSetTrDequeuePointer ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcSetTrDequeuePointer: Set TR Dequeue Pointer Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcSetTrDequeuePointer: Set TR Dequeue Pointer Failed, Status = %r\n", Status)); + } + + return Status; +@@ -3652,7 +3652,7 @@ XhcSetInterface ( + CmdTrbCfgEP.CycleBit = 1; + CmdTrbCfgEP.Type = TRB_TYPE_CON_ENDPOINT; + CmdTrbCfgEP.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "SetInterface: Configure Endpoint\n")); ++ DEBUG ((DEBUG_INFO, "SetInterface: Configure Endpoint\n")); + Status = XhcCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbCfgEP, +@@ -3660,7 +3660,7 @@ XhcSetInterface ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SetInterface: Config Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SetInterface: Config Endpoint Failed, Status = %r\n", Status)); + } else { + // + // Update the active AlternateSetting. +@@ -3854,7 +3854,7 @@ XhcSetInterface64 ( + CmdTrbCfgEP.CycleBit = 1; + CmdTrbCfgEP.Type = TRB_TYPE_CON_ENDPOINT; + CmdTrbCfgEP.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "SetInterface64: Configure Endpoint\n")); ++ DEBUG ((DEBUG_INFO, "SetInterface64: Configure Endpoint\n")); + Status = XhcCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbCfgEP, +@@ -3862,7 +3862,7 @@ XhcSetInterface64 ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SetInterface64: Config Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SetInterface64: Config Endpoint Failed, Status = %r\n", Status)); + } else { + // + // Update the active AlternateSetting. +@@ -3916,7 +3916,7 @@ XhcEvaluateContext ( + CmdTrbEvalu.CycleBit = 1; + CmdTrbEvalu.Type = TRB_TYPE_EVALU_CONTXT; + CmdTrbEvalu.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "Evaluate context\n")); ++ DEBUG ((DEBUG_INFO, "Evaluate context\n")); + Status = XhcCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbEvalu, +@@ -3924,7 +3924,7 @@ XhcEvaluateContext ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcEvaluateContext: Evaluate Context Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcEvaluateContext: Evaluate Context Failed, Status = %r\n", Status)); + } + return Status; + } +@@ -3971,7 +3971,7 @@ XhcEvaluateContext64 ( + CmdTrbEvalu.CycleBit = 1; + CmdTrbEvalu.Type = TRB_TYPE_EVALU_CONTXT; + CmdTrbEvalu.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "Evaluate context\n")); ++ DEBUG ((DEBUG_INFO, "Evaluate context\n")); + Status = XhcCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbEvalu, +@@ -3979,7 +3979,7 @@ XhcEvaluateContext64 ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcEvaluateContext64: Evaluate Context Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcEvaluateContext64: Evaluate Context Failed, Status = %r\n", Status)); + } + return Status; + } +@@ -4040,7 +4040,7 @@ XhcConfigHubContext ( + CmdTrbCfgEP.CycleBit = 1; + CmdTrbCfgEP.Type = TRB_TYPE_CON_ENDPOINT; + CmdTrbCfgEP.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "Configure Hub Slot Context\n")); ++ DEBUG ((DEBUG_INFO, "Configure Hub Slot Context\n")); + Status = XhcCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbCfgEP, +@@ -4048,7 +4048,7 @@ XhcConfigHubContext ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcConfigHubContext: Config Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcConfigHubContext: Config Endpoint Failed, Status = %r\n", Status)); + } + return Status; + } +@@ -4108,7 +4108,7 @@ XhcConfigHubContext64 ( + CmdTrbCfgEP.CycleBit = 1; + CmdTrbCfgEP.Type = TRB_TYPE_CON_ENDPOINT; + CmdTrbCfgEP.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "Configure Hub Slot Context\n")); ++ DEBUG ((DEBUG_INFO, "Configure Hub Slot Context\n")); + Status = XhcCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbCfgEP, +@@ -4116,9 +4116,7 @@ XhcConfigHubContext64 ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcConfigHubContext64: Config Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcConfigHubContext64: Config Endpoint Failed, Status = %r\n", Status)); + } + return Status; + } +- +- +diff --git a/MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.c b/MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.c +index 4b670ebedf..6bdf488413 100644 +--- a/MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.c ++++ b/MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.c +@@ -386,7 +386,7 @@ XhcPeiResetHC ( + MicroSecondDelay (1000); + Status = XhcPeiWaitOpRegBit (Xhc, XHC_USBCMD_OFFSET, XHC_USBCMD_RESET, FALSE, Timeout); + ON_EXIT: +- DEBUG ((EFI_D_INFO, "XhcPeiResetHC: %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcPeiResetHC: %r\n", Status)); + return Status; + } + +@@ -410,7 +410,7 @@ XhcPeiHaltHC ( + + XhcPeiClearOpRegBit (Xhc, XHC_USBCMD_OFFSET, XHC_USBCMD_RUN); + Status = XhcPeiWaitOpRegBit (Xhc, XHC_USBSTS_OFFSET, XHC_USBSTS_HALT, TRUE, Timeout); +- DEBUG ((EFI_D_INFO, "XhcPeiHaltHC: %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcPeiHaltHC: %r\n", Status)); + return Status; + } + +@@ -434,7 +434,7 @@ XhcPeiRunHC ( + + XhcPeiSetOpRegBit (Xhc, XHC_USBCMD_OFFSET, XHC_USBCMD_RUN); + Status = XhcPeiWaitOpRegBit (Xhc, XHC_USBSTS_OFFSET, XHC_USBSTS_HALT, FALSE, Timeout); +- DEBUG ((EFI_D_INFO, "XhcPeiRunHC: %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcPeiRunHC: %r\n", Status)); + return Status; + } + +@@ -544,7 +544,7 @@ XhcPeiControlTransfer ( + Len = 0; + + if (XhcPeiIsHalt (Xhc) || XhcPeiIsSysError (Xhc)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiControlTransfer: HC is halted or has system error\n")); ++ DEBUG ((DEBUG_ERROR, "XhcPeiControlTransfer: HC is halted or has system error\n")); + goto ON_EXIT; + } + +@@ -611,7 +611,7 @@ XhcPeiControlTransfer ( + ); + + if (Urb == NULL) { +- DEBUG ((EFI_D_ERROR, "XhcPeiControlTransfer: failed to create URB")); ++ DEBUG ((DEBUG_ERROR, "XhcPeiControlTransfer: failed to create URB")); + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } +@@ -631,7 +631,7 @@ XhcPeiControlTransfer ( + // + RecoveryStatus = XhcPeiDequeueTrbFromEndpoint(Xhc, Urb); + if (EFI_ERROR(RecoveryStatus)) { +- DEBUG((EFI_D_ERROR, "XhcPeiControlTransfer: XhcPeiDequeueTrbFromEndpoint failed\n")); ++ DEBUG((DEBUG_ERROR, "XhcPeiControlTransfer: XhcPeiDequeueTrbFromEndpoint failed\n")); + } + XhcPeiFreeUrb (Xhc, Urb); + goto ON_EXIT; +@@ -641,7 +641,7 @@ XhcPeiControlTransfer ( + } else if ((*TransferResult == EFI_USB_ERR_STALL) || (*TransferResult == EFI_USB_ERR_BABBLE)) { + RecoveryStatus = XhcPeiRecoverHaltedEndpoint(Xhc, Urb); + if (EFI_ERROR (RecoveryStatus)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiControlTransfer: XhcPeiRecoverHaltedEndpoint failed\n")); ++ DEBUG ((DEBUG_ERROR, "XhcPeiControlTransfer: XhcPeiRecoverHaltedEndpoint failed\n")); + } + Status = EFI_DEVICE_ERROR; + XhcPeiFreeUrb (Xhc, Urb); +@@ -718,7 +718,7 @@ XhcPeiControlTransfer ( + // Don't support multi-TT feature for super speed hub now. + // + MTT = 0; +- DEBUG ((EFI_D_ERROR, "XHCI: Don't support multi-TT feature for Hub now. (force to disable MTT)\n")); ++ DEBUG ((DEBUG_ERROR, "XHCI: Don't support multi-TT feature for Hub now. (force to disable MTT)\n")); + } else { + MTT = 0; + } +@@ -825,7 +825,7 @@ XhcPeiControlTransfer ( + ON_EXIT: + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiControlTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiControlTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); + } + + return Status; +@@ -911,7 +911,7 @@ XhcPeiBulkTransfer ( + Status = EFI_DEVICE_ERROR; + + if (XhcPeiIsHalt (Xhc) || XhcPeiIsSysError (Xhc)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiBulkTransfer: HC is halted or has system error\n")); ++ DEBUG ((DEBUG_ERROR, "XhcPeiBulkTransfer: HC is halted or has system error\n")); + goto ON_EXIT; + } + +@@ -942,7 +942,7 @@ XhcPeiBulkTransfer ( + ); + + if (Urb == NULL) { +- DEBUG ((EFI_D_ERROR, "XhcPeiBulkTransfer: failed to create URB\n")); ++ DEBUG ((DEBUG_ERROR, "XhcPeiBulkTransfer: failed to create URB\n")); + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } +@@ -958,7 +958,7 @@ XhcPeiBulkTransfer ( + // + RecoveryStatus = XhcPeiDequeueTrbFromEndpoint(Xhc, Urb); + if (EFI_ERROR(RecoveryStatus)) { +- DEBUG((EFI_D_ERROR, "XhcPeiBulkTransfer: XhcPeiDequeueTrbFromEndpoint failed\n")); ++ DEBUG((DEBUG_ERROR, "XhcPeiBulkTransfer: XhcPeiDequeueTrbFromEndpoint failed\n")); + } + } else { + if (*TransferResult == EFI_USB_NOERROR) { +@@ -966,7 +966,7 @@ XhcPeiBulkTransfer ( + } else if ((*TransferResult == EFI_USB_ERR_STALL) || (*TransferResult == EFI_USB_ERR_BABBLE)) { + RecoveryStatus = XhcPeiRecoverHaltedEndpoint(Xhc, Urb); + if (EFI_ERROR (RecoveryStatus)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiBulkTransfer: XhcPeiRecoverHaltedEndpoint failed\n")); ++ DEBUG ((DEBUG_ERROR, "XhcPeiBulkTransfer: XhcPeiRecoverHaltedEndpoint failed\n")); + } + Status = EFI_DEVICE_ERROR; + } +@@ -977,7 +977,7 @@ XhcPeiBulkTransfer ( + ON_EXIT: + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiBulkTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiBulkTransfer: error - %r, transfer - %x\n", Status, *TransferResult)); + } + + return Status; +@@ -1011,7 +1011,7 @@ XhcPeiGetRootHubPortNumber ( + } + + *PortNumber = XhcDev->HcSParams1.Data.MaxPorts; +- DEBUG ((EFI_D_INFO, "XhcPeiGetRootHubPortNumber: PortNumber = %x\n", *PortNumber)); ++ DEBUG ((DEBUG_INFO, "XhcPeiGetRootHubPortNumber: PortNumber = %x\n", *PortNumber)); + return EFI_SUCCESS; + } + +@@ -1054,7 +1054,7 @@ XhcPeiClearRootHubPortFeature ( + + Offset = (UINT32) (XHC_PORTSC_OFFSET + (0x10 * PortNumber)); + State = XhcPeiReadOpReg (Xhc, Offset); +- DEBUG ((EFI_D_INFO, "XhcPeiClearRootHubPortFeature: Port: %x State: %x\n", PortNumber, State)); ++ DEBUG ((DEBUG_INFO, "XhcPeiClearRootHubPortFeature: Port: %x State: %x\n", PortNumber, State)); + + // + // Mask off the port status change bits, these bits are +@@ -1148,7 +1148,7 @@ XhcPeiClearRootHubPortFeature ( + } + + ON_EXIT: +- DEBUG ((EFI_D_INFO, "XhcPeiClearRootHubPortFeature: PortFeature: %x Status = %r\n", PortFeature, Status)); ++ DEBUG ((DEBUG_INFO, "XhcPeiClearRootHubPortFeature: PortFeature: %x Status = %r\n", PortFeature, Status)); + return Status; + } + +@@ -1189,7 +1189,7 @@ XhcPeiSetRootHubPortFeature ( + + Offset = (UINT32) (XHC_PORTSC_OFFSET + (0x10 * PortNumber)); + State = XhcPeiReadOpReg (Xhc, Offset); +- DEBUG ((EFI_D_INFO, "XhcPeiSetRootHubPortFeature: Port: %x State: %x\n", PortNumber, State)); ++ DEBUG ((DEBUG_INFO, "XhcPeiSetRootHubPortFeature: Port: %x State: %x\n", PortNumber, State)); + + // + // Mask off the port status change bits, these bits are +@@ -1256,7 +1256,7 @@ XhcPeiSetRootHubPortFeature ( + } + + ON_EXIT: +- DEBUG ((EFI_D_INFO, "XhcPeiSetRootHubPortFeature: PortFeature: %x Status = %r\n", PortFeature, Status)); ++ DEBUG ((DEBUG_INFO, "XhcPeiSetRootHubPortFeature: PortFeature: %x Status = %r\n", PortFeature, Status)); + return Status; + } + +@@ -1307,7 +1307,7 @@ XhcPeiGetRootHubPortStatus ( + + Offset = (UINT32) (XHC_PORTSC_OFFSET + (0x10 * PortNumber)); + State = XhcPeiReadOpReg (Xhc, Offset); +- DEBUG ((EFI_D_INFO, "XhcPeiGetRootHubPortStatus: Port: %x State: %x\n", PortNumber, State)); ++ DEBUG ((DEBUG_INFO, "XhcPeiGetRootHubPortStatus: Port: %x State: %x\n", PortNumber, State)); + + // + // According to XHCI 1.1 spec November 2017, +@@ -1371,7 +1371,7 @@ XhcPeiGetRootHubPortStatus ( + ParentRouteChart.Dword = 0; + XhcPeiPollPortStatusChange (Xhc, ParentRouteChart, PortNumber, PortStatus); + +- DEBUG ((EFI_D_INFO, "XhcPeiGetRootHubPortStatus: PortChangeStatus: %x PortStatus: %x\n", PortStatus->PortChangeStatus, PortStatus->PortStatus)); ++ DEBUG ((DEBUG_INFO, "XhcPeiGetRootHubPortStatus: PortChangeStatus: %x PortStatus: %x\n", PortStatus->PortChangeStatus, PortStatus->PortStatus)); + return EFI_SUCCESS; + } + +@@ -1501,14 +1501,14 @@ XhcPeimEntry ( + PageSize = XhcPeiReadOpReg (XhcDev, XHC_PAGESIZE_OFFSET) & XHC_PAGESIZE_MASK; + XhcDev->PageSize = 1 << (HighBitSet32 (PageSize) + 12); + +- DEBUG ((EFI_D_INFO, "XhciPei: UsbHostControllerBaseAddress: %x\n", XhcDev->UsbHostControllerBaseAddress)); +- DEBUG ((EFI_D_INFO, "XhciPei: CapLength: %x\n", XhcDev->CapLength)); +- DEBUG ((EFI_D_INFO, "XhciPei: HcSParams1: %x\n", XhcDev->HcSParams1.Dword)); +- DEBUG ((EFI_D_INFO, "XhciPei: HcSParams2: %x\n", XhcDev->HcSParams2.Dword)); +- DEBUG ((EFI_D_INFO, "XhciPei: HcCParams: %x\n", XhcDev->HcCParams.Dword)); +- DEBUG ((EFI_D_INFO, "XhciPei: DBOff: %x\n", XhcDev->DBOff)); +- DEBUG ((EFI_D_INFO, "XhciPei: RTSOff: %x\n", XhcDev->RTSOff)); +- DEBUG ((EFI_D_INFO, "XhciPei: PageSize: %x\n", XhcDev->PageSize)); ++ DEBUG ((DEBUG_INFO, "XhciPei: UsbHostControllerBaseAddress: %x\n", XhcDev->UsbHostControllerBaseAddress)); ++ DEBUG ((DEBUG_INFO, "XhciPei: CapLength: %x\n", XhcDev->CapLength)); ++ DEBUG ((DEBUG_INFO, "XhciPei: HcSParams1: %x\n", XhcDev->HcSParams1.Dword)); ++ DEBUG ((DEBUG_INFO, "XhciPei: HcSParams2: %x\n", XhcDev->HcSParams2.Dword)); ++ DEBUG ((DEBUG_INFO, "XhciPei: HcCParams: %x\n", XhcDev->HcCParams.Dword)); ++ DEBUG ((DEBUG_INFO, "XhciPei: DBOff: %x\n", XhcDev->DBOff)); ++ DEBUG ((DEBUG_INFO, "XhciPei: RTSOff: %x\n", XhcDev->RTSOff)); ++ DEBUG ((DEBUG_INFO, "XhciPei: PageSize: %x\n", XhcDev->PageSize)); + + XhcPeiResetHC (XhcDev, XHC_RESET_TIMEOUT); + ASSERT (XhcPeiIsHalt (XhcDev)); +@@ -1551,4 +1551,3 @@ XhcPeimEntry ( + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c b/MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c +index 5b9892a1cb..1fc06aaa61 100644 +--- a/MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c ++++ b/MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c +@@ -81,7 +81,7 @@ XhcPeiCmdTransfer ( + Status = EFI_DEVICE_ERROR; + + if (XhcPeiIsHalt (Xhc) || XhcPeiIsSysError (Xhc)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiCmdTransfer: HC is halted or has system error\n")); ++ DEBUG ((DEBUG_ERROR, "XhcPeiCmdTransfer: HC is halted or has system error\n")); + goto ON_EXIT; + } + +@@ -90,7 +90,7 @@ XhcPeiCmdTransfer ( + // + Urb = XhcPeiCreateCmdTrb (Xhc, CmdTrb); + if (Urb == NULL) { +- DEBUG ((EFI_D_ERROR, "XhcPeiCmdTransfer: failed to create URB\n")); ++ DEBUG ((DEBUG_ERROR, "XhcPeiCmdTransfer: failed to create URB\n")); + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } +@@ -168,7 +168,7 @@ XhcPeiCreateUrb ( + + Status = XhcPeiCreateTransferTrb (Xhc, Urb); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiCreateUrb: XhcPeiCreateTransferTrb Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiCreateUrb: XhcPeiCreateTransferTrb Failed, Status = %r\n", Status)); + FreePool (Urb); + Urb = NULL; + } +@@ -439,7 +439,7 @@ XhcPeiCreateTransferTrb ( + break; + + default: +- DEBUG ((EFI_D_INFO, "Not supported EPType 0x%x!\n",EPType)); ++ DEBUG ((DEBUG_INFO, "Not supported EPType 0x%x!\n",EPType)); + ASSERT (FALSE); + break; + } +@@ -478,14 +478,14 @@ XhcPeiRecoverHaltedEndpoint ( + } + Dci = XhcPeiEndpointToDci (Urb->Ep.EpAddr, (UINT8) (Urb->Ep.Direction)); + +- DEBUG ((EFI_D_INFO, "XhcPeiRecoverHaltedEndpoint: Recovery Halted Slot = %x, Dci = %x\n", SlotId, Dci)); ++ DEBUG ((DEBUG_INFO, "XhcPeiRecoverHaltedEndpoint: Recovery Halted Slot = %x, Dci = %x\n", SlotId, Dci)); + + // + // 1) Send Reset endpoint command to transit from halt to stop state + // + Status = XhcPeiResetEndpoint (Xhc, SlotId, Dci); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiRecoverHaltedEndpoint: Reset Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiRecoverHaltedEndpoint: Reset Endpoint Failed, Status = %r\n", Status)); + goto Done; + } + +@@ -494,7 +494,7 @@ XhcPeiRecoverHaltedEndpoint ( + // + Status = XhcPeiSetTrDequeuePointer (Xhc, SlotId, Dci, Urb); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiRecoverHaltedEndpoint: Set Dequeue Pointer Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiRecoverHaltedEndpoint: Set Dequeue Pointer Failed, Status = %r\n", Status)); + goto Done; + } + +@@ -537,14 +537,14 @@ XhcPeiDequeueTrbFromEndpoint ( + } + Dci = XhcPeiEndpointToDci (Urb->Ep.EpAddr, (UINT8) (Urb->Ep.Direction)); + +- DEBUG ((EFI_D_INFO, "XhcPeiDequeueTrbFromEndpoint: Stop Slot = %x, Dci = %x\n", SlotId, Dci)); ++ DEBUG ((DEBUG_INFO, "XhcPeiDequeueTrbFromEndpoint: Stop Slot = %x, Dci = %x\n", SlotId, Dci)); + + // + // 1) Send Stop endpoint command to stop endpoint. + // + Status = XhcPeiStopEndpoint (Xhc, SlotId, Dci); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiDequeueTrbFromEndpoint: Stop Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiDequeueTrbFromEndpoint: Stop Endpoint Failed, Status = %r\n", Status)); + goto Done; + } + +@@ -553,7 +553,7 @@ XhcPeiDequeueTrbFromEndpoint ( + // + Status = XhcPeiSetTrDequeuePointer (Xhc, SlotId, Dci, Urb); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiDequeueTrbFromEndpoint: Set Dequeue Pointer Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiDequeueTrbFromEndpoint: Set Dequeue Pointer Failed, Status = %r\n", Status)); + goto Done; + } + +@@ -683,31 +683,31 @@ XhcPeiCheckUrbResult ( + case TRB_COMPLETION_STALL_ERROR: + CheckedUrb->Result |= EFI_USB_ERR_STALL; + CheckedUrb->Finished = TRUE; +- DEBUG ((EFI_D_ERROR, "XhcPeiCheckUrbResult: STALL_ERROR! Completecode = %x\n", EvtTrb->Completecode)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiCheckUrbResult: STALL_ERROR! Completecode = %x\n", EvtTrb->Completecode)); + goto EXIT; + + case TRB_COMPLETION_BABBLE_ERROR: + CheckedUrb->Result |= EFI_USB_ERR_BABBLE; + CheckedUrb->Finished = TRUE; +- DEBUG ((EFI_D_ERROR, "XhcPeiCheckUrbResult: BABBLE_ERROR! Completecode = %x\n", EvtTrb->Completecode)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiCheckUrbResult: BABBLE_ERROR! Completecode = %x\n", EvtTrb->Completecode)); + goto EXIT; + + case TRB_COMPLETION_DATA_BUFFER_ERROR: + CheckedUrb->Result |= EFI_USB_ERR_BUFFER; + CheckedUrb->Finished = TRUE; +- DEBUG ((EFI_D_ERROR, "XhcPeiCheckUrbResult: ERR_BUFFER! Completecode = %x\n", EvtTrb->Completecode)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiCheckUrbResult: ERR_BUFFER! Completecode = %x\n", EvtTrb->Completecode)); + goto EXIT; + + case TRB_COMPLETION_USB_TRANSACTION_ERROR: + CheckedUrb->Result |= EFI_USB_ERR_TIMEOUT; + CheckedUrb->Finished = TRUE; +- DEBUG ((EFI_D_ERROR, "XhcPeiCheckUrbResult: TRANSACTION_ERROR! Completecode = %x\n", EvtTrb->Completecode)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiCheckUrbResult: TRANSACTION_ERROR! Completecode = %x\n", EvtTrb->Completecode)); + goto EXIT; + + case TRB_COMPLETION_SHORT_PACKET: + case TRB_COMPLETION_SUCCESS: + if (EvtTrb->Completecode == TRB_COMPLETION_SHORT_PACKET) { +- DEBUG ((EFI_D_VERBOSE, "XhcPeiCheckUrbResult: short packet happens!\n")); ++ DEBUG ((DEBUG_VERBOSE, "XhcPeiCheckUrbResult: short packet happens!\n")); + } + + TRBType = (UINT8) (TRBPtr->Type); +@@ -720,7 +720,7 @@ XhcPeiCheckUrbResult ( + break; + + default: +- DEBUG ((EFI_D_ERROR, "XhcPeiCheckUrbResult: Transfer Default Error Occur! Completecode = 0x%x!\n", EvtTrb->Completecode)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiCheckUrbResult: Transfer Default Error Occur! Completecode = 0x%x!\n", EvtTrb->Completecode)); + CheckedUrb->Result |= EFI_USB_ERR_TIMEOUT; + CheckedUrb->Finished = TRUE; + goto EXIT; +@@ -859,7 +859,7 @@ XhcPeiPollPortStatusChange ( + UINT8 SlotId; + USB_DEV_ROUTE RouteChart; + +- DEBUG ((EFI_D_INFO, "XhcPeiPollPortStatusChange: PortChangeStatus: %x PortStatus: %x\n", PortState->PortChangeStatus, PortState->PortStatus)); ++ DEBUG ((DEBUG_INFO, "XhcPeiPollPortStatusChange: PortChangeStatus: %x PortStatus: %x\n", PortState->PortChangeStatus, PortState->PortStatus)); + + Status = EFI_SUCCESS; + +@@ -1081,11 +1081,11 @@ XhcPeiInitializeDeviceSlot ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiInitializeDeviceSlot: Enable Slot Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiInitializeDeviceSlot: Enable Slot Failed, Status = %r\n", Status)); + return Status; + } + ASSERT (EvtTrb->SlotId <= Xhc->MaxSlotsEn); +- DEBUG ((EFI_D_INFO, "XhcPeiInitializeDeviceSlot: Enable Slot Successfully, The Slot ID = 0x%x\n", EvtTrb->SlotId)); ++ DEBUG ((DEBUG_INFO, "XhcPeiInitializeDeviceSlot: Enable Slot Successfully, The Slot ID = 0x%x\n", EvtTrb->SlotId)); + SlotId = (UINT8) EvtTrb->SlotId; + ASSERT (SlotId != 0); + +@@ -1238,11 +1238,11 @@ XhcPeiInitializeDeviceSlot ( + ); + if (!EFI_ERROR (Status)) { + DeviceAddress = (UINT8) OutputContext->Slot.DeviceAddress; +- DEBUG ((EFI_D_INFO, "XhcPeiInitializeDeviceSlot: Address %d assigned successfully\n", DeviceAddress)); ++ DEBUG ((DEBUG_INFO, "XhcPeiInitializeDeviceSlot: Address %d assigned successfully\n", DeviceAddress)); + Xhc->UsbDevContext[SlotId].XhciDevAddr = DeviceAddress; + } + +- DEBUG ((EFI_D_INFO, "XhcPeiInitializeDeviceSlot: Enable Slot, Status = %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcPeiInitializeDeviceSlot: Enable Slot, Status = %r\n", Status)); + return Status; + } + +@@ -1292,11 +1292,11 @@ XhcPeiInitializeDeviceSlot64 ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiInitializeDeviceSlot64: Enable Slot Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiInitializeDeviceSlot64: Enable Slot Failed, Status = %r\n", Status)); + return Status; + } + ASSERT (EvtTrb->SlotId <= Xhc->MaxSlotsEn); +- DEBUG ((EFI_D_INFO, "XhcPeiInitializeDeviceSlot64: Enable Slot Successfully, The Slot ID = 0x%x\n", EvtTrb->SlotId)); ++ DEBUG ((DEBUG_INFO, "XhcPeiInitializeDeviceSlot64: Enable Slot Successfully, The Slot ID = 0x%x\n", EvtTrb->SlotId)); + SlotId = (UINT8)EvtTrb->SlotId; + ASSERT (SlotId != 0); + +@@ -1449,11 +1449,11 @@ XhcPeiInitializeDeviceSlot64 ( + ); + if (!EFI_ERROR (Status)) { + DeviceAddress = (UINT8) OutputContext->Slot.DeviceAddress; +- DEBUG ((EFI_D_INFO, "XhcPeiInitializeDeviceSlot64: Address %d assigned successfully\n", DeviceAddress)); ++ DEBUG ((DEBUG_INFO, "XhcPeiInitializeDeviceSlot64: Address %d assigned successfully\n", DeviceAddress)); + Xhc->UsbDevContext[SlotId].XhciDevAddr = DeviceAddress; + } + +- DEBUG ((EFI_D_INFO, "XhcPeiInitializeDeviceSlot64: Enable Slot, Status = %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcPeiInitializeDeviceSlot64: Enable Slot, Status = %r\n", Status)); + return Status; + } + +@@ -1493,7 +1493,7 @@ XhcPeiDisableSlotCmd ( + Status = XhcPeiDisableSlotCmd (Xhc, Xhc->UsbDevContext[Index + 1].SlotId); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiDisableSlotCmd: failed to disable child, ignore error\n")); ++ DEBUG ((DEBUG_ERROR, "XhcPeiDisableSlotCmd: failed to disable child, ignore error\n")); + Xhc->UsbDevContext[Index + 1].SlotId = 0; + } + } +@@ -1501,7 +1501,7 @@ XhcPeiDisableSlotCmd ( + // + // Construct the disable slot command + // +- DEBUG ((EFI_D_INFO, "XhcPeiDisableSlotCmd: Disable device slot %d!\n", SlotId)); ++ DEBUG ((DEBUG_INFO, "XhcPeiDisableSlotCmd: Disable device slot %d!\n", SlotId)); + + ZeroMem (&CmdTrbDisSlot, sizeof (CmdTrbDisSlot)); + CmdTrbDisSlot.CycleBit = 1; +@@ -1514,7 +1514,7 @@ XhcPeiDisableSlotCmd ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiDisableSlotCmd: Disable Slot Command Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiDisableSlotCmd: Disable Slot Command Failed, Status = %r\n", Status)); + return Status; + } + // +@@ -1557,7 +1557,7 @@ XhcPeiDisableSlotCmd ( + Xhc->UsbDevContext[SlotId].Enabled = FALSE; + Xhc->UsbDevContext[SlotId].SlotId = 0; + +- DEBUG ((EFI_D_INFO, "XhcPeiDisableSlotCmd: Disable Slot Command, Status = %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcPeiDisableSlotCmd: Disable Slot Command, Status = %r\n", Status)); + return Status; + } + +@@ -1596,7 +1596,7 @@ XhcPeiDisableSlotCmd64 ( + Status = XhcPeiDisableSlotCmd64 (Xhc, Xhc->UsbDevContext[Index + 1].SlotId); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiDisableSlotCmd64: failed to disable child, ignore error\n")); ++ DEBUG ((DEBUG_ERROR, "XhcPeiDisableSlotCmd64: failed to disable child, ignore error\n")); + Xhc->UsbDevContext[Index + 1].SlotId = 0; + } + } +@@ -1604,7 +1604,7 @@ XhcPeiDisableSlotCmd64 ( + // + // Construct the disable slot command + // +- DEBUG ((EFI_D_INFO, "XhcPeiDisableSlotCmd64: Disable device slot %d!\n", SlotId)); ++ DEBUG ((DEBUG_INFO, "XhcPeiDisableSlotCmd64: Disable device slot %d!\n", SlotId)); + + ZeroMem (&CmdTrbDisSlot, sizeof (CmdTrbDisSlot)); + CmdTrbDisSlot.CycleBit = 1; +@@ -1617,7 +1617,7 @@ XhcPeiDisableSlotCmd64 ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiDisableSlotCmd64: Disable Slot Command Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiDisableSlotCmd64: Disable Slot Command Failed, Status = %r\n", Status)); + return Status; + } + // +@@ -1660,7 +1660,7 @@ XhcPeiDisableSlotCmd64 ( + Xhc->UsbDevContext[SlotId].Enabled = FALSE; + Xhc->UsbDevContext[SlotId].SlotId = 0; + +- DEBUG ((EFI_D_INFO, "XhcPeiDisableSlotCmd64: Disable Slot Command, Status = %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "XhcPeiDisableSlotCmd64: Disable Slot Command, Status = %r\n", Status)); + return Status; + } + +@@ -1790,7 +1790,7 @@ XhcPeiSetConfigCmd ( + // + // Do not support isochronous transfer now. + // +- DEBUG ((EFI_D_INFO, "XhcPeiSetConfigCmd: Unsupport ISO EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcPeiSetConfigCmd: Unsupport ISO EP found, Transfer ring is not allocated.\n")); + EpDesc = (USB_ENDPOINT_DESCRIPTOR *)((UINTN)EpDesc + EpDesc->Length); + continue; + case USB_ENDPOINT_INTERRUPT: +@@ -1833,9 +1833,9 @@ XhcPeiSetConfigCmd ( + // + // Do not support control transfer now. + // +- DEBUG ((EFI_D_INFO, "XhcPeiSetConfigCmd: Unsupport Control EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcPeiSetConfigCmd: Unsupport Control EP found, Transfer ring is not allocated.\n")); + default: +- DEBUG ((EFI_D_INFO, "XhcPeiSetConfigCmd: Unknown EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcPeiSetConfigCmd: Unknown EP found, Transfer ring is not allocated.\n")); + EpDesc = (USB_ENDPOINT_DESCRIPTOR *)((UINTN)EpDesc + EpDesc->Length); + continue; + } +@@ -1867,7 +1867,7 @@ XhcPeiSetConfigCmd ( + CmdTrbCfgEP.CycleBit = 1; + CmdTrbCfgEP.Type = TRB_TYPE_CON_ENDPOINT; + CmdTrbCfgEP.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "XhcSetConfigCmd: Configure Endpoint\n")); ++ DEBUG ((DEBUG_INFO, "XhcSetConfigCmd: Configure Endpoint\n")); + Status = XhcPeiCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbCfgEP, +@@ -1875,7 +1875,7 @@ XhcPeiSetConfigCmd ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcSetConfigCmd: Config Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcSetConfigCmd: Config Endpoint Failed, Status = %r\n", Status)); + } + return Status; + } +@@ -2007,7 +2007,7 @@ XhcPeiSetConfigCmd64 ( + // + // Do not support isochronous transfer now. + // +- DEBUG ((EFI_D_INFO, "XhcPeiSetConfigCmd64: Unsupport ISO EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcPeiSetConfigCmd64: Unsupport ISO EP found, Transfer ring is not allocated.\n")); + EpDesc = (USB_ENDPOINT_DESCRIPTOR *)((UINTN)EpDesc + EpDesc->Length); + continue; + case USB_ENDPOINT_INTERRUPT: +@@ -2050,9 +2050,9 @@ XhcPeiSetConfigCmd64 ( + // + // Do not support control transfer now. + // +- DEBUG ((EFI_D_INFO, "XhcPeiSetConfigCmd64: Unsupport Control EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcPeiSetConfigCmd64: Unsupport Control EP found, Transfer ring is not allocated.\n")); + default: +- DEBUG ((EFI_D_INFO, "XhcPeiSetConfigCmd64: Unknown EP found, Transfer ring is not allocated.\n")); ++ DEBUG ((DEBUG_INFO, "XhcPeiSetConfigCmd64: Unknown EP found, Transfer ring is not allocated.\n")); + EpDesc = (USB_ENDPOINT_DESCRIPTOR *)((UINTN)EpDesc + EpDesc->Length); + continue; + } +@@ -2086,7 +2086,7 @@ XhcPeiSetConfigCmd64 ( + CmdTrbCfgEP.CycleBit = 1; + CmdTrbCfgEP.Type = TRB_TYPE_CON_ENDPOINT; + CmdTrbCfgEP.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "XhcSetConfigCmd64: Configure Endpoint\n")); ++ DEBUG ((DEBUG_INFO, "XhcSetConfigCmd64: Configure Endpoint\n")); + Status = XhcPeiCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbCfgEP, +@@ -2094,7 +2094,7 @@ XhcPeiSetConfigCmd64 ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcSetConfigCmd64: Config Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcSetConfigCmd64: Config Endpoint Failed, Status = %r\n", Status)); + } + + return Status; +@@ -2142,7 +2142,7 @@ XhcPeiEvaluateContext ( + CmdTrbEvalu.CycleBit = 1; + CmdTrbEvalu.Type = TRB_TYPE_EVALU_CONTXT; + CmdTrbEvalu.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "XhcEvaluateContext: Evaluate context\n")); ++ DEBUG ((DEBUG_INFO, "XhcEvaluateContext: Evaluate context\n")); + Status = XhcPeiCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbEvalu, +@@ -2150,7 +2150,7 @@ XhcPeiEvaluateContext ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcEvaluateContext: Evaluate Context Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcEvaluateContext: Evaluate Context Failed, Status = %r\n", Status)); + } + return Status; + } +@@ -2196,7 +2196,7 @@ XhcPeiEvaluateContext64 ( + CmdTrbEvalu.CycleBit = 1; + CmdTrbEvalu.Type = TRB_TYPE_EVALU_CONTXT; + CmdTrbEvalu.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "XhcEvaluateContext64: Evaluate context 64\n")); ++ DEBUG ((DEBUG_INFO, "XhcEvaluateContext64: Evaluate context 64\n")); + Status = XhcPeiCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbEvalu, +@@ -2204,7 +2204,7 @@ XhcPeiEvaluateContext64 ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcEvaluateContext64: Evaluate Context Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcEvaluateContext64: Evaluate Context Failed, Status = %r\n", Status)); + } + return Status; + } +@@ -2264,7 +2264,7 @@ XhcPeiConfigHubContext ( + CmdTrbCfgEP.CycleBit = 1; + CmdTrbCfgEP.Type = TRB_TYPE_CON_ENDPOINT; + CmdTrbCfgEP.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "Configure Hub Slot Context\n")); ++ DEBUG ((DEBUG_INFO, "Configure Hub Slot Context\n")); + Status = XhcPeiCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbCfgEP, +@@ -2272,7 +2272,7 @@ XhcPeiConfigHubContext ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcConfigHubContext: Config Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcConfigHubContext: Config Endpoint Failed, Status = %r\n", Status)); + } + return Status; + } +@@ -2332,7 +2332,7 @@ XhcPeiConfigHubContext64 ( + CmdTrbCfgEP.CycleBit = 1; + CmdTrbCfgEP.Type = TRB_TYPE_CON_ENDPOINT; + CmdTrbCfgEP.SlotId = Xhc->UsbDevContext[SlotId].SlotId; +- DEBUG ((EFI_D_INFO, "Configure Hub Slot Context 64\n")); ++ DEBUG ((DEBUG_INFO, "Configure Hub Slot Context 64\n")); + Status = XhcPeiCmdTransfer ( + Xhc, + (TRB_TEMPLATE *) (UINTN) &CmdTrbCfgEP, +@@ -2340,7 +2340,7 @@ XhcPeiConfigHubContext64 ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "XhcConfigHubContext64: Config Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcConfigHubContext64: Config Endpoint Failed, Status = %r\n", Status)); + } + return Status; + } +@@ -2368,7 +2368,7 @@ XhcPeiStopEndpoint ( + EVT_TRB_COMMAND_COMPLETION *EvtTrb; + CMD_TRB_STOP_ENDPOINT CmdTrbStopED; + +- DEBUG ((EFI_D_INFO, "XhcPeiStopEndpoint: Slot = 0x%x, Dci = 0x%x\n", SlotId, Dci)); ++ DEBUG ((DEBUG_INFO, "XhcPeiStopEndpoint: Slot = 0x%x, Dci = 0x%x\n", SlotId, Dci)); + + // + // Send stop endpoint command to transit Endpoint from running to stop state +@@ -2385,7 +2385,7 @@ XhcPeiStopEndpoint ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiStopEndpoint: Stop Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiStopEndpoint: Stop Endpoint Failed, Status = %r\n", Status)); + } + + return Status; +@@ -2414,7 +2414,7 @@ XhcPeiResetEndpoint ( + EVT_TRB_COMMAND_COMPLETION *EvtTrb; + CMD_TRB_RESET_ENDPOINT CmdTrbResetED; + +- DEBUG ((EFI_D_INFO, "XhcPeiResetEndpoint: Slot = 0x%x, Dci = 0x%x\n", SlotId, Dci)); ++ DEBUG ((DEBUG_INFO, "XhcPeiResetEndpoint: Slot = 0x%x, Dci = 0x%x\n", SlotId, Dci)); + + // + // Send stop endpoint command to transit Endpoint from running to stop state +@@ -2431,7 +2431,7 @@ XhcPeiResetEndpoint ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiResetEndpoint: Reset Endpoint Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiResetEndpoint: Reset Endpoint Failed, Status = %r\n", Status)); + } + + return Status; +@@ -2464,7 +2464,7 @@ XhcPeiSetTrDequeuePointer ( + CMD_SET_TR_DEQ_POINTER CmdSetTRDeq; + EFI_PHYSICAL_ADDRESS PhyAddr; + +- DEBUG ((EFI_D_INFO, "XhcPeiSetTrDequeuePointer: Slot = 0x%x, Dci = 0x%x, Urb = 0x%x\n", SlotId, Dci, Urb)); ++ DEBUG ((DEBUG_INFO, "XhcPeiSetTrDequeuePointer: Slot = 0x%x, Dci = 0x%x, Urb = 0x%x\n", SlotId, Dci, Urb)); + + // + // Send stop endpoint command to transit Endpoint from running to stop state +@@ -2484,7 +2484,7 @@ XhcPeiSetTrDequeuePointer ( + (TRB_TEMPLATE **) (UINTN) &EvtTrb + ); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "XhcPeiSetTrDequeuePointer: Set TR Dequeue Pointer Failed, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "XhcPeiSetTrDequeuePointer: Set TR Dequeue Pointer Failed, Status = %r\n", Status)); + } + + return Status; +@@ -2938,7 +2938,7 @@ XhcPeiInitSched ( + XhcPeiWriteOpReg (Xhc, XHC_DCBAAP_OFFSET, XHC_LOW_32BIT (DcbaaPhy)); + XhcPeiWriteOpReg (Xhc, XHC_DCBAAP_OFFSET + 4, XHC_HIGH_32BIT (DcbaaPhy)); + +- DEBUG ((EFI_D_INFO, "XhcPeiInitSched:DCBAA=0x%x\n", Xhc->DCBAA)); ++ DEBUG ((DEBUG_INFO, "XhcPeiInitSched:DCBAA=0x%x\n", Xhc->DCBAA)); + + // + // Define the Command Ring Dequeue Pointer by programming the Command Ring Control Register +@@ -2962,7 +2962,7 @@ XhcPeiInitSched ( + XhcPeiWriteOpReg (Xhc, XHC_CRCR_OFFSET, XHC_LOW_32BIT (CmdRingPhy)); + XhcPeiWriteOpReg (Xhc, XHC_CRCR_OFFSET + 4, XHC_HIGH_32BIT (CmdRingPhy)); + +- DEBUG ((EFI_D_INFO, "XhcPeiInitSched:XHC_CRCR=0x%x\n", Xhc->CmdRing.RingSeg0)); ++ DEBUG ((DEBUG_INFO, "XhcPeiInitSched:XHC_CRCR=0x%x\n", Xhc->CmdRing.RingSeg0)); + + // + // Disable the 'interrupter enable' bit in USB_CMD +@@ -2978,7 +2978,7 @@ XhcPeiInitSched ( + // Allocate EventRing for Cmd, Ctrl, Bulk, Interrupt, AsynInterrupt transfer + // + XhcPeiCreateEventRing (Xhc, &Xhc->EventRing); +- DEBUG ((EFI_D_INFO, "XhcPeiInitSched:XHC_EVENTRING=0x%x\n", Xhc->EventRing.EventRingSeg0)); ++ DEBUG ((DEBUG_INFO, "XhcPeiInitSched:XHC_EVENTRING=0x%x\n", Xhc->EventRing.EventRingSeg0)); + } + + /** +@@ -3031,4 +3031,3 @@ XhcPeiFreeSched ( + Xhc->MemPool = NULL; + } + } +- +diff --git a/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c b/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c +index c80e78fa8a..b35d92fcd7 100644 +--- a/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c ++++ b/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c +@@ -1420,7 +1420,7 @@ ScsiDiskAsyncUnmapNotify ( + Status = CheckHostAdapterStatus (CommandPacket->HostAdapterStatus); + if (EFI_ERROR(Status)) { + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + "ScsiDiskAsyncUnmapNotify: Host adapter indicating error status 0x%x.\n", + CommandPacket->HostAdapterStatus + )); +@@ -1432,7 +1432,7 @@ ScsiDiskAsyncUnmapNotify ( + Status = CheckTargetStatus (CommandPacket->TargetStatus); + if (EFI_ERROR(Status)) { + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + "ScsiDiskAsyncUnmapNotify: Target indicating error status 0x%x.\n", + CommandPacket->HostAdapterStatus + )); +@@ -1614,7 +1614,7 @@ ScsiDiskUnmap ( + Status = CheckHostAdapterStatus (CommandPacket->HostAdapterStatus); + if (EFI_ERROR(Status)) { + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + "ScsiDiskUnmap: Host adapter indicating error status 0x%x.\n", + CommandPacket->HostAdapterStatus + )); +@@ -1626,7 +1626,7 @@ ScsiDiskUnmap ( + Status = CheckTargetStatus (CommandPacket->TargetStatus); + if (EFI_ERROR(Status)) { + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + "ScsiDiskUnmap: Target indicating error status 0x%x.\n", + CommandPacket->HostAdapterStatus + )); +@@ -2510,7 +2510,7 @@ ScsiDiskInquiryDevice ( + // Sanity checks for coping with broken devices + // + if (PageLength > sizeof SupportedVpdPages->SupportedVpdPageList) { +- DEBUG ((EFI_D_WARN, ++ DEBUG ((DEBUG_WARN, + "%a: invalid PageLength (%u) in Supported VPD Pages page\n", + __FUNCTION__, (UINT32)PageLength)); + PageLength = 0; +@@ -2519,7 +2519,7 @@ ScsiDiskInquiryDevice ( + if ((PageLength > 0) && + (SupportedVpdPages->SupportedVpdPageList[0] != + EFI_SCSI_PAGE_CODE_SUPPORTED_VPD)) { +- DEBUG ((EFI_D_WARN, ++ DEBUG ((DEBUG_WARN, + "%a: Supported VPD Pages page doesn't start with code 0x%02x\n", + __FUNCTION__, EFI_SCSI_PAGE_CODE_SUPPORTED_VPD)); + PageLength = 0; +@@ -2535,7 +2535,7 @@ ScsiDiskInquiryDevice ( + if ((Index > 0) && + (SupportedVpdPages->SupportedVpdPageList[Index] <= + SupportedVpdPages->SupportedVpdPageList[Index - 1])) { +- DEBUG ((EFI_D_WARN, ++ DEBUG ((DEBUG_WARN, + "%a: non-ascending code in Supported VPD Pages page @ %u\n", + __FUNCTION__, Index)); + Index = 0; +@@ -2861,30 +2861,30 @@ DetectMediaParsingSenseKeys ( + ScsiDiskDevice->BlkIo.Media->MediaPresent = FALSE; + ScsiDiskDevice->BlkIo.Media->LastBlock = 0; + *Action = ACTION_NO_ACTION; +- DEBUG ((EFI_D_VERBOSE, "ScsiDisk: ScsiDiskIsNoMedia\n")); ++ DEBUG ((DEBUG_VERBOSE, "ScsiDisk: ScsiDiskIsNoMedia\n")); + return EFI_SUCCESS; + } + + if (ScsiDiskIsMediaChange (SenseData, NumberOfSenseKeys)) { + ScsiDiskDevice->BlkIo.Media->MediaId++; +- DEBUG ((EFI_D_VERBOSE, "ScsiDisk: ScsiDiskIsMediaChange!\n")); ++ DEBUG ((DEBUG_VERBOSE, "ScsiDisk: ScsiDiskIsMediaChange!\n")); + return EFI_SUCCESS; + } + + if (ScsiDiskIsResetBefore (SenseData, NumberOfSenseKeys)) { + *Action = ACTION_RETRY_COMMAND_LATER; +- DEBUG ((EFI_D_VERBOSE, "ScsiDisk: ScsiDiskIsResetBefore!\n")); ++ DEBUG ((DEBUG_VERBOSE, "ScsiDisk: ScsiDiskIsResetBefore!\n")); + return EFI_SUCCESS; + } + + if (ScsiDiskIsMediaError (SenseData, NumberOfSenseKeys)) { +- DEBUG ((EFI_D_VERBOSE, "ScsiDisk: ScsiDiskIsMediaError\n")); ++ DEBUG ((DEBUG_VERBOSE, "ScsiDisk: ScsiDiskIsMediaError\n")); + *Action = ACTION_RETRY_WITH_BACKOFF_ALGO; + return EFI_DEVICE_ERROR; + } + + if (ScsiDiskIsHardwareError (SenseData, NumberOfSenseKeys)) { +- DEBUG ((EFI_D_VERBOSE, "ScsiDisk: ScsiDiskIsHardwareError\n")); ++ DEBUG ((DEBUG_VERBOSE, "ScsiDisk: ScsiDiskIsHardwareError\n")); + *Action = ACTION_RETRY_WITH_BACKOFF_ALGO; + return EFI_DEVICE_ERROR; + } +@@ -2892,7 +2892,7 @@ DetectMediaParsingSenseKeys ( + if (!ScsiDiskIsDriveReady (SenseData, NumberOfSenseKeys, &RetryLater)) { + if (RetryLater) { + *Action = ACTION_RETRY_COMMAND_LATER; +- DEBUG ((EFI_D_VERBOSE, "ScsiDisk: ScsiDiskDriveNotReady!\n")); ++ DEBUG ((DEBUG_VERBOSE, "ScsiDisk: ScsiDiskDriveNotReady!\n")); + return EFI_SUCCESS; + } + *Action = ACTION_NO_ACTION; +@@ -2900,7 +2900,7 @@ DetectMediaParsingSenseKeys ( + } + + *Action = ACTION_RETRY_WITH_BACKOFF_ALGO; +- DEBUG ((EFI_D_VERBOSE, "ScsiDisk: Sense Key = 0x%x ASC = 0x%x!\n", SenseData->Sense_Key, SenseData->Addnl_Sense_Code)); ++ DEBUG ((DEBUG_VERBOSE, "ScsiDisk: Sense Key = 0x%x ASC = 0x%x!\n", SenseData->Sense_Key, SenseData->Addnl_Sense_Code)); + return EFI_SUCCESS; + } + +@@ -4206,7 +4206,7 @@ BackOff: + } + + if ((TargetStatus == EFI_EXT_SCSI_STATUS_TARGET_CHECK_CONDITION) || (EFI_ERROR (ReturnStatus))) { +- DEBUG ((EFI_D_ERROR, "ScsiDiskRead10: Check Condition happened!\n")); ++ DEBUG ((DEBUG_ERROR, "ScsiDiskRead10: Check Condition happened!\n")); + Status = DetectMediaParsingSenseKeys (ScsiDiskDevice, ScsiDiskDevice->SenseData, SenseDataLength / sizeof (EFI_SCSI_SENSE_DATA), &Action); + if (Action == ACTION_RETRY_COMMAND_LATER) { + *NeedRetry = TRUE; +@@ -4330,7 +4330,7 @@ BackOff: + } + + if ((TargetStatus == EFI_EXT_SCSI_STATUS_TARGET_CHECK_CONDITION) || (EFI_ERROR (ReturnStatus))) { +- DEBUG ((EFI_D_ERROR, "ScsiDiskWrite10: Check Condition happened!\n")); ++ DEBUG ((DEBUG_ERROR, "ScsiDiskWrite10: Check Condition happened!\n")); + Status = DetectMediaParsingSenseKeys (ScsiDiskDevice, ScsiDiskDevice->SenseData, SenseDataLength / sizeof (EFI_SCSI_SENSE_DATA), &Action); + if (Action == ACTION_RETRY_COMMAND_LATER) { + *NeedRetry = TRUE; +@@ -4453,7 +4453,7 @@ BackOff: + } + + if ((TargetStatus == EFI_EXT_SCSI_STATUS_TARGET_CHECK_CONDITION) || (EFI_ERROR (ReturnStatus))) { +- DEBUG ((EFI_D_ERROR, "ScsiDiskRead16: Check Condition happened!\n")); ++ DEBUG ((DEBUG_ERROR, "ScsiDiskRead16: Check Condition happened!\n")); + Status = DetectMediaParsingSenseKeys (ScsiDiskDevice, ScsiDiskDevice->SenseData, SenseDataLength / sizeof (EFI_SCSI_SENSE_DATA), &Action); + if (Action == ACTION_RETRY_COMMAND_LATER) { + *NeedRetry = TRUE; +@@ -4577,7 +4577,7 @@ BackOff: + } + + if ((TargetStatus == EFI_EXT_SCSI_STATUS_TARGET_CHECK_CONDITION) || (EFI_ERROR (ReturnStatus))) { +- DEBUG ((EFI_D_ERROR, "ScsiDiskWrite16: Check Condition happened!\n")); ++ DEBUG ((DEBUG_ERROR, "ScsiDiskWrite16: Check Condition happened!\n")); + Status = DetectMediaParsingSenseKeys (ScsiDiskDevice, ScsiDiskDevice->SenseData, SenseDataLength / sizeof (EFI_SCSI_SENSE_DATA), &Action); + if (Action == ACTION_RETRY_COMMAND_LATER) { + *NeedRetry = TRUE; +@@ -4686,7 +4686,7 @@ ScsiDiskNotify ( + } + + if (Request->TargetStatus == EFI_EXT_SCSI_STATUS_TARGET_CHECK_CONDITION) { +- DEBUG ((EFI_D_ERROR, "ScsiDiskNotify: Check Condition happened!\n")); ++ DEBUG ((DEBUG_ERROR, "ScsiDiskNotify: Check Condition happened!\n")); + + Status = DetectMediaParsingSenseKeys ( + ScsiDiskDevice, +@@ -5948,7 +5948,7 @@ DetermineInstallEraseBlock ( + if (((CapacityData16->LowestAlignLogic2 & BIT7) == 0) || + ((CapacityData16->LowestAlignLogic2 & BIT6) == 0)) { + DEBUG (( +- EFI_D_VERBOSE, ++ DEBUG_VERBOSE, + "ScsiDisk EraseBlock: Either TPE or TPRZ is not set: 0x%x.\n", + CapacityData16->LowestAlignLogic2 + )); +@@ -5958,7 +5958,7 @@ DetermineInstallEraseBlock ( + } + } else { + DEBUG (( +- EFI_D_VERBOSE, ++ DEBUG_VERBOSE, + "ScsiDisk EraseBlock: ReadCapacity16 failed with status %r.\n", + CommandStatus + )); +@@ -5973,7 +5973,7 @@ DetermineInstallEraseBlock ( + if ((ScsiDiskDevice->UnmapInfo.MaxLbaCnt == 0) || + (ScsiDiskDevice->UnmapInfo.MaxBlkDespCnt == 0)) { + DEBUG (( +- EFI_D_VERBOSE, ++ DEBUG_VERBOSE, + "ScsiDisk EraseBlock: The device server does not implement the UNMAP command.\n" + )); + +diff --git a/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.c b/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.c +index 267db4a89d..bf4498df55 100644 +--- a/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.c ++++ b/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcBlockIoPei.c +@@ -741,7 +741,7 @@ InitializeEmmcBlockIoPeim ( + continue; + } + if (Capability.SlotType != 0x1) { +- DEBUG ((EFI_D_INFO, "The slot at 0x%x is not embedded slot type\n", MmioBase[Index])); ++ DEBUG ((DEBUG_INFO, "The slot at 0x%x is not embedded slot type\n", MmioBase[Index])); + Status = EFI_UNSUPPORTED; + continue; + } +@@ -773,12 +773,12 @@ InitializeEmmcBlockIoPeim ( + + ExtCsd = &Slot->ExtCsd; + if (ExtCsd->ExtCsdRev < 5) { +- DEBUG ((EFI_D_ERROR, "The EMMC device version is too low, we don't support!!!\n")); ++ DEBUG ((DEBUG_ERROR, "The EMMC device version is too low, we don't support!!!\n")); + Status = EFI_UNSUPPORTED; + continue; + } + if ((ExtCsd->PartitioningSupport & BIT0) != BIT0) { +- DEBUG ((EFI_D_ERROR, "The EMMC device doesn't support Partition Feature!!!\n")); ++ DEBUG ((DEBUG_ERROR, "The EMMC device doesn't support Partition Feature!!!\n")); + Status = EFI_UNSUPPORTED; + continue; + } +diff --git a/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcHci.c b/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcHci.c +index 287a10266a..d7f9e107c4 100644 +--- a/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcHci.c ++++ b/MdeModulePkg/Bus/Sd/EmmcBlockIoPei/EmmcHci.c +@@ -304,7 +304,7 @@ EmmcPeimHcReset ( + Status = EmmcPeimHcRwMmio (Bar + EMMC_HC_SW_RST, FALSE, sizeof (SwReset), &SwReset); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EmmcPeimHcReset: write full 1 fails: %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "EmmcPeimHcReset: write full 1 fails: %r\n", Status)); + return Status; + } + +@@ -316,7 +316,7 @@ EmmcPeimHcReset ( + EMMC_TIMEOUT + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "EmmcPeimHcReset: reset done with %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "EmmcPeimHcReset: reset done with %r\n", Status)); + return Status; + } + // +@@ -556,7 +556,7 @@ EmmcPeimHcClockSupply ( + } + } + +- DEBUG ((EFI_D_INFO, "BaseClkFreq %dMHz Divisor %d ClockFreq %dKhz\n", BaseClkFreq, Divisor, ClockFreq)); ++ DEBUG ((DEBUG_INFO, "BaseClkFreq %dMHz Divisor %d ClockFreq %dKhz\n", BaseClkFreq, Divisor, ClockFreq)); + + Status = EmmcPeimHcRwMmio (Bar + EMMC_HC_CTRL_VER, TRUE, sizeof (ControllerVer), &ControllerVer); + if (EFI_ERROR (Status)) { +@@ -578,7 +578,7 @@ EmmcPeimHcClockSupply ( + ASSERT (Divisor <= 0x80); + ClockCtrl = (Divisor & 0xFF) << 8; + } else { +- DEBUG ((EFI_D_ERROR, "Unknown SD Host Controller Spec version [0x%x]!!!\n", ControllerVer)); ++ DEBUG ((DEBUG_ERROR, "Unknown SD Host Controller Spec version [0x%x]!!!\n", ControllerVer)); + return EFI_UNSUPPORTED; + } + +@@ -596,7 +596,7 @@ EmmcPeimHcClockSupply ( + ClockCtrl |= BIT0; + Status = EmmcPeimHcRwMmio (Bar + EMMC_HC_CLOCK_CTRL, FALSE, sizeof (ClockCtrl), &ClockCtrl); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Set SDCLK Frequency Select and Internal Clock Enable fields fails\n")); ++ DEBUG ((DEBUG_ERROR, "Set SDCLK Frequency Select and Internal Clock Enable fields fails\n")); + return Status; + } + +@@ -936,7 +936,7 @@ BuildAdmaDescTable ( + // for 32-bit address descriptor table. + // + if ((Data & (BIT0 | BIT1)) != 0) { +- DEBUG ((EFI_D_INFO, "The buffer [0x%x] to construct ADMA desc is not aligned to 4 bytes boundary!\n", Data)); ++ DEBUG ((DEBUG_INFO, "The buffer [0x%x] to construct ADMA desc is not aligned to 4 bytes boundary!\n", Data)); + } + + Entries = DivU64x32 ((DataLen + ADMA_MAX_DATA_PER_LINE - 1), ADMA_MAX_DATA_PER_LINE); +@@ -2330,7 +2330,7 @@ EmmcPeimTuningClkForHs200 ( + } + } while (++Retry < 40); + +- DEBUG ((EFI_D_ERROR, "EmmcPeimTuningClkForHs200: Send tuning block fails at %d times with HostCtrl2 %02x\n", Retry, HostCtrl2)); ++ DEBUG ((DEBUG_ERROR, "EmmcPeimTuningClkForHs200: Send tuning block fails at %d times with HostCtrl2 %02x\n", Retry, HostCtrl2)); + // + // Abort the tuning procedure and reset the tuning circuit. + // +@@ -2720,7 +2720,7 @@ EmmcPeimSetBusMode ( + + Status = EmmcPeimGetCsd (Slot, Rca, &Slot->Csd); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EmmcPeimSetBusMode: EmmcPeimGetCsd fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "EmmcPeimSetBusMode: EmmcPeimGetCsd fails with %r\n", Status)); + return Status; + } + +@@ -2732,13 +2732,13 @@ EmmcPeimSetBusMode ( + + Status = EmmcPeimSelect (Slot, Rca); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EmmcPeimSetBusMode: EmmcPeimSelect fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "EmmcPeimSetBusMode: EmmcPeimSelect fails with %r\n", Status)); + return Status; + } + + Status = EmmcPeimHcGetCapability (Slot->EmmcHcBase, &Capability); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EmmcPeimSetBusMode: EmmcPeimHcGetCapability fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "EmmcPeimSetBusMode: EmmcPeimHcGetCapability fails with %r\n", Status)); + return Status; + } + +@@ -2756,7 +2756,7 @@ EmmcPeimSetBusMode ( + // + Status = EmmcPeimGetExtCsd (Slot, &Slot->ExtCsd); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EmmcPeimSetBusMode: EmmcPeimGetExtCsd fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "EmmcPeimSetBusMode: EmmcPeimGetExtCsd fails with %r\n", Status)); + return Status; + } + // +@@ -2802,7 +2802,7 @@ EmmcPeimSetBusMode ( + return EFI_SUCCESS; + } + +- DEBUG ((EFI_D_INFO, "HsTiming %d ClockFreq %d BusWidth %d Ddr %a\n", HsTiming, ClockFreq, BusWidth, IsDdr ? "TRUE":"FALSE")); ++ DEBUG ((DEBUG_INFO, "HsTiming %d ClockFreq %d BusWidth %d Ddr %a\n", HsTiming, ClockFreq, BusWidth, IsDdr ? "TRUE":"FALSE")); + + if (HsTiming == 3) { + // +@@ -2847,7 +2847,7 @@ EmmcPeimIdentification ( + + Status = EmmcPeimReset (Slot); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EmmcPeimIdentification: EmmcPeimReset fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "EmmcPeimIdentification: EmmcPeimReset fails with %r\n", Status)); + return Status; + } + +@@ -2856,12 +2856,12 @@ EmmcPeimIdentification ( + do { + Status = EmmcPeimGetOcr (Slot, &Ocr); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EmmcPeimIdentification: EmmcPeimGetOcr fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "EmmcPeimIdentification: EmmcPeimGetOcr fails with %r\n", Status)); + return Status; + } + + if (Retry++ == 100) { +- DEBUG ((EFI_D_ERROR, "EmmcPeimIdentification: EmmcPeimGetOcr fails too many times\n")); ++ DEBUG ((DEBUG_ERROR, "EmmcPeimIdentification: EmmcPeimGetOcr fails too many times\n")); + return EFI_DEVICE_ERROR; + } + MicroSecondDelay (10 * 1000); +@@ -2869,7 +2869,7 @@ EmmcPeimIdentification ( + + Status = EmmcPeimGetAllCid (Slot); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EmmcPeimIdentification: EmmcPeimGetAllCid fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "EmmcPeimIdentification: EmmcPeimGetAllCid fails with %r\n", Status)); + return Status; + } + // +@@ -2879,16 +2879,15 @@ EmmcPeimIdentification ( + Rca = 1; + Status = EmmcPeimSetRca (Slot, Rca); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EmmcPeimIdentification: EmmcPeimSetRca fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "EmmcPeimIdentification: EmmcPeimSetRca fails with %r\n", Status)); + return Status; + } + // + // Enter Data Tranfer Mode. + // +- DEBUG ((EFI_D_INFO, "Found a EMMC device at slot [%d], RCA [%d]\n", Slot, Rca)); ++ DEBUG ((DEBUG_INFO, "Found a EMMC device at slot [%d], RCA [%d]\n", Slot, Rca)); + + Status = EmmcPeimSetBusMode (Slot, Rca); + + return Status; + } +- +diff --git a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcBlockIo.c b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcBlockIo.c +index afdc0a57ef..63d77a22fe 100644 +--- a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcBlockIo.c ++++ b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcBlockIo.c +@@ -34,7 +34,7 @@ AsyncIoCallback ( + Request = (EMMC_REQUEST *) Context; + + DEBUG_CODE_BEGIN (); +- DEBUG ((EFI_D_INFO, "Emmc Async Request: CmdIndex[%d] Arg[%08x] %r\n", ++ DEBUG ((DEBUG_INFO, "Emmc Async Request: CmdIndex[%d] Arg[%08x] %r\n", + Request->SdMmcCmdBlk.CommandIndex, Request->SdMmcCmdBlk.CommandArgument, + Request->Packet.TransactionStatus)); + DEBUG_CODE_END (); +@@ -2158,4 +2158,3 @@ EmmcEraseBlocks ( + + return Status; + } +- +diff --git a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.c b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.c +index e9095b904c..8dca9a6ee1 100644 +--- a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.c ++++ b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.c +@@ -314,12 +314,12 @@ DiscoverAllPartitions ( + DumpExtCsd (ExtCsd); + + if (ExtCsd->ExtCsdRev < 5) { +- DEBUG ((EFI_D_ERROR, "The EMMC device version is too low, we don't support!!!\n")); ++ DEBUG ((DEBUG_ERROR, "The EMMC device version is too low, we don't support!!!\n")); + return EFI_UNSUPPORTED; + } + + if ((ExtCsd->PartitioningSupport & BIT0) != BIT0) { +- DEBUG ((EFI_D_ERROR, "The EMMC device doesn't support Partition Feature!!!\n")); ++ DEBUG ((DEBUG_ERROR, "The EMMC device doesn't support Partition Feature!!!\n")); + return EFI_UNSUPPORTED; + } + +@@ -1202,4 +1202,3 @@ InitializeEmmcDxe ( + + return Status; + } +- +diff --git a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.c b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.c +index 1d53fcd23e..ddcd68bef7 100644 +--- a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.c ++++ b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdBlockIoPei.c +@@ -588,7 +588,7 @@ InitializeSdBlockIoPeim ( + continue; + } + if (Capability.SlotType != 0x1) { +- DEBUG ((EFI_D_INFO, "The slot at 0x%x is not embedded slot type\n", MmioBase[Index])); ++ DEBUG ((DEBUG_INFO, "The slot at 0x%x is not embedded slot type\n", MmioBase[Index])); + Status = EFI_UNSUPPORTED; + continue; + } +diff --git a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdHci.c b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdHci.c +index 756c3063bb..7c8b548b9e 100644 +--- a/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdHci.c ++++ b/MdeModulePkg/Bus/Sd/SdBlockIoPei/SdHci.c +@@ -304,7 +304,7 @@ SdPeimHcReset ( + Status = SdPeimHcRwMmio (Bar + SD_HC_SW_RST, FALSE, sizeof (SwReset), &SwReset); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimHcReset: write full 1 fails: %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimHcReset: write full 1 fails: %r\n", Status)); + return Status; + } + +@@ -316,7 +316,7 @@ SdPeimHcReset ( + SD_TIMEOUT + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "SdPeimHcReset: reset done with %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "SdPeimHcReset: reset done with %r\n", Status)); + return Status; + } + // +@@ -556,7 +556,7 @@ SdPeimHcClockSupply ( + } + } + +- DEBUG ((EFI_D_INFO, "BaseClkFreq %dMHz Divisor %d ClockFreq %dKhz\n", BaseClkFreq, Divisor, ClockFreq)); ++ DEBUG ((DEBUG_INFO, "BaseClkFreq %dMHz Divisor %d ClockFreq %dKhz\n", BaseClkFreq, Divisor, ClockFreq)); + + Status = SdPeimHcRwMmio (Bar + SD_HC_CTRL_VER, TRUE, sizeof (ControllerVer), &ControllerVer); + if (EFI_ERROR (Status)) { +@@ -578,7 +578,7 @@ SdPeimHcClockSupply ( + ASSERT (Divisor <= 0x80); + ClockCtrl = (Divisor & 0xFF) << 8; + } else { +- DEBUG ((EFI_D_ERROR, "Unknown SD Host Controller Spec version [0x%x]!!!\n", ControllerVer)); ++ DEBUG ((DEBUG_ERROR, "Unknown SD Host Controller Spec version [0x%x]!!!\n", ControllerVer)); + return EFI_UNSUPPORTED; + } + +@@ -596,7 +596,7 @@ SdPeimHcClockSupply ( + ClockCtrl |= BIT0; + Status = SdPeimHcRwMmio (Bar + SD_HC_CLOCK_CTRL, FALSE, sizeof (ClockCtrl), &ClockCtrl); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Set SDCLK Frequency Select and Internal Clock Enable fields fails\n")); ++ DEBUG ((DEBUG_ERROR, "Set SDCLK Frequency Select and Internal Clock Enable fields fails\n")); + return Status; + } + +@@ -936,7 +936,7 @@ BuildAdmaDescTable ( + // for 32-bit address descriptor table. + // + if ((Data & (BIT0 | BIT1)) != 0) { +- DEBUG ((EFI_D_INFO, "The buffer [0x%x] to construct ADMA desc is not aligned to 4 bytes boundary!\n", Data)); ++ DEBUG ((DEBUG_INFO, "The buffer [0x%x] to construct ADMA desc is not aligned to 4 bytes boundary!\n", Data)); + } + + Entries = DivU64x32 ((DataLen + ADMA_MAX_DATA_PER_LINE - 1), ADMA_MAX_DATA_PER_LINE); +@@ -2549,7 +2549,7 @@ SdPeimTuningClock ( + } + } while (++Retry < 40); + +- DEBUG ((EFI_D_ERROR, "SdPeimTuningClock: Send tuning block fails at %d times with HostCtrl2 %02x\n", Retry, HostCtrl2)); ++ DEBUG ((DEBUG_ERROR, "SdPeimTuningClock: Send tuning block fails at %d times with HostCtrl2 %02x\n", Retry, HostCtrl2)); + // + // Abort the tuning procedure and reset the tuning circuit. + // +@@ -2638,7 +2638,7 @@ SdPeimSetBusMode ( + + Status = SdPeimGetCsd (Slot, Rca, &Slot->Csd); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimSetBusMode: SdPeimGetCsd fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimSetBusMode: SdPeimGetCsd fails with %r\n", Status)); + return Status; + } + +@@ -2649,14 +2649,14 @@ SdPeimSetBusMode ( + + Status = SdPeimSelect (Slot, Rca); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimSetBusMode: SdPeimSelect fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimSetBusMode: SdPeimSelect fails with %r\n", Status)); + return Status; + } + + BusWidth = 4; + Status = SdPeimSwitchBusWidth (Slot, Rca, BusWidth); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimSetBusMode: SdPeimSwitchBusWidth fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimSetBusMode: SdPeimSwitchBusWidth fails with %r\n", Status)); + return Status; + } + +@@ -2689,16 +2689,16 @@ SdPeimSetBusMode ( + AccessMode = 0; + } + +- DEBUG ((EFI_D_INFO, "SdPeimSetBusMode: AccessMode %d ClockFreq %d BusWidth %d\n", AccessMode, ClockFreq, BusWidth)); ++ DEBUG ((DEBUG_INFO, "SdPeimSetBusMode: AccessMode %d ClockFreq %d BusWidth %d\n", AccessMode, ClockFreq, BusWidth)); + + Status = SdPeimSwitch (Slot, AccessMode, 0xF, 0xF, 0xF, TRUE, SwitchResp); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimSetBusMode: SdPeimSwitch fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimSetBusMode: SdPeimSwitch fails with %r\n", Status)); + return Status; + } + + if ((SwitchResp[16] & 0xF) != AccessMode) { +- DEBUG ((EFI_D_ERROR, "SdPeimSetBusMode: SdPeimSwitch to AccessMode %d ClockFreq %d BusWidth %d fails! The Switch response is 0x%1x\n", AccessMode, ClockFreq, BusWidth, SwitchResp[16] & 0xF)); ++ DEBUG ((DEBUG_ERROR, "SdPeimSetBusMode: SdPeimSwitch to AccessMode %d ClockFreq %d BusWidth %d fails! The Switch response is 0x%1x\n", AccessMode, ClockFreq, BusWidth, SwitchResp[16] & 0xF)); + return EFI_DEVICE_ERROR; + } + // +@@ -2725,19 +2725,19 @@ SdPeimSetBusMode ( + + Status = SdPeimHcClockSupply (Slot->SdHcBase, ClockFreq * 1000); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimSetBusMode: SdPeimHcClockSupply %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimSetBusMode: SdPeimHcClockSupply %r\n", Status)); + return Status; + } + + if ((AccessMode == 3) || ((AccessMode == 2) && (Capability.TuningSDR50 != 0))) { + Status = SdPeimTuningClock (Slot); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimSetBusMode: SdPeimTuningClock fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimSetBusMode: SdPeimTuningClock fails with %r\n", Status)); + return Status; + } + } + +- DEBUG ((EFI_D_INFO, "SdPeimSetBusMode: SdPeimSetBusMode %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "SdPeimSetBusMode: SdPeimSetBusMode %r\n", Status)); + + return Status; + } +@@ -2776,7 +2776,7 @@ SdPeimIdentification ( + // + Status = SdPeimReset (Slot); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: Executing Cmd0 fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: Executing Cmd0 fails with %r\n", Status)); + return Status; + } + // +@@ -2784,7 +2784,7 @@ SdPeimIdentification ( + // + Status = SdPeimVoltageCheck (Slot, 0x1, 0xFF); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: Executing Cmd8 fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: Executing Cmd8 fails with %r\n", Status)); + return Status; + } + // +@@ -2792,7 +2792,7 @@ SdPeimIdentification ( + // + Status = SdioSendOpCond (Slot, 0, FALSE); + if (!EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: Found SDIO device, ignore it as we don't support\n")); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: Found SDIO device, ignore it as we don't support\n")); + return EFI_DEVICE_ERROR; + } + // +@@ -2800,7 +2800,7 @@ SdPeimIdentification ( + // + Status = SdPeimSendOpCond (Slot, 0, 0, FALSE, FALSE, FALSE, &Ocr); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: Executing SdPeimSendOpCond fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: Executing SdPeimSendOpCond fails with %r\n", Status)); + return EFI_DEVICE_ERROR; + } + +@@ -2863,12 +2863,12 @@ SdPeimIdentification ( + do { + Status = SdPeimSendOpCond (Slot, 0, Ocr, S18r, Xpc, TRUE, &Ocr); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: SdPeimSendOpCond fails with %r Ocr %x, S18r %x, Xpc %x\n", Status, Ocr, S18r, Xpc)); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: SdPeimSendOpCond fails with %r Ocr %x, S18r %x, Xpc %x\n", Status, Ocr, S18r, Xpc)); + return EFI_DEVICE_ERROR; + } + + if (Retry++ == 100) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: SdPeimSendOpCond fails too many times\n")); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: SdPeimSendOpCond fails too many times\n")); + return EFI_DEVICE_ERROR; + } + MicroSecondDelay (10 * 1000); +@@ -2885,7 +2885,7 @@ SdPeimIdentification ( + ((Ocr & BIT24) != 0)) { + Status = SdPeimVoltageSwitch (Slot); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: Executing SdPeimVoltageSwitch fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: Executing SdPeimVoltageSwitch fails with %r\n", Status)); + Status = EFI_DEVICE_ERROR; + goto Error; + } else { +@@ -2897,7 +2897,7 @@ SdPeimIdentification ( + + SdPeimHcRwMmio (Slot->SdHcBase + SD_HC_PRESENT_STATE, TRUE, sizeof (PresentState), &PresentState); + if (((PresentState >> 20) & 0xF) != 0) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: SwitchVoltage fails with PresentState = 0x%x\n", PresentState)); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: SwitchVoltage fails with PresentState = 0x%x\n", PresentState)); + Status = EFI_DEVICE_ERROR; + goto Error; + } +@@ -2908,7 +2908,7 @@ SdPeimIdentification ( + + SdPeimHcRwMmio (Slot->SdHcBase + SD_HC_HOST_CTRL2, TRUE, sizeof (HostCtrl2), &HostCtrl2); + if ((HostCtrl2 & BIT3) == 0) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: SwitchVoltage fails with HostCtrl2 = 0x%x\n", HostCtrl2)); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: SwitchVoltage fails with HostCtrl2 = 0x%x\n", HostCtrl2)); + Status = EFI_DEVICE_ERROR; + goto Error; + } +@@ -2919,29 +2919,29 @@ SdPeimIdentification ( + + SdPeimHcRwMmio (Slot->SdHcBase + SD_HC_PRESENT_STATE, TRUE, sizeof (PresentState), &PresentState); + if (((PresentState >> 20) & 0xF) != 0xF) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: SwitchVoltage fails with PresentState = 0x%x, It should be 0xF\n", PresentState)); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: SwitchVoltage fails with PresentState = 0x%x, It should be 0xF\n", PresentState)); + Status = EFI_DEVICE_ERROR; + goto Error; + } + } +- DEBUG ((EFI_D_INFO, "SdPeimIdentification: Switch to 1.8v signal voltage success\n")); ++ DEBUG ((DEBUG_INFO, "SdPeimIdentification: Switch to 1.8v signal voltage success\n")); + } + + Status = SdPeimAllSendCid (Slot); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: Executing SdPeimAllSendCid fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: Executing SdPeimAllSendCid fails with %r\n", Status)); + return Status; + } + + Status = SdPeimSetRca (Slot, &Rca); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SdPeimIdentification: Executing SdPeimSetRca fails with %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "SdPeimIdentification: Executing SdPeimSetRca fails with %r\n", Status)); + return Status; + } + // + // Enter Data Tranfer Mode. + // +- DEBUG ((EFI_D_INFO, "Found a SD device at slot [%d]\n", Slot)); ++ DEBUG ((DEBUG_INFO, "Found a SD device at slot [%d]\n", Slot)); + + Status = SdPeimSetBusMode (Slot, Rca, ((Ocr & BIT24) != 0)); + +diff --git a/MdeModulePkg/Bus/Sd/SdDxe/SdBlockIo.c b/MdeModulePkg/Bus/Sd/SdDxe/SdBlockIo.c +index 721f264377..5a041d3618 100644 +--- a/MdeModulePkg/Bus/Sd/SdDxe/SdBlockIo.c ++++ b/MdeModulePkg/Bus/Sd/SdDxe/SdBlockIo.c +@@ -30,7 +30,7 @@ AsyncIoCallback ( + Request = (SD_REQUEST *) Context; + + DEBUG_CODE_BEGIN (); +- DEBUG ((EFI_D_INFO, "Sd Async Request: CmdIndex[%d] Arg[%08x] %r\n", ++ DEBUG ((DEBUG_INFO, "Sd Async Request: CmdIndex[%d] Arg[%08x] %r\n", + Request->SdMmcCmdBlk.CommandIndex, Request->SdMmcCmdBlk.CommandArgument, + Request->Packet.TransactionStatus)); + DEBUG_CODE_END (); +@@ -86,7 +86,7 @@ SdSetRca ( + + Status = PassThru->PassThru (PassThru, Device->Slot, &Packet, NULL); + if (!EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "Set RCA succeeds with Resp0 = 0x%x\n", SdMmcStatusBlk.Resp0)); ++ DEBUG ((DEBUG_INFO, "Set RCA succeeds with Resp0 = 0x%x\n", SdMmcStatusBlk.Resp0)); + *Rca = (UINT16)(SdMmcStatusBlk.Resp0 >> 16); + } + +@@ -1378,4 +1378,3 @@ SdEraseBlocks ( + + return Status; + } +- +diff --git a/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.c b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.c +index 73bcc181c1..4ca374990d 100644 +--- a/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.c ++++ b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.c +@@ -201,7 +201,7 @@ DiscoverUserArea ( + + Status = SdSetRca (Device, &Rca); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "DiscoverUserArea(): Assign new Rca = 0x%x fails with %r\n", Rca, Status)); ++ DEBUG ((DEBUG_ERROR, "DiscoverUserArea(): Assign new Rca = 0x%x fails with %r\n", Rca, Status)); + return Status; + } + +@@ -221,7 +221,7 @@ DiscoverUserArea ( + + Status = SdSelect (Device, Rca); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "DiscoverUserArea(): Reselect the device 0x%x fails with %r\n", Rca, Status)); ++ DEBUG ((DEBUG_ERROR, "DiscoverUserArea(): Reselect the device 0x%x fails with %r\n", Rca, Status)); + return Status; + } + +@@ -905,4 +905,3 @@ InitializeSdDxe ( + + return Status; + } +- +diff --git a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.c b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.c +index d79ca3904b..2538f22f42 100644 +--- a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.c ++++ b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.c +@@ -441,21 +441,21 @@ UfsPeimParsingSenseKeys ( + (SenseData->Addnl_Sense_Code == EFI_SCSI_ASC_NO_MEDIA)) { + Media->MediaPresent = FALSE; + *NeedRetry = FALSE; +- DEBUG ((EFI_D_VERBOSE, "UfsBlockIoPei: Is No Media\n")); ++ DEBUG ((DEBUG_VERBOSE, "UfsBlockIoPei: Is No Media\n")); + return EFI_DEVICE_ERROR; + } + + if ((SenseData->Sense_Key == EFI_SCSI_SK_UNIT_ATTENTION) && + (SenseData->Addnl_Sense_Code == EFI_SCSI_ASC_MEDIA_CHANGE)) { + *NeedRetry = TRUE; +- DEBUG ((EFI_D_VERBOSE, "UfsBlockIoPei: Is Media Change\n")); ++ DEBUG ((DEBUG_VERBOSE, "UfsBlockIoPei: Is Media Change\n")); + return EFI_SUCCESS; + } + + if ((SenseData->Sense_Key == EFI_SCSI_SK_UNIT_ATTENTION) && + (SenseData->Addnl_Sense_Code == EFI_SCSI_ASC_RESET)) { + *NeedRetry = TRUE; +- DEBUG ((EFI_D_VERBOSE, "UfsBlockIoPei: Was Reset Before\n")); ++ DEBUG ((DEBUG_VERBOSE, "UfsBlockIoPei: Was Reset Before\n")); + return EFI_SUCCESS; + } + +@@ -463,13 +463,13 @@ UfsPeimParsingSenseKeys ( + ((SenseData->Sense_Key == EFI_SCSI_SK_NOT_READY) && + (SenseData->Addnl_Sense_Code == EFI_SCSI_ASC_MEDIA_UPSIDE_DOWN))) { + *NeedRetry = FALSE; +- DEBUG ((EFI_D_VERBOSE, "UfsBlockIoPei: Media Error\n")); ++ DEBUG ((DEBUG_VERBOSE, "UfsBlockIoPei: Media Error\n")); + return EFI_DEVICE_ERROR; + } + + if (SenseData->Sense_Key == EFI_SCSI_SK_HARDWARE_ERROR) { + *NeedRetry = FALSE; +- DEBUG ((EFI_D_VERBOSE, "UfsBlockIoPei: Hardware Error\n")); ++ DEBUG ((DEBUG_VERBOSE, "UfsBlockIoPei: Hardware Error\n")); + return EFI_DEVICE_ERROR; + } + +@@ -477,12 +477,12 @@ UfsPeimParsingSenseKeys ( + (SenseData->Addnl_Sense_Code == EFI_SCSI_ASC_NOT_READY) && + (SenseData->Addnl_Sense_Code_Qualifier == EFI_SCSI_ASCQ_IN_PROGRESS)) { + *NeedRetry = TRUE; +- DEBUG ((EFI_D_VERBOSE, "UfsBlockIoPei: Was Reset Before\n")); ++ DEBUG ((DEBUG_VERBOSE, "UfsBlockIoPei: Was Reset Before\n")); + return EFI_SUCCESS; + } + + *NeedRetry = FALSE; +- DEBUG ((EFI_D_VERBOSE, "UfsBlockIoPei: Sense Key = 0x%x ASC = 0x%x!\n", SenseData->Sense_Key, SenseData->Addnl_Sense_Code)); ++ DEBUG ((DEBUG_VERBOSE, "UfsBlockIoPei: Sense Key = 0x%x ASC = 0x%x!\n", SenseData->Sense_Key, SenseData->Addnl_Sense_Code)); + return EFI_DEVICE_ERROR; + } + +@@ -1097,7 +1097,7 @@ InitializeUfsBlockIoPeim ( + // + Status = UfsControllerInit (Private); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UfsDevicePei: Host Controller Initialization Error, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UfsDevicePei: Host Controller Initialization Error, Status = %r\n", Status)); + Controller++; + continue; + } +@@ -1109,7 +1109,7 @@ InitializeUfsBlockIoPeim ( + // + Status = UfsExecNopCmds (Private); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Ufs Sending NOP IN command Error, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ufs Sending NOP IN command Error, Status = %r\n", Status)); + Controller++; + continue; + } +@@ -1119,7 +1119,7 @@ InitializeUfsBlockIoPeim ( + // + Status = UfsSetFlag (Private, UfsFlagDevInit); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Ufs Set fDeviceInit Flag Error, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ufs Set fDeviceInit Flag Error, Status = %r\n", Status)); + Controller++; + continue; + } +@@ -1129,7 +1129,7 @@ InitializeUfsBlockIoPeim ( + // + Status = UfsRwDeviceDesc (Private, TRUE, UfsConfigDesc, 0, 0, &Config, sizeof (UFS_CONFIG_DESC)); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Ufs Get Configuration Descriptor Error, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ufs Get Configuration Descriptor Error, Status = %r\n", Status)); + Controller++; + continue; + } +@@ -1137,7 +1137,7 @@ InitializeUfsBlockIoPeim ( + for (Index = 0; Index < UFS_PEIM_MAX_LUNS; Index++) { + if (Config.UnitDescConfParams[Index].LunEn != 0) { + Private->Luns.BitMask |= (BIT0 << Index); +- DEBUG ((EFI_D_INFO, "Ufs %d Lun %d is enabled\n", Controller, Index)); ++ DEBUG ((DEBUG_INFO, "Ufs %d Lun %d is enabled\n", Controller, Index)); + } + } + +diff --git a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c +index e450f6f49d..1e47eb7eaa 100644 +--- a/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c ++++ b/MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c +@@ -80,34 +80,34 @@ DumpUicCmdExecResult ( + case 0x00: + break; + case 0x01: +- DEBUG ((EFI_D_VERBOSE, "UIC configuration command fails - INVALID_MIB_ATTRIBUTE\n")); ++ DEBUG ((DEBUG_VERBOSE, "UIC configuration command fails - INVALID_MIB_ATTRIBUTE\n")); + break; + case 0x02: +- DEBUG ((EFI_D_VERBOSE, "UIC configuration command fails - INVALID_MIB_ATTRIBUTE_VALUE\n")); ++ DEBUG ((DEBUG_VERBOSE, "UIC configuration command fails - INVALID_MIB_ATTRIBUTE_VALUE\n")); + break; + case 0x03: +- DEBUG ((EFI_D_VERBOSE, "UIC configuration command fails - READ_ONLY_MIB_ATTRIBUTE\n")); ++ DEBUG ((DEBUG_VERBOSE, "UIC configuration command fails - READ_ONLY_MIB_ATTRIBUTE\n")); + break; + case 0x04: +- DEBUG ((EFI_D_VERBOSE, "UIC configuration command fails - WRITE_ONLY_MIB_ATTRIBUTE\n")); ++ DEBUG ((DEBUG_VERBOSE, "UIC configuration command fails - WRITE_ONLY_MIB_ATTRIBUTE\n")); + break; + case 0x05: +- DEBUG ((EFI_D_VERBOSE, "UIC configuration command fails - BAD_INDEX\n")); ++ DEBUG ((DEBUG_VERBOSE, "UIC configuration command fails - BAD_INDEX\n")); + break; + case 0x06: +- DEBUG ((EFI_D_VERBOSE, "UIC configuration command fails - LOCKED_MIB_ATTRIBUTE\n")); ++ DEBUG ((DEBUG_VERBOSE, "UIC configuration command fails - LOCKED_MIB_ATTRIBUTE\n")); + break; + case 0x07: +- DEBUG ((EFI_D_VERBOSE, "UIC configuration command fails - BAD_TEST_FEATURE_INDEX\n")); ++ DEBUG ((DEBUG_VERBOSE, "UIC configuration command fails - BAD_TEST_FEATURE_INDEX\n")); + break; + case 0x08: +- DEBUG ((EFI_D_VERBOSE, "UIC configuration command fails - PEER_COMMUNICATION_FAILURE\n")); ++ DEBUG ((DEBUG_VERBOSE, "UIC configuration command fails - PEER_COMMUNICATION_FAILURE\n")); + break; + case 0x09: +- DEBUG ((EFI_D_VERBOSE, "UIC configuration command fails - BUSY\n")); ++ DEBUG ((DEBUG_VERBOSE, "UIC configuration command fails - BUSY\n")); + break; + case 0x0A: +- DEBUG ((EFI_D_VERBOSE, "UIC configuration command fails - DME_FAILURE\n")); ++ DEBUG ((DEBUG_VERBOSE, "UIC configuration command fails - DME_FAILURE\n")); + break; + default : + ASSERT (FALSE); +@@ -118,7 +118,7 @@ DumpUicCmdExecResult ( + case 0x00: + break; + case 0x01: +- DEBUG ((EFI_D_VERBOSE, "UIC control command fails - FAILURE\n")); ++ DEBUG ((DEBUG_VERBOSE, "UIC control command fails - FAILURE\n")); + break; + default : + ASSERT (FALSE); +@@ -140,34 +140,34 @@ DumpQueryResponseResult ( + { + switch (Result) { + case 0xF6: +- DEBUG ((EFI_D_VERBOSE, "Query Response with Parameter Not Readable\n")); ++ DEBUG ((DEBUG_VERBOSE, "Query Response with Parameter Not Readable\n")); + break; + case 0xF7: +- DEBUG ((EFI_D_VERBOSE, "Query Response with Parameter Not Writeable\n")); ++ DEBUG ((DEBUG_VERBOSE, "Query Response with Parameter Not Writeable\n")); + break; + case 0xF8: +- DEBUG ((EFI_D_VERBOSE, "Query Response with Parameter Already Written\n")); ++ DEBUG ((DEBUG_VERBOSE, "Query Response with Parameter Already Written\n")); + break; + case 0xF9: +- DEBUG ((EFI_D_VERBOSE, "Query Response with Invalid Length\n")); ++ DEBUG ((DEBUG_VERBOSE, "Query Response with Invalid Length\n")); + break; + case 0xFA: +- DEBUG ((EFI_D_VERBOSE, "Query Response with Invalid Value\n")); ++ DEBUG ((DEBUG_VERBOSE, "Query Response with Invalid Value\n")); + break; + case 0xFB: +- DEBUG ((EFI_D_VERBOSE, "Query Response with Invalid Selector\n")); ++ DEBUG ((DEBUG_VERBOSE, "Query Response with Invalid Selector\n")); + break; + case 0xFC: +- DEBUG ((EFI_D_VERBOSE, "Query Response with Invalid Index\n")); ++ DEBUG ((DEBUG_VERBOSE, "Query Response with Invalid Index\n")); + break; + case 0xFD: +- DEBUG ((EFI_D_VERBOSE, "Query Response with Invalid Idn\n")); ++ DEBUG ((DEBUG_VERBOSE, "Query Response with Invalid Idn\n")); + break; + case 0xFE: +- DEBUG ((EFI_D_VERBOSE, "Query Response with Invalid Opcode\n")); ++ DEBUG ((DEBUG_VERBOSE, "Query Response with Invalid Opcode\n")); + break; + case 0xFF: +- DEBUG ((EFI_D_VERBOSE, "Query Response with General Failure\n")); ++ DEBUG ((DEBUG_VERBOSE, "Query Response with General Failure\n")); + break; + default : + ASSERT (FALSE); +@@ -325,7 +325,7 @@ UfsInitUtpPrdt ( + + if ((BufferSize & (BIT0 | BIT1)) != 0) { + BufferSize &= ~(BIT0 | BIT1); +- DEBUG ((EFI_D_WARN, "UfsInitUtpPrdt: The BufferSize [%d] is not dword-aligned!\n", BufferSize)); ++ DEBUG ((DEBUG_WARN, "UfsInitUtpPrdt: The BufferSize [%d] is not dword-aligned!\n", BufferSize)); + } + + if (BufferSize == 0) { +@@ -1190,7 +1190,7 @@ UfsExecScsiCmds ( + // Check the transfer request result. + // + if (Response->Response != 0) { +- DEBUG ((EFI_D_ERROR, "UfsExecScsiCmds() fails with Target Failure\n")); ++ DEBUG ((DEBUG_ERROR, "UfsExecScsiCmds() fails with Target Failure\n")); + Status = EFI_DEVICE_ERROR; + goto Exit; + } +@@ -1324,7 +1324,7 @@ UfsExecUicCommands ( + return EFI_NOT_FOUND; + } + +- DEBUG ((EFI_D_INFO, "UfsblockioPei: found a attached UFS device\n")); ++ DEBUG ((DEBUG_INFO, "UfsblockioPei: found a attached UFS device\n")); + + return EFI_SUCCESS; + } +@@ -1577,25 +1577,25 @@ UfsControllerInit ( + + Status = UfsEnableHostController (Private); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UfsDevicePei: Enable Host Controller Fails, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UfsDevicePei: Enable Host Controller Fails, Status = %r\n", Status)); + return Status; + } + + Status = UfsDeviceDetection (Private); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UfsDevicePei: Device Detection Fails, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UfsDevicePei: Device Detection Fails, Status = %r\n", Status)); + return Status; + } + + Status = UfsInitTaskManagementRequestList (Private); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UfsDevicePei: Task management list initialization Fails, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UfsDevicePei: Task management list initialization Fails, Status = %r\n", Status)); + return Status; + } + + Status = UfsInitTransferRequestList (Private); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UfsDevicePei: Transfer list initialization Fails, Status = %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UfsDevicePei: Transfer list initialization Fails, Status = %r\n", Status)); + + if (Private->TmrlMapping != NULL) { + IoMmuFreeBuffer ( +@@ -1609,7 +1609,7 @@ UfsControllerInit ( + return Status; + } + +- DEBUG ((EFI_D_INFO, "UfsDevicePei Finished\n")); ++ DEBUG ((DEBUG_INFO, "UfsDevicePei Finished\n")); + return EFI_SUCCESS; + } + +@@ -1661,8 +1661,7 @@ UfsControllerStop ( + return EFI_DEVICE_ERROR; + } + +- DEBUG ((EFI_D_INFO, "UfsDevicePei: Stop the UFS Host Controller\n")); ++ DEBUG ((DEBUG_INFO, "UfsDevicePei: Stop the UFS Host Controller\n")); + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Bus/Usb/UsbBotPei/PeiAtapi.c b/MdeModulePkg/Bus/Usb/UsbBotPei/PeiAtapi.c +index 41f782a78b..c5ba307e75 100644 +--- a/MdeModulePkg/Bus/Usb/UsbBotPei/PeiAtapi.c ++++ b/MdeModulePkg/Bus/Usb/UsbBotPei/PeiAtapi.c +@@ -270,7 +270,7 @@ PeiUsbReadCapacity ( + LastBlock = ((UINT32) Data.LastLba3 << 24) | (Data.LastLba2 << 16) | (Data.LastLba1 << 8) | Data.LastLba0; + + if (LastBlock == 0xFFFFFFFF) { +- DEBUG ((EFI_D_INFO, "The usb device LBA count is larger than 0xFFFFFFFF!\n")); ++ DEBUG ((DEBUG_INFO, "The usb device LBA count is larger than 0xFFFFFFFF!\n")); + } + + PeiBotDevice->Media.LastBlock = LastBlock; +@@ -341,7 +341,7 @@ PeiUsbReadFormattedCapacity ( + } else { + LastBlock = ((UINT32) FormatData.LastLba3 << 24) | (FormatData.LastLba2 << 16) | (FormatData.LastLba1 << 8) | FormatData.LastLba0; + if (LastBlock == 0xFFFFFFFF) { +- DEBUG ((EFI_D_INFO, "The usb device LBA count is larger than 0xFFFFFFFF!\n")); ++ DEBUG ((DEBUG_INFO, "The usb device LBA count is larger than 0xFFFFFFFF!\n")); + } + + PeiBotDevice->Media.LastBlock = LastBlock; +diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c +index 4b4915c019..76b3737032 100644 +--- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c ++++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBus.c +@@ -168,7 +168,7 @@ UsbIoControlTransfer ( + + goto ON_EXIT; + } +- DEBUG ((EFI_D_INFO, "UsbIoControlTransfer: configure changed!!! Do NOT use old UsbIo!!!\n")); ++ DEBUG ((DEBUG_INFO, "UsbIoControlTransfer: configure changed!!! Do NOT use old UsbIo!!!\n")); + + if (Dev->ActiveConfig != NULL) { + UsbRemoveConfig (Dev); +@@ -837,7 +837,7 @@ UsbIoPortReset ( + Status = HubIf->HubApi->ResetPort (HubIf, Dev->ParentPort); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbIoPortReset: failed to reset hub port %d@hub %d, %r \n", ++ DEBUG (( DEBUG_ERROR, "UsbIoPortReset: failed to reset hub port %d@hub %d, %r \n", + Dev->ParentPort, Dev->ParentAddr, Status)); + + goto ON_EXIT; +@@ -861,13 +861,13 @@ UsbIoPortReset ( + // + // It may fail due to device disconnection or other reasons. + // +- DEBUG (( EFI_D_ERROR, "UsbIoPortReset: failed to set address for device %d - %r\n", ++ DEBUG (( DEBUG_ERROR, "UsbIoPortReset: failed to set address for device %d - %r\n", + Dev->Address, Status)); + + goto ON_EXIT; + } + +- DEBUG (( EFI_D_INFO, "UsbIoPortReset: device is now ADDRESSED at %d\n", Dev->Address)); ++ DEBUG (( DEBUG_INFO, "UsbIoPortReset: device is now ADDRESSED at %d\n", Dev->Address)); + + // + // Reset the current active configure, after this device +@@ -877,7 +877,7 @@ UsbIoPortReset ( + Status = UsbSetConfig (Dev, Dev->ActiveConfig->Desc.ConfigurationValue); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbIoPortReset: failed to set configure for device %d - %r\n", ++ DEBUG (( DEBUG_ERROR, "UsbIoPortReset: failed to set configure for device %d - %r\n", + Dev->Address, Status)); + } + } +@@ -934,7 +934,7 @@ UsbBusBuildProtocol ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbBusStart: Failed to open device path %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbBusStart: Failed to open device path %r\n", Status)); + + FreePool (UsbBus); + return Status; +@@ -967,7 +967,7 @@ UsbBusBuildProtocol ( + ); + + if (EFI_ERROR (Status) && EFI_ERROR (Status2)) { +- DEBUG ((EFI_D_ERROR, "UsbBusStart: Failed to open USB_HC/USB2_HC %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbBusStart: Failed to open USB_HC/USB2_HC %r\n", Status)); + + Status = EFI_DEVICE_ERROR; + goto CLOSE_HC; +@@ -995,7 +995,7 @@ UsbBusBuildProtocol ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbBusStart: Failed to install bus protocol %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbBusStart: Failed to install bus protocol %r\n", Status)); + goto CLOSE_HC; + } + +@@ -1043,13 +1043,13 @@ UsbBusBuildProtocol ( + Status = mUsbRootHubApi.Init (RootIf); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbBusStart: Failed to init root hub %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbBusStart: Failed to init root hub %r\n", Status)); + goto FREE_ROOTHUB; + } + + UsbBus->Devices[0] = RootHub; + +- DEBUG ((EFI_D_INFO, "UsbBusStart: usb bus started on %p, root hub %p\n", Controller, RootIf)); ++ DEBUG ((DEBUG_INFO, "UsbBusStart: usb bus started on %p, root hub %p\n", Controller, RootIf)); + return EFI_SUCCESS; + + FREE_ROOTHUB: +@@ -1088,7 +1088,7 @@ CLOSE_HC: + ); + FreePool (UsbBus); + +- DEBUG ((EFI_D_ERROR, "UsbBusStart: Failed to start bus driver %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbBusStart: Failed to start bus driver %r\n", Status)); + return Status; + } + +@@ -1448,7 +1448,7 @@ UsbBusControllerDriverStop ( + return ReturnStatus; + } + +- DEBUG (( EFI_D_INFO, "UsbBusStop: usb bus stopped on %p\n", Controller)); ++ DEBUG (( DEBUG_INFO, "UsbBusStop: usb bus stopped on %p\n", Controller)); + + // + // Locate USB_BUS for the current host controller +diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c +index b08188b1bc..4e602228fb 100644 +--- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c ++++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c +@@ -272,7 +272,7 @@ UsbParseInterfaceDesc ( + Setting = UsbCreateDesc (DescBuf, Len, USB_DESC_TYPE_INTERFACE, &Used); + + if (Setting == NULL) { +- DEBUG (( EFI_D_ERROR, "UsbParseInterfaceDesc: failed to create interface descriptor\n")); ++ DEBUG (( DEBUG_ERROR, "UsbParseInterfaceDesc: failed to create interface descriptor\n")); + return NULL; + } + +@@ -283,7 +283,7 @@ UsbParseInterfaceDesc ( + // + NumEp = Setting->Desc.NumEndpoints; + +- DEBUG (( EFI_D_INFO, "UsbParseInterfaceDesc: interface %d(setting %d) has %d endpoints\n", ++ DEBUG (( DEBUG_INFO, "UsbParseInterfaceDesc: interface %d(setting %d) has %d endpoints\n", + Setting->Desc.InterfaceNumber, Setting->Desc.AlternateSetting, (UINT32)NumEp)); + + if (NumEp == 0) { +@@ -303,7 +303,7 @@ UsbParseInterfaceDesc ( + Ep = UsbCreateDesc (DescBuf + Offset, Len - Offset, USB_DESC_TYPE_ENDPOINT, &Used); + + if (Ep == NULL) { +- DEBUG (( EFI_D_ERROR, "UsbParseInterfaceDesc: failed to create endpoint(index %d)\n", (UINT32)Index)); ++ DEBUG (( DEBUG_ERROR, "UsbParseInterfaceDesc: failed to create endpoint(index %d)\n", (UINT32)Index)); + goto ON_ERROR; + } + +@@ -362,7 +362,7 @@ UsbParseConfigDesc ( + goto ON_ERROR; + } + +- DEBUG (( EFI_D_INFO, "UsbParseConfigDesc: config %d has %d interfaces\n", ++ DEBUG (( DEBUG_INFO, "UsbParseConfigDesc: config %d has %d interfaces\n", + Config->Desc.ConfigurationValue, (UINT32)NumIf)); + + for (Index = 0; Index < NumIf; Index++) { +@@ -394,7 +394,7 @@ UsbParseConfigDesc ( + Setting = UsbParseInterfaceDesc (DescBuf, Len, &Consumed); + + if (Setting == NULL) { +- DEBUG (( EFI_D_ERROR, "UsbParseConfigDesc: warning: failed to get interface setting, stop parsing now.\n")); ++ DEBUG (( DEBUG_ERROR, "UsbParseConfigDesc: warning: failed to get interface setting, stop parsing now.\n")); + break; + + } else if (Setting->Desc.InterfaceNumber >= NumIf) { +@@ -765,13 +765,13 @@ UsbGetOneConfig ( + Status = UsbCtrlGetDesc (UsbDev, USB_DESC_TYPE_CONFIG, Index, 0, &Desc, 8); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbGetOneConfig: failed to get descript length(%d) %r\n", ++ DEBUG (( DEBUG_ERROR, "UsbGetOneConfig: failed to get descript length(%d) %r\n", + Desc.TotalLength, Status)); + + return NULL; + } + +- DEBUG (( EFI_D_INFO, "UsbGetOneConfig: total length is %d\n", Desc.TotalLength)); ++ DEBUG (( DEBUG_INFO, "UsbGetOneConfig: total length is %d\n", Desc.TotalLength)); + + // + // Reject if TotalLength even cannot cover itself. +@@ -789,7 +789,7 @@ UsbGetOneConfig ( + Status = UsbCtrlGetDesc (UsbDev, USB_DESC_TYPE_CONFIG, Index, 0, Buf, Desc.TotalLength); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbGetOneConfig: failed to get full descript %r\n", Status)); ++ DEBUG (( DEBUG_ERROR, "UsbGetOneConfig: failed to get full descript %r\n", Status)); + + FreePool (Buf); + return NULL; +@@ -829,7 +829,7 @@ UsbBuildDescTable ( + Status = UsbGetDevDesc (UsbDev); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbBuildDescTable: failed to get device descriptor - %r\n", Status)); ++ DEBUG (( DEBUG_ERROR, "UsbBuildDescTable: failed to get device descriptor - %r\n", Status)); + return Status; + } + +@@ -844,7 +844,7 @@ UsbBuildDescTable ( + return EFI_OUT_OF_RESOURCES; + } + +- DEBUG (( EFI_D_INFO, "UsbBuildDescTable: device has %d configures\n", NumConfig)); ++ DEBUG (( DEBUG_INFO, "UsbBuildDescTable: device has %d configures\n", NumConfig)); + + // + // Read each configurations, then parse them +@@ -853,7 +853,7 @@ UsbBuildDescTable ( + Config = UsbGetOneConfig (UsbDev, Index); + + if (Config == NULL) { +- DEBUG (( EFI_D_ERROR, "UsbBuildDescTable: failed to get configure (index %d)\n", Index)); ++ DEBUG (( DEBUG_ERROR, "UsbBuildDescTable: failed to get configure (index %d)\n", Index)); + + // + // If we can get the default descriptor, it is likely that the +@@ -871,7 +871,7 @@ UsbBuildDescTable ( + FreePool (Config); + + if (ConfigDesc == NULL) { +- DEBUG (( EFI_D_ERROR, "UsbBuildDescTable: failed to parse configure (index %d)\n", Index)); ++ DEBUG (( DEBUG_ERROR, "UsbBuildDescTable: failed to parse configure (index %d)\n", Index)); + + // + // If we can get the default descriptor, it is likely that the +@@ -894,7 +894,7 @@ UsbBuildDescTable ( + Status = UsbBuildLangTable (UsbDev); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_INFO, "UsbBuildDescTable: get language ID table %r\n", Status)); ++ DEBUG (( DEBUG_INFO, "UsbBuildDescTable: get language ID table %r\n", Status)); + } + + return EFI_SUCCESS; +diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.c b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.c +index d3e0cfa626..500978a9de 100644 +--- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.c ++++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.c +@@ -132,7 +132,7 @@ UsbCreateInterface ( + UsbIf->DevicePath = AppendDevicePathNode (HubIf->DevicePath, &UsbNode.Header); + + if (UsbIf->DevicePath == NULL) { +- DEBUG ((EFI_D_ERROR, "UsbCreateInterface: failed to create device path\n")); ++ DEBUG ((DEBUG_ERROR, "UsbCreateInterface: failed to create device path\n")); + + Status = EFI_OUT_OF_RESOURCES; + goto ON_ERROR; +@@ -148,7 +148,7 @@ UsbCreateInterface ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbCreateInterface: failed to install UsbIo - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbCreateInterface: failed to install UsbIo - %r\n", Status)); + goto ON_ERROR; + } + +@@ -167,7 +167,7 @@ UsbCreateInterface ( + NULL + ); + +- DEBUG ((EFI_D_ERROR, "UsbCreateInterface: failed to open host for child - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbCreateInterface: failed to open host for child - %r\n", Status)); + goto ON_ERROR; + } + +@@ -262,7 +262,7 @@ UsbConnectDriver ( + // connect drivers with this interface + // + if (UsbIsHubInterface (UsbIf)) { +- DEBUG ((EFI_D_INFO, "UsbConnectDriver: found a hub device\n")); ++ DEBUG ((DEBUG_INFO, "UsbConnectDriver: found a hub device\n")); + Status = mUsbHubApi.Init (UsbIf); + + } else { +@@ -279,14 +279,14 @@ UsbConnectDriver ( + // + if (UsbBusIsWantedUsbIO (UsbIf->Device->Bus, UsbIf)) { + OldTpl = UsbGetCurrentTpl (); +- DEBUG ((EFI_D_INFO, "UsbConnectDriver: TPL before connect is %d, %p\n", (UINT32)OldTpl, UsbIf->Handle)); ++ DEBUG ((DEBUG_INFO, "UsbConnectDriver: TPL before connect is %d, %p\n", (UINT32)OldTpl, UsbIf->Handle)); + + gBS->RestoreTPL (TPL_CALLBACK); + + Status = gBS->ConnectController (UsbIf->Handle, NULL, NULL, TRUE); + UsbIf->IsManaged = (BOOLEAN)!EFI_ERROR (Status); + +- DEBUG ((EFI_D_INFO, "UsbConnectDriver: TPL after connect is %d\n", (UINT32)UsbGetCurrentTpl())); ++ DEBUG ((DEBUG_INFO, "UsbConnectDriver: TPL after connect is %d\n", (UINT32)UsbGetCurrentTpl())); + ASSERT (UsbGetCurrentTpl () == TPL_CALLBACK); + + gBS->RaiseTPL (OldTpl); +@@ -340,7 +340,7 @@ UsbSelectSetting ( + IfDesc->ActiveIndex = Index; + + ASSERT (Setting != NULL); +- DEBUG ((EFI_D_INFO, "UsbSelectSetting: setting %d selected for interface %d\n", ++ DEBUG ((DEBUG_INFO, "UsbSelectSetting: setting %d selected for interface %d\n", + Alternate, Setting->Desc.InterfaceNumber)); + + // +@@ -399,7 +399,7 @@ UsbSelectConfig ( + + Device->ActiveConfig = ConfigDesc; + +- DEBUG ((EFI_D_INFO, "UsbSelectConfig: config %d selected for device %d\n", ++ DEBUG ((DEBUG_INFO, "UsbSelectConfig: config %d selected for device %d\n", + ConfigValue, Device->Address)); + + // +@@ -479,7 +479,7 @@ UsbDisconnectDriver ( + // or disconnect at CALLBACK. + // + OldTpl = UsbGetCurrentTpl (); +- DEBUG ((EFI_D_INFO, "UsbDisconnectDriver: old TPL is %d, %p\n", (UINT32)OldTpl, UsbIf->Handle)); ++ DEBUG ((DEBUG_INFO, "UsbDisconnectDriver: old TPL is %d, %p\n", (UINT32)OldTpl, UsbIf->Handle)); + + gBS->RestoreTPL (TPL_CALLBACK); + +@@ -488,7 +488,7 @@ UsbDisconnectDriver ( + UsbIf->IsManaged = FALSE; + } + +- DEBUG (( EFI_D_INFO, "UsbDisconnectDriver: TPL after disconnect is %d, %d\n", (UINT32)UsbGetCurrentTpl(), Status)); ++ DEBUG (( DEBUG_INFO, "UsbDisconnectDriver: TPL after disconnect is %d, %d\n", (UINT32)UsbGetCurrentTpl(), Status)); + ASSERT (UsbGetCurrentTpl () == TPL_CALLBACK); + + gBS->RaiseTPL (OldTpl); +@@ -586,7 +586,7 @@ UsbRemoveDevice ( + } else { + Bus->Devices[Index]->DisconnectFail = TRUE; + ReturnStatus = Status; +- DEBUG ((EFI_D_INFO, "UsbRemoveDevice: failed to remove child %p at parent %p\n", Child, Device)); ++ DEBUG ((DEBUG_INFO, "UsbRemoveDevice: failed to remove child %p at parent %p\n", Child, Device)); + } + } + +@@ -597,7 +597,7 @@ UsbRemoveDevice ( + Status = UsbRemoveConfig (Device); + + if (!EFI_ERROR (Status)) { +- DEBUG (( EFI_D_INFO, "UsbRemoveDevice: device %d removed\n", Device->Address)); ++ DEBUG (( DEBUG_INFO, "UsbRemoveDevice: device %d removed\n", Device->Address)); + + ASSERT (Device->Address < Bus->MaxDevices); + Bus->Devices[Device->Address] = NULL; +@@ -691,13 +691,13 @@ UsbEnumerateNewDev ( + if (ResetIsNeeded) { + Status = HubApi->ResetPort (HubIf, Port); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to reset port %d - %r\n", Port, Status)); ++ DEBUG ((DEBUG_ERROR, "UsbEnumerateNewDev: failed to reset port %d - %r\n", Port, Status)); + + return Status; + } +- DEBUG (( EFI_D_INFO, "UsbEnumerateNewDev: hub port %d is reset\n", Port)); ++ DEBUG (( DEBUG_INFO, "UsbEnumerateNewDev: hub port %d is reset\n", Port)); + } else { +- DEBUG (( EFI_D_INFO, "UsbEnumerateNewDev: hub port %d reset is skipped\n", Port)); ++ DEBUG (( DEBUG_INFO, "UsbEnumerateNewDev: hub port %d reset is skipped\n", Port)); + } + + Child = UsbCreateDevice (HubIf, Port); +@@ -713,12 +713,12 @@ UsbEnumerateNewDev ( + Status = HubApi->GetPortStatus (HubIf, Port, &PortState); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to get speed of port %d\n", Port)); ++ DEBUG ((DEBUG_ERROR, "UsbEnumerateNewDev: failed to get speed of port %d\n", Port)); + goto ON_ERROR; + } + + if (!USB_BIT_IS_SET (PortState.PortStatus, USB_PORT_STAT_CONNECTION)) { +- DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: No device present at port %d\n", Port)); ++ DEBUG ((DEBUG_ERROR, "UsbEnumerateNewDev: No device present at port %d\n", Port)); + Status = EFI_NOT_FOUND; + goto ON_ERROR; + } else if (USB_BIT_IS_SET (PortState.PortStatus, USB_PORT_STAT_SUPER_SPEED)){ +@@ -735,7 +735,7 @@ UsbEnumerateNewDev ( + Child->MaxPacket0 = 8; + } + +- DEBUG (( EFI_D_INFO, "UsbEnumerateNewDev: device is of %d speed\n", Child->Speed)); ++ DEBUG (( DEBUG_INFO, "UsbEnumerateNewDev: device is of %d speed\n", Child->Speed)); + + if (((Child->Speed == EFI_USB_SPEED_LOW) || (Child->Speed == EFI_USB_SPEED_FULL)) && + (Parent->Speed == EFI_USB_SPEED_HIGH)) { +@@ -751,7 +751,7 @@ UsbEnumerateNewDev ( + } else { + Child->Translator = Parent->Translator; + } +- DEBUG (( EFI_D_INFO, "UsbEnumerateNewDev: device uses translator (%d, %d)\n", ++ DEBUG (( DEBUG_INFO, "UsbEnumerateNewDev: device uses translator (%d, %d)\n", + Child->Translator.TranslatorHubAddress, + Child->Translator.TranslatorPortNumber)); + +@@ -775,7 +775,7 @@ UsbEnumerateNewDev ( + } + + if (Address >= Bus->MaxDevices) { +- DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: address pool is full for port %d\n", Port)); ++ DEBUG ((DEBUG_ERROR, "UsbEnumerateNewDev: address pool is full for port %d\n", Port)); + + Status = EFI_ACCESS_DENIED; + goto ON_ERROR; +@@ -786,13 +786,13 @@ UsbEnumerateNewDev ( + Bus->Devices[Address] = Child; + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to set device address - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbEnumerateNewDev: failed to set device address - %r\n", Status)); + goto ON_ERROR; + } + + gBS->Stall (USB_SET_DEVICE_ADDRESS_STALL); + +- DEBUG ((EFI_D_INFO, "UsbEnumerateNewDev: device is now ADDRESSED at %d\n", Address)); ++ DEBUG ((DEBUG_INFO, "UsbEnumerateNewDev: device is now ADDRESSED at %d\n", Address)); + + // + // Host sends a Get_Descriptor request to learn the max packet +@@ -801,11 +801,11 @@ UsbEnumerateNewDev ( + Status = UsbGetMaxPacketSize0 (Child); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to get max packet for EP 0 - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbEnumerateNewDev: failed to get max packet for EP 0 - %r\n", Status)); + goto ON_ERROR; + } + +- DEBUG (( EFI_D_INFO, "UsbEnumerateNewDev: max packet size for EP 0 is %d\n", Child->MaxPacket0)); ++ DEBUG (( DEBUG_INFO, "UsbEnumerateNewDev: max packet size for EP 0 is %d\n", Child->MaxPacket0)); + + // + // Host learns about the device's abilities by requesting device's +@@ -814,7 +814,7 @@ UsbEnumerateNewDev ( + Status = UsbBuildDescTable (Child); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to build descriptor table - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbEnumerateNewDev: failed to build descriptor table - %r\n", Status)); + goto ON_ERROR; + } + +@@ -826,11 +826,11 @@ UsbEnumerateNewDev ( + Status = UsbSetConfig (Child, Config); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to set configure %d - %r\n", Config, Status)); ++ DEBUG ((DEBUG_ERROR, "UsbEnumerateNewDev: failed to set configure %d - %r\n", Config, Status)); + goto ON_ERROR; + } + +- DEBUG (( EFI_D_INFO, "UsbEnumerateNewDev: device %d is now in CONFIGED state\n", Address)); ++ DEBUG (( DEBUG_INFO, "UsbEnumerateNewDev: device %d is now in CONFIGED state\n", Address)); + + // + // Host assigns and loads a device driver. +@@ -838,7 +838,7 @@ UsbEnumerateNewDev ( + Status = UsbSelectConfig (Child, Config); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbEnumerateNewDev: failed to create interfaces - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbEnumerateNewDev: failed to create interfaces - %r\n", Status)); + goto ON_ERROR; + } + +@@ -902,7 +902,7 @@ UsbEnumeratePort ( + Status = HubApi->GetPortStatus (HubIf, Port, &PortState); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbEnumeratePort: failed to get state of port %d\n", Port)); ++ DEBUG ((DEBUG_ERROR, "UsbEnumeratePort: failed to get state of port %d\n", Port)); + return Status; + } + +@@ -914,7 +914,7 @@ UsbEnumeratePort ( + return EFI_SUCCESS; + } + +- DEBUG (( EFI_D_INFO, "UsbEnumeratePort: port %d state - %02x, change - %02x on %p\n", ++ DEBUG (( DEBUG_INFO, "UsbEnumeratePort: port %d state - %02x, change - %02x on %p\n", + Port, PortState.PortStatus, PortState.PortChangeStatus, HubIf)); + + // +@@ -932,7 +932,7 @@ UsbEnumeratePort ( + // which probably is caused by short circuit. It has to wait system hardware + // to perform recovery. + // +- DEBUG (( EFI_D_ERROR, "UsbEnumeratePort: Critical Over Current\n", Port)); ++ DEBUG (( DEBUG_ERROR, "UsbEnumeratePort: Critical Over Current\n", Port)); + return EFI_DEVICE_ERROR; + + } +@@ -942,7 +942,7 @@ UsbEnumeratePort ( + // over current. As a result, all ports are nearly power-off, so + // it's necessary to detach and enumerate all ports again. + // +- DEBUG (( EFI_D_ERROR, "UsbEnumeratePort: 2.0 device Recovery Over Current\n", Port)); ++ DEBUG (( DEBUG_ERROR, "UsbEnumeratePort: 2.0 device Recovery Over Current\n", Port)); + } + + if (USB_BIT_IS_SET (PortState.PortChangeStatus, USB_PORT_STAT_C_ENABLE)) { +@@ -952,7 +952,7 @@ UsbEnumeratePort ( + // on 2.0 roothub does. When over-current has influence on 1.1 device, the port + // would be disabled, so it's also necessary to detach and enumerate again. + // +- DEBUG (( EFI_D_ERROR, "UsbEnumeratePort: 1.1 device Recovery Over Current\n", Port)); ++ DEBUG (( DEBUG_ERROR, "UsbEnumeratePort: 1.1 device Recovery Over Current\n", Port)); + } + + if (USB_BIT_IS_SET (PortState.PortChangeStatus, USB_PORT_STAT_C_CONNECTION)) { +@@ -960,7 +960,7 @@ UsbEnumeratePort ( + // Case4: + // Device connected or disconnected normally. + // +- DEBUG ((EFI_D_INFO, "UsbEnumeratePort: Device Connect/Disconnect Normally\n", Port)); ++ DEBUG ((DEBUG_INFO, "UsbEnumeratePort: Device Connect/Disconnect Normally\n", Port)); + } + + // +@@ -969,7 +969,7 @@ UsbEnumeratePort ( + Child = UsbFindChild (HubIf, Port); + + if (Child != NULL) { +- DEBUG (( EFI_D_INFO, "UsbEnumeratePort: device at port %d removed from root hub %p\n", Port, HubIf)); ++ DEBUG (( DEBUG_INFO, "UsbEnumeratePort: device at port %d removed from root hub %p\n", Port, HubIf)); + UsbRemoveDevice (Child); + } + +@@ -977,7 +977,7 @@ UsbEnumeratePort ( + // + // Now, new device connected, enumerate and configure the device + // +- DEBUG (( EFI_D_INFO, "UsbEnumeratePort: new device connected at port %d\n", Port)); ++ DEBUG (( DEBUG_INFO, "UsbEnumeratePort: new device connected at port %d\n", Port)); + if (USB_BIT_IS_SET (PortState.PortChangeStatus, USB_PORT_STAT_C_RESET)) { + Status = UsbEnumerateNewDev (HubIf, Port, FALSE); + } else { +@@ -985,7 +985,7 @@ UsbEnumeratePort ( + } + + } else { +- DEBUG (( EFI_D_INFO, "UsbEnumeratePort: device disconnected event on port %d\n", Port)); ++ DEBUG (( DEBUG_INFO, "UsbEnumeratePort: device disconnected event on port %d\n", Port)); + } + + HubApi->ClearPortChange (HubIf, Port); +@@ -1020,7 +1020,7 @@ UsbHubEnumeration ( + for (Index = 0; Index < HubIf->NumOfPort; Index++) { + Child = UsbFindChild (HubIf, Index); + if ((Child != NULL) && (Child->DisconnectFail == TRUE)) { +- DEBUG (( EFI_D_INFO, "UsbEnumeratePort: The device disconnect fails at port %d from hub %p, try again\n", Index, HubIf)); ++ DEBUG (( DEBUG_INFO, "UsbEnumeratePort: The device disconnect fails at port %d from hub %p, try again\n", Index, HubIf)); + UsbRemoveDevice (Child); + } + } +@@ -1074,7 +1074,7 @@ UsbRootHubEnumeration ( + for (Index = 0; Index < RootHub->NumOfPort; Index++) { + Child = UsbFindChild (RootHub, Index); + if ((Child != NULL) && (Child->DisconnectFail == TRUE)) { +- DEBUG (( EFI_D_INFO, "UsbEnumeratePort: The device disconnect fails at port %d from root hub %p, try again\n", Index, RootHub)); ++ DEBUG (( DEBUG_INFO, "UsbEnumeratePort: The device disconnect fails at port %d from root hub %p, try again\n", Index, RootHub)); + UsbRemoveDevice (Child); + } + +diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.c b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.c +index c5bd112511..022bab5fc1 100644 +--- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.c ++++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.c +@@ -516,7 +516,7 @@ UsbOnHubInterrupt ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbOnHubInterrupt: failed to remove async transfer - %r\n", Status)); ++ DEBUG (( DEBUG_ERROR, "UsbOnHubInterrupt: failed to remove async transfer - %r\n", Status)); + return Status; + } + +@@ -531,7 +531,7 @@ UsbOnHubInterrupt ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbOnHubInterrupt: failed to submit new async transfer - %r\n", Status)); ++ DEBUG (( DEBUG_ERROR, "UsbOnHubInterrupt: failed to submit new async transfer - %r\n", Status)); + } + + return Status; +@@ -608,7 +608,7 @@ UsbHubInit ( + } + + if (Index == NumEndpoints) { +- DEBUG (( EFI_D_ERROR, "UsbHubInit: no interrupt endpoint found for hub %d\n", HubDev->Address)); ++ DEBUG (( DEBUG_ERROR, "UsbHubInit: no interrupt endpoint found for hub %d\n", HubDev->Address)); + return EFI_DEVICE_ERROR; + } + +@@ -620,13 +620,13 @@ UsbHubInit ( + Status = UsbHubReadDesc (HubDev, HubDesc); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to read HUB descriptor %r\n", Status)); ++ DEBUG (( DEBUG_ERROR, "UsbHubInit: failed to read HUB descriptor %r\n", Status)); + return Status; + } + + HubIf->NumOfPort = HubDesc->NumPorts; + +- DEBUG (( EFI_D_INFO, "UsbHubInit: hub %d has %d ports\n", HubDev->Address,HubIf->NumOfPort)); ++ DEBUG (( DEBUG_INFO, "UsbHubInit: hub %d has %d ports\n", HubDev->Address,HubIf->NumOfPort)); + + // + // OK, set IsHub to TRUE. Now usb bus can handle this device +@@ -640,7 +640,7 @@ UsbHubInit ( + + if (HubIf->Device->Speed == EFI_USB_SPEED_SUPER) { + Depth = (UINT16)(HubIf->Device->Tier - 1); +- DEBUG ((EFI_D_INFO, "UsbHubInit: Set Hub Depth as 0x%x\n", Depth)); ++ DEBUG ((DEBUG_INFO, "UsbHubInit: Set Hub Depth as 0x%x\n", Depth)); + UsbHubCtrlSetHubDepth (HubIf->Device, Depth); + + for (Index = 0; Index < HubDesc->NumPorts; Index++) { +@@ -676,7 +676,7 @@ UsbHubInit ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to create signal for hub %d - %r\n", ++ DEBUG (( DEBUG_ERROR, "UsbHubInit: failed to create signal for hub %d - %r\n", + HubDev->Address, Status)); + + return Status; +@@ -701,7 +701,7 @@ UsbHubInit ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbHubInit: failed to queue interrupt transfer for hub %d - %r\n", ++ DEBUG (( DEBUG_ERROR, "UsbHubInit: failed to queue interrupt transfer for hub %d - %r\n", + HubDev->Address, Status)); + + gBS->CloseEvent (HubIf->HubNotify); +@@ -710,7 +710,7 @@ UsbHubInit ( + return Status; + } + +- DEBUG (( EFI_D_INFO, "UsbHubInit: hub %d initialized\n", HubDev->Address)); ++ DEBUG (( DEBUG_INFO, "UsbHubInit: hub %d initialized\n", HubDev->Address)); + return Status; + } + +@@ -935,7 +935,7 @@ UsbHubRelease ( + HubIf->HubEp = NULL; + HubIf->HubNotify = NULL; + +- DEBUG (( EFI_D_INFO, "UsbHubRelease: hub device %d released\n", HubIf->Device->Address)); ++ DEBUG (( DEBUG_INFO, "UsbHubRelease: hub device %d released\n", HubIf->Device->Address)); + return EFI_SUCCESS; + } + +@@ -966,7 +966,7 @@ UsbRootHubInit ( + return Status; + } + +- DEBUG (( EFI_D_INFO, "UsbRootHubInit: root hub %p - max speed %d, %d ports\n", ++ DEBUG (( DEBUG_INFO, "UsbRootHubInit: root hub %p - max speed %d, %d ports\n", + HubIf, MaxSpeed, NumOfPort)); + + HubIf->IsHub = TRUE; +@@ -1168,7 +1168,7 @@ UsbRootHubResetPort ( + Status = UsbHcSetRootHubPortFeature (Bus, Port, EfiUsbPortReset); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to start reset on port %d\n", Port)); ++ DEBUG (( DEBUG_ERROR, "UsbRootHubResetPort: failed to start reset on port %d\n", Port)); + return Status; + } + +@@ -1181,7 +1181,7 @@ UsbRootHubResetPort ( + Status = UsbHcClearRootHubPortFeature (Bus, Port, EfiUsbPortReset); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to clear reset on port %d\n", Port)); ++ DEBUG (( DEBUG_ERROR, "UsbRootHubResetPort: failed to clear reset on port %d\n", Port)); + return Status; + } + +@@ -1208,7 +1208,7 @@ UsbRootHubResetPort ( + } + + if (Index == USB_WAIT_PORT_STS_CHANGE_LOOP) { +- DEBUG ((EFI_D_ERROR, "UsbRootHubResetPort: reset not finished in time on port %d\n", Port)); ++ DEBUG ((DEBUG_ERROR, "UsbRootHubResetPort: reset not finished in time on port %d\n", Port)); + return EFI_TIMEOUT; + } + +@@ -1220,7 +1220,7 @@ UsbRootHubResetPort ( + // automatically enable the port, we need to enable it manually. + // + if (RootIf->MaxSpeed == EFI_USB_SPEED_HIGH) { +- DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: release low/full speed device (%d) to UHCI\n", Port)); ++ DEBUG (( DEBUG_ERROR, "UsbRootHubResetPort: release low/full speed device (%d) to UHCI\n", Port)); + + UsbRootHubSetPortFeature (RootIf, Port, EfiUsbPortOwner); + return EFI_NOT_FOUND; +@@ -1230,7 +1230,7 @@ UsbRootHubResetPort ( + Status = UsbRootHubSetPortFeature (RootIf, Port, EfiUsbPortEnable); + + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "UsbRootHubResetPort: failed to enable port %d for UHCI\n", Port)); ++ DEBUG (( DEBUG_ERROR, "UsbRootHubResetPort: failed to enable port %d for UHCI\n", Port)); + return Status; + } + +@@ -1256,7 +1256,7 @@ UsbRootHubRelease ( + IN USB_INTERFACE *HubIf + ) + { +- DEBUG (( EFI_D_INFO, "UsbRootHubRelease: root hub released for hub %p\n", HubIf)); ++ DEBUG (( DEBUG_INFO, "UsbRootHubRelease: root hub released for hub %p\n", HubIf)); + + gBS->SetTimer (HubIf->HubNotify, TimerCancel, USB_ROOTHUB_POLL_INTERVAL); + gBS->CloseEvent (HubIf->HubNotify); +diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbUtility.c b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbUtility.c +index 7529e03e85..4441466d80 100644 +--- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbUtility.c ++++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbUtility.c +@@ -1212,10 +1212,10 @@ UsbBusRecursivelyConnectWantedUsbIo ( + // + // Recursively connect the wanted Usb Io handle + // +- DEBUG ((EFI_D_INFO, "UsbBusRecursivelyConnectWantedUsbIo: TPL before connect is %d\n", (UINT32)UsbGetCurrentTpl ())); ++ DEBUG ((DEBUG_INFO, "UsbBusRecursivelyConnectWantedUsbIo: TPL before connect is %d\n", (UINT32)UsbGetCurrentTpl ())); + Status = gBS->ConnectController (UsbIf->Handle, NULL, NULL, TRUE); + UsbIf->IsManaged = (BOOLEAN)!EFI_ERROR (Status); +- DEBUG ((EFI_D_INFO, "UsbBusRecursivelyConnectWantedUsbIo: TPL after connect is %d\n", (UINT32)UsbGetCurrentTpl())); ++ DEBUG ((DEBUG_INFO, "UsbBusRecursivelyConnectWantedUsbIo: TPL after connect is %d\n", (UINT32)UsbGetCurrentTpl())); + } + } + } +@@ -1224,4 +1224,3 @@ UsbBusRecursivelyConnectWantedUsbIo ( + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Bus/Usb/UsbBusPei/HubPeim.c b/MdeModulePkg/Bus/Usb/UsbBusPei/HubPeim.c +index c44c403890..ce6db0b048 100644 +--- a/MdeModulePkg/Bus/Usb/UsbBusPei/HubPeim.c ++++ b/MdeModulePkg/Bus/Usb/UsbBusPei/HubPeim.c +@@ -409,7 +409,7 @@ PeiDoHubConfig ( + PeiUsbDevice->DownStreamPortNo = HubDescriptor->NbrPorts; + + if (PeiUsbDevice->DeviceSpeed == EFI_USB_SPEED_SUPER) { +- DEBUG ((EFI_D_INFO, "PeiDoHubConfig: Set Hub Depth as 0x%x\n", PeiUsbDevice->Tier)); ++ DEBUG ((DEBUG_INFO, "PeiDoHubConfig: Set Hub Depth as 0x%x\n", PeiUsbDevice->Tier)); + PeiUsbHubCtrlSetHubDepth ( + PeiServices, + PeiUsbDevice, +@@ -427,12 +427,12 @@ PeiDoHubConfig ( + EfiUsbPortPower + ); + if (EFI_ERROR (Status)) { +- DEBUG (( EFI_D_ERROR, "PeiDoHubConfig: PeiHubSetPortFeature EfiUsbPortPower failed %x\n", Index)); ++ DEBUG (( DEBUG_ERROR, "PeiDoHubConfig: PeiHubSetPortFeature EfiUsbPortPower failed %x\n", Index)); + continue; + } + } + +- DEBUG (( EFI_D_INFO, "PeiDoHubConfig: HubDescriptor.PwrOn2PwrGood: 0x%x\n", HubDescriptor->PwrOn2PwrGood)); ++ DEBUG (( DEBUG_INFO, "PeiDoHubConfig: HubDescriptor.PwrOn2PwrGood: 0x%x\n", HubDescriptor->PwrOn2PwrGood)); + if (HubDescriptor->PwrOn2PwrGood > 0) { + MicroSecondDelay (HubDescriptor->PwrOn2PwrGood * USB_SET_PORT_POWER_STALL); + } +@@ -536,7 +536,7 @@ PeiResetHubPort ( + } + + if (Index == USB_WAIT_PORT_STS_CHANGE_LOOP) { +- DEBUG ((EFI_D_ERROR, "PeiResetHubPort: reset not finished in time on port %d\n", PortNum)); ++ DEBUG ((DEBUG_ERROR, "PeiResetHubPort: reset not finished in time on port %d\n", PortNum)); + return; + } + +diff --git a/MdeModulePkg/Bus/Usb/UsbBusPei/UsbIoPeim.c b/MdeModulePkg/Bus/Usb/UsbBusPei/UsbIoPeim.c +index fc04f834a5..01b4b8b11e 100644 +--- a/MdeModulePkg/Bus/Usb/UsbBusPei/UsbIoPeim.c ++++ b/MdeModulePkg/Bus/Usb/UsbBusPei/UsbIoPeim.c +@@ -119,7 +119,7 @@ PeiUsbControlTransfer ( + } + } + +- DEBUG ((EFI_D_INFO, "PeiUsbControlTransfer: %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "PeiUsbControlTransfer: %r\n", Status)); + return Status; + } + +@@ -232,7 +232,7 @@ PeiUsbBulkTransfer ( + PeiUsbDev->DataToggle = (UINT16) (PeiUsbDev->DataToggle ^ (1 << EndpointIndex)); + } + +- DEBUG ((EFI_D_INFO, "PeiUsbBulkTransfer: %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "PeiUsbBulkTransfer: %r\n", Status)); + return Status; + } + +diff --git a/MdeModulePkg/Bus/Usb/UsbBusPei/UsbPeim.c b/MdeModulePkg/Bus/Usb/UsbBusPei/UsbPeim.c +index 45e48f472e..12dc975e88 100644 +--- a/MdeModulePkg/Bus/Usb/UsbBusPei/UsbPeim.c ++++ b/MdeModulePkg/Bus/Usb/UsbBusPei/UsbPeim.c +@@ -221,7 +221,7 @@ PeiHubEnumeration ( + + UsbIoPpi = &PeiUsbDevice->UsbIoPpi; + +- DEBUG ((EFI_D_INFO, "PeiHubEnumeration: DownStreamPortNo: %x\n", PeiUsbDevice->DownStreamPortNo)); ++ DEBUG ((DEBUG_INFO, "PeiHubEnumeration: DownStreamPortNo: %x\n", PeiUsbDevice->DownStreamPortNo)); + + for (Index = 0; Index < PeiUsbDevice->DownStreamPortNo; Index++) { + +@@ -236,7 +236,7 @@ PeiHubEnumeration ( + continue; + } + +- DEBUG ((EFI_D_INFO, "USB Status --- Port: %x ConnectChange[%04x] Status[%04x]\n", Index, PortStatus.PortChangeStatus, PortStatus.PortStatus)); ++ DEBUG ((DEBUG_INFO, "USB Status --- Port: %x ConnectChange[%04x] Status[%04x]\n", Index, PortStatus.PortChangeStatus, PortStatus.PortStatus)); + // + // Only handle connection/enable/overcurrent/reset change. + // +@@ -305,7 +305,7 @@ PeiHubEnumeration ( + } + + NewPeiUsbDevice->DeviceSpeed = (UINT8) PeiUsbGetDeviceSpeed (PortStatus.PortStatus); +- DEBUG ((EFI_D_INFO, "Device Speed =%d\n", PeiUsbDevice->DeviceSpeed)); ++ DEBUG ((DEBUG_INFO, "Device Speed =%d\n", PeiUsbDevice->DeviceSpeed)); + + if (USB_BIT_IS_SET (PortStatus.PortStatus, USB_PORT_STAT_SUPER_SPEED)){ + NewPeiUsbDevice->MaxPacketSize0 = 512; +@@ -339,7 +339,7 @@ PeiHubEnumeration ( + if (EFI_ERROR (Status)) { + continue; + } +- DEBUG ((EFI_D_INFO, "PeiHubEnumeration: PeiConfigureUsbDevice Success\n")); ++ DEBUG ((DEBUG_INFO, "PeiHubEnumeration: PeiConfigureUsbDevice Success\n")); + + Status = PeiServicesInstallPpi (&NewPeiUsbDevice->UsbIoPpiList); + +@@ -445,7 +445,7 @@ PeiUsbEnumeration ( + return EFI_INVALID_PARAMETER; + } + +- DEBUG ((EFI_D_INFO, "PeiUsbEnumeration: NumOfRootPort: %x\n", NumOfRootPort)); ++ DEBUG ((DEBUG_INFO, "PeiUsbEnumeration: NumOfRootPort: %x\n", NumOfRootPort)); + + for (Index = 0; Index < NumOfRootPort; Index++) { + // +@@ -466,7 +466,7 @@ PeiUsbEnumeration ( + &PortStatus + ); + } +- DEBUG ((EFI_D_INFO, "USB Status --- Port: %x ConnectChange[%04x] Status[%04x]\n", Index, PortStatus.PortChangeStatus, PortStatus.PortStatus)); ++ DEBUG ((DEBUG_INFO, "USB Status --- Port: %x ConnectChange[%04x] Status[%04x]\n", Index, PortStatus.PortChangeStatus, PortStatus.PortStatus)); + // + // Only handle connection/enable/overcurrent/reset change. + // +@@ -555,7 +555,7 @@ PeiUsbEnumeration ( + } + + PeiUsbDevice->DeviceSpeed = (UINT8) PeiUsbGetDeviceSpeed (PortStatus.PortStatus); +- DEBUG ((EFI_D_INFO, "Device Speed =%d\n", PeiUsbDevice->DeviceSpeed)); ++ DEBUG ((DEBUG_INFO, "Device Speed =%d\n", PeiUsbDevice->DeviceSpeed)); + + if (USB_BIT_IS_SET (PortStatus.PortStatus, USB_PORT_STAT_SUPER_SPEED)){ + PeiUsbDevice->MaxPacketSize0 = 512; +@@ -580,7 +580,7 @@ PeiUsbEnumeration ( + if (EFI_ERROR (Status)) { + continue; + } +- DEBUG ((EFI_D_INFO, "PeiUsbEnumeration: PeiConfigureUsbDevice Success\n")); ++ DEBUG ((DEBUG_INFO, "PeiUsbEnumeration: PeiConfigureUsbDevice Success\n")); + + Status = PeiServicesInstallPpi (&PeiUsbDevice->UsbIoPpiList); + +@@ -685,13 +685,13 @@ PeiConfigureUsbDevice ( + ); + + if (!EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "PeiUsbGet Device Descriptor the %d time Success\n", Retry)); ++ DEBUG ((DEBUG_INFO, "PeiUsbGet Device Descriptor the %d time Success\n", Retry)); + break; + } + } + + if (Retry == 3) { +- DEBUG ((EFI_D_ERROR, "PeiUsbGet Device Descriptor fail: %x %r\n", Retry, Status)); ++ DEBUG ((DEBUG_ERROR, "PeiUsbGet Device Descriptor fail: %x %r\n", Retry, Status)); + return Status; + } + +@@ -710,7 +710,7 @@ PeiConfigureUsbDevice ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "PeiUsbSetDeviceAddress Failed: %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "PeiUsbSetDeviceAddress Failed: %r\n", Status)); + return Status; + } + MicroSecondDelay (USB_SET_DEVICE_ADDRESS_STALL); +@@ -730,7 +730,7 @@ PeiConfigureUsbDevice ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "PeiUsbGetDescriptor First Failed\n")); ++ DEBUG ((DEBUG_ERROR, "PeiUsbGetDescriptor First Failed\n")); + return Status; + } + +@@ -801,7 +801,7 @@ PeiUsbGetAllConfiguration ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "PeiUsbGet Config Descriptor First Failed\n")); ++ DEBUG ((DEBUG_ERROR, "PeiUsbGet Config Descriptor First Failed\n")); + return Status; + } + MicroSecondDelay (USB_GET_CONFIG_DESCRIPTOR_STALL); +@@ -836,7 +836,7 @@ PeiUsbGetAllConfiguration ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "PeiUsbGet Config Descriptor all Failed\n")); ++ DEBUG ((DEBUG_ERROR, "PeiUsbGet Config Descriptor all Failed\n")); + return Status; + } + // +@@ -1046,7 +1046,7 @@ ResetRootPort ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SetRootHubPortFeature EfiUsbPortReset Failed\n")); ++ DEBUG ((DEBUG_ERROR, "SetRootHubPortFeature EfiUsbPortReset Failed\n")); + return; + } + +@@ -1067,7 +1067,7 @@ ResetRootPort ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "ClearRootHubPortFeature EfiUsbPortReset Failed\n")); ++ DEBUG ((DEBUG_ERROR, "ClearRootHubPortFeature EfiUsbPortReset Failed\n")); + return; + } + +@@ -1098,7 +1098,7 @@ ResetRootPort ( + } + + if (Index == USB_WAIT_PORT_STS_CHANGE_LOOP) { +- DEBUG ((EFI_D_ERROR, "ResetRootPort: reset not finished in time on port %d\n", PortNum)); ++ DEBUG ((DEBUG_ERROR, "ResetRootPort: reset not finished in time on port %d\n", PortNum)); + return; + } + +@@ -1148,7 +1148,7 @@ ResetRootPort ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SetRootHubPortFeature EfiUsbPortReset Failed\n")); ++ DEBUG ((DEBUG_ERROR, "SetRootHubPortFeature EfiUsbPortReset Failed\n")); + return; + } + +@@ -1169,7 +1169,7 @@ ResetRootPort ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "ClearRootHubPortFeature EfiUsbPortReset Failed\n")); ++ DEBUG ((DEBUG_ERROR, "ClearRootHubPortFeature EfiUsbPortReset Failed\n")); + return; + } + +@@ -1200,7 +1200,7 @@ ResetRootPort ( + } + + if (Index == USB_WAIT_PORT_STS_CHANGE_LOOP) { +- DEBUG ((EFI_D_ERROR, "ResetRootPort: reset not finished in time on port %d\n", PortNum)); ++ DEBUG ((DEBUG_ERROR, "ResetRootPort: reset not finished in time on port %d\n", PortNum)); + return; + } + +@@ -1239,5 +1239,3 @@ ResetRootPort ( + } + return; + } +- +- +diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c +index aab4061e18..7b29bc81fe 100644 +--- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c ++++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBoot.c +@@ -58,7 +58,7 @@ UsbBootRequestSense ( + &CmdResult + ); + if (EFI_ERROR (Status) || CmdResult != USB_MASS_CMD_SUCCESS) { +- DEBUG ((EFI_D_ERROR, "UsbBootRequestSense: (%r) CmdResult=0x%x\n", Status, CmdResult)); ++ DEBUG ((DEBUG_ERROR, "UsbBootRequestSense: (%r) CmdResult=0x%x\n", Status, CmdResult)); + if (!EFI_ERROR (Status)) { + Status = EFI_DEVICE_ERROR; + } +@@ -131,7 +131,7 @@ UsbBootRequestSense ( + break; + } + +- DEBUG ((EFI_D_INFO, "UsbBootRequestSense: (%r) with error code (%x) sense key %x/%x/%x\n", ++ DEBUG ((DEBUG_INFO, "UsbBootRequestSense: (%r) with error code (%x) sense key %x/%x/%x\n", + Status, + SenseData.ErrorCode, + USB_BOOT_SENSE_KEY (SenseData.SenseKey), +@@ -191,7 +191,7 @@ UsbBootExecCmd ( + ); + + if (Status == EFI_TIMEOUT) { +- DEBUG ((EFI_D_ERROR, "UsbBootExecCmd: %r to Exec 0x%x Cmd\n", Status, *(UINT8 *)Cmd)); ++ DEBUG ((DEBUG_ERROR, "UsbBootExecCmd: %r to Exec 0x%x Cmd\n", Status, *(UINT8 *)Cmd)); + return EFI_TIMEOUT; + } + +@@ -206,7 +206,7 @@ UsbBootExecCmd ( + // + // If command execution failed, then retrieve error info via sense request. + // +- DEBUG ((EFI_D_ERROR, "UsbBootExecCmd: %r to Exec 0x%x Cmd (Result = %x)\n", Status, *(UINT8 *)Cmd, CmdResult)); ++ DEBUG ((DEBUG_ERROR, "UsbBootExecCmd: %r to Exec 0x%x Cmd (Result = %x)\n", Status, *(UINT8 *)Cmd, CmdResult)); + return UsbBootRequestSense (UsbMass); + } + +@@ -631,7 +631,7 @@ UsbBootGetParams ( + + Status = UsbBootInquiry (UsbMass); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbBootGetParams: UsbBootInquiry (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbBootGetParams: UsbBootInquiry (%r)\n", Status)); + return Status; + } + +@@ -643,7 +643,7 @@ UsbBootGetParams ( + (UsbMass->Pdt != USB_PDT_CDROM) && + (UsbMass->Pdt != USB_PDT_OPTICAL) && + (UsbMass->Pdt != USB_PDT_SIMPLE_DIRECT)) { +- DEBUG ((EFI_D_ERROR, "UsbBootGetParams: Found an unsupported peripheral type[%d]\n", UsbMass->Pdt)); ++ DEBUG ((DEBUG_ERROR, "UsbBootGetParams: Found an unsupported peripheral type[%d]\n", UsbMass->Pdt)); + return EFI_UNSUPPORTED; + } + +@@ -695,7 +695,7 @@ UsbBootDetectMedia ( + + Status = UsbBootIsUnitReady (UsbMass); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbBootDetectMedia: UsbBootIsUnitReady (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbBootDetectMedia: UsbBootIsUnitReady (%r)\n", Status)); + } + + // +@@ -719,7 +719,7 @@ UsbBootDetectMedia ( + + Status = UsbBootReadCapacity (UsbMass); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbBootDetectMedia: UsbBootReadCapacity (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbBootDetectMedia: UsbBootReadCapacity (%r)\n", Status)); + } + } + +diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c +index 1e878a1bdd..ce252e60fc 100644 +--- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c ++++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassBot.c +@@ -266,13 +266,13 @@ UsbBotDataTransfer ( + ); + if (EFI_ERROR (Status)) { + if (USB_IS_ERROR (Result, EFI_USB_ERR_STALL)) { +- DEBUG ((EFI_D_INFO, "UsbBotDataTransfer: (%r)\n", Status)); +- DEBUG ((EFI_D_INFO, "UsbBotDataTransfer: DataIn Stall\n")); ++ DEBUG ((DEBUG_INFO, "UsbBotDataTransfer: (%r)\n", Status)); ++ DEBUG ((DEBUG_INFO, "UsbBotDataTransfer: DataIn Stall\n")); + UsbClearEndpointStall (UsbBot->UsbIo, Endpoint->EndpointAddress); + } else if (USB_IS_ERROR (Result, EFI_USB_ERR_NAK)) { + Status = EFI_NOT_READY; + } else { +- DEBUG ((EFI_D_ERROR, "UsbBotDataTransfer: (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbBotDataTransfer: (%r)\n", Status)); + } + if(Status == EFI_TIMEOUT){ + UsbBotResetDevice(UsbBot, FALSE); +@@ -416,7 +416,7 @@ UsbBotExecCommand ( + // + Status = UsbBotSendCommand (UsbBot, Cmd, CmdLen, DataDir, DataLen, Lun); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbBotExecCommand: UsbBotSendCommand (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbBotExecCommand: UsbBotSendCommand (%r)\n", Status)); + return Status; + } + +@@ -433,7 +433,7 @@ UsbBotExecCommand ( + // + Status = UsbBotGetStatus (UsbBot, DataLen, &Result); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbBotExecCommand: UsbBotGetStatus (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbBotExecCommand: UsbBotGetStatus (%r)\n", Status)); + return Status; + } + +@@ -604,4 +604,3 @@ UsbBotCleanUp ( + FreePool (Context); + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.c b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.c +index 477f0536d6..423104f504 100644 +--- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.c ++++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassCbi.c +@@ -451,7 +451,7 @@ UsbCbiExecCommand ( + Status = UsbCbiSendCommand (UsbCbi, Cmd, CmdLen, Timeout); + if (EFI_ERROR (Status)) { + gBS->Stall(10 * USB_MASS_1_MILLISECOND); +- DEBUG ((EFI_D_ERROR, "UsbCbiExecCommand: UsbCbiSendCommand (%r)\n",Status)); ++ DEBUG ((DEBUG_ERROR, "UsbCbiExecCommand: UsbCbiSendCommand (%r)\n",Status)); + return Status; + } + +@@ -463,7 +463,7 @@ UsbCbiExecCommand ( + + Status = UsbCbiDataTransfer (UsbCbi, DataDir, Data, &TransLen, Timeout); + if (UsbCbi->InterruptEndpoint == NULL) { +- DEBUG ((EFI_D_ERROR, "UsbCbiExecCommand: UsbCbiDataTransfer (%r)\n",Status)); ++ DEBUG ((DEBUG_ERROR, "UsbCbiExecCommand: UsbCbiDataTransfer (%r)\n",Status)); + return Status; + } + +@@ -472,7 +472,7 @@ UsbCbiExecCommand ( + // + Status = UsbCbiGetStatus (UsbCbi, Timeout, &Result); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbCbiExecCommand: UsbCbiGetStatus (%r)\n",Status)); ++ DEBUG ((DEBUG_ERROR, "UsbCbiExecCommand: UsbCbiGetStatus (%r)\n",Status)); + return Status; + } + +diff --git a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassImpl.c b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassImpl.c +index bbd19e0447..de9c5f0632 100644 +--- a/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassImpl.c ++++ b/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassImpl.c +@@ -172,7 +172,7 @@ UsbMassReadBlocks ( + } + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbMassReadBlocks: UsbBootReadBlocks (%r) -> Reset\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbMassReadBlocks: UsbBootReadBlocks (%r) -> Reset\n", Status)); + UsbMassReset (This, TRUE); + } + +@@ -292,7 +292,7 @@ UsbMassWriteBlocks ( + } + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbMassWriteBlocks: UsbBootWriteBlocks (%r) -> Reset\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbMassWriteBlocks: UsbBootWriteBlocks (%r) -> Reset\n", Status)); + UsbMassReset (This, TRUE); + } + +@@ -491,7 +491,7 @@ UsbMassInitMultiLun ( + + for (Index = 0; Index <= MaxLun; Index++) { + +- DEBUG ((EFI_D_INFO, "UsbMassInitMultiLun: Start to initialize No.%d logic unit\n", Index)); ++ DEBUG ((DEBUG_INFO, "UsbMassInitMultiLun: Start to initialize No.%d logic unit\n", Index)); + + UsbIo = NULL; + UsbMass = AllocateZeroPool (sizeof (USB_MASS_DEVICE)); +@@ -514,7 +514,7 @@ UsbMassInitMultiLun ( + // + Status = UsbMassInitMedia (UsbMass); + if ((EFI_ERROR (Status)) && (Status != EFI_NO_MEDIA)) { +- DEBUG ((EFI_D_ERROR, "UsbMassInitMultiLun: UsbMassInitMedia (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbMassInitMultiLun: UsbMassInitMedia (%r)\n", Status)); + FreePool (UsbMass); + continue; + } +@@ -531,7 +531,7 @@ UsbMassInitMultiLun ( + UsbMass->DevicePath = AppendDevicePathNode (DevicePath, &LunNode.Header); + + if (UsbMass->DevicePath == NULL) { +- DEBUG ((EFI_D_ERROR, "UsbMassInitMultiLun: failed to create device logic unit device path\n")); ++ DEBUG ((DEBUG_ERROR, "UsbMassInitMultiLun: failed to create device logic unit device path\n")); + Status = EFI_OUT_OF_RESOURCES; + FreePool (UsbMass); + continue; +@@ -554,7 +554,7 @@ UsbMassInitMultiLun ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbMassInitMultiLun: InstallMultipleProtocolInterfaces (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbMassInitMultiLun: InstallMultipleProtocolInterfaces (%r)\n", Status)); + FreePool (UsbMass->DevicePath); + FreePool (UsbMass); + continue; +@@ -573,7 +573,7 @@ UsbMassInitMultiLun ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbMassInitMultiLun: OpenUsbIoProtocol By Child (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbMassInitMultiLun: OpenUsbIoProtocol By Child (%r)\n", Status)); + gBS->UninstallMultipleProtocolInterfaces ( + UsbMass->Controller, + &gEfiDevicePathProtocolGuid, +@@ -589,7 +589,7 @@ UsbMassInitMultiLun ( + continue; + } + ReturnStatus = EFI_SUCCESS; +- DEBUG ((EFI_D_INFO, "UsbMassInitMultiLun: Success to initialize No.%d logic unit\n", Index)); ++ DEBUG ((DEBUG_INFO, "UsbMassInitMultiLun: Success to initialize No.%d logic unit\n", Index)); + } + + return ReturnStatus; +@@ -633,7 +633,7 @@ UsbMassInitNonLun ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "UsbMassInitNonLun: OpenUsbIoProtocol By Driver (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbMassInitNonLun: OpenUsbIoProtocol By Driver (%r)\n", Status)); + goto ON_ERROR; + } + +@@ -654,7 +654,7 @@ UsbMassInitNonLun ( + // + Status = UsbMassInitMedia (UsbMass); + if ((EFI_ERROR (Status)) && (Status != EFI_NO_MEDIA)) { +- DEBUG ((EFI_D_ERROR, "UsbMassInitNonLun: UsbMassInitMedia (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "UsbMassInitNonLun: UsbMassInitMedia (%r)\n", Status)); + goto ON_ERROR; + } + +@@ -810,7 +810,7 @@ USBMassDriverBindingStart ( + Status = UsbMassInitTransport (This, Controller, &Transport, &Context, &MaxLun); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "USBMassDriverBindingStart: UsbMassInitTransport (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "USBMassDriverBindingStart: UsbMassInitTransport (%r)\n", Status)); + goto Exit; + } + if (MaxLun == 0) { +@@ -819,7 +819,7 @@ USBMassDriverBindingStart ( + // + Status = UsbMassInitNonLun (This, Controller, Transport, Context); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "USBMassDriverBindingStart: UsbMassInitNonLun (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "USBMassDriverBindingStart: UsbMassInitNonLun (%r)\n", Status)); + } + } else { + // +@@ -835,7 +835,7 @@ USBMassDriverBindingStart ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "USBMassDriverBindingStart: OpenDevicePathProtocol By Driver (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "USBMassDriverBindingStart: OpenDevicePathProtocol By Driver (%r)\n", Status)); + goto Exit; + } + +@@ -849,7 +849,7 @@ USBMassDriverBindingStart ( + ); + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "USBMassDriverBindingStart: OpenUsbIoProtocol By Driver (%r)\n", Status)); ++ DEBUG ((DEBUG_ERROR, "USBMassDriverBindingStart: OpenUsbIoProtocol By Driver (%r)\n", Status)); + gBS->CloseProtocol ( + Controller, + &gEfiDevicePathProtocolGuid, +@@ -877,7 +877,7 @@ USBMassDriverBindingStart ( + This->DriverBindingHandle, + Controller + ); +- DEBUG ((EFI_D_ERROR, "USBMassDriverBindingStart: UsbMassInitMultiLun (%r) with Maxlun=%d\n", Status, MaxLun)); ++ DEBUG ((DEBUG_ERROR, "USBMassDriverBindingStart: UsbMassInitMultiLun (%r) with Maxlun=%d\n", Status, MaxLun)); + } + } + Exit: +@@ -953,7 +953,7 @@ USBMassDriverBindingStop ( + This->DriverBindingHandle, + Controller + ); +- DEBUG ((EFI_D_INFO, "Success to stop multi-lun root handle\n")); ++ DEBUG ((DEBUG_INFO, "Success to stop multi-lun root handle\n")); + return EFI_SUCCESS; + } + +@@ -989,7 +989,7 @@ USBMassDriverBindingStop ( + UsbMass->Transport->CleanUp (UsbMass->Context); + FreePool (UsbMass); + +- DEBUG ((EFI_D_INFO, "Success to stop non-multi-lun root handle\n")); ++ DEBUG ((DEBUG_INFO, "Success to stop non-multi-lun root handle\n")); + return EFI_SUCCESS; + } + +@@ -1012,7 +1012,7 @@ USBMassDriverBindingStop ( + ); + if (EFI_ERROR (Status)) { + AllChildrenStopped = FALSE; +- DEBUG ((EFI_D_ERROR, "Fail to stop No.%d multi-lun child handle when opening blockio\n", (UINT32)Index)); ++ DEBUG ((DEBUG_ERROR, "Fail to stop No.%d multi-lun child handle when opening blockio\n", (UINT32)Index)); + continue; + } + +@@ -1041,7 +1041,7 @@ USBMassDriverBindingStop ( + // Fail to uninstall Block I/O Protocol and Device Path Protocol, so re-open USB I/O Protocol by child. + // + AllChildrenStopped = FALSE; +- DEBUG ((EFI_D_ERROR, "Fail to stop No.%d multi-lun child handle when uninstalling blockio and devicepath\n", (UINT32)Index)); ++ DEBUG ((DEBUG_ERROR, "Fail to stop No.%d multi-lun child handle when uninstalling blockio and devicepath\n", (UINT32)Index)); + + gBS->OpenProtocol ( + Controller, +@@ -1066,7 +1066,7 @@ USBMassDriverBindingStop ( + return EFI_DEVICE_ERROR; + } + +- DEBUG ((EFI_D_INFO, "Success to stop all %d multi-lun children handles\n", (UINT32) NumberOfChildren)); ++ DEBUG ((DEBUG_INFO, "Success to stop all %d multi-lun children handles\n", (UINT32) NumberOfChildren)); + return EFI_SUCCESS; + } + +diff --git a/MdeModulePkg/Core/Dxe/Dispatcher/Dispatcher.c b/MdeModulePkg/Core/Dxe/Dispatcher/Dispatcher.c +index fed60c4882..3605605e91 100644 +--- a/MdeModulePkg/Core/Dxe/Dispatcher/Dispatcher.c ++++ b/MdeModulePkg/Core/Dxe/Dispatcher/Dispatcher.c +@@ -769,7 +769,7 @@ FvIsBeingProcessed ( + for (Link = mFvHandleList.ForwardLink; Link != &mFvHandleList; Link = Link->ForwardLink) { + KnownHandle = CR(Link, KNOWN_HANDLE, Link, KNOWN_HANDLE_SIGNATURE); + if (CompareGuid (&FvNameGuid, &KnownHandle->FvNameGuid)) { +- DEBUG ((EFI_D_ERROR, "FvImage on FvHandle %p and %p has the same FvNameGuid %g.\n", FvHandle, KnownHandle->Handle, &FvNameGuid)); ++ DEBUG ((DEBUG_ERROR, "FvImage on FvHandle %p and %p has the same FvNameGuid %g.\n", FvHandle, KnownHandle->Handle, &FvNameGuid)); + return NULL; + } + } +diff --git a/MdeModulePkg/Core/Dxe/Event/Tpl.c b/MdeModulePkg/Core/Dxe/Event/Tpl.c +index 5ff8eb55ba..8b5928df00 100644 +--- a/MdeModulePkg/Core/Dxe/Event/Tpl.c ++++ b/MdeModulePkg/Core/Dxe/Event/Tpl.c +@@ -60,7 +60,7 @@ CoreRaiseTpl ( + + OldTpl = gEfiCurrentTpl; + if (OldTpl > NewTpl) { +- DEBUG ((EFI_D_ERROR, "FATAL ERROR - RaiseTpl with OldTpl(0x%x) > NewTpl(0x%x)\n", OldTpl, NewTpl)); ++ DEBUG ((DEBUG_ERROR, "FATAL ERROR - RaiseTpl with OldTpl(0x%x) > NewTpl(0x%x)\n", OldTpl, NewTpl)); + ASSERT (FALSE); + } + ASSERT (VALID_TPL (NewTpl)); +@@ -101,7 +101,7 @@ CoreRestoreTpl ( + + OldTpl = gEfiCurrentTpl; + if (NewTpl > OldTpl) { +- DEBUG ((EFI_D_ERROR, "FATAL ERROR - RestoreTpl with NewTpl(0x%x) > OldTpl(0x%x)\n", NewTpl, OldTpl)); ++ DEBUG ((DEBUG_ERROR, "FATAL ERROR - RestoreTpl with NewTpl(0x%x) > OldTpl(0x%x)\n", NewTpl, OldTpl)); + ASSERT (FALSE); + } + ASSERT (VALID_TPL (NewTpl)); +diff --git a/MdeModulePkg/Core/Dxe/FwVol/FwVol.c b/MdeModulePkg/Core/Dxe/FwVol/FwVol.c +index cbf5c1c7b9..0059b0f2d9 100644 +--- a/MdeModulePkg/Core/Dxe/FwVol/FwVol.c ++++ b/MdeModulePkg/Core/Dxe/FwVol/FwVol.c +@@ -463,7 +463,7 @@ FvCheck ( + (FileState == EFI_FILE_HEADER_CONSTRUCTION)) { + if (IS_FFS_FILE2 (FfsHeader)) { + if (!FvDevice->IsFfs3Fv) { +- DEBUG ((EFI_D_ERROR, "Found a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FfsHeader->Name)); ++ DEBUG ((DEBUG_ERROR, "Found a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FfsHeader->Name)); + } + FfsHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsHeader + sizeof (EFI_FFS_FILE_HEADER2)); + } else { +@@ -508,7 +508,7 @@ FvCheck ( + if (IS_FFS_FILE2 (CacheFfsHeader)) { + ASSERT (FFS_FILE2_SIZE (CacheFfsHeader) > 0x00FFFFFF); + if (!FvDevice->IsFfs3Fv) { +- DEBUG ((EFI_D_ERROR, "Found a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &CacheFfsHeader->Name)); ++ DEBUG ((DEBUG_ERROR, "Found a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &CacheFfsHeader->Name)); + FfsHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsHeader + FFS_FILE2_SIZE (CacheFfsHeader)); + // + // Adjust pointer to the next 8-byte aligned boundary. +@@ -725,5 +725,3 @@ FwVolDriverInit ( + ); + return EFI_SUCCESS; + } +- +- +diff --git a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c +index 51b082b7e7..6518921516 100644 +--- a/MdeModulePkg/Core/Dxe/Gcd/Gcd.c ++++ b/MdeModulePkg/Core/Dxe/Gcd/Gcd.c +@@ -2384,8 +2384,8 @@ CoreInitializeMemoryServices ( + } + } + +- DEBUG ((EFI_D_INFO, "CoreInitializeMemoryServices:\n")); +- DEBUG ((EFI_D_INFO, " BaseAddress - 0x%lx Length - 0x%lx MinimalMemorySizeNeeded - 0x%lx\n", BaseAddress, Length, MinimalMemorySizeNeeded)); ++ DEBUG ((DEBUG_INFO, "CoreInitializeMemoryServices:\n")); ++ DEBUG ((DEBUG_INFO, " BaseAddress - 0x%lx Length - 0x%lx MinimalMemorySizeNeeded - 0x%lx\n", BaseAddress, Length, MinimalMemorySizeNeeded)); + + // + // If no memory regions are found that are big enough to initialize the DXE core, then ASSERT(). +diff --git a/MdeModulePkg/Core/Dxe/Image/Image.c b/MdeModulePkg/Core/Dxe/Image/Image.c +index 641a5715b1..44b7f105a2 100644 +--- a/MdeModulePkg/Core/Dxe/Image/Image.c ++++ b/MdeModulePkg/Core/Dxe/Image/Image.c +@@ -485,7 +485,7 @@ GetPeCoffImageFixLoadingAssignedAddress( + } + SectionHeaderOffset += sizeof (EFI_IMAGE_SECTION_HEADER); + } +- DEBUG ((EFI_D_INFO|EFI_D_LOAD, "LOADING MODULE FIXED INFO: Loading module at fixed address 0x%11p. Status = %r \n", (VOID *)(UINTN)(ImageContext->ImageAddress), Status)); ++ DEBUG ((DEBUG_INFO|DEBUG_LOAD, "LOADING MODULE FIXED INFO: Loading module at fixed address 0x%11p. Status = %r \n", (VOID *)(UINTN)(ImageContext->ImageAddress), Status)); + return Status; + } + +@@ -648,7 +648,7 @@ CoreLoadPeImage ( + // + // If the code memory is not ready, invoke CoreAllocatePage with AllocateAnyPages to load the driver. + // +- DEBUG ((EFI_D_INFO|EFI_D_LOAD, "LOADING MODULE FIXED ERROR: Loading module at fixed address failed since specified memory is not available.\n")); ++ DEBUG ((DEBUG_INFO|DEBUG_LOAD, "LOADING MODULE FIXED ERROR: Loading module at fixed address failed since specified memory is not available.\n")); + + Status = CoreAllocatePages ( + AllocateAnyPages, +@@ -1587,8 +1587,8 @@ CoreStartImage ( + // Do not ASSERT here, because image might be loaded via EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED + // But it can not be started. + // +- DEBUG ((EFI_D_ERROR, "Image type %s can't be started ", GetMachineTypeName(Image->Machine))); +- DEBUG ((EFI_D_ERROR, "on %s UEFI system.\n", GetMachineTypeName(mDxeCoreImageMachineType))); ++ DEBUG ((DEBUG_ERROR, "Image type %s can't be started ", GetMachineTypeName(Image->Machine))); ++ DEBUG ((DEBUG_ERROR, "on %s UEFI system.\n", GetMachineTypeName(mDxeCoreImageMachineType))); + return EFI_UNSUPPORTED; + } + +diff --git a/MdeModulePkg/Core/Dxe/Mem/MemoryProfileRecord.c b/MdeModulePkg/Core/Dxe/Mem/MemoryProfileRecord.c +index 2ca0417b07..62bbe3cdc8 100644 +--- a/MdeModulePkg/Core/Dxe/Mem/MemoryProfileRecord.c ++++ b/MdeModulePkg/Core/Dxe/Mem/MemoryProfileRecord.c +@@ -611,7 +611,7 @@ MemoryProfileInit ( + + RegisterDxeCore (HobStart, &mMemoryProfileContext); + +- DEBUG ((EFI_D_INFO, "MemoryProfileInit MemoryProfileContext - 0x%x\n", &mMemoryProfileContext)); ++ DEBUG ((DEBUG_INFO, "MemoryProfileInit MemoryProfileContext - 0x%x\n", &mMemoryProfileContext)); + } + + /** +diff --git a/MdeModulePkg/Core/Dxe/Misc/DebugImageInfo.c b/MdeModulePkg/Core/Dxe/Misc/DebugImageInfo.c +index a75d415828..c637e35076 100644 +--- a/MdeModulePkg/Core/Dxe/Misc/DebugImageInfo.c ++++ b/MdeModulePkg/Core/Dxe/Misc/DebugImageInfo.c +@@ -66,7 +66,7 @@ CoreInitializeDebugImageInfoTable ( + ); + if (EFI_ERROR (Status)) { + if (PcdGet64 (PcdMaxEfiSystemTablePointerAddress) != 0) { +- DEBUG ((EFI_D_INFO, "Allocate memory for EFI_SYSTEM_TABLE_POINTER below PcdMaxEfiSystemTablePointerAddress failed. \ ++ DEBUG ((DEBUG_INFO, "Allocate memory for EFI_SYSTEM_TABLE_POINTER below PcdMaxEfiSystemTablePointerAddress failed. \ + Retry to allocate memroy as close to the top of memory as feasible.\n")); + } + // +@@ -278,5 +278,3 @@ CoreRemoveDebugImageInfoEntry ( + } + mDebugInfoTableHeader.UpdateStatus &= ~EFI_DEBUG_IMAGE_INFO_UPDATE_IN_PROGRESS; + } +- +- +diff --git a/MdeModulePkg/Core/Dxe/Misc/MemoryAttributesTable.c b/MdeModulePkg/Core/Dxe/Misc/MemoryAttributesTable.c +index 45356130bc..02a67cafa9 100644 +--- a/MdeModulePkg/Core/Dxe/Misc/MemoryAttributesTable.c ++++ b/MdeModulePkg/Core/Dxe/Misc/MemoryAttributesTable.c +@@ -120,7 +120,7 @@ InstallMemoryAttributesTable ( + + if (!mMemoryAttributesTableEnable) { + DEBUG ((DEBUG_VERBOSE, "Cannot install Memory Attributes Table ")); +- DEBUG ((EFI_D_VERBOSE, "because Runtime Driver Section Alignment is not %dK.\n", RUNTIME_PAGE_ALLOCATION_GRANULARITY >> 10)); ++ DEBUG ((DEBUG_VERBOSE, "because Runtime Driver Section Alignment is not %dK.\n", RUNTIME_PAGE_ALLOCATION_GRANULARITY >> 10)); + return ; + } + +@@ -182,10 +182,10 @@ InstallMemoryAttributesTable ( + MemoryAttributesTable->NumberOfEntries = RuntimeEntryCount; + MemoryAttributesTable->DescriptorSize = (UINT32)DescriptorSize; + MemoryAttributesTable->Reserved = 0; +- DEBUG ((EFI_D_VERBOSE, "MemoryAttributesTable:\n")); +- DEBUG ((EFI_D_VERBOSE, " Version - 0x%08x\n", MemoryAttributesTable->Version)); +- DEBUG ((EFI_D_VERBOSE, " NumberOfEntries - 0x%08x\n", MemoryAttributesTable->NumberOfEntries)); +- DEBUG ((EFI_D_VERBOSE, " DescriptorSize - 0x%08x\n", MemoryAttributesTable->DescriptorSize)); ++ DEBUG ((DEBUG_VERBOSE, "MemoryAttributesTable:\n")); ++ DEBUG ((DEBUG_VERBOSE, " Version - 0x%08x\n", MemoryAttributesTable->Version)); ++ DEBUG ((DEBUG_VERBOSE, " NumberOfEntries - 0x%08x\n", MemoryAttributesTable->NumberOfEntries)); ++ DEBUG ((DEBUG_VERBOSE, " DescriptorSize - 0x%08x\n", MemoryAttributesTable->DescriptorSize)); + MemoryAttributesEntry = (EFI_MEMORY_DESCRIPTOR *)(MemoryAttributesTable + 1); + MemoryMap = MemoryMapStart; + for (Index = 0; Index < MemoryMapSize/DescriptorSize; Index++) { +@@ -194,12 +194,12 @@ InstallMemoryAttributesTable ( + case EfiRuntimeServicesData: + CopyMem (MemoryAttributesEntry, MemoryMap, DescriptorSize); + MemoryAttributesEntry->Attribute &= (EFI_MEMORY_RO|EFI_MEMORY_XP|EFI_MEMORY_RUNTIME); +- DEBUG ((EFI_D_VERBOSE, "Entry (0x%x)\n", MemoryAttributesEntry)); +- DEBUG ((EFI_D_VERBOSE, " Type - 0x%x\n", MemoryAttributesEntry->Type)); +- DEBUG ((EFI_D_VERBOSE, " PhysicalStart - 0x%016lx\n", MemoryAttributesEntry->PhysicalStart)); +- DEBUG ((EFI_D_VERBOSE, " VirtualStart - 0x%016lx\n", MemoryAttributesEntry->VirtualStart)); +- DEBUG ((EFI_D_VERBOSE, " NumberOfPages - 0x%016lx\n", MemoryAttributesEntry->NumberOfPages)); +- DEBUG ((EFI_D_VERBOSE, " Attribute - 0x%016lx\n", MemoryAttributesEntry->Attribute)); ++ DEBUG ((DEBUG_VERBOSE, "Entry (0x%x)\n", MemoryAttributesEntry)); ++ DEBUG ((DEBUG_VERBOSE, " Type - 0x%x\n", MemoryAttributesEntry->Type)); ++ DEBUG ((DEBUG_VERBOSE, " PhysicalStart - 0x%016lx\n", MemoryAttributesEntry->PhysicalStart)); ++ DEBUG ((DEBUG_VERBOSE, " VirtualStart - 0x%016lx\n", MemoryAttributesEntry->VirtualStart)); ++ DEBUG ((DEBUG_VERBOSE, " NumberOfPages - 0x%016lx\n", MemoryAttributesEntry->NumberOfPages)); ++ DEBUG ((DEBUG_VERBOSE, " Attribute - 0x%016lx\n", MemoryAttributesEntry->Attribute)); + MemoryAttributesEntry = NEXT_MEMORY_DESCRIPTOR(MemoryAttributesEntry, DescriptorSize); + break; + } +diff --git a/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c b/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c +index 284b34818c..b65b01c9e5 100644 +--- a/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c ++++ b/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c +@@ -378,7 +378,7 @@ HandOffToDxeCore ( + (VOID **)&VectorHandoffInfoPpi + ); + if (Status == EFI_SUCCESS) { +- DEBUG ((EFI_D_INFO, "Vector Hand-off Info PPI is gotten, GUIDed HOB is created!\n")); ++ DEBUG ((DEBUG_INFO, "Vector Hand-off Info PPI is gotten, GUIDed HOB is created!\n")); + VectorInfo = VectorHandoffInfoPpi->Info; + Index = 1; + while (VectorInfo->Attribute != EFI_VECTOR_HANDOFF_LAST_ENTRY) { +@@ -462,4 +462,3 @@ HandOffToDxeCore ( + } + } + } +- +diff --git a/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c b/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c +index 156a477d84..813445b1ef 100644 +--- a/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c ++++ b/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c +@@ -56,7 +56,7 @@ HandOffToDxeCore ( + (VOID **)&VectorHandoffInfoPpi + ); + if (Status == EFI_SUCCESS) { +- DEBUG ((EFI_D_INFO, "Vector Hand-off Info PPI is gotten, GUIDed HOB is created!\n")); ++ DEBUG ((DEBUG_INFO, "Vector Hand-off Info PPI is gotten, GUIDed HOB is created!\n")); + VectorInfo = VectorHandoffInfoPpi->Info; + Index = 1; + while (VectorInfo->Attribute != EFI_VECTOR_HANDOFF_LAST_ENTRY) { +diff --git a/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c b/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c +index f6bb906f38..7d959b36ea 100644 +--- a/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c ++++ b/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c +@@ -302,10 +302,10 @@ PeiLoadFixAddressHook( + // + TotalReservedMemorySize += PeiMemorySize; + +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED INFO: PcdLoadFixAddressRuntimeCodePageNumber= 0x%x.\n", PcdGet32(PcdLoadFixAddressRuntimeCodePageNumber))); +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED INFO: PcdLoadFixAddressBootTimeCodePageNumber= 0x%x.\n", PcdGet32(PcdLoadFixAddressBootTimeCodePageNumber))); +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED INFO: PcdLoadFixAddressPeiCodePageNumber= 0x%x.\n", PcdGet32(PcdLoadFixAddressPeiCodePageNumber))); +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED INFO: Total Reserved Memory Size = 0x%lx.\n", TotalReservedMemorySize)); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED INFO: PcdLoadFixAddressRuntimeCodePageNumber= 0x%x.\n", PcdGet32(PcdLoadFixAddressRuntimeCodePageNumber))); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED INFO: PcdLoadFixAddressBootTimeCodePageNumber= 0x%x.\n", PcdGet32(PcdLoadFixAddressBootTimeCodePageNumber))); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED INFO: PcdLoadFixAddressPeiCodePageNumber= 0x%x.\n", PcdGet32(PcdLoadFixAddressPeiCodePageNumber))); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED INFO: Total Reserved Memory Size = 0x%lx.\n", TotalReservedMemorySize)); + // + // Loop through the system memory typed HOB to merge the adjacent memory range + // +@@ -433,12 +433,12 @@ PeiLoadFixAddressHook( + // The LMFA feature is enabled as load module at fixed absolute address. + // + TopLoadingAddress = (EFI_PHYSICAL_ADDRESS)PcdGet64(PcdLoadModuleAtFixAddressEnable); +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED INFO: Loading module at fixed absolute address.\n")); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED INFO: Loading module at fixed absolute address.\n")); + // + // validate the Address. Loop the resource descriptor HOB to make sure the address is in valid memory range + // + if ((TopLoadingAddress & EFI_PAGE_MASK) != 0) { +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED ERROR:Top Address 0x%lx is invalid since top address should be page align. \n", TopLoadingAddress)); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED ERROR:Top Address 0x%lx is invalid since top address should be page align. \n", TopLoadingAddress)); + ASSERT (FALSE); + } + // +@@ -470,11 +470,11 @@ PeiLoadFixAddressHook( + } + } + if (CurrentResourceHob != NULL) { +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED INFO:Top Address 0x%lx is valid \n", TopLoadingAddress)); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED INFO:Top Address 0x%lx is valid \n", TopLoadingAddress)); + TopLoadingAddress += MINIMUM_INITIAL_MEMORY_SIZE; + } else { +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED ERROR:Top Address 0x%lx is invalid \n", TopLoadingAddress)); +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED ERROR:The recommended Top Address for the platform is: \n")); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED ERROR:Top Address 0x%lx is invalid \n", TopLoadingAddress)); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED ERROR:The recommended Top Address for the platform is: \n")); + // + // Print the recommended Top address range. + // +@@ -494,7 +494,7 @@ PeiLoadFixAddressHook( + // See if Top address specified by user is valid. + // + if (ResourceHob->ResourceLength > TotalReservedMemorySize && PeiLoadFixAddressIsMemoryRangeAvailable(PrivateData, ResourceHob)) { +- DEBUG ((EFI_D_INFO, "(0x%lx, 0x%lx)\n", ++ DEBUG ((DEBUG_INFO, "(0x%lx, 0x%lx)\n", + (ResourceHob->PhysicalStart + TotalReservedMemorySize -MINIMUM_INITIAL_MEMORY_SIZE), + (ResourceHob->PhysicalStart + ResourceHob->ResourceLength -MINIMUM_INITIAL_MEMORY_SIZE) + )); +@@ -541,7 +541,7 @@ PeiLoadFixAddressHook( + } + } + if (CurrentResourceHob == NULL) { +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED ERROR:The System Memory is too small\n")); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED ERROR:The System Memory is too small\n")); + // + // Assert here + // +@@ -613,7 +613,7 @@ PeiLoadFixAddressHook( + // Cache the top address for Loading Module at Fixed Address feature + // + PrivateData->LoadModuleAtFixAddressTopAddress = TopLoadingAddress - MINIMUM_INITIAL_MEMORY_SIZE; +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED INFO: Top address = 0x%lx\n", PrivateData->LoadModuleAtFixAddressTopAddress)); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED INFO: Top address = 0x%lx\n", PrivateData->LoadModuleAtFixAddressTopAddress)); + // + // reinstall the PEI memory relative to TopLoadingAddress + // +@@ -732,7 +732,7 @@ PeiCheckAndSwitchStack ( + // If Loading Module at Fixed Address is enabled, Allocating memory range for Pei code range. + // + LoadFixPeiCodeBegin = AllocatePages((UINTN)PcdGet32(PcdLoadFixAddressPeiCodePageNumber)); +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED INFO: PeiCodeBegin = 0x%lX, PeiCodeTop= 0x%lX\n", (UINT64)(UINTN)LoadFixPeiCodeBegin, (UINT64)((UINTN)LoadFixPeiCodeBegin + PcdGet32(PcdLoadFixAddressPeiCodePageNumber) * EFI_PAGE_SIZE))); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED INFO: PeiCodeBegin = 0x%lX, PeiCodeTop= 0x%lX\n", (UINT64)(UINTN)LoadFixPeiCodeBegin, (UINT64)((UINTN)LoadFixPeiCodeBegin + PcdGet32(PcdLoadFixAddressPeiCodePageNumber) * EFI_PAGE_SIZE))); + } + + // +@@ -746,7 +746,7 @@ PeiCheckAndSwitchStack ( + NewStackSize = RShiftU64 (Private->PhysicalMemoryLength, 1); + NewStackSize = ALIGN_VALUE (NewStackSize, EFI_PAGE_SIZE); + NewStackSize = MIN (PcdGet32(PcdPeiCoreMaxPeiStackSize), NewStackSize); +- DEBUG ((EFI_D_INFO, "Old Stack size %d, New stack size %d\n", (UINT32)SecCoreData->StackSize, (UINT32)NewStackSize)); ++ DEBUG ((DEBUG_INFO, "Old Stack size %d, New stack size %d\n", (UINT32)SecCoreData->StackSize, (UINT32)NewStackSize)); + ASSERT (NewStackSize >= SecCoreData->StackSize); + + // +@@ -768,7 +768,7 @@ PeiCheckAndSwitchStack ( + // + // Build Stack HOB that describes the permanent memory stack + // +- DEBUG ((EFI_D_INFO, "Stack Hob: BaseAddress=0x%lX Length=0x%lX\n", TopOfNewStack - NewStackSize, NewStackSize)); ++ DEBUG ((DEBUG_INFO, "Stack Hob: BaseAddress=0x%lX Length=0x%lX\n", TopOfNewStack - NewStackSize, NewStackSize)); + BuildStackHob (TopOfNewStack - NewStackSize, NewStackSize); + + // +@@ -803,7 +803,7 @@ PeiCheckAndSwitchStack ( + Private->HeapOffset = (UINTN)((UINTN)SecCoreData->PeiTemporaryRamBase - BaseOfNewHeap); + } + +- DEBUG ((EFI_D_INFO, "Heap Offset = 0x%lX Stack Offset = 0x%lX\n", (UINT64) Private->HeapOffset, (UINT64) Private->StackOffset)); ++ DEBUG ((DEBUG_INFO, "Heap Offset = 0x%lX Stack Offset = 0x%lX\n", (UINT64) Private->HeapOffset, (UINT64) Private->StackOffset)); + + // + // Calculate new HandOffTable and PrivateData address in permanent memory's stack +@@ -871,7 +871,7 @@ PeiCheckAndSwitchStack ( + Private->HeapOffset = (UINTN)((UINTN)SecCoreData->PeiTemporaryRamBase - BaseOfNewHeap); + } + +- DEBUG ((EFI_D_INFO, "Heap Offset = 0x%lX Stack Offset = 0x%lX\n", (UINT64) Private->HeapOffset, (UINT64) Private->StackOffset)); ++ DEBUG ((DEBUG_INFO, "Heap Offset = 0x%lX Stack Offset = 0x%lX\n", (UINT64) Private->HeapOffset, (UINT64) Private->StackOffset)); + + // + // Migrate Heap +@@ -1730,6 +1730,3 @@ PeiRegisterForShadow ( + + return EFI_SUCCESS; + } +- +- +- +diff --git a/MdeModulePkg/Core/Pei/FwVol/FwVol.c b/MdeModulePkg/Core/Pei/FwVol/FwVol.c +index fa1a3d3acc..bf8dbd3763 100644 +--- a/MdeModulePkg/Core/Pei/FwVol/FwVol.c ++++ b/MdeModulePkg/Core/Pei/FwVol/FwVol.c +@@ -317,7 +317,7 @@ FindFileEx ( + } else { + if (IS_FFS_FILE2 (*FileHeader)) { + if (!IsFfs3Fv) { +- DEBUG ((EFI_D_ERROR, "It is a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &(*FileHeader)->Name)); ++ DEBUG ((DEBUG_ERROR, "It is a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &(*FileHeader)->Name)); + } + FileLength = FFS_FILE2_SIZE (*FileHeader); + ASSERT (FileLength > 0x00FFFFFF); +@@ -345,7 +345,7 @@ FindFileEx ( + case EFI_FILE_HEADER_INVALID: + if (IS_FFS_FILE2 (FfsFileHeader)) { + if (!IsFfs3Fv) { +- DEBUG ((EFI_D_ERROR, "Found a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FfsFileHeader->Name)); ++ DEBUG ((DEBUG_ERROR, "Found a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FfsFileHeader->Name)); + } + FileOffset += sizeof (EFI_FFS_FILE_HEADER2); + FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsFileHeader + sizeof (EFI_FFS_FILE_HEADER2)); +@@ -368,7 +368,7 @@ FindFileEx ( + ASSERT (FileLength > 0x00FFFFFF); + FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8); + if (!IsFfs3Fv) { +- DEBUG ((EFI_D_ERROR, "Found a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FfsFileHeader->Name)); ++ DEBUG ((DEBUG_ERROR, "Found a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FfsFileHeader->Name)); + FileOffset += FileOccupiedSize; + FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsFileHeader + FileOccupiedSize); + break; +@@ -424,7 +424,7 @@ FindFileEx ( + case EFI_FILE_DELETED: + if (IS_FFS_FILE2 (FfsFileHeader)) { + if (!IsFfs3Fv) { +- DEBUG ((EFI_D_ERROR, "Found a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FfsFileHeader->Name)); ++ DEBUG ((DEBUG_ERROR, "Found a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FfsFileHeader->Name)); + } + FileLength = FFS_FILE2_SIZE (FfsFileHeader); + ASSERT (FileLength > 0x00FFFFFF); +@@ -509,7 +509,7 @@ PeiInitializeFv ( + PrivateData->Fv[PrivateData->FvCount].FvHandle = FvHandle; + PrivateData->Fv[PrivateData->FvCount].AuthenticationStatus = 0; + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "The %dth FV start address is 0x%11p, size is 0x%08x, handle is 0x%p\n", + (UINT32) PrivateData->FvCount, + (VOID *) BfvHeader, +@@ -607,7 +607,7 @@ FirmwareVolumeInfoPpiNotifyCallback ( + // + Status = FvPpi->ProcessVolume (FvPpi, FvInfo2Ppi.FvInfo, FvInfo2Ppi.FvInfoSize, &FvHandle); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Fail to process new found FV, FV may be corrupted!\n")); ++ DEBUG ((DEBUG_ERROR, "Fail to process new found FV, FV may be corrupted!\n")); + return Status; + } + +@@ -618,7 +618,7 @@ FirmwareVolumeInfoPpiNotifyCallback ( + if (PrivateData->Fv[FvIndex].FvHandle == FvHandle) { + if (IsFvInfo2 && (FvInfo2Ppi.AuthenticationStatus != PrivateData->Fv[FvIndex].AuthenticationStatus)) { + PrivateData->Fv[FvIndex].AuthenticationStatus = FvInfo2Ppi.AuthenticationStatus; +- DEBUG ((EFI_D_INFO, "Update AuthenticationStatus of the %dth FV to 0x%x!\n", FvIndex, FvInfo2Ppi.AuthenticationStatus)); ++ DEBUG ((DEBUG_INFO, "Update AuthenticationStatus of the %dth FV to 0x%x!\n", FvIndex, FvInfo2Ppi.AuthenticationStatus)); + } + DEBUG ((DEBUG_INFO, "The FV %p has already been processed!\n", FvInfo2Ppi.FvInfo)); + return EFI_SUCCESS; +@@ -651,7 +651,7 @@ FirmwareVolumeInfoPpiNotifyCallback ( + PrivateData->Fv[PrivateData->FvCount].AuthenticationStatus = FvInfo2Ppi.AuthenticationStatus; + CurFvCount = PrivateData->FvCount; + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "The %dth FV start address is 0x%11p, size is 0x%08x, handle is 0x%p\n", + (UINT32) CurFvCount, + (VOID *) FvInfo2Ppi.FvInfo, +@@ -687,12 +687,12 @@ FirmwareVolumeInfoPpiNotifyCallback ( + } + } + +- DEBUG ((EFI_D_INFO, "Found firmware volume Image File %p in FV[%d] %p\n", FileHandle, CurFvCount, FvHandle)); ++ DEBUG ((DEBUG_INFO, "Found firmware volume Image File %p in FV[%d] %p\n", FileHandle, CurFvCount, FvHandle)); + ProcessFvFile (PrivateData, &PrivateData->Fv[CurFvCount], FileHandle); + } + } while (FileHandle != NULL); + } else { +- DEBUG ((EFI_D_ERROR, "Fail to process FV %p because no corresponding EFI_FIRMWARE_VOLUME_PPI is found!\n", FvInfo2Ppi.FvInfo)); ++ DEBUG ((DEBUG_ERROR, "Fail to process FV %p because no corresponding EFI_FIRMWARE_VOLUME_PPI is found!\n", FvInfo2Ppi.FvInfo)); + + AddUnknownFormatFvInfo (PrivateData, &FvInfo2Ppi); + } +@@ -808,7 +808,7 @@ ProcessSection ( + if (IS_SECTION2 (Section)) { + ASSERT (SECTION2_SIZE (Section) > 0x00FFFFFF); + if (!IsFfs3Fv) { +- DEBUG ((EFI_D_ERROR, "Found a FFS3 formatted section in a non-FFS3 formatted FV.\n")); ++ DEBUG ((DEBUG_ERROR, "Found a FFS3 formatted section in a non-FFS3 formatted FV.\n")); + SectionLength = SECTION2_SIZE (Section); + // + // SectionLength is adjusted it is 4 byte aligned. +@@ -1404,7 +1404,7 @@ ProcessFvFile ( + // + // this FILE has been dispatched, it will not be dispatched again. + // +- DEBUG ((EFI_D_INFO, "FV file %p has been dispatched!\r\n", ParentFvFileHandle)); ++ DEBUG ((DEBUG_INFO, "FV file %p has been dispatched!\r\n", ParentFvFileHandle)); + return EFI_SUCCESS; + } + HobPtr.Raw = GET_NEXT_HOB (HobPtr); +@@ -1628,7 +1628,7 @@ PeiFfsFvPpiProcessVolume ( + // + Status = VerifyFv ((EFI_FIRMWARE_VOLUME_HEADER*) Buffer); + if (EFI_ERROR(Status)) { +- DEBUG ((EFI_D_ERROR, "Fail to verify FV which address is 0x%11p", Buffer)); ++ DEBUG ((DEBUG_ERROR, "Fail to verify FV which address is 0x%11p", Buffer)); + return EFI_VOLUME_CORRUPTED; + } + +@@ -1810,7 +1810,7 @@ PeiFfsFvPpiGetFileInfo ( + if (IS_FFS_FILE2 (FileHeader)) { + ASSERT (FFS_FILE2_SIZE (FileHeader) > 0x00FFFFFF); + if (!FwVolInstance->IsFfs3Fv) { +- DEBUG ((EFI_D_ERROR, "It is a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FileHeader->Name)); ++ DEBUG ((DEBUG_ERROR, "It is a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FileHeader->Name)); + return EFI_INVALID_PARAMETER; + } + FileInfo->BufferSize = FFS_FILE2_SIZE (FileHeader) - sizeof (EFI_FFS_FILE_HEADER2); +@@ -2029,7 +2029,7 @@ PeiFfsFvPpiFindSectionByType2 ( + if (IS_FFS_FILE2 (FfsFileHeader)) { + ASSERT (FFS_FILE2_SIZE (FfsFileHeader) > 0x00FFFFFF); + if (!FwVolInstance->IsFfs3Fv) { +- DEBUG ((EFI_D_ERROR, "It is a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FfsFileHeader->Name)); ++ DEBUG ((DEBUG_ERROR, "It is a FFS3 formatted file: %g in a non-FFS3 formatted FV.\n", &FfsFileHeader->Name)); + return EFI_NOT_FOUND; + } + Section = (EFI_COMMON_SECTION_HEADER *) ((UINT8 *) FfsFileHeader + sizeof (EFI_FFS_FILE_HEADER2)); +@@ -2344,7 +2344,7 @@ ThirdPartyFvPpiNotifyCallback ( + // + Status = FvPpi->ProcessVolume (FvPpi, FvInfo, FvInfoSize, &FvHandle); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Fail to process the FV 0x%p, FV may be corrupted!\n", FvInfo)); ++ DEBUG ((DEBUG_ERROR, "Fail to process the FV 0x%p, FV may be corrupted!\n", FvInfo)); + continue; + } + +@@ -2390,7 +2390,7 @@ ThirdPartyFvPpiNotifyCallback ( + PrivateData->Fv[PrivateData->FvCount].AuthenticationStatus = AuthenticationStatus; + CurFvCount = PrivateData->FvCount; + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "The %dth FV start address is 0x%11p, size is 0x%08x, handle is 0x%p\n", + (UINT32) CurFvCount, + (VOID *) FvInfo, +@@ -2426,7 +2426,7 @@ ThirdPartyFvPpiNotifyCallback ( + } + } + +- DEBUG ((EFI_D_INFO, "Found firmware volume Image File %p in FV[%d] %p\n", FileHandle, CurFvCount, FvHandle)); ++ DEBUG ((DEBUG_INFO, "Found firmware volume Image File %p in FV[%d] %p\n", FileHandle, CurFvCount, FvHandle)); + ProcessFvFile (PrivateData, &PrivateData->Fv[CurFvCount], FileHandle); + } + } while (FileHandle != NULL); +diff --git a/MdeModulePkg/Core/Pei/Hob/Hob.c b/MdeModulePkg/Core/Pei/Hob/Hob.c +index 4d8db2e7a5..d36b61417e 100644 +--- a/MdeModulePkg/Core/Pei/Hob/Hob.c ++++ b/MdeModulePkg/Core/Pei/Hob/Hob.c +@@ -95,9 +95,9 @@ PeiCreateHob ( + HandOffHob->EfiFreeMemoryBottom; + + if (FreeMemory < Length) { +- DEBUG ((EFI_D_ERROR, "PeiCreateHob fail: Length - 0x%08x\n", (UINTN)Length)); +- DEBUG ((EFI_D_ERROR, " FreeMemoryTop - 0x%08x\n", (UINTN)HandOffHob->EfiFreeMemoryTop)); +- DEBUG ((EFI_D_ERROR, " FreeMemoryBottom - 0x%08x\n", (UINTN)HandOffHob->EfiFreeMemoryBottom)); ++ DEBUG ((DEBUG_ERROR, "PeiCreateHob fail: Length - 0x%08x\n", (UINTN)Length)); ++ DEBUG ((DEBUG_ERROR, " FreeMemoryTop - 0x%08x\n", (UINTN)HandOffHob->EfiFreeMemoryTop)); ++ DEBUG ((DEBUG_ERROR, " FreeMemoryBottom - 0x%08x\n", (UINTN)HandOffHob->EfiFreeMemoryBottom)); + return EFI_OUT_OF_RESOURCES; + } + +diff --git a/MdeModulePkg/Core/Pei/Image/Image.c b/MdeModulePkg/Core/Pei/Image/Image.c +index 5af3895191..92fe798cd6 100644 +--- a/MdeModulePkg/Core/Pei/Image/Image.c ++++ b/MdeModulePkg/Core/Pei/Image/Image.c +@@ -235,7 +235,7 @@ GetPeCoffImageFixLoadingAssignedAddress( + } + SectionHeaderOffset += sizeof (EFI_IMAGE_SECTION_HEADER); + } +- DEBUG ((EFI_D_INFO|EFI_D_LOAD, "LOADING MODULE FIXED INFO: Loading module at fixed address 0x%11p. Status= %r \n", (VOID *)(UINTN)FixLoadingAddress, Status)); ++ DEBUG ((DEBUG_INFO|DEBUG_LOAD, "LOADING MODULE FIXED INFO: Loading module at fixed address 0x%11p. Status= %r \n", (VOID *)(UINTN)FixLoadingAddress, Status)); + return Status; + } + /** +@@ -333,7 +333,7 @@ LoadAndRelocatePeCoffImage ( + (!IsS3Boot && (PcdGetBool (PcdShadowPeimOnBoot) || IsRegisterForShadow)) || + (IsS3Boot && PcdGetBool (PcdShadowPeimOnS3Boot))) + ) { +- DEBUG ((EFI_D_INFO|EFI_D_LOAD, "The image at 0x%08x without reloc section can't be loaded into memory\n", (UINTN) Pe32Data)); ++ DEBUG ((DEBUG_INFO|DEBUG_LOAD, "The image at 0x%08x without reloc section can't be loaded into memory\n", (UINTN) Pe32Data)); + } + + // +@@ -367,7 +367,7 @@ LoadAndRelocatePeCoffImage ( + if (PcdGet64(PcdLoadModuleAtFixAddressEnable) != 0 && (Private->HobList.HandoffInformationTable->BootMode != BOOT_ON_S3_RESUME)) { + Status = GetPeCoffImageFixLoadingAssignedAddress(&ImageContext, Private); + if (EFI_ERROR (Status)){ +- DEBUG ((EFI_D_INFO|EFI_D_LOAD, "LOADING MODULE FIXED ERROR: Failed to load module at fixed address. \n")); ++ DEBUG ((DEBUG_INFO|DEBUG_LOAD, "LOADING MODULE FIXED ERROR: Failed to load module at fixed address. \n")); + // + // The PEIM is not assigned valid address, try to allocate page to load it. + // +@@ -697,12 +697,12 @@ PeiLoadImageLoadImage ( + // Print debug message: Loading PEIM at 0x12345678 EntryPoint=0x12345688 Driver.efi + // + if (Machine != EFI_IMAGE_MACHINE_IA64) { +- DEBUG ((EFI_D_INFO | EFI_D_LOAD, "Loading PEIM at 0x%11p EntryPoint=0x%11p ", (VOID *)(UINTN)ImageAddress, (VOID *)(UINTN)*EntryPoint)); ++ DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Loading PEIM at 0x%11p EntryPoint=0x%11p ", (VOID *)(UINTN)ImageAddress, (VOID *)(UINTN)*EntryPoint)); + } else { + // + // For IPF Image, the real entry point should be print. + // +- DEBUG ((EFI_D_INFO | EFI_D_LOAD, "Loading PEIM at 0x%11p EntryPoint=0x%11p ", (VOID *)(UINTN)ImageAddress, (VOID *)(UINTN)(*(UINT64 *)(UINTN)*EntryPoint))); ++ DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Loading PEIM at 0x%11p EntryPoint=0x%11p ", (VOID *)(UINTN)ImageAddress, (VOID *)(UINTN)(*(UINT64 *)(UINTN)*EntryPoint))); + } + + // +@@ -741,12 +741,12 @@ PeiLoadImageLoadImage ( + EfiFileName[Index] = 0; + } + +- DEBUG ((EFI_D_INFO | EFI_D_LOAD, "%a", EfiFileName)); ++ DEBUG ((DEBUG_INFO | DEBUG_LOAD, "%a", EfiFileName)); + } + + DEBUG_CODE_END (); + +- DEBUG ((EFI_D_INFO | EFI_D_LOAD, "\n")); ++ DEBUG ((DEBUG_INFO | DEBUG_LOAD, "\n")); + + return EFI_SUCCESS; + +@@ -961,7 +961,3 @@ InitializeImageServices ( + PeiServicesReInstallPpi (PrivateData->XipLoadFile, &gPpiLoadFilePpiList); + } + } +- +- +- +- +diff --git a/MdeModulePkg/Core/Pei/Memory/MemoryServices.c b/MdeModulePkg/Core/Pei/Memory/MemoryServices.c +index 9d933f0393..53c9eaceb0 100644 +--- a/MdeModulePkg/Core/Pei/Memory/MemoryServices.c ++++ b/MdeModulePkg/Core/Pei/Memory/MemoryServices.c +@@ -80,7 +80,7 @@ PeiInstallPeiMemory ( + { + PEI_CORE_INSTANCE *PrivateData; + +- DEBUG ((EFI_D_INFO, "PeiInstallPeiMemory MemoryBegin 0x%LX, MemoryLength 0x%LX\n", MemoryBegin, MemoryLength)); ++ DEBUG ((DEBUG_INFO, "PeiInstallPeiMemory MemoryBegin 0x%LX, MemoryLength 0x%LX\n", MemoryBegin, MemoryLength)); + PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS (PeiServices); + + // +@@ -89,7 +89,7 @@ PeiInstallPeiMemory ( + // simply return EFI_SUCCESS in release tip to ignore it. + // + if (PrivateData->PeiMemoryInstalled) { +- DEBUG ((EFI_D_ERROR, "ERROR: PeiInstallPeiMemory is called more than once!\n")); ++ DEBUG ((DEBUG_ERROR, "ERROR: PeiInstallPeiMemory is called more than once!\n")); + ASSERT (FALSE); + return EFI_SUCCESS; + } +@@ -676,8 +676,8 @@ PeiAllocatePages ( + if (!EFI_ERROR (Status)) { + return Status; + } +- DEBUG ((EFI_D_ERROR, "AllocatePages failed: No 0x%lx Pages is available.\n", (UINT64) Pages)); +- DEBUG ((EFI_D_ERROR, "There is only left 0x%lx pages memory resource to be allocated.\n", (UINT64) RemainingPages)); ++ DEBUG ((DEBUG_ERROR, "AllocatePages failed: No 0x%lx Pages is available.\n", (UINT64) Pages)); ++ DEBUG ((DEBUG_ERROR, "There is only left 0x%lx pages memory resource to be allocated.\n", (UINT64) RemainingPages)); + return EFI_OUT_OF_RESOURCES; + } else { + // +diff --git a/MdeModulePkg/Core/Pei/PeiMain/PeiMain.c b/MdeModulePkg/Core/Pei/PeiMain/PeiMain.c +index 2ad08878d9..a72d07c4be 100644 +--- a/MdeModulePkg/Core/Pei/PeiMain/PeiMain.c ++++ b/MdeModulePkg/Core/Pei/PeiMain/PeiMain.c +@@ -508,7 +508,7 @@ PeiCore ( + // + // Enter DxeIpl to load Dxe core. + // +- DEBUG ((EFI_D_INFO, "DXE IPL Entry\n")); ++ DEBUG ((DEBUG_INFO, "DXE IPL Entry\n")); + Status = TempPtr.DxeIpl->Entry ( + TempPtr.DxeIpl, + &PrivateData.Ps, +diff --git a/MdeModulePkg/Core/Pei/Ppi/Ppi.c b/MdeModulePkg/Core/Pei/Ppi/Ppi.c +index 0ad71d116f..2e339e2522 100644 +--- a/MdeModulePkg/Core/Pei/Ppi/Ppi.c ++++ b/MdeModulePkg/Core/Pei/Ppi/Ppi.c +@@ -474,7 +474,7 @@ InternalPeiInstallPpi ( + // + if ((PpiList->Flags & EFI_PEI_PPI_DESCRIPTOR_PPI) == 0) { + PpiListPointer->CurrentCount = LastCount; +- DEBUG((EFI_D_ERROR, "ERROR -> InstallPpi: %g %p\n", PpiList->Guid, PpiList->Ppi)); ++ DEBUG((DEBUG_ERROR, "ERROR -> InstallPpi: %g %p\n", PpiList->Guid, PpiList->Ppi)); + return EFI_INVALID_PARAMETER; + } + +@@ -495,7 +495,7 @@ InternalPeiInstallPpi ( + PpiListPointer->MaxCount = PpiListPointer->MaxCount + PPI_GROWTH_STEP; + } + +- DEBUG((EFI_D_INFO, "Install PPI: %g\n", PpiList->Guid)); ++ DEBUG((DEBUG_INFO, "Install PPI: %g\n", PpiList->Guid)); + PpiListPointer->PpiPtrs[Index].Ppi = (EFI_PEI_PPI_DESCRIPTOR *) PpiList; + Index++; + PpiListPointer->CurrentCount++; +@@ -613,7 +613,7 @@ PeiReInstallPpi ( + // + // Replace the old PPI with the new one. + // +- DEBUG((EFI_D_INFO, "Reinstall PPI: %g\n", NewPpi->Guid)); ++ DEBUG((DEBUG_INFO, "Reinstall PPI: %g\n", NewPpi->Guid)); + PrivateData->PpiData.PpiList.PpiPtrs[Index].Ppi = (EFI_PEI_PPI_DESCRIPTOR *) NewPpi; + + // +@@ -807,7 +807,7 @@ InternalPeiNotifyPpi ( + DispatchNotifyListPointer->CurrentCount++; + } + +- DEBUG((EFI_D_INFO, "Register PPI Notify: %g\n", NotifyList->Guid)); ++ DEBUG((DEBUG_INFO, "Register PPI Notify: %g\n", NotifyList->Guid)); + + if (Single) { + // +@@ -978,7 +978,7 @@ ProcessNotify ( + (((INT32 *)SearchGuid)[1] == ((INT32 *)CheckGuid)[1]) && + (((INT32 *)SearchGuid)[2] == ((INT32 *)CheckGuid)[2]) && + (((INT32 *)SearchGuid)[3] == ((INT32 *)CheckGuid)[3])) { +- DEBUG ((EFI_D_INFO, "Notify: PPI Guid: %g, Peim notify entry point: %p\n", ++ DEBUG ((DEBUG_INFO, "Notify: PPI Guid: %g, Peim notify entry point: %p\n", + SearchGuid, + NotifyDescriptor->Notify + )); +@@ -1115,4 +1115,3 @@ ConvertPeiCorePpiPointers ( + ConvertPpiPointersFv (PrivateData, (UINTN) OrgImageBase, (UINTN) MigratedImageBase, PeiCoreModuleSize); + } + } +- +diff --git a/MdeModulePkg/Core/PiSmmCore/Dispatcher.c b/MdeModulePkg/Core/PiSmmCore/Dispatcher.c +index 76ee9e0b89..6d669bd1be 100644 +--- a/MdeModulePkg/Core/PiSmmCore/Dispatcher.c ++++ b/MdeModulePkg/Core/PiSmmCore/Dispatcher.c +@@ -283,7 +283,7 @@ GetPeCoffImageFixLoadingAssignedAddress( + } + SectionHeaderOffset += sizeof (EFI_IMAGE_SECTION_HEADER); + } +- DEBUG ((EFI_D_INFO|EFI_D_LOAD, "LOADING MODULE FIXED INFO: Loading module at fixed address %x, Status = %r\n", FixLoadingAddress, Status)); ++ DEBUG ((DEBUG_INFO|DEBUG_LOAD, "LOADING MODULE FIXED INFO: Loading module at fixed address %x, Status = %r\n", FixLoadingAddress, Status)); + return Status; + } + /** +@@ -464,7 +464,7 @@ SmmLoadImage ( + PageCount = 0; + DstBuffer = (UINTN)gLoadModuleAtFixAddressSmramBase; + } else { +- DEBUG ((EFI_D_INFO|EFI_D_LOAD, "LOADING MODULE FIXED ERROR: Failed to load module at fixed address. \n")); ++ DEBUG ((DEBUG_INFO|DEBUG_LOAD, "LOADING MODULE FIXED ERROR: Failed to load module at fixed address. \n")); + // + // allocate the memory to load the SMM driver + // +diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c +index cfa9922cbd..c460805148 100644 +--- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c ++++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.c +@@ -439,7 +439,7 @@ SmmEndOfDxeHandler ( + EFI_SMM_SX_REGISTER_CONTEXT EntryRegisterContext; + EFI_HANDLE S3EntryHandle; + +- DEBUG ((EFI_D_INFO, "SmmEndOfDxeHandler\n")); ++ DEBUG ((DEBUG_INFO, "SmmEndOfDxeHandler\n")); + + // + // Install SMM EndOfDxe protocol +diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c +index 599a0cd01d..e8e25c6c91 100644 +--- a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c ++++ b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c +@@ -991,7 +991,7 @@ GetPeCoffImageFixLoadingAssignedAddress( + } + SectionHeaderOffset += sizeof (EFI_IMAGE_SECTION_HEADER); + } +- DEBUG ((EFI_D_INFO|EFI_D_LOAD, "LOADING MODULE FIXED INFO: Loading module at fixed address %x, Status = %r \n", FixLoadingAddress, Status)); ++ DEBUG ((DEBUG_INFO|DEBUG_LOAD, "LOADING MODULE FIXED INFO: Loading module at fixed address %x, Status = %r \n", FixLoadingAddress, Status)); + return Status; + } + /** +@@ -1068,7 +1068,7 @@ ExecuteSmmCoreFromSmram ( + // + gSmmCorePrivate->SmramRangeCount --; + } else { +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED ERROR: Loading module at fixed address at address failed\n")); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED ERROR: Loading module at fixed address at address failed\n")); + // + // Allocate memory for the image being loaded from the EFI_SRAM_DESCRIPTOR + // specified by SmramRange +@@ -1749,7 +1749,7 @@ SmmIplEntry ( + // + // Print the SMRAM base + // +- DEBUG ((EFI_D_INFO, "LOADING MODULE FIXED INFO: TSEG BASE is %x. \n", mLMFAConfigurationTable->SmramBase)); ++ DEBUG ((DEBUG_INFO, "LOADING MODULE FIXED INFO: TSEG BASE is %x. \n", mLMFAConfigurationTable->SmramBase)); + } + + // +diff --git a/MdeModulePkg/Core/PiSmmCore/SmramProfileRecord.c b/MdeModulePkg/Core/PiSmmCore/SmramProfileRecord.c +index 9d6e3bf27a..5b8ce55347 100644 +--- a/MdeModulePkg/Core/PiSmmCore/SmramProfileRecord.c ++++ b/MdeModulePkg/Core/PiSmmCore/SmramProfileRecord.c +@@ -676,7 +676,7 @@ SmramProfileInit ( + + RegisterSmmCore (&mSmramProfileContext); + +- DEBUG ((EFI_D_INFO, "SmramProfileInit SmramProfileContext - 0x%x\n", &mSmramProfileContext)); ++ DEBUG ((DEBUG_INFO, "SmramProfileInit SmramProfileContext - 0x%x\n", &mSmramProfileContext)); + } + + /** +@@ -1530,7 +1530,7 @@ SmramProfileReadyToLock ( + return; + } + +- DEBUG ((EFI_D_INFO, "SmramProfileReadyToLock\n")); ++ DEBUG ((DEBUG_INFO, "SmramProfileReadyToLock\n")); + mSmramReadyToLock = TRUE; + } + +@@ -2168,7 +2168,7 @@ SmramProfileHandlerGetData ( + // Sanity check + // + if (!SmmIsBufferOutsideSmmValid ((UINTN) SmramProfileGetData.ProfileBuffer, (UINTN) ProfileSize)) { +- DEBUG ((EFI_D_ERROR, "SmramProfileHandlerGetData: SMM ProfileBuffer in SMRAM or overflow!\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandlerGetData: SMM ProfileBuffer in SMRAM or overflow!\n")); + SmramProfileParameterGetData->ProfileSize = ProfileSize; + SmramProfileParameterGetData->Header.ReturnStatus = (UINT64) (INT64) (INTN) EFI_ACCESS_DENIED; + goto Done; +@@ -2219,7 +2219,7 @@ SmramProfileHandlerGetDataByOffset ( + // Sanity check + // + if (!SmmIsBufferOutsideSmmValid ((UINTN) SmramProfileGetDataByOffset.ProfileBuffer, (UINTN) SmramProfileGetDataByOffset.ProfileSize)) { +- DEBUG ((EFI_D_ERROR, "SmramProfileHandlerGetDataByOffset: SMM ProfileBuffer in SMRAM or overflow!\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandlerGetDataByOffset: SMM ProfileBuffer in SMRAM or overflow!\n")); + SmramProfileParameterGetDataByOffset->Header.ReturnStatus = (UINT64) (INT64) (INTN) EFI_ACCESS_DENIED; + goto Done; + } +@@ -2261,7 +2261,7 @@ SmramProfileHandler ( + UINTN TempCommBufferSize; + SMRAM_PROFILE_PARAMETER_RECORDING_STATE *ParameterRecordingState; + +- DEBUG ((EFI_D_ERROR, "SmramProfileHandler Enter\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandler Enter\n")); + + // + // If input is invalid, stop processing this SMI +@@ -2273,12 +2273,12 @@ SmramProfileHandler ( + TempCommBufferSize = *CommBufferSize; + + if (TempCommBufferSize < sizeof (SMRAM_PROFILE_PARAMETER_HEADER)) { +- DEBUG ((EFI_D_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + + if (mSmramReadyToLock && !SmmIsBufferOutsideSmmValid ((UINTN)CommBuffer, TempCommBufferSize)) { +- DEBUG ((EFI_D_ERROR, "SmramProfileHandler: SMM communication buffer in SMRAM or overflow!\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandler: SMM communication buffer in SMRAM or overflow!\n")); + return EFI_SUCCESS; + } + +@@ -2293,33 +2293,33 @@ SmramProfileHandler ( + + switch (SmramProfileParameterHeader->Command) { + case SMRAM_PROFILE_COMMAND_GET_PROFILE_INFO: +- DEBUG ((EFI_D_ERROR, "SmramProfileHandlerGetInfo\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandlerGetInfo\n")); + if (TempCommBufferSize != sizeof (SMRAM_PROFILE_PARAMETER_GET_PROFILE_INFO)) { +- DEBUG ((EFI_D_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + SmramProfileHandlerGetInfo ((SMRAM_PROFILE_PARAMETER_GET_PROFILE_INFO *) (UINTN) CommBuffer); + break; + case SMRAM_PROFILE_COMMAND_GET_PROFILE_DATA: +- DEBUG ((EFI_D_ERROR, "SmramProfileHandlerGetData\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandlerGetData\n")); + if (TempCommBufferSize != sizeof (SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA)) { +- DEBUG ((EFI_D_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + SmramProfileHandlerGetData ((SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA *) (UINTN) CommBuffer); + break; + case SMRAM_PROFILE_COMMAND_GET_PROFILE_DATA_BY_OFFSET: +- DEBUG ((EFI_D_ERROR, "SmramProfileHandlerGetDataByOffset\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandlerGetDataByOffset\n")); + if (TempCommBufferSize != sizeof (SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA_BY_OFFSET)) { +- DEBUG ((EFI_D_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + SmramProfileHandlerGetDataByOffset ((SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA_BY_OFFSET *) (UINTN) CommBuffer); + break; + case SMRAM_PROFILE_COMMAND_GET_RECORDING_STATE: +- DEBUG ((EFI_D_ERROR, "SmramProfileHandlerGetRecordingState\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandlerGetRecordingState\n")); + if (TempCommBufferSize != sizeof (SMRAM_PROFILE_PARAMETER_RECORDING_STATE)) { +- DEBUG ((EFI_D_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + ParameterRecordingState = (SMRAM_PROFILE_PARAMETER_RECORDING_STATE *) (UINTN) CommBuffer; +@@ -2327,9 +2327,9 @@ SmramProfileHandler ( + ParameterRecordingState->Header.ReturnStatus = 0; + break; + case SMRAM_PROFILE_COMMAND_SET_RECORDING_STATE: +- DEBUG ((EFI_D_ERROR, "SmramProfileHandlerSetRecordingState\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandlerSetRecordingState\n")); + if (TempCommBufferSize != sizeof (SMRAM_PROFILE_PARAMETER_RECORDING_STATE)) { +- DEBUG ((EFI_D_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandler: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + ParameterRecordingState = (SMRAM_PROFILE_PARAMETER_RECORDING_STATE *) (UINTN) CommBuffer; +@@ -2350,7 +2350,7 @@ SmramProfileHandler ( + break; + } + +- DEBUG ((EFI_D_ERROR, "SmramProfileHandler Exit\n")); ++ DEBUG ((DEBUG_ERROR, "SmramProfileHandler Exit\n")); + + return EFI_SUCCESS; + } +@@ -2402,20 +2402,20 @@ DumpSmramRange ( + SmramProfileGettingStatus = mSmramProfileGettingStatus; + mSmramProfileGettingStatus = TRUE; + +- DEBUG ((EFI_D_INFO, "FullSmramRange address - 0x%08x\n", mFullSmramRanges)); ++ DEBUG ((DEBUG_INFO, "FullSmramRange address - 0x%08x\n", mFullSmramRanges)); + +- DEBUG ((EFI_D_INFO, "======= SmramProfile begin =======\n")); ++ DEBUG ((DEBUG_INFO, "======= SmramProfile begin =======\n")); + +- DEBUG ((EFI_D_INFO, "FullSmramRange:\n")); ++ DEBUG ((DEBUG_INFO, "FullSmramRange:\n")); + for (Index = 0; Index < mFullSmramRangeCount; Index++) { +- DEBUG ((EFI_D_INFO, " FullSmramRange (0x%x)\n", Index)); +- DEBUG ((EFI_D_INFO, " PhysicalStart - 0x%016lx\n", mFullSmramRanges[Index].PhysicalStart)); +- DEBUG ((EFI_D_INFO, " CpuStart - 0x%016lx\n", mFullSmramRanges[Index].CpuStart)); +- DEBUG ((EFI_D_INFO, " PhysicalSize - 0x%016lx\n", mFullSmramRanges[Index].PhysicalSize)); +- DEBUG ((EFI_D_INFO, " RegionState - 0x%016lx\n", mFullSmramRanges[Index].RegionState)); ++ DEBUG ((DEBUG_INFO, " FullSmramRange (0x%x)\n", Index)); ++ DEBUG ((DEBUG_INFO, " PhysicalStart - 0x%016lx\n", mFullSmramRanges[Index].PhysicalStart)); ++ DEBUG ((DEBUG_INFO, " CpuStart - 0x%016lx\n", mFullSmramRanges[Index].CpuStart)); ++ DEBUG ((DEBUG_INFO, " PhysicalSize - 0x%016lx\n", mFullSmramRanges[Index].PhysicalSize)); ++ DEBUG ((DEBUG_INFO, " RegionState - 0x%016lx\n", mFullSmramRanges[Index].RegionState)); + } + +- DEBUG ((EFI_D_INFO, "======= SmramProfile end =======\n")); ++ DEBUG ((DEBUG_INFO, "======= SmramProfile end =======\n")); + + mSmramProfileGettingStatus = SmramProfileGettingStatus; + } +@@ -2444,20 +2444,20 @@ DumpFreePagesList ( + SmramProfileGettingStatus = mSmramProfileGettingStatus; + mSmramProfileGettingStatus = TRUE; + +- DEBUG ((EFI_D_INFO, "======= SmramProfile begin =======\n")); ++ DEBUG ((DEBUG_INFO, "======= SmramProfile begin =======\n")); + +- DEBUG ((EFI_D_INFO, "FreePagesList:\n")); ++ DEBUG ((DEBUG_INFO, "FreePagesList:\n")); + FreePageList = &mSmmMemoryMap; + for (Node = FreePageList->BackLink, Index = 0; + Node != FreePageList; + Node = Node->BackLink, Index++) { + Pages = BASE_CR (Node, FREE_PAGE_LIST, Link); +- DEBUG ((EFI_D_INFO, " Index - 0x%x\n", Index)); +- DEBUG ((EFI_D_INFO, " PhysicalStart - 0x%016lx\n", (PHYSICAL_ADDRESS) (UINTN) Pages)); +- DEBUG ((EFI_D_INFO, " NumberOfPages - 0x%08x\n", Pages->NumberOfPages)); ++ DEBUG ((DEBUG_INFO, " Index - 0x%x\n", Index)); ++ DEBUG ((DEBUG_INFO, " PhysicalStart - 0x%016lx\n", (PHYSICAL_ADDRESS) (UINTN) Pages)); ++ DEBUG ((DEBUG_INFO, " NumberOfPages - 0x%08x\n", Pages->NumberOfPages)); + } + +- DEBUG ((EFI_D_INFO, "======= SmramProfile end =======\n")); ++ DEBUG ((DEBUG_INFO, "======= SmramProfile end =======\n")); + + mSmramProfileGettingStatus = SmramProfileGettingStatus; + } +@@ -2646,21 +2646,21 @@ DumpSmramProfile ( + mSmramProfileGettingStatus = TRUE; + + Context = &ContextData->Context; +- DEBUG ((EFI_D_INFO, "======= SmramProfile begin =======\n")); +- DEBUG ((EFI_D_INFO, "MEMORY_PROFILE_CONTEXT\n")); ++ DEBUG ((DEBUG_INFO, "======= SmramProfile begin =======\n")); ++ DEBUG ((DEBUG_INFO, "MEMORY_PROFILE_CONTEXT\n")); + +- DEBUG ((EFI_D_INFO, " CurrentTotalUsage - 0x%016lx\n", Context->CurrentTotalUsage)); +- DEBUG ((EFI_D_INFO, " PeakTotalUsage - 0x%016lx\n", Context->PeakTotalUsage)); ++ DEBUG ((DEBUG_INFO, " CurrentTotalUsage - 0x%016lx\n", Context->CurrentTotalUsage)); ++ DEBUG ((DEBUG_INFO, " PeakTotalUsage - 0x%016lx\n", Context->PeakTotalUsage)); + for (TypeIndex = 0; TypeIndex < sizeof (Context->CurrentTotalUsageByType) / sizeof (Context->CurrentTotalUsageByType[0]); TypeIndex++) { + if ((Context->CurrentTotalUsageByType[TypeIndex] != 0) || + (Context->PeakTotalUsageByType[TypeIndex] != 0)) { +- DEBUG ((EFI_D_INFO, " CurrentTotalUsage[0x%02x] - 0x%016lx (%a)\n", TypeIndex, Context->CurrentTotalUsageByType[TypeIndex], ProfileMemoryTypeToStr (TypeIndex))); +- DEBUG ((EFI_D_INFO, " PeakTotalUsage[0x%02x] - 0x%016lx (%a)\n", TypeIndex, Context->PeakTotalUsageByType[TypeIndex], ProfileMemoryTypeToStr (TypeIndex))); ++ DEBUG ((DEBUG_INFO, " CurrentTotalUsage[0x%02x] - 0x%016lx (%a)\n", TypeIndex, Context->CurrentTotalUsageByType[TypeIndex], ProfileMemoryTypeToStr (TypeIndex))); ++ DEBUG ((DEBUG_INFO, " PeakTotalUsage[0x%02x] - 0x%016lx (%a)\n", TypeIndex, Context->PeakTotalUsageByType[TypeIndex], ProfileMemoryTypeToStr (TypeIndex))); + } + } +- DEBUG ((EFI_D_INFO, " TotalImageSize - 0x%016lx\n", Context->TotalImageSize)); +- DEBUG ((EFI_D_INFO, " ImageCount - 0x%08x\n", Context->ImageCount)); +- DEBUG ((EFI_D_INFO, " SequenceCount - 0x%08x\n", Context->SequenceCount)); ++ DEBUG ((DEBUG_INFO, " TotalImageSize - 0x%016lx\n", Context->TotalImageSize)); ++ DEBUG ((DEBUG_INFO, " ImageCount - 0x%08x\n", Context->ImageCount)); ++ DEBUG ((DEBUG_INFO, " SequenceCount - 0x%08x\n", Context->SequenceCount)); + + SmramDriverInfoList = ContextData->DriverInfoList; + for (DriverLink = SmramDriverInfoList->ForwardLink, DriverIndex = 0; +@@ -2673,23 +2673,23 @@ DumpSmramProfile ( + MEMORY_PROFILE_DRIVER_INFO_SIGNATURE + ); + DriverInfo = &DriverInfoData->DriverInfo; +- DEBUG ((EFI_D_INFO, " MEMORY_PROFILE_DRIVER_INFO (0x%x)\n", DriverIndex)); +- DEBUG ((EFI_D_INFO, " FileName - %g\n", &DriverInfo->FileName)); +- DEBUG ((EFI_D_INFO, " ImageBase - 0x%016lx\n", DriverInfo->ImageBase)); +- DEBUG ((EFI_D_INFO, " ImageSize - 0x%016lx\n", DriverInfo->ImageSize)); +- DEBUG ((EFI_D_INFO, " EntryPoint - 0x%016lx\n", DriverInfo->EntryPoint)); +- DEBUG ((EFI_D_INFO, " ImageSubsystem - 0x%04x\n", DriverInfo->ImageSubsystem)); +- DEBUG ((EFI_D_INFO, " FileType - 0x%02x\n", DriverInfo->FileType)); +- DEBUG ((EFI_D_INFO, " CurrentUsage - 0x%016lx\n", DriverInfo->CurrentUsage)); +- DEBUG ((EFI_D_INFO, " PeakUsage - 0x%016lx\n", DriverInfo->PeakUsage)); ++ DEBUG ((DEBUG_INFO, " MEMORY_PROFILE_DRIVER_INFO (0x%x)\n", DriverIndex)); ++ DEBUG ((DEBUG_INFO, " FileName - %g\n", &DriverInfo->FileName)); ++ DEBUG ((DEBUG_INFO, " ImageBase - 0x%016lx\n", DriverInfo->ImageBase)); ++ DEBUG ((DEBUG_INFO, " ImageSize - 0x%016lx\n", DriverInfo->ImageSize)); ++ DEBUG ((DEBUG_INFO, " EntryPoint - 0x%016lx\n", DriverInfo->EntryPoint)); ++ DEBUG ((DEBUG_INFO, " ImageSubsystem - 0x%04x\n", DriverInfo->ImageSubsystem)); ++ DEBUG ((DEBUG_INFO, " FileType - 0x%02x\n", DriverInfo->FileType)); ++ DEBUG ((DEBUG_INFO, " CurrentUsage - 0x%016lx\n", DriverInfo->CurrentUsage)); ++ DEBUG ((DEBUG_INFO, " PeakUsage - 0x%016lx\n", DriverInfo->PeakUsage)); + for (TypeIndex = 0; TypeIndex < sizeof (DriverInfo->CurrentUsageByType) / sizeof (DriverInfo->CurrentUsageByType[0]); TypeIndex++) { + if ((DriverInfo->CurrentUsageByType[TypeIndex] != 0) || + (DriverInfo->PeakUsageByType[TypeIndex] != 0)) { +- DEBUG ((EFI_D_INFO, " CurrentUsage[0x%02x] - 0x%016lx (%a)\n", TypeIndex, DriverInfo->CurrentUsageByType[TypeIndex], ProfileMemoryTypeToStr (TypeIndex))); +- DEBUG ((EFI_D_INFO, " PeakUsage[0x%02x] - 0x%016lx (%a)\n", TypeIndex, DriverInfo->PeakUsageByType[TypeIndex], ProfileMemoryTypeToStr (TypeIndex))); ++ DEBUG ((DEBUG_INFO, " CurrentUsage[0x%02x] - 0x%016lx (%a)\n", TypeIndex, DriverInfo->CurrentUsageByType[TypeIndex], ProfileMemoryTypeToStr (TypeIndex))); ++ DEBUG ((DEBUG_INFO, " PeakUsage[0x%02x] - 0x%016lx (%a)\n", TypeIndex, DriverInfo->PeakUsageByType[TypeIndex], ProfileMemoryTypeToStr (TypeIndex))); + } + } +- DEBUG ((EFI_D_INFO, " AllocRecordCount - 0x%08x\n", DriverInfo->AllocRecordCount)); ++ DEBUG ((DEBUG_INFO, " AllocRecordCount - 0x%08x\n", DriverInfo->AllocRecordCount)); + + AllocInfoList = DriverInfoData->AllocInfoList; + for (AllocLink = AllocInfoList->ForwardLink, AllocIndex = 0; +@@ -2702,25 +2702,25 @@ DumpSmramProfile ( + MEMORY_PROFILE_ALLOC_INFO_SIGNATURE + ); + AllocInfo = &AllocInfoData->AllocInfo; +- DEBUG ((EFI_D_INFO, " MEMORY_PROFILE_ALLOC_INFO (0x%x)\n", AllocIndex)); +- DEBUG ((EFI_D_INFO, " CallerAddress - 0x%016lx (Offset: 0x%08x)\n", AllocInfo->CallerAddress, AllocInfo->CallerAddress - DriverInfo->ImageBase)); +- DEBUG ((EFI_D_INFO, " SequenceId - 0x%08x\n", AllocInfo->SequenceId)); ++ DEBUG ((DEBUG_INFO, " MEMORY_PROFILE_ALLOC_INFO (0x%x)\n", AllocIndex)); ++ DEBUG ((DEBUG_INFO, " CallerAddress - 0x%016lx (Offset: 0x%08x)\n", AllocInfo->CallerAddress, AllocInfo->CallerAddress - DriverInfo->ImageBase)); ++ DEBUG ((DEBUG_INFO, " SequenceId - 0x%08x\n", AllocInfo->SequenceId)); + if ((AllocInfo->Action & MEMORY_PROFILE_ACTION_USER_DEFINED_MASK) != 0) { + if (AllocInfoData->ActionString != NULL) { +- DEBUG ((EFI_D_INFO, " Action - 0x%08x (%a)\n", AllocInfo->Action, AllocInfoData->ActionString)); ++ DEBUG ((DEBUG_INFO, " Action - 0x%08x (%a)\n", AllocInfo->Action, AllocInfoData->ActionString)); + } else { +- DEBUG ((EFI_D_INFO, " Action - 0x%08x (UserDefined-0x%08x)\n", AllocInfo->Action, AllocInfo->Action)); ++ DEBUG ((DEBUG_INFO, " Action - 0x%08x (UserDefined-0x%08x)\n", AllocInfo->Action, AllocInfo->Action)); + } + } else { +- DEBUG ((EFI_D_INFO, " Action - 0x%08x (%a)\n", AllocInfo->Action, ProfileActionToStr (AllocInfo->Action))); ++ DEBUG ((DEBUG_INFO, " Action - 0x%08x (%a)\n", AllocInfo->Action, ProfileActionToStr (AllocInfo->Action))); + } +- DEBUG ((EFI_D_INFO, " MemoryType - 0x%08x (%a)\n", AllocInfo->MemoryType, ProfileMemoryTypeToStr (AllocInfo->MemoryType))); +- DEBUG ((EFI_D_INFO, " Buffer - 0x%016lx\n", AllocInfo->Buffer)); +- DEBUG ((EFI_D_INFO, " Size - 0x%016lx\n", AllocInfo->Size)); ++ DEBUG ((DEBUG_INFO, " MemoryType - 0x%08x (%a)\n", AllocInfo->MemoryType, ProfileMemoryTypeToStr (AllocInfo->MemoryType))); ++ DEBUG ((DEBUG_INFO, " Buffer - 0x%016lx\n", AllocInfo->Buffer)); ++ DEBUG ((DEBUG_INFO, " Size - 0x%016lx\n", AllocInfo->Size)); + } + } + +- DEBUG ((EFI_D_INFO, "======= SmramProfile end =======\n")); ++ DEBUG ((DEBUG_INFO, "======= SmramProfile end =======\n")); + + mSmramProfileGettingStatus = SmramProfileGettingStatus; + } +@@ -2743,4 +2743,3 @@ DumpSmramInfo ( + } + ); + } +- +diff --git a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c +index 53f0ef3d19..45d0fbb8a1 100644 +--- a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c ++++ b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c +@@ -611,7 +611,7 @@ BOpt_GetOptionNumber ( + continue; + } + UnicodeSPrint (StrTemp, sizeof (StrTemp), L"%s%04x", Type, (UINTN) OptionNumber); +- DEBUG((EFI_D_ERROR,"Option = %s\n", StrTemp)); ++ DEBUG((DEBUG_ERROR,"Option = %s\n", StrTemp)); + GetEfiGlobalVariable2 (StrTemp, (VOID **) &OptionBuffer, &OptionSize); + if (NULL == OptionBuffer) { + // +@@ -1002,4 +1002,3 @@ CreateDriverOptionFromFile ( + { + return ReSendForm(FilePath, FORM_DRV_ADD_FILE_ID); + } +- +diff --git a/MdeModulePkg/Library/BootManagerUiLib/BootManager.c b/MdeModulePkg/Library/BootManagerUiLib/BootManager.c +index 4b2c4c77a1..e378ac52b5 100644 +--- a/MdeModulePkg/Library/BootManagerUiLib/BootManager.c ++++ b/MdeModulePkg/Library/BootManagerUiLib/BootManager.c +@@ -380,7 +380,7 @@ GroupMultipleLegacyBootOption4SameType ( + // + // Legacy Boot Option + // +- DEBUG ((EFI_D_ERROR, "[BootManagerDxe] ==== Find Legacy Boot Option 0x%x! ==== \n", Index)); ++ DEBUG ((DEBUG_ERROR, "[BootManagerDxe] ==== Find Legacy Boot Option 0x%x! ==== \n", Index)); + ASSERT ((((BBS_BBS_DEVICE_PATH *) BootOption.FilePath)->DeviceType & 0xF) < ARRAY_SIZE (DeviceTypeIndex)); + NextIndex = &DeviceTypeIndex[((BBS_BBS_DEVICE_PATH *) BootOption.FilePath)->DeviceType & 0xF]; + +@@ -926,4 +926,3 @@ BootManagerUiLibDestructor ( + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Library/DxeIpmiLibIpmiProtocol/DxeIpmiLibIpmiProtocol.c b/MdeModulePkg/Library/DxeIpmiLibIpmiProtocol/DxeIpmiLibIpmiProtocol.c +index 22b96b05da..0ee7095aba 100644 +--- a/MdeModulePkg/Library/DxeIpmiLibIpmiProtocol/DxeIpmiLibIpmiProtocol.c ++++ b/MdeModulePkg/Library/DxeIpmiLibIpmiProtocol/DxeIpmiLibIpmiProtocol.c +@@ -54,7 +54,7 @@ IpmiSubmitCommand ( + // + // Dxe Ipmi Protocol is not installed. So, IPMI device is not present. + // +- DEBUG ((EFI_D_ERROR, "IpmiSubmitCommand in Dxe Phase under SMS Status - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "IpmiSubmitCommand in Dxe Phase under SMS Status - %r\n", Status)); + return EFI_NOT_FOUND; + } + } +diff --git a/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c b/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c +index ff7979c962..a71221d7de 100644 +--- a/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c ++++ b/MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.c +@@ -209,17 +209,17 @@ FrameBufferBltLibVideoFill ( + // BltBuffer to Video: Source is BltBuffer, destination is Video + // + if (DestinationY + Height > Configure->Height) { +- DEBUG ((EFI_D_VERBOSE, "VideoFill: Past screen (Y)\n")); ++ DEBUG ((DEBUG_VERBOSE, "VideoFill: Past screen (Y)\n")); + return RETURN_INVALID_PARAMETER; + } + + if (DestinationX + Width > Configure->Width) { +- DEBUG ((EFI_D_VERBOSE, "VideoFill: Past screen (X)\n")); ++ DEBUG ((DEBUG_VERBOSE, "VideoFill: Past screen (X)\n")); + return RETURN_INVALID_PARAMETER; + } + + if (Width == 0 || Height == 0) { +- DEBUG ((EFI_D_VERBOSE, "VideoFill: Width or Height is 0\n")); ++ DEBUG ((DEBUG_VERBOSE, "VideoFill: Width or Height is 0\n")); + return RETURN_INVALID_PARAMETER; + } + +@@ -235,7 +235,7 @@ FrameBufferBltLibVideoFill ( + (((Uint32 << Configure->PixelShl[2]) >> Configure->PixelShr[2]) & + Configure->PixelMasks.BlueMask) + ); +- DEBUG ((EFI_D_VERBOSE, "VideoFill: color=0x%x, wide-fill=0x%x\n", ++ DEBUG ((DEBUG_VERBOSE, "VideoFill: color=0x%x, wide-fill=0x%x\n", + Uint32, WideFill)); + + // +@@ -267,7 +267,7 @@ FrameBufferBltLibVideoFill ( + } + + if (UseWideFill && (DestinationX == 0) && (Width == Configure->PixelsPerScanLine)) { +- DEBUG ((EFI_D_VERBOSE, "VideoFill (wide, one-shot)\n")); ++ DEBUG ((DEBUG_VERBOSE, "VideoFill (wide, one-shot)\n")); + Offset = DestinationY * Configure->PixelsPerScanLine; + Offset = Configure->BytesPerPixel * Offset; + Destination = Configure->FrameBuffer + Offset; +@@ -288,7 +288,7 @@ FrameBufferBltLibVideoFill ( + Destination = Configure->FrameBuffer + Offset; + + if (UseWideFill && (((UINTN) Destination & 7) == 0)) { +- DEBUG ((EFI_D_VERBOSE, "VideoFill (wide)\n")); ++ DEBUG ((DEBUG_VERBOSE, "VideoFill (wide)\n")); + SizeInBytes = WidthInBytes; + if (SizeInBytes >= 8) { + SetMem64 (Destination, SizeInBytes & ~7, WideFill); +@@ -299,7 +299,7 @@ FrameBufferBltLibVideoFill ( + CopyMem (Destination, &WideFill, SizeInBytes); + } + } else { +- DEBUG ((EFI_D_VERBOSE, "VideoFill (not wide)\n")); ++ DEBUG ((DEBUG_VERBOSE, "VideoFill (not wide)\n")); + if (!LineBufferReady) { + CopyMem (Configure->LineBuffer, &WideFill, Configure->BytesPerPixel); + for (IndexX = 1; IndexX < Width; ) { +diff --git a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.c b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.c +index 0bf07e3492..0b86ef3ad5 100644 +--- a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.c ++++ b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.c +@@ -73,24 +73,24 @@ PciHostBridgeResourceConflict ( + { + EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor; + UINTN RootBridgeIndex; +- DEBUG ((EFI_D_ERROR, "PciHostBridge: Resource conflict happens!\n")); ++ DEBUG ((DEBUG_ERROR, "PciHostBridge: Resource conflict happens!\n")); + + RootBridgeIndex = 0; + Descriptor = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *) Configuration; + while (Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) { +- DEBUG ((EFI_D_ERROR, "RootBridge[%d]:\n", RootBridgeIndex++)); ++ DEBUG ((DEBUG_ERROR, "RootBridge[%d]:\n", RootBridgeIndex++)); + for (; Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR; Descriptor++) { + ASSERT (Descriptor->ResType < + (sizeof (mPciHostBridgeLibAcpiAddressSpaceTypeStr) / + sizeof (mPciHostBridgeLibAcpiAddressSpaceTypeStr[0]) + ) + ); +- DEBUG ((EFI_D_ERROR, " %s: Length/Alignment = 0x%lx / 0x%lx\n", ++ DEBUG ((DEBUG_ERROR, " %s: Length/Alignment = 0x%lx / 0x%lx\n", + mPciHostBridgeLibAcpiAddressSpaceTypeStr[Descriptor->ResType], + Descriptor->AddrLen, Descriptor->AddrRangeMax + )); + if (Descriptor->ResType == ACPI_ADDRESS_SPACE_TYPE_MEM) { +- DEBUG ((EFI_D_ERROR, " Granularity/SpecificFlag = %ld / %02x%s\n", ++ DEBUG ((DEBUG_ERROR, " Granularity/SpecificFlag = %ld / %02x%s\n", + Descriptor->AddrSpaceGranularity, Descriptor->SpecificFlag, + ((Descriptor->SpecificFlag & + EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE +diff --git a/MdeModulePkg/Library/PeiIpmiLibIpmiPpi/PeiIpmiLibIpmiPpi.c b/MdeModulePkg/Library/PeiIpmiLibIpmiPpi/PeiIpmiLibIpmiPpi.c +index fa6b30905f..648af08761 100644 +--- a/MdeModulePkg/Library/PeiIpmiLibIpmiPpi/PeiIpmiLibIpmiPpi.c ++++ b/MdeModulePkg/Library/PeiIpmiLibIpmiPpi/PeiIpmiLibIpmiPpi.c +@@ -55,7 +55,7 @@ IpmiSubmitCommand ( + // + // Ipmi Ppi is not installed. So, IPMI device is not present. + // +- DEBUG ((EFI_D_ERROR, "IpmiSubmitCommand in Pei Phase under SMS Status - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "IpmiSubmitCommand in Pei Phase under SMS Status - %r\n", Status)); + return EFI_NOT_FOUND; + } + +diff --git a/MdeModulePkg/Library/PeiReportStatusCodeLib/ReportStatusCodeLib.c b/MdeModulePkg/Library/PeiReportStatusCodeLib/ReportStatusCodeLib.c +index 5ea2760dd5..43b4d49d30 100644 +--- a/MdeModulePkg/Library/PeiReportStatusCodeLib/ReportStatusCodeLib.c ++++ b/MdeModulePkg/Library/PeiReportStatusCodeLib/ReportStatusCodeLib.c +@@ -468,7 +468,7 @@ ReportStatusCodeEx ( + // The local variable Buffer not large enough to hold the extended data associated + // with the status code being reported. + // +- DEBUG ((EFI_D_ERROR, "Status code extended data is too large to be reported!\n")); ++ DEBUG ((DEBUG_ERROR, "Status code extended data is too large to be reported!\n")); + return EFI_OUT_OF_RESOURCES; + } + StatusCodeData = (EFI_STATUS_CODE_DATA *) Buffer; +diff --git a/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptExecute.c b/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptExecute.c +index 038dd20b90..f7fb787cd5 100644 +--- a/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptExecute.c ++++ b/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptExecute.c +@@ -62,51 +62,51 @@ InternalSmbusExecute ( + + switch (Operation) { + case EfiSmbusQuickRead: +- DEBUG ((EFI_D_INFO, "EfiSmbusQuickRead - 0x%08x\n", SmbusAddress)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusQuickRead - 0x%08x\n", SmbusAddress)); + SmBusQuickRead (SmbusAddress, &Status); + break; + case EfiSmbusQuickWrite: +- DEBUG ((EFI_D_INFO, "EfiSmbusQuickWrite - 0x%08x\n", SmbusAddress)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusQuickWrite - 0x%08x\n", SmbusAddress)); + SmBusQuickWrite (SmbusAddress, &Status); + break; + case EfiSmbusReceiveByte: +- DEBUG ((EFI_D_INFO, "EfiSmbusReceiveByte - 0x%08x\n", SmbusAddress)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusReceiveByte - 0x%08x\n", SmbusAddress)); + SmBusReceiveByte (SmbusAddress, &Status); + break; + case EfiSmbusSendByte: +- DEBUG ((EFI_D_INFO, "EfiSmbusSendByte - 0x%08x (0x%02x)\n", SmbusAddress, (UINTN)*(UINT8 *) Buffer)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusSendByte - 0x%08x (0x%02x)\n", SmbusAddress, (UINTN)*(UINT8 *) Buffer)); + SmBusSendByte (SmbusAddress, *(UINT8 *) Buffer, &Status); + break; + case EfiSmbusReadByte: +- DEBUG ((EFI_D_INFO, "EfiSmbusReadByte - 0x%08x\n", SmbusAddress)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusReadByte - 0x%08x\n", SmbusAddress)); + SmBusReadDataByte (SmbusAddress, &Status); + break; + case EfiSmbusWriteByte: +- DEBUG ((EFI_D_INFO, "EfiSmbusWriteByte - 0x%08x (0x%02x)\n", SmbusAddress, (UINTN)*(UINT8 *) Buffer)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusWriteByte - 0x%08x (0x%02x)\n", SmbusAddress, (UINTN)*(UINT8 *) Buffer)); + SmBusWriteDataByte (SmbusAddress, *(UINT8 *) Buffer, &Status); + break; + case EfiSmbusReadWord: +- DEBUG ((EFI_D_INFO, "EfiSmbusReadWord - 0x%08x\n", SmbusAddress)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusReadWord - 0x%08x\n", SmbusAddress)); + SmBusReadDataWord (SmbusAddress, &Status); + break; + case EfiSmbusWriteWord: +- DEBUG ((EFI_D_INFO, "EfiSmbusWriteWord - 0x%08x (0x%04x)\n", SmbusAddress, (UINTN)*(UINT16 *) Buffer)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusWriteWord - 0x%08x (0x%04x)\n", SmbusAddress, (UINTN)*(UINT16 *) Buffer)); + SmBusWriteDataWord (SmbusAddress, *(UINT16 *) Buffer, &Status); + break; + case EfiSmbusProcessCall: +- DEBUG ((EFI_D_INFO, "EfiSmbusProcessCall - 0x%08x (0x%04x)\n", SmbusAddress, (UINTN)*(UINT16 *) Buffer)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusProcessCall - 0x%08x (0x%04x)\n", SmbusAddress, (UINTN)*(UINT16 *) Buffer)); + SmBusProcessCall (SmbusAddress, *(UINT16 *) Buffer, &Status); + break; + case EfiSmbusReadBlock: +- DEBUG ((EFI_D_INFO, "EfiSmbusReadBlock - 0x%08x\n", SmbusAddress)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusReadBlock - 0x%08x\n", SmbusAddress)); + SmBusReadBlock (SmbusAddress, WorkBuffer, &Status); + break; + case EfiSmbusWriteBlock: +- DEBUG ((EFI_D_INFO, "EfiSmbusWriteBlock - 0x%08x\n", SmbusAddress)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusWriteBlock - 0x%08x\n", SmbusAddress)); + SmBusWriteBlock ((SmbusAddress + SMBUS_LIB_ADDRESS (0, 0, (*Length), FALSE)), Buffer, &Status); + break; + case EfiSmbusBWBRProcessCall: +- DEBUG ((EFI_D_INFO, "EfiSmbusBWBRProcessCall - 0x%08x\n", SmbusAddress)); ++ DEBUG ((DEBUG_INFO, "EfiSmbusBWBRProcessCall - 0x%08x\n", SmbusAddress)); + SmBusBlockProcessCall ((SmbusAddress + SMBUS_LIB_ADDRESS (0, 0, (*Length), FALSE)), Buffer, WorkBuffer, &Status); + break; + default: +@@ -206,54 +206,54 @@ ScriptIoRead ( + switch (Width) { + + case S3BootScriptWidthUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint8 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint8 - 0x%08x\n", (UINTN) Address)); + *Out.Uint8 = IoRead8 ((UINTN) Address); + break; + case S3BootScriptWidthFifoUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint8 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint8 - 0x%08x\n", (UINTN) Address)); + *Out.Uint8 = IoRead8 ((UINTN) Address); + break; + case S3BootScriptWidthFillUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint8 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint8 - 0x%08x\n", (UINTN) Address)); + *Out.Uint8 = IoRead8 ((UINTN) Address); + break; + + case S3BootScriptWidthUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint16 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint16 - 0x%08x\n", (UINTN) Address)); + *Out.Uint16 = IoRead16 ((UINTN) Address); + break; + case S3BootScriptWidthFifoUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint16 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint16 - 0x%08x\n", (UINTN) Address)); + *Out.Uint16 = IoRead16 ((UINTN) Address); + break; + case S3BootScriptWidthFillUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint16 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint16 - 0x%08x\n", (UINTN) Address)); + *Out.Uint16 = IoRead16 ((UINTN) Address); + break; + + case S3BootScriptWidthUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint32 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint32 - 0x%08x\n", (UINTN) Address)); + *Out.Uint32 = IoRead32 ((UINTN) Address); + break; + case S3BootScriptWidthFifoUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint32 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint32 - 0x%08x\n", (UINTN) Address)); + *Out.Uint32 = IoRead32 ((UINTN) Address); + break; + case S3BootScriptWidthFillUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint32 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint32 - 0x%08x\n", (UINTN) Address)); + *Out.Uint32 = IoRead32 ((UINTN) Address); + break; + + case S3BootScriptWidthUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint64 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint64 - 0x%08x\n", (UINTN) Address)); + *Out.Uint64 = IoRead64 ((UINTN) Address); + break; + case S3BootScriptWidthFifoUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint64 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint64 - 0x%08x\n", (UINTN) Address)); + *Out.Uint64 = IoRead64 ((UINTN) Address); + break; + case S3BootScriptWidthFillUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint64 - 0x%08x\n", (UINTN) Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint64 - 0x%08x\n", (UINTN) Address)); + *Out.Uint64 = IoRead64 ((UINTN) Address); + break; + +@@ -313,51 +313,51 @@ ScriptIoWrite ( + for (; Count > 0; Count--, Address += AddressStride, In.Buf += BufferStride) { + switch (Width) { + case S3BootScriptWidthUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint8 - 0x%08x (0x%02x)\n", (UINTN)Address, (UINTN)*In.Uint8)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint8 - 0x%08x (0x%02x)\n", (UINTN)Address, (UINTN)*In.Uint8)); + IoWrite8 ((UINTN) Address, *In.Uint8); + break; + case S3BootScriptWidthFifoUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint8 - 0x%08x (0x%02x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint8)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint8 - 0x%08x (0x%02x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint8)); + IoWrite8 ((UINTN) OriginalAddress, *In.Uint8); + break; + case S3BootScriptWidthFillUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint8 - 0x%08x (0x%02x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint8)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint8 - 0x%08x (0x%02x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint8)); + IoWrite8 ((UINTN) Address, *OriginalIn.Uint8); + break; + case S3BootScriptWidthUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint16 - 0x%08x (0x%04x)\n", (UINTN)Address, (UINTN)*In.Uint16)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint16 - 0x%08x (0x%04x)\n", (UINTN)Address, (UINTN)*In.Uint16)); + IoWrite16 ((UINTN) Address, *In.Uint16); + break; + case S3BootScriptWidthFifoUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint16 - 0x%08x (0x%04x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint16)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint16 - 0x%08x (0x%04x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint16)); + IoWrite16 ((UINTN) OriginalAddress, *In.Uint16); + break; + case S3BootScriptWidthFillUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint16 - 0x%08x (0x%04x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint16)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint16 - 0x%08x (0x%04x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint16)); + IoWrite16 ((UINTN) Address, *OriginalIn.Uint16); + break; + case S3BootScriptWidthUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint32 - 0x%08x (0x%08x)\n", (UINTN)Address, (UINTN)*In.Uint32)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint32 - 0x%08x (0x%08x)\n", (UINTN)Address, (UINTN)*In.Uint32)); + IoWrite32 ((UINTN) Address, *In.Uint32); + break; + case S3BootScriptWidthFifoUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint32 - 0x%08x (0x%08x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint32)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint32 - 0x%08x (0x%08x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint32)); + IoWrite32 ((UINTN) OriginalAddress, *In.Uint32); + break; + case S3BootScriptWidthFillUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint32 - 0x%08x (0x%08x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint32)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint32 - 0x%08x (0x%08x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint32)); + IoWrite32 ((UINTN) Address, *OriginalIn.Uint32); + break; + case S3BootScriptWidthUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint64 - 0x%08x (0x%016lx)\n", (UINTN)Address, *In.Uint64)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint64 - 0x%08x (0x%016lx)\n", (UINTN)Address, *In.Uint64)); + IoWrite64 ((UINTN) Address, *In.Uint64); + break; + case S3BootScriptWidthFifoUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint64 - 0x%08x (0x%016lx)\n", (UINTN)OriginalAddress, *In.Uint64)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint64 - 0x%08x (0x%016lx)\n", (UINTN)OriginalAddress, *In.Uint64)); + IoWrite64 ((UINTN) OriginalAddress, *In.Uint64); + break; + case S3BootScriptWidthFillUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint64 - 0x%08x (0x%016lx)\n", (UINTN)Address, *OriginalIn.Uint64)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint64 - 0x%08x (0x%016lx)\n", (UINTN)Address, *OriginalIn.Uint64)); + IoWrite64 ((UINTN) Address, *OriginalIn.Uint64); + break; + default: +@@ -397,7 +397,7 @@ BootScriptExecuteIoWrite ( + Count = IoWrite.Count; + Buffer = Script + sizeof (EFI_BOOT_SCRIPT_IO_WRITE); + +- DEBUG ((EFI_D_INFO, "BootScriptExecuteIoWrite - 0x%08x, 0x%08x, 0x%08x\n", (UINTN)Address, Count, (UINTN)Width)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteIoWrite - 0x%08x, 0x%08x, 0x%08x\n", (UINTN)Address, Count, (UINTN)Width)); + return ScriptIoWrite(Width, Address, Count, Buffer); + } + /** +@@ -441,54 +441,54 @@ ScriptMemoryRead ( + for (; Count > 0; Count--, Address += AddressStride, Out.Buf += BufferStride) { + switch (Width) { + case S3BootScriptWidthUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint8 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint8 - 0x%08x\n", (UINTN)Address)); + *Out.Uint8 = MmioRead8 ((UINTN) Address); + break; + case S3BootScriptWidthFifoUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint8 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint8 - 0x%08x\n", (UINTN)Address)); + *Out.Uint8 = MmioRead8 ((UINTN) Address); + break; + case S3BootScriptWidthFillUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint8 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint8 - 0x%08x\n", (UINTN)Address)); + *Out.Uint8 = MmioRead8 ((UINTN) Address); + break; + + case S3BootScriptWidthUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint16 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint16 - 0x%08x\n", (UINTN)Address)); + *Out.Uint16 = MmioRead16 ((UINTN) Address); + break; + case S3BootScriptWidthFifoUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint16 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint16 - 0x%08x\n", (UINTN)Address)); + *Out.Uint16 = MmioRead16 ((UINTN) Address); + break; + case S3BootScriptWidthFillUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint16 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint16 - 0x%08x\n", (UINTN)Address)); + *Out.Uint16 = MmioRead16 ((UINTN) Address); + break; + + case S3BootScriptWidthUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint32 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint32 - 0x%08x\n", (UINTN)Address)); + *Out.Uint32 = MmioRead32 ((UINTN) Address); + break; + case S3BootScriptWidthFifoUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint32 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint32 - 0x%08x\n", (UINTN)Address)); + *Out.Uint32 = MmioRead32 ((UINTN) Address); + break; + case S3BootScriptWidthFillUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint32 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint32 - 0x%08x\n", (UINTN)Address)); + *Out.Uint32 = MmioRead32 ((UINTN) Address); + break; + + case S3BootScriptWidthUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint64 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint64 - 0x%08x\n", (UINTN)Address)); + *Out.Uint64 = MmioRead64 ((UINTN) Address); + break; + case S3BootScriptWidthFifoUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint64 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint64 - 0x%08x\n", (UINTN)Address)); + *Out.Uint64 = MmioRead64 ((UINTN) Address); + break; + case S3BootScriptWidthFillUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint64 - 0x%08x\n", (UINTN)Address)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint64 - 0x%08x\n", (UINTN)Address)); + *Out.Uint64 = MmioRead64 ((UINTN) Address); + break; + +@@ -544,51 +544,51 @@ ScriptMemoryWrite ( + for (; Count > 0; Count--, Address += AddressStride, In.Buf += BufferStride) { + switch (Width) { + case S3BootScriptWidthUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint8 - 0x%08x (0x%02x)\n", (UINTN)Address, (UINTN)*In.Uint8)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint8 - 0x%08x (0x%02x)\n", (UINTN)Address, (UINTN)*In.Uint8)); + MmioWrite8 ((UINTN) Address, *In.Uint8); + break; + case S3BootScriptWidthFifoUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint8 - 0x%08x (0x%02x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint8)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint8 - 0x%08x (0x%02x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint8)); + MmioWrite8 ((UINTN) OriginalAddress, *In.Uint8); + break; + case S3BootScriptWidthFillUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint8 - 0x%08x (0x%02x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint8)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint8 - 0x%08x (0x%02x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint8)); + MmioWrite8 ((UINTN) Address, *OriginalIn.Uint8); + break; + case S3BootScriptWidthUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint16 - 0x%08x (0x%04x)\n", (UINTN)Address, (UINTN)*In.Uint16)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint16 - 0x%08x (0x%04x)\n", (UINTN)Address, (UINTN)*In.Uint16)); + MmioWrite16 ((UINTN) Address, *In.Uint16); + break; + case S3BootScriptWidthFifoUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint16 - 0x%08x (0x%04x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint16)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint16 - 0x%08x (0x%04x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint16)); + MmioWrite16 ((UINTN) OriginalAddress, *In.Uint16); + break; + case S3BootScriptWidthFillUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint16 - 0x%08x (0x%04x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint16)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint16 - 0x%08x (0x%04x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint16)); + MmioWrite16 ((UINTN) Address, *OriginalIn.Uint16); + break; + case S3BootScriptWidthUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint32 - 0x%08x (0x%08x)\n", (UINTN)Address, (UINTN)*In.Uint32)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint32 - 0x%08x (0x%08x)\n", (UINTN)Address, (UINTN)*In.Uint32)); + MmioWrite32 ((UINTN) Address, *In.Uint32); + break; + case S3BootScriptWidthFifoUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint32 - 0x%08x (0x%08x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint32)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint32 - 0x%08x (0x%08x)\n", (UINTN)OriginalAddress, (UINTN)*In.Uint32)); + MmioWrite32 ((UINTN) OriginalAddress, *In.Uint32); + break; + case S3BootScriptWidthFillUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint32 - 0x%08x (0x%08x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint32)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint32 - 0x%08x (0x%08x)\n", (UINTN)Address, (UINTN)*OriginalIn.Uint32)); + MmioWrite32 ((UINTN) Address, *OriginalIn.Uint32); + break; + case S3BootScriptWidthUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint64 - 0x%08x (0x%016lx)\n", (UINTN)Address, *In.Uint64)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint64 - 0x%08x (0x%016lx)\n", (UINTN)Address, *In.Uint64)); + MmioWrite64 ((UINTN) Address, *In.Uint64); + break; + case S3BootScriptWidthFifoUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint64 - 0x%08x (0x%016lx)\n", (UINTN)OriginalAddress, *In.Uint64)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint64 - 0x%08x (0x%016lx)\n", (UINTN)OriginalAddress, *In.Uint64)); + MmioWrite64 ((UINTN) OriginalAddress, *In.Uint64); + break; + case S3BootScriptWidthFillUint64: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint64 - 0x%08x (0x%016lx)\n", (UINTN)Address, *OriginalIn.Uint64)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint64 - 0x%08x (0x%016lx)\n", (UINTN)Address, *OriginalIn.Uint64)); + MmioWrite64 ((UINTN) Address, *OriginalIn.Uint64); + break; + default: +@@ -627,7 +627,7 @@ BootScriptExecuteMemoryWrite ( + Count = MemWrite.Count; + Buffer = Script + sizeof(EFI_BOOT_SCRIPT_MEM_WRITE); + +- DEBUG ((EFI_D_INFO, "BootScriptExecuteMemoryWrite - 0x%08x, 0x%08x, 0x%08x\n", (UINTN)Address, Count, (UINTN)Width)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteMemoryWrite - 0x%08x, 0x%08x, 0x%08x\n", (UINTN)Address, Count, (UINTN)Width)); + return ScriptMemoryWrite (Width,Address, Count, Buffer); + + } +@@ -674,41 +674,41 @@ ScriptPciCfg2Read ( + for (; Count > 0; Count--, PciAddress += AddressStride, Out.Buf += BufferStride) { + switch (Width) { + case S3BootScriptWidthUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint8 - 0x%016lx\n", PciAddress)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint8 - 0x%016lx\n", PciAddress)); + *Out.Uint8 = PciSegmentRead8 (PciAddress); + break; + case S3BootScriptWidthFifoUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint8 - 0x%016lx\n", PciAddress)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint8 - 0x%016lx\n", PciAddress)); + *Out.Uint8 = PciSegmentRead8 (PciAddress); + break; + case S3BootScriptWidthFillUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint8 - 0x%016lx\n", PciAddress)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint8 - 0x%016lx\n", PciAddress)); + *Out.Uint8 = PciSegmentRead8 (PciAddress); + break; + + case S3BootScriptWidthUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint16 - 0x%016lx\n", PciAddress)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint16 - 0x%016lx\n", PciAddress)); + *Out.Uint16 = PciSegmentRead16 (PciAddress); + break; + case S3BootScriptWidthFifoUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint16 - 0x%016lx\n", PciAddress)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint16 - 0x%016lx\n", PciAddress)); + *Out.Uint16 = PciSegmentRead16 (PciAddress); + break; + case S3BootScriptWidthFillUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint16 - 0x%016lx\n", PciAddress)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint16 - 0x%016lx\n", PciAddress)); + *Out.Uint16 = PciSegmentRead16 (PciAddress); + break; + + case S3BootScriptWidthUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint32 - 0x%016lx\n", PciAddress)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint32 - 0x%016lx\n", PciAddress)); + *Out.Uint32 = PciSegmentRead32 (PciAddress); + break; + case S3BootScriptWidthFifoUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint32 - 0x%016lx\n", PciAddress)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint32 - 0x%016lx\n", PciAddress)); + *Out.Uint32 = PciSegmentRead32 (PciAddress); + break; + case S3BootScriptWidthFillUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint32 - 0x%016lx\n", PciAddress)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint32 - 0x%016lx\n", PciAddress)); + *Out.Uint32 = PciSegmentRead32 (PciAddress); + break; + +@@ -766,39 +766,39 @@ ScriptPciCfg2Write ( + for (; Count > 0; Count--, PciAddress += AddressStride, In.Buf += BufferStride) { + switch (Width) { + case S3BootScriptWidthUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint8 - 0x%016lx (0x%02x)\n", PciAddress, (UINTN)*In.Uint8)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint8 - 0x%016lx (0x%02x)\n", PciAddress, (UINTN)*In.Uint8)); + PciSegmentWrite8 (PciAddress, *In.Uint8); + break; + case S3BootScriptWidthFifoUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint8 - 0x%016lx (0x%02x)\n", OriginalPciAddress, (UINTN)*In.Uint8)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint8 - 0x%016lx (0x%02x)\n", OriginalPciAddress, (UINTN)*In.Uint8)); + PciSegmentWrite8 (OriginalPciAddress, *In.Uint8); + break; + case S3BootScriptWidthFillUint8: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint8 - 0x%016lx (0x%02x)\n", PciAddress, (UINTN)*OriginalIn.Uint8)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint8 - 0x%016lx (0x%02x)\n", PciAddress, (UINTN)*OriginalIn.Uint8)); + PciSegmentWrite8 (PciAddress, *OriginalIn.Uint8); + break; + case S3BootScriptWidthUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint16 - 0x%016lx (0x%04x)\n", PciAddress, (UINTN)*In.Uint16)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint16 - 0x%016lx (0x%04x)\n", PciAddress, (UINTN)*In.Uint16)); + PciSegmentWrite16 (PciAddress, *In.Uint16); + break; + case S3BootScriptWidthFifoUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint16 - 0x%016lx (0x%04x)\n", OriginalPciAddress, (UINTN)*In.Uint16)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint16 - 0x%016lx (0x%04x)\n", OriginalPciAddress, (UINTN)*In.Uint16)); + PciSegmentWrite16 (OriginalPciAddress, *In.Uint16); + break; + case S3BootScriptWidthFillUint16: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint16 - 0x%016lx (0x%04x)\n", PciAddress, (UINTN)*OriginalIn.Uint16)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint16 - 0x%016lx (0x%04x)\n", PciAddress, (UINTN)*OriginalIn.Uint16)); + PciSegmentWrite16 (PciAddress, *OriginalIn.Uint16); + break; + case S3BootScriptWidthUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthUint32 - 0x%016lx (0x%08x)\n", PciAddress, (UINTN)*In.Uint32)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthUint32 - 0x%016lx (0x%08x)\n", PciAddress, (UINTN)*In.Uint32)); + PciSegmentWrite32 (PciAddress, *In.Uint32); + break; + case S3BootScriptWidthFifoUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFifoUint32 - 0x%016lx (0x%08x)\n", OriginalPciAddress, (UINTN)*In.Uint32)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFifoUint32 - 0x%016lx (0x%08x)\n", OriginalPciAddress, (UINTN)*In.Uint32)); + PciSegmentWrite32 (OriginalPciAddress, *In.Uint32); + break; + case S3BootScriptWidthFillUint32: +- DEBUG ((EFI_D_INFO, "S3BootScriptWidthFillUint32 - 0x%016lx (0x%08x)\n", (UINTN)PciAddress, (UINTN)*OriginalIn.Uint32)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptWidthFillUint32 - 0x%016lx (0x%08x)\n", (UINTN)PciAddress, (UINTN)*OriginalIn.Uint32)); + PciSegmentWrite32 (PciAddress, *OriginalIn.Uint32); + break; + default: +@@ -883,7 +883,7 @@ BootScriptExecutePciCfgWrite ( + Count = PciCfgWrite.Count; + Buffer = Script + sizeof(EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE); + +- DEBUG ((EFI_D_INFO, "BootScriptExecutePciCfgWrite - 0x%016lx, 0x%08x, 0x%08x\n", PCI_ADDRESS_ENCODE (0, Address), Count, (UINTN)Width)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecutePciCfgWrite - 0x%016lx, 0x%08x, 0x%08x\n", PCI_ADDRESS_ENCODE (0, Address), Count, (UINTN)Width)); + return ScriptPciCfgWrite (Width, Address, Count, Buffer); + } + /** +@@ -911,7 +911,7 @@ BootScriptExecuteIoReadWrite ( + + CopyMem((VOID*)&IoReadWrite, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_IO_READ_WRITE)); + +- DEBUG ((EFI_D_INFO, "BootScriptExecuteIoReadWrite - 0x%08x, 0x%016lx, 0x%016lx\n", (UINTN)IoReadWrite.Address, AndMask, OrMask)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteIoReadWrite - 0x%08x, 0x%016lx, 0x%016lx\n", (UINTN)IoReadWrite.Address, AndMask, OrMask)); + + Status = ScriptIoRead ( + (S3_BOOT_SCRIPT_LIB_WIDTH) IoReadWrite.Width, +@@ -955,7 +955,7 @@ BootScriptExecuteMemoryReadWrite ( + + CopyMem((VOID*)&MemReadWrite, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_MEM_READ_WRITE)); + +- DEBUG ((EFI_D_INFO, "BootScriptExecuteMemoryReadWrite - 0x%08x, 0x%016lx, 0x%016lx\n", (UINTN)MemReadWrite.Address, AndMask, OrMask)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteMemoryReadWrite - 0x%08x, 0x%016lx, 0x%016lx\n", (UINTN)MemReadWrite.Address, AndMask, OrMask)); + + Status = ScriptMemoryRead ( + (S3_BOOT_SCRIPT_LIB_WIDTH) MemReadWrite.Width, +@@ -999,7 +999,7 @@ BootScriptExecutePciCfgReadWrite ( + + CopyMem((VOID*)&PciCfgReadWrite, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE)); + +- DEBUG ((EFI_D_INFO, "BootScriptExecutePciCfgReadWrite - 0x%016lx, 0x%016lx, 0x%016lx\n", PCI_ADDRESS_ENCODE (0, PciCfgReadWrite.Address), AndMask, OrMask)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecutePciCfgReadWrite - 0x%016lx, 0x%016lx, 0x%016lx\n", PCI_ADDRESS_ENCODE (0, PciCfgReadWrite.Address), AndMask, OrMask)); + + Status = ScriptPciCfgRead ( + (S3_BOOT_SCRIPT_LIB_WIDTH) PciCfgReadWrite.Width, +@@ -1042,7 +1042,7 @@ BootScriptExecuteSmbusExecute ( + + CopyMem ((VOID*)&SmbusExecuteEntry, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_SMBUS_EXECUTE )); + +- DEBUG ((EFI_D_INFO, "BootScriptExecuteSmbusExecute - 0x%08x, 0x%08x\n", (UINTN)SmbusExecuteEntry.SmBusAddress, (UINTN)SmbusExecuteEntry.Operation)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteSmbusExecute - 0x%08x, 0x%08x\n", (UINTN)SmbusExecuteEntry.SmBusAddress, (UINTN)SmbusExecuteEntry.Operation)); + + SmBusAddress = (UINTN)SmbusExecuteEntry.SmBusAddress; + DataSize = (UINTN) SmbusExecuteEntry.DataSize; +@@ -1069,7 +1069,7 @@ BootScriptExecuteStall ( + + CopyMem ((VOID*)&Stall, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_STALL)); + +- DEBUG ((EFI_D_INFO, "BootScriptExecuteStall - 0x%08x\n", (UINTN)Stall.Duration)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteStall - 0x%08x\n", (UINTN)Stall.Duration)); + + MicroSecondDelay ((UINTN) Stall.Duration); + return EFI_SUCCESS; +@@ -1092,7 +1092,7 @@ BootScriptExecuteDispatch ( + CopyMem ((VOID*)&ScriptDispatch, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_DISPATCH)); + EntryFunc = (DISPATCH_ENTRYPOINT_FUNC) (UINTN) (ScriptDispatch.EntryPoint); + +- DEBUG ((EFI_D_INFO, "BootScriptExecuteDispatch - 0x%08x\n", (UINTN)ScriptDispatch.EntryPoint)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteDispatch - 0x%08x\n", (UINTN)ScriptDispatch.EntryPoint)); + + Status = EntryFunc (NULL, NULL); + +@@ -1115,7 +1115,7 @@ BootScriptExecuteDispatch2 ( + + CopyMem ((VOID*)&ScriptDispatch2, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_DISPATCH_2)); + +- DEBUG ((EFI_D_INFO, "BootScriptExecuteDispatch2 - 0x%08x(0x%08x)\n", (UINTN)ScriptDispatch2.EntryPoint, (UINTN)ScriptDispatch2.Context)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteDispatch2 - 0x%08x(0x%08x)\n", (UINTN)ScriptDispatch2.EntryPoint, (UINTN)ScriptDispatch2.Context)); + + EntryFunc = (DISPATCH_ENTRYPOINT_FUNC) (UINTN) (ScriptDispatch2.EntryPoint); + +@@ -1149,7 +1149,7 @@ BootScriptExecuteMemPoll ( + + CopyMem ((VOID*)&MemPoll, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_MEM_POLL)); + +- DEBUG ((EFI_D_INFO, "BootScriptExecuteMemPoll - 0x%08x, 0x%016lx, 0x%016lx\n", (UINTN)MemPoll.Address, AndMask, OrMask)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteMemPoll - 0x%08x, 0x%016lx, 0x%016lx\n", (UINTN)MemPoll.Address, AndMask, OrMask)); + + Data = 0; + Status = ScriptMemoryRead ( +@@ -1203,13 +1203,13 @@ BootScriptExecuteInformation ( + CopyMem ((VOID*)&Information, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_INFORMATION)); + + InformationData = Script + sizeof (EFI_BOOT_SCRIPT_INFORMATION); +- DEBUG ((EFI_D_INFO, "BootScriptExecuteInformation - 0x%08x\n", (UINTN) InformationData)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteInformation - 0x%08x\n", (UINTN) InformationData)); + +- DEBUG ((EFI_D_INFO, "BootScriptInformation: ")); ++ DEBUG ((DEBUG_INFO, "BootScriptInformation: ")); + for (Index = 0; Index < Information.InformationLength; Index++) { +- DEBUG ((EFI_D_INFO, "%02x ", InformationData[Index])); ++ DEBUG ((DEBUG_INFO, "%02x ", InformationData[Index])); + } +- DEBUG ((EFI_D_INFO, "\n")); ++ DEBUG ((DEBUG_INFO, "\n")); + } + + /** +@@ -1231,13 +1231,13 @@ BootScriptExecuteLabel ( + CopyMem ((VOID*)&Information, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_INFORMATION)); + + InformationData = Script + sizeof (EFI_BOOT_SCRIPT_INFORMATION); +- DEBUG ((EFI_D_INFO, "BootScriptExecuteLabel - 0x%08x\n", (UINTN) InformationData)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteLabel - 0x%08x\n", (UINTN) InformationData)); + +- DEBUG ((EFI_D_INFO, "BootScriptLabel: ")); ++ DEBUG ((DEBUG_INFO, "BootScriptLabel: ")); + for (Index = 0; Index < Information.InformationLength; Index++) { +- DEBUG ((EFI_D_INFO, "%02x ", InformationData[Index])); ++ DEBUG ((DEBUG_INFO, "%02x ", InformationData[Index])); + } +- DEBUG ((EFI_D_INFO, "\n")); ++ DEBUG ((DEBUG_INFO, "\n")); + } + + /** +@@ -1349,7 +1349,7 @@ BootScriptExecuteIoPoll ( + + CopyMem ((VOID*)&IoPoll, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_IO_POLL)); + +- DEBUG ((EFI_D_INFO, "BootScriptExecuteIoPoll - 0x%08x, 0x%016lx, 0x%016lx\n", (UINTN)IoPoll.Address, AndMask, OrMask)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecuteIoPoll - 0x%08x, 0x%016lx, 0x%016lx\n", (UINTN)IoPoll.Address, AndMask, OrMask)); + + Data = 0; + Status = ScriptIoRead ( +@@ -1409,7 +1409,7 @@ BootScriptExecutePciCfg2Write ( + Count = PciCfg2Write.Count; + Buffer = Script + sizeof(EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE); + +- DEBUG ((EFI_D_INFO, "BootScriptExecutePciCfg2Write - 0x%016lx, 0x%08x, 0x%08x\n", PCI_ADDRESS_ENCODE (Segment, Address), Count, (UINTN)Width)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecutePciCfg2Write - 0x%016lx, 0x%08x, 0x%08x\n", PCI_ADDRESS_ENCODE (Segment, Address), Count, (UINTN)Width)); + return ScriptPciCfg2Write (Width, Segment, Address, Count, Buffer); + } + +@@ -1439,7 +1439,7 @@ BootScriptExecutePciCfg2ReadWrite ( + + CopyMem ((VOID*)&PciCfg2ReadWrite, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE)); + +- DEBUG ((EFI_D_INFO, "BootScriptExecutePciCfg2ReadWrite - 0x%016lx, 0x%016lx, 0x%016lx\n", PCI_ADDRESS_ENCODE (PciCfg2ReadWrite.Segment, PciCfg2ReadWrite.Address), AndMask, OrMask)); ++ DEBUG ((DEBUG_INFO, "BootScriptExecutePciCfg2ReadWrite - 0x%016lx, 0x%016lx, 0x%016lx\n", PCI_ADDRESS_ENCODE (PciCfg2ReadWrite.Segment, PciCfg2ReadWrite.Address), AndMask, OrMask)); + + Status = ScriptPciCfg2Read ( + (S3_BOOT_SCRIPT_LIB_WIDTH) PciCfg2ReadWrite.Width, +@@ -1486,7 +1486,7 @@ BootScriptPciCfgPoll ( + EFI_BOOT_SCRIPT_PCI_CONFIG_POLL PciCfgPoll; + CopyMem ((VOID*)&PciCfgPoll, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_PCI_CONFIG_POLL)); + +- DEBUG ((EFI_D_INFO, "BootScriptPciCfgPoll - 0x%016lx, 0x%016lx, 0x%016lx\n", PCI_ADDRESS_ENCODE (0, PciCfgPoll.Address), AndMask, OrMask)); ++ DEBUG ((DEBUG_INFO, "BootScriptPciCfgPoll - 0x%016lx, 0x%016lx, 0x%016lx\n", PCI_ADDRESS_ENCODE (0, PciCfgPoll.Address), AndMask, OrMask)); + + Data = 0; + Status = ScriptPciCfgRead ( +@@ -1548,7 +1548,7 @@ BootScriptPciCfg2Poll ( + Data = 0; + CopyMem ((VOID*)&PciCfg2Poll, (VOID*)Script, sizeof(EFI_BOOT_SCRIPT_PCI_CONFIG2_POLL)); + +- DEBUG ((EFI_D_INFO, "BootScriptPciCfg2Poll - 0x%016lx, 0x%016lx, 0x%016lx\n", PCI_ADDRESS_ENCODE (PciCfg2Poll.Segment, PciCfg2Poll.Address), AndMask, OrMask)); ++ DEBUG ((DEBUG_INFO, "BootScriptPciCfg2Poll - 0x%016lx, 0x%016lx, 0x%016lx\n", PCI_ADDRESS_ENCODE (PciCfg2Poll.Segment, PciCfg2Poll.Address), AndMask, OrMask)); + + Status = ScriptPciCfg2Read ( + (S3_BOOT_SCRIPT_LIB_WIDTH) PciCfg2Poll.Width, +@@ -1613,12 +1613,12 @@ S3BootScriptExecute ( + return EFI_INVALID_PARAMETER; + } + +- DEBUG ((EFI_D_INFO, "S3BootScriptExecute:\n")); ++ DEBUG ((DEBUG_INFO, "S3BootScriptExecute:\n")); + if (TableHeader.OpCode != S3_BOOT_SCRIPT_LIB_TABLE_OPCODE) { + return EFI_UNSUPPORTED; + } + +- DEBUG ((EFI_D_INFO, "TableHeader - 0x%08x\n", Script)); ++ DEBUG ((DEBUG_INFO, "TableHeader - 0x%08x\n", Script)); + + StartAddress = (UINTN) Script; + TableLength = TableHeader.TableLength; +@@ -1627,22 +1627,22 @@ S3BootScriptExecute ( + AndMask = 0; + OrMask = 0; + +- DEBUG ((EFI_D_INFO, "TableHeader.Version - 0x%04x\n", (UINTN)TableHeader.Version)); +- DEBUG ((EFI_D_INFO, "TableHeader.TableLength - 0x%08x\n", (UINTN)TableLength)); ++ DEBUG ((DEBUG_INFO, "TableHeader.Version - 0x%04x\n", (UINTN)TableHeader.Version)); ++ DEBUG ((DEBUG_INFO, "TableHeader.TableLength - 0x%08x\n", (UINTN)TableLength)); + + while ((UINTN) Script < (UINTN) (StartAddress + TableLength)) { +- DEBUG ((EFI_D_INFO, "ExecuteBootScript - %08x\n", (UINTN)Script)); ++ DEBUG ((DEBUG_INFO, "ExecuteBootScript - %08x\n", (UINTN)Script)); + + CopyMem ((VOID*)&ScriptHeader, Script, sizeof(EFI_BOOT_SCRIPT_COMMON_HEADER)); + switch (ScriptHeader.OpCode) { + + case EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE\n")); + Status = BootScriptExecuteMemoryWrite (Script); + break; + + case EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE\n")); + CheckAndOrMask (&ScriptHeader, &AndMask, &OrMask, Script); + Status = BootScriptExecuteMemoryReadWrite ( + Script, +@@ -1652,17 +1652,17 @@ S3BootScriptExecute ( + break; + + case EFI_BOOT_SCRIPT_IO_WRITE_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_IO_WRITE_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_IO_WRITE_OPCODE\n")); + Status = BootScriptExecuteIoWrite (Script); + break; + + case EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE\n")); + Status = BootScriptExecutePciCfgWrite (Script); + break; + + case EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE\n")); + CheckAndOrMask (&ScriptHeader, &AndMask, &OrMask, Script); + Status = BootScriptExecutePciCfgReadWrite ( + Script, +@@ -1671,12 +1671,12 @@ S3BootScriptExecute ( + ); + break; + case EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE\n")); + Status = BootScriptExecutePciCfg2Write (Script); + break; + + case EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE\n")); + CheckAndOrMask (&ScriptHeader, &AndMask, &OrMask, Script); + Status = BootScriptExecutePciCfg2ReadWrite ( + Script, +@@ -1685,27 +1685,27 @@ S3BootScriptExecute ( + ); + break; + case EFI_BOOT_SCRIPT_DISPATCH_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_DISPATCH_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_DISPATCH_OPCODE\n")); + Status = BootScriptExecuteDispatch (Script); + break; + + case EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE\n")); + Status = BootScriptExecuteDispatch2 (Script); + break; + + case EFI_BOOT_SCRIPT_INFORMATION_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_INFORMATION_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_INFORMATION_OPCODE\n")); + BootScriptExecuteInformation (Script); + break; + + case S3_BOOT_SCRIPT_LIB_TERMINATE_OPCODE: +- DEBUG ((EFI_D_INFO, "S3_BOOT_SCRIPT_LIB_TERMINATE_OPCODE\n")); +- DEBUG ((EFI_D_INFO, "S3BootScriptDone - %r\n", EFI_SUCCESS)); ++ DEBUG ((DEBUG_INFO, "S3_BOOT_SCRIPT_LIB_TERMINATE_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "S3BootScriptDone - %r\n", EFI_SUCCESS)); + return EFI_SUCCESS; + + case EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE\n")); + CheckAndOrMask (&ScriptHeader, &AndMask, &OrMask, Script); + Status = BootScriptExecuteIoReadWrite ( + Script, +@@ -1715,36 +1715,36 @@ S3BootScriptExecute ( + break; + + case EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE\n")); + Status = BootScriptExecuteSmbusExecute (Script); + break; + + case EFI_BOOT_SCRIPT_STALL_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_STALL_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_STALL_OPCODE\n")); + Status = BootScriptExecuteStall (Script); + break; + + case EFI_BOOT_SCRIPT_MEM_POLL_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_MEM_POLL_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_MEM_POLL_OPCODE\n")); + CheckAndOrMask (&ScriptHeader, &AndMask, &OrMask, Script); + Status = BootScriptExecuteMemPoll (Script, AndMask, OrMask); + + break; + + case EFI_BOOT_SCRIPT_IO_POLL_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_IO_POLL_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_IO_POLL_OPCODE\n")); + CheckAndOrMask (&ScriptHeader, &AndMask, &OrMask, Script); + Status = BootScriptExecuteIoPoll (Script, AndMask, OrMask); + break; + + case EFI_BOOT_SCRIPT_PCI_CONFIG_POLL_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG_POLL_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG_POLL_OPCODE\n")); + CheckAndOrMask (&ScriptHeader, &AndMask, &OrMask, Script); + Status = BootScriptPciCfgPoll (Script, AndMask, OrMask); + break; + + case EFI_BOOT_SCRIPT_PCI_CONFIG2_POLL_OPCODE: +- DEBUG ((EFI_D_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG2_POLL_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "EFI_BOOT_SCRIPT_PCI_CONFIG2_POLL_OPCODE\n")); + CheckAndOrMask (&ScriptHeader, &AndMask, &OrMask, Script); + Status = BootScriptPciCfg2Poll (Script, AndMask, OrMask); + break; +@@ -1753,24 +1753,23 @@ S3BootScriptExecute ( + // + // For label + // +- DEBUG ((EFI_D_INFO, "S3_BOOT_SCRIPT_LIB_LABEL_OPCODE\n")); ++ DEBUG ((DEBUG_INFO, "S3_BOOT_SCRIPT_LIB_LABEL_OPCODE\n")); + BootScriptExecuteLabel (Script); + break; + default: +- DEBUG ((EFI_D_INFO, "S3BootScriptDone - %r\n", EFI_UNSUPPORTED)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptDone - %r\n", EFI_UNSUPPORTED)); + return EFI_UNSUPPORTED; + } + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "S3BootScriptDone - %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptDone - %r\n", Status)); + return Status; + } + + Script = Script + ScriptHeader.Length; + } + +- DEBUG ((EFI_D_INFO, "S3BootScriptDone - %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "S3BootScriptDone - %r\n", Status)); + + return Status; + } +- +diff --git a/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c b/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c +index 9cdf475521..20378502c8 100644 +--- a/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c ++++ b/MdeModulePkg/Library/PiDxeS3BootScriptLib/BootScriptSave.c +@@ -573,7 +573,7 @@ S3BootScriptLibDeinitialize ( + return RETURN_SUCCESS; + } + +- DEBUG ((EFI_D_INFO, "%a() in %a module\n", __FUNCTION__, gEfiCallerBaseName)); ++ DEBUG ((DEBUG_INFO, "%a() in %a module\n", __FUNCTION__, gEfiCallerBaseName)); + + if (mEventDxeSmmReadyToLock != NULL) { + // +@@ -834,7 +834,7 @@ S3BootScriptGetEntryAddAddress ( + // Add DEBUG ERROR, so that we can find it after SmmReadyToLock. + // Do not use ASSERT, because we may have test to invoke this interface. + // +- DEBUG ((EFI_D_ERROR, "FATAL ERROR: Set boot script outside SMM after SmmReadyToLock!!!\n")); ++ DEBUG ((DEBUG_ERROR, "FATAL ERROR: Set boot script outside SMM after SmmReadyToLock!!!\n")); + return NULL; + } + +diff --git a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c +index 3875d614bb..0633f8197f 100644 +--- a/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c ++++ b/MdeModulePkg/Library/PlatformVarCleanupLib/PlatVarCleanupLib.c +@@ -71,7 +71,7 @@ InternalGetVarErrorFlag ( + &ErrorFlag + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "%s - not found\n", VAR_ERROR_FLAG_NAME)); ++ DEBUG ((DEBUG_INFO, "%s - not found\n", VAR_ERROR_FLAG_NAME)); + return VAR_ERROR_FLAG_NO_ERROR; + } + return ErrorFlag; +@@ -115,16 +115,16 @@ IsUserVariable ( + // + // No property, it is user variable. + // +- DEBUG ((EFI_D_INFO, "PlatformVarCleanup - User variable: %g:%s\n", Guid, Name)); ++ DEBUG ((DEBUG_INFO, "PlatformVarCleanup - User variable: %g:%s\n", Guid, Name)); + return TRUE; + } + +-// DEBUG ((EFI_D_INFO, "PlatformVarCleanup - Variable Property: %g:%s\n", Guid, Name)); +-// DEBUG ((EFI_D_INFO, " Revision - 0x%04x\n", Property.Revision)); +-// DEBUG ((EFI_D_INFO, " Property - 0x%04x\n", Property.Property)); +-// DEBUG ((EFI_D_INFO, " Attribute - 0x%08x\n", Property.Attributes)); +-// DEBUG ((EFI_D_INFO, " MinSize - 0x%x\n", Property.MinSize)); +-// DEBUG ((EFI_D_INFO, " MaxSize - 0x%x\n", Property.MaxSize)); ++// DEBUG ((DEBUG_INFO, "PlatformVarCleanup - Variable Property: %g:%s\n", Guid, Name)); ++// DEBUG ((DEBUG_INFO, " Revision - 0x%04x\n", Property.Revision)); ++// DEBUG ((DEBUG_INFO, " Property - 0x%04x\n", Property.Property)); ++// DEBUG ((DEBUG_INFO, " Attribute - 0x%08x\n", Property.Attributes)); ++// DEBUG ((DEBUG_INFO, " MinSize - 0x%x\n", Property.MinSize)); ++// DEBUG ((DEBUG_INFO, " MaxSize - 0x%x\n", Property.MaxSize)); + + return FALSE; + } +@@ -276,7 +276,7 @@ CreateUserVariableNode ( + + mUserVariableCount = Index; + ASSERT (mUserVariableCount <= MAX_USER_VARIABLE_COUNT); +- DEBUG ((EFI_D_INFO, "PlatformVarCleanup - User variable count: 0x%04x\n", mUserVariableCount)); ++ DEBUG ((DEBUG_INFO, "PlatformVarCleanup - User variable count: 0x%04x\n", mUserVariableCount)); + + FreePool (VarName); + FreePool (Data); +@@ -515,7 +515,7 @@ DeleteUserVariable ( + UserVariableNameNode = USER_VARIABLE_NAME_FROM_LINK (NameLink); + + if (!UserVariableNameNode->Deleted && (DeleteAll || ((VariableCleanupData != NULL) && (VariableCleanupData->UserVariable[UserVariableNameNode->Index] == TRUE)))) { +- DEBUG ((EFI_D_INFO, "PlatformVarCleanup - Delete variable: %g:%s\n", &UserVariableNode->Guid, UserVariableNameNode->Name)); ++ DEBUG ((DEBUG_INFO, "PlatformVarCleanup - Delete variable: %g:%s\n", &UserVariableNode->Guid, UserVariableNameNode->Name)); + if ((UserVariableNameNode->Attributes & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) != 0) { + DataSize = 0; + Data = NULL; +@@ -538,7 +538,7 @@ DeleteUserVariable ( + if (!EFI_ERROR (Status)) { + UserVariableNameNode->Deleted = TRUE; + } else { +- DEBUG ((EFI_D_INFO, "PlatformVarCleanup - Delete variable fail: %g:%s\n", &UserVariableNode->Guid, UserVariableNameNode->Name)); ++ DEBUG ((DEBUG_INFO, "PlatformVarCleanup - Delete variable fail: %g:%s\n", &UserVariableNode->Guid, UserVariableNameNode->Name)); + } + } + } +@@ -1052,8 +1052,8 @@ PlatformVarCleanup ( + // + // This sample does not support system variables cleanup. + // +- DEBUG ((EFI_D_ERROR, "NOTICE - VAR_ERROR_FLAG_SYSTEM_ERROR\n")); +- DEBUG ((EFI_D_ERROR, "Platform should have mechanism to reset system to manufacture mode\n")); ++ DEBUG ((DEBUG_ERROR, "NOTICE - VAR_ERROR_FLAG_SYSTEM_ERROR\n")); ++ DEBUG ((DEBUG_ERROR, "Platform should have mechanism to reset system to manufacture mode\n")); + return EFI_UNSUPPORTED; + } + +@@ -1232,7 +1232,7 @@ PlatformVarCleanupLibConstructor ( + EFI_STATUS Status; + + mLastVarErrorFlag = InternalGetVarErrorFlag (); +- DEBUG ((EFI_D_INFO, "mLastVarErrorFlag - 0x%02x\n", mLastVarErrorFlag)); ++ DEBUG ((DEBUG_INFO, "mLastVarErrorFlag - 0x%02x\n", mLastVarErrorFlag)); + + // + // Register EFI_END_OF_DXE_EVENT_GROUP_GUID event. +diff --git a/MdeModulePkg/Library/SmmIpmiLibSmmIpmiProtocol/SmmIpmiLibSmmIpmiProtocol.c b/MdeModulePkg/Library/SmmIpmiLibSmmIpmiProtocol/SmmIpmiLibSmmIpmiProtocol.c +index 0af2fab296..e06944d833 100644 +--- a/MdeModulePkg/Library/SmmIpmiLibSmmIpmiProtocol/SmmIpmiLibSmmIpmiProtocol.c ++++ b/MdeModulePkg/Library/SmmIpmiLibSmmIpmiProtocol/SmmIpmiLibSmmIpmiProtocol.c +@@ -55,7 +55,7 @@ IpmiSubmitCommand ( + // + // Smm Ipmi Protocol is not installed. So, IPMI device is not present. + // +- DEBUG ((EFI_D_ERROR, "IpmiSubmitCommand for SMM Status - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "IpmiSubmitCommand for SMM Status - %r\n", Status)); + return EFI_NOT_FOUND; + } + } +diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +index 95d185b639..a862e04a89 100644 +--- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c ++++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +@@ -1807,7 +1807,7 @@ EfiBootManagerBoot ( + } + + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "[Bds] Failed to create Boot#### for a temporary boot - %r!\n", Status)); ++ DEBUG ((DEBUG_ERROR, "[Bds] Failed to create Boot#### for a temporary boot - %r!\n", Status)); + BootOption->Status = Status; + return ; + } +@@ -1830,7 +1830,7 @@ EfiBootManagerBoot ( + // the boot option. + // + if (BmIsBootManagerMenuFilePath (BootOption->FilePath)) { +- DEBUG ((EFI_D_INFO, "[Bds] Booting Boot Manager Menu.\n")); ++ DEBUG ((DEBUG_INFO, "[Bds] Booting Boot Manager Menu.\n")); + BmStopHotkeyService (NULL, NULL); + } else { + EfiSignalEventReadyToBoot(); +@@ -2440,7 +2440,7 @@ BmRegisterBootManagerMenu ( + &DevicePath + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_WARN, "[Bds]BootManagerMenu FFS section can not be found, skip its boot option registration\n")); ++ DEBUG ((DEBUG_WARN, "[Bds]BootManagerMenu FFS section can not be found, skip its boot option registration\n")); + return EFI_NOT_FOUND; + } + ASSERT (DevicePath != NULL); +diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c b/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c +index d89331784c..bdbb9a8770 100644 +--- a/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c ++++ b/MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c +@@ -199,7 +199,7 @@ EfiBootManagerGetGopDevicePath ( + // + // Recursively look for GOP child in this frame buffer handle + // +- DEBUG ((EFI_D_INFO, "[Bds] Looking for GOP child deeper ... \n")); ++ DEBUG ((DEBUG_INFO, "[Bds] Looking for GOP child deeper ... \n")); + TempDevicePath = GopPool; + ReturnDevicePath = EfiBootManagerGetGopDevicePath (OpenInfoBuffer[Index].ControllerHandle); + GopPool = AppendDevicePathInstance (GopPool, ReturnDevicePath); +@@ -340,7 +340,7 @@ BmUpdateSystemTableConsole ( + // + Instance = GetNextDevicePathInstance (&VarConsole, &DevicePathSize); + if (Instance == NULL) { +- DEBUG ((EFI_D_ERROR, "[Bds] No valid console instance is found for %s!\n", VarName)); ++ DEBUG ((DEBUG_ERROR, "[Bds] No valid console instance is found for %s!\n", VarName)); + // We should not ASSERT when all the console devices are removed. + // ASSERT_EFI_ERROR (EFI_NOT_FOUND); + FreePool (FullDevicePath); +diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c b/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c +index fa1fd87d15..332a967d37 100644 +--- a/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c ++++ b/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c +@@ -129,7 +129,7 @@ BmDisplayMessages ( + DriverHealthInfo->ChildHandle + ); + +- DEBUG ((EFI_D_INFO, "Controller: %s\n", ControllerName)); ++ DEBUG ((DEBUG_INFO, "Controller: %s\n", ControllerName)); + Print (L"Controller: %s\n", ControllerName); + for (Index = 0; DriverHealthInfo->MessageList[Index].HiiHandle != NULL; Index++) { + String = HiiGetString ( +@@ -139,7 +139,7 @@ BmDisplayMessages ( + ); + if (String != NULL) { + Print (L" %s\n", String); +- DEBUG ((EFI_D_INFO, " %s\n", String)); ++ DEBUG ((DEBUG_INFO, " %s\n", String)); + FreePool (String); + } + } +@@ -167,7 +167,7 @@ BmRepairNotify ( + IN UINTN Limit + ) + { +- DEBUG ((EFI_D_INFO, "[BDS]RepairNotify: %d/%d\n", Value, Limit)); ++ DEBUG ((DEBUG_INFO, "[BDS]RepairNotify: %d/%d\n", Value, Limit)); + Print (L"[BDS]RepairNotify: %d/%d\n", Value, Limit); + + return EFI_SUCCESS; +@@ -556,7 +556,7 @@ BmRepairAllControllers ( + DriverHealthInfo[Index].ChildHandle + ); + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "%02d: %s - %s\n", + Index, + ControllerName, +@@ -579,7 +579,7 @@ BmRepairAllControllers ( + } + + if (RebootRequired) { +- DEBUG ((EFI_D_INFO, "[BDS] One of the Driver Health instances requires rebooting.\n")); ++ DEBUG ((DEBUG_INFO, "[BDS] One of the Driver Health instances requires rebooting.\n")); + gRT->ResetSystem (EfiResetWarm, EFI_SUCCESS, 0, NULL); + } + } +diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c b/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c +index c2d1447f59..25da95b669 100644 +--- a/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c ++++ b/MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c +@@ -353,7 +353,7 @@ BmHotkeyCallback ( + return EFI_SUCCESS; + } + +- DEBUG ((EFI_D_INFO, "[Bds]BmHotkeyCallback: %04x:%04x\n", KeyData->Key.ScanCode, KeyData->Key.UnicodeChar)); ++ DEBUG ((DEBUG_INFO, "[Bds]BmHotkeyCallback: %04x:%04x\n", KeyData->Key.ScanCode, KeyData->Key.UnicodeChar)); + + EfiAcquireLock (&mBmHotkeyLock); + for ( Link = GetFirstNode (&mBmHotkeyList) +@@ -399,12 +399,12 @@ BmHotkeyCallback ( + mBmLoadOptionName[LoadOptionTypeBoot], Hotkey->BootOption + ); + Status = EfiBootManagerVariableToLoadOption (OptionName, &mBmHotkeyBootOption); +- DEBUG ((EFI_D_INFO, "[Bds]Hotkey for %s pressed - %r\n", OptionName, Status)); ++ DEBUG ((DEBUG_INFO, "[Bds]Hotkey for %s pressed - %r\n", OptionName, Status)); + if (EFI_ERROR (Status)) { + mBmHotkeyBootOption.OptionNumber = LoadOptionNumberUnassigned; + } + } else { +- DEBUG ((EFI_D_INFO, "[Bds]Continue key pressed!\n")); ++ DEBUG ((DEBUG_INFO, "[Bds]Continue key pressed!\n")); + } + } + } else { +@@ -503,7 +503,7 @@ BmUnregisterHotkeyNotify ( + ); + if (!EFI_ERROR (Status)) { + Status = TxtInEx->UnregisterKeyNotify (TxtInEx, NotifyHandle); +- DEBUG ((EFI_D_INFO, "[Bds]UnregisterKeyNotify: %04x/%04x %r\n", Hotkey->KeyData[KeyIndex].Key.ScanCode, Hotkey->KeyData[KeyIndex].Key.UnicodeChar, Status)); ++ DEBUG ((DEBUG_INFO, "[Bds]UnregisterKeyNotify: %04x/%04x %r\n", Hotkey->KeyData[KeyIndex].Key.ScanCode, Hotkey->KeyData[KeyIndex].Key.UnicodeChar, Status)); + } + } + } +@@ -542,7 +542,7 @@ BmRegisterHotkeyNotify ( + &NotifyHandle + ); + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "[Bds]RegisterKeyNotify: %04x/%04x %08x/%02x %r\n", + Hotkey->KeyData[Index].Key.ScanCode, + Hotkey->KeyData[Index].Key.UnicodeChar, +@@ -830,7 +830,7 @@ BmStopHotkeyService ( + LIST_ENTRY *Link; + BM_HOTKEY *Hotkey; + +- DEBUG ((EFI_D_INFO, "[Bds]Stop Hotkey Service!\n")); ++ DEBUG ((DEBUG_INFO, "[Bds]Stop Hotkey Service!\n")); + gBS->CloseEvent (Event); + + EfiAcquireLock (&mBmHotkeyLock); +@@ -873,7 +873,7 @@ EfiBootManagerStartHotkeyService ( + } + + if (mBmHotkeySupportCount == 0) { +- DEBUG ((EFI_D_INFO, "Bds: BootOptionSupport NV variable forbids starting the hotkey service.\n")); ++ DEBUG ((DEBUG_INFO, "Bds: BootOptionSupport NV variable forbids starting the hotkey service.\n")); + return EFI_UNSUPPORTED; + } + +diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c b/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c +index 89372b3b97..30a6c840aa 100644 +--- a/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c ++++ b/MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c +@@ -1081,7 +1081,7 @@ EfiBootManagerGetLoadOptions ( + + Status = EfiBootManagerVariableToLoadOption (OptionName, &Options[OptionIndex]); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "[Bds] %s doesn't exist - Update ****Order variable to remove the reference!!", OptionName)); ++ DEBUG ((DEBUG_INFO, "[Bds] %s doesn't exist - Update ****Order variable to remove the reference!!", OptionName)); + EfiBootManagerDeleteLoadOptionVariable (OptionNumber, LoadOptionType); + } else { + ASSERT (Options[OptionIndex].OptionNumber == OptionNumber); +diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c +index 89595747af..6e7af3e3d9 100644 +--- a/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c ++++ b/MdeModulePkg/Library/UefiBootManagerLib/BmMisc.c +@@ -208,9 +208,9 @@ BmSetMemoryTypeInformationVariable ( + // + // Use a heuristic to adjust the Memory Type Information for the next boot + // +- DEBUG ((EFI_D_INFO, "Memory Previous Current Next \n")); +- DEBUG ((EFI_D_INFO, " Type Pages Pages Pages \n")); +- DEBUG ((EFI_D_INFO, "====== ======== ======== ========\n")); ++ DEBUG ((DEBUG_INFO, "Memory Previous Current Next \n")); ++ DEBUG ((DEBUG_INFO, " Type Pages Pages Pages \n")); ++ DEBUG ((DEBUG_INFO, "====== ======== ======== ========\n")); + + for (Index = 0; PreviousMemoryTypeInformation[Index].Type != EfiMaxMemoryType; Index++) { + +@@ -253,7 +253,7 @@ BmSetMemoryTypeInformationVariable ( + MemoryTypeInformationModified = TRUE; + } + +- DEBUG ((EFI_D_INFO, " %02x %08x %08x %08x\n", PreviousMemoryTypeInformation[Index].Type, Previous, Current, Next)); ++ DEBUG ((DEBUG_INFO, " %02x %08x %08x %08x\n", PreviousMemoryTypeInformation[Index].Type, Previous, Current, Next)); + } + + // +@@ -276,14 +276,14 @@ BmSetMemoryTypeInformationVariable ( + // entry/resume cycle will not fail. + // + if (MemoryTypeInformationModified) { +- DEBUG ((EFI_D_INFO, "Memory Type Information settings change.\n")); ++ DEBUG ((DEBUG_INFO, "Memory Type Information settings change.\n")); + if (Boot && PcdGetBool (PcdResetOnMemoryTypeInformationChange)) { +- DEBUG ((EFI_D_INFO, "...Warm Reset!!!\n")); ++ DEBUG ((DEBUG_INFO, "...Warm Reset!!!\n")); + gRT->ResetSystem (EfiResetWarm, EFI_SUCCESS, 0, NULL); + } + } + } else { +- DEBUG ((EFI_D_ERROR, "Memory Type Information settings cannot be saved. OS S4 may fail!\n")); ++ DEBUG ((DEBUG_ERROR, "Memory Type Information settings cannot be saved. OS S4 may fail!\n")); + } + } + FreePool (PreviousMemoryTypeInformation); +@@ -385,7 +385,7 @@ BmPrintDp ( + CHAR16 *Str; + + Str = ConvertDevicePathToText (DevicePath, FALSE, FALSE); +- DEBUG ((EFI_D_INFO, "%s", Str)); ++ DEBUG ((DEBUG_INFO, "%s", Str)); + if (Str != NULL) { + FreePool (Str); + } +diff --git a/MdeModulePkg/Library/VarCheckLib/VarCheckLib.c b/MdeModulePkg/Library/VarCheckLib/VarCheckLib.c +index 9596d760e9..e7cc76a7f0 100644 +--- a/MdeModulePkg/Library/VarCheckLib/VarCheckLib.c ++++ b/MdeModulePkg/Library/VarCheckLib/VarCheckLib.c +@@ -280,7 +280,7 @@ VarCheckLibRegisterEndOfDxeCallback ( + (UINTN) Callback + ); + +- DEBUG ((EFI_D_INFO, "VarCheckLibRegisterEndOfDxeCallback - 0x%x %r\n", Callback, Status)); ++ DEBUG ((DEBUG_INFO, "VarCheckLibRegisterEndOfDxeCallback - 0x%x %r\n", Callback, Status)); + + return Status; + } +@@ -412,7 +412,7 @@ VarCheckLibRegisterAddressPointer ( + (UINTN) AddressPointer + ); + +- DEBUG ((EFI_D_INFO, "VarCheckLibRegisterAddressPointer - 0x%x %r\n", AddressPointer, Status)); ++ DEBUG ((DEBUG_INFO, "VarCheckLibRegisterAddressPointer - 0x%x %r\n", AddressPointer, Status)); + + return Status; + } +@@ -454,7 +454,7 @@ VarCheckLibRegisterSetVariableCheckHandler ( + (UINTN) Handler + ); + +- DEBUG ((EFI_D_INFO, "VarCheckLibRegisterSetVariableCheckHandler - 0x%x %r\n", Handler, Status)); ++ DEBUG ((DEBUG_INFO, "VarCheckLibRegisterSetVariableCheckHandler - 0x%x %r\n", Handler, Status)); + + return Status; + } +@@ -627,7 +627,7 @@ VarCheckLibSetVariableCheck ( + // + if ((Property != NULL) && (Property->Revision == VAR_CHECK_VARIABLE_PROPERTY_REVISION)) { + if ((RequestSource != VarCheckFromTrusted) && ((Property->Property & VAR_CHECK_VARIABLE_PROPERTY_READ_ONLY) != 0)) { +- DEBUG ((EFI_D_INFO, "Variable Check ReadOnly variable fail %r - %g:%s\n", EFI_WRITE_PROTECTED, VendorGuid, VariableName)); ++ DEBUG ((DEBUG_INFO, "Variable Check ReadOnly variable fail %r - %g:%s\n", EFI_WRITE_PROTECTED, VendorGuid, VariableName)); + return EFI_WRITE_PROTECTED; + } + if (!((((Attributes & EFI_VARIABLE_APPEND_WRITE) == 0) && (DataSize == 0)) || (Attributes == 0))) { +@@ -635,12 +635,12 @@ VarCheckLibSetVariableCheck ( + // Not to delete variable. + // + if ((Property->Attributes != 0) && ((Attributes & (~EFI_VARIABLE_APPEND_WRITE)) != Property->Attributes)) { +- DEBUG ((EFI_D_INFO, "Variable Check Attributes(0x%08x to 0x%08x) fail %r - %g:%s\n", Property->Attributes, Attributes, EFI_INVALID_PARAMETER, VendorGuid, VariableName)); ++ DEBUG ((DEBUG_INFO, "Variable Check Attributes(0x%08x to 0x%08x) fail %r - %g:%s\n", Property->Attributes, Attributes, EFI_INVALID_PARAMETER, VendorGuid, VariableName)); + return EFI_INVALID_PARAMETER; + } + if (DataSize != 0) { + if ((DataSize < Property->MinSize) || (DataSize > Property->MaxSize)) { +- DEBUG ((EFI_D_INFO, "Variable Check DataSize fail(0x%x not in 0x%x - 0x%x) %r - %g:%s\n", DataSize, Property->MinSize, Property->MaxSize, EFI_INVALID_PARAMETER, VendorGuid, VariableName)); ++ DEBUG ((DEBUG_INFO, "Variable Check DataSize fail(0x%x not in 0x%x - 0x%x) %r - %g:%s\n", DataSize, Property->MinSize, Property->MaxSize, EFI_INVALID_PARAMETER, VendorGuid, VariableName)); + return EFI_INVALID_PARAMETER; + } + } +@@ -663,7 +663,7 @@ VarCheckLibSetVariableCheck ( + continue; + } + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "Variable Check handler fail %r - %g:%s\n", Status, VendorGuid, VariableName)); ++ DEBUG ((DEBUG_INFO, "Variable Check handler fail %r - %g:%s\n", Status, VendorGuid, VariableName)); + return Status; + } + } +diff --git a/MdeModulePkg/Library/VarCheckPcdLib/VarCheckPcdLibNullClass.c b/MdeModulePkg/Library/VarCheckPcdLib/VarCheckPcdLibNullClass.c +index 9a3f9187c4..31efa69148 100644 +--- a/MdeModulePkg/Library/VarCheckPcdLib/VarCheckPcdLibNullClass.c ++++ b/MdeModulePkg/Library/VarCheckPcdLib/VarCheckPcdLibNullClass.c +@@ -63,7 +63,7 @@ VarCheckPcdInternalDumpHex ( + + Val[Index * 3] = 0; + Str[Index] = 0; +- DEBUG ((EFI_D_INFO, "%*a%08X: %-48a *%a*\r\n", Indent, "", Offset, Val, Str)); ++ DEBUG ((DEBUG_INFO, "%*a%08X: %-48a *%a*\r\n", Indent, "", Offset, Val, Str)); + + Data += Size; + Offset += Size; +@@ -116,7 +116,7 @@ VarCheckPcdValidData ( + // + // No match + // +- DEBUG ((EFI_D_INFO, "VarCheckPcdValidData fail: ValidList mismatch (0x%lx)\n", OneData)); ++ DEBUG ((DEBUG_INFO, "VarCheckPcdValidData fail: ValidList mismatch (0x%lx)\n", OneData)); + DEBUG_CODE (VarCheckPcdInternalDumpHex (2, 0, PcdValidData->Length, (UINT8 *) PcdValidData);); + return FALSE; + } +@@ -136,7 +136,7 @@ VarCheckPcdValidData ( + return TRUE; + } + } +- DEBUG ((EFI_D_INFO, "VarCheckPcdValidData fail: ValidRange mismatch (0x%lx)\n", OneData)); ++ DEBUG ((DEBUG_INFO, "VarCheckPcdValidData fail: ValidRange mismatch (0x%lx)\n", OneData)); + DEBUG_CODE (VarCheckPcdInternalDumpHex (2, 0, PcdValidData->Length, (UINT8 *) PcdValidData);); + return FALSE; + break; +@@ -199,14 +199,14 @@ SetVariableCheckHandlerPcd ( + // + // Found the Pcd Variable that could be used to do check. + // +- DEBUG ((EFI_D_INFO, "VarCheckPcdVariable - %s:%g with Attributes = 0x%08x Size = 0x%x\n", VariableName, VendorGuid, Attributes, DataSize)); ++ DEBUG ((DEBUG_INFO, "VarCheckPcdVariable - %s:%g with Attributes = 0x%08x Size = 0x%x\n", VariableName, VendorGuid, Attributes, DataSize)); + if ((PcdVariable->Attributes != 0) && PcdVariable->Attributes != Attributes) { +- DEBUG ((EFI_D_INFO, "VarCheckPcdVariable fail for Attributes - 0x%08x\n", PcdVariable->Attributes)); ++ DEBUG ((DEBUG_INFO, "VarCheckPcdVariable fail for Attributes - 0x%08x\n", PcdVariable->Attributes)); + return EFI_SECURITY_VIOLATION; + } + + if (DataSize == 0) { +- DEBUG ((EFI_D_INFO, "VarCheckPcdVariable - CHECK PASS with DataSize == 0 !\n")); ++ DEBUG ((DEBUG_INFO, "VarCheckPcdVariable - CHECK PASS with DataSize == 0 !\n")); + return EFI_SUCCESS; + } + +@@ -227,7 +227,7 @@ SetVariableCheckHandlerPcd ( + PcdValidData = (VAR_CHECK_PCD_VALID_DATA_HEADER *) HEADER_ALIGN (((UINTN) PcdValidData + PcdValidData->Length)); + } + +- DEBUG ((EFI_D_INFO, "VarCheckPcdVariable - ALL CHECK PASS!\n")); ++ DEBUG ((DEBUG_INFO, "VarCheckPcdVariable - ALL CHECK PASS!\n")); + return EFI_SUCCESS; + } + // +@@ -257,11 +257,11 @@ DumpPcdValidData ( + UINT64 OneValue; + UINT8 *Ptr; + +- DEBUG ((EFI_D_INFO, " VAR_CHECK_PCD_VALID_DATA_HEADER\n")); +- DEBUG ((EFI_D_INFO, " Type - 0x%02x\n", PcdValidData->Type)); +- DEBUG ((EFI_D_INFO, " Length - 0x%02x\n", PcdValidData->Length)); +- DEBUG ((EFI_D_INFO, " VarOffset - 0x%04x\n", PcdValidData->VarOffset)); +- DEBUG ((EFI_D_INFO, " StorageWidth - 0x%02x\n", PcdValidData->StorageWidth)); ++ DEBUG ((DEBUG_INFO, " VAR_CHECK_PCD_VALID_DATA_HEADER\n")); ++ DEBUG ((DEBUG_INFO, " Type - 0x%02x\n", PcdValidData->Type)); ++ DEBUG ((DEBUG_INFO, " Length - 0x%02x\n", PcdValidData->Length)); ++ DEBUG ((DEBUG_INFO, " VarOffset - 0x%04x\n", PcdValidData->VarOffset)); ++ DEBUG ((DEBUG_INFO, " StorageWidth - 0x%02x\n", PcdValidData->StorageWidth)); + + switch (PcdValidData->Type) { + case VarCheckPcdValidList: +@@ -271,16 +271,16 @@ DumpPcdValidData ( + CopyMem (&OneValue, Ptr, PcdValidData->StorageWidth); + switch (PcdValidData->StorageWidth) { + case sizeof (UINT8): +- DEBUG ((EFI_D_INFO, " ValidList - 0x%02x\n", OneValue)); ++ DEBUG ((DEBUG_INFO, " ValidList - 0x%02x\n", OneValue)); + break; + case sizeof (UINT16): +- DEBUG ((EFI_D_INFO, " ValidList - 0x%04x\n", OneValue)); ++ DEBUG ((DEBUG_INFO, " ValidList - 0x%04x\n", OneValue)); + break; + case sizeof (UINT32): +- DEBUG ((EFI_D_INFO, " ValidList - 0x%08x\n", OneValue)); ++ DEBUG ((DEBUG_INFO, " ValidList - 0x%08x\n", OneValue)); + break; + case sizeof (UINT64): +- DEBUG ((EFI_D_INFO, " ValidList - 0x%016lx\n", OneValue)); ++ DEBUG ((DEBUG_INFO, " ValidList - 0x%016lx\n", OneValue)); + break; + default: + ASSERT (FALSE); +@@ -302,20 +302,20 @@ DumpPcdValidData ( + + switch (PcdValidData->StorageWidth) { + case sizeof (UINT8): +- DEBUG ((EFI_D_INFO, " Minimum - 0x%02x\n", Minimum)); +- DEBUG ((EFI_D_INFO, " Maximum - 0x%02x\n", Maximum)); ++ DEBUG ((DEBUG_INFO, " Minimum - 0x%02x\n", Minimum)); ++ DEBUG ((DEBUG_INFO, " Maximum - 0x%02x\n", Maximum)); + break; + case sizeof (UINT16): +- DEBUG ((EFI_D_INFO, " Minimum - 0x%04x\n", Minimum)); +- DEBUG ((EFI_D_INFO, " Maximum - 0x%04x\n", Maximum)); ++ DEBUG ((DEBUG_INFO, " Minimum - 0x%04x\n", Minimum)); ++ DEBUG ((DEBUG_INFO, " Maximum - 0x%04x\n", Maximum)); + break; + case sizeof (UINT32): +- DEBUG ((EFI_D_INFO, " Minimum - 0x%08x\n", Minimum)); +- DEBUG ((EFI_D_INFO, " Maximum - 0x%08x\n", Maximum)); ++ DEBUG ((DEBUG_INFO, " Minimum - 0x%08x\n", Minimum)); ++ DEBUG ((DEBUG_INFO, " Maximum - 0x%08x\n", Maximum)); + break; + case sizeof (UINT64): +- DEBUG ((EFI_D_INFO, " Minimum - 0x%016lx\n", Minimum)); +- DEBUG ((EFI_D_INFO, " Maximum - 0x%016lx\n", Maximum)); ++ DEBUG ((DEBUG_INFO, " Minimum - 0x%016lx\n", Minimum)); ++ DEBUG ((DEBUG_INFO, " Maximum - 0x%016lx\n", Maximum)); + break; + default: + ASSERT (FALSE); +@@ -343,14 +343,14 @@ DumpPcdVariable ( + { + VAR_CHECK_PCD_VALID_DATA_HEADER *PcdValidData; + +- DEBUG ((EFI_D_INFO, "VAR_CHECK_PCD_VARIABLE_HEADER\n")); +- DEBUG ((EFI_D_INFO, " Revision - 0x%04x\n", PcdVariable->Revision)); +- DEBUG ((EFI_D_INFO, " HeaderLength - 0x%04x\n", PcdVariable->HeaderLength)); +- DEBUG ((EFI_D_INFO, " Length - 0x%08x\n", PcdVariable->Length)); +- DEBUG ((EFI_D_INFO, " Type - 0x%02x\n", PcdVariable->Type)); +- DEBUG ((EFI_D_INFO, " Attributes - 0x%08x\n", PcdVariable->Attributes)); +- DEBUG ((EFI_D_INFO, " Guid - %g\n", &PcdVariable->Guid)); +- DEBUG ((EFI_D_INFO, " Name - %s\n", PcdVariable + 1)); ++ DEBUG ((DEBUG_INFO, "VAR_CHECK_PCD_VARIABLE_HEADER\n")); ++ DEBUG ((DEBUG_INFO, " Revision - 0x%04x\n", PcdVariable->Revision)); ++ DEBUG ((DEBUG_INFO, " HeaderLength - 0x%04x\n", PcdVariable->HeaderLength)); ++ DEBUG ((DEBUG_INFO, " Length - 0x%08x\n", PcdVariable->Length)); ++ DEBUG ((DEBUG_INFO, " Type - 0x%02x\n", PcdVariable->Type)); ++ DEBUG ((DEBUG_INFO, " Attributes - 0x%08x\n", PcdVariable->Attributes)); ++ DEBUG ((DEBUG_INFO, " Guid - %g\n", &PcdVariable->Guid)); ++ DEBUG ((DEBUG_INFO, " Name - %s\n", PcdVariable + 1)); + + // + // For Pcd ValidData header align. +@@ -383,7 +383,7 @@ DumpVarCheckPcd ( + { + VAR_CHECK_PCD_VARIABLE_HEADER *PcdVariable; + +- DEBUG ((EFI_D_INFO, "DumpVarCheckPcd\n")); ++ DEBUG ((DEBUG_INFO, "DumpVarCheckPcd\n")); + + // + // For Pcd Variable header align. +@@ -436,7 +436,7 @@ LocateVarCheckPcdBin ( + mVarCheckPcdBinSize = VarCheckPcdBinSize; + FreePool (VarCheckPcdBin); + +- DEBUG ((EFI_D_INFO, "VarCheckPcdBin - at 0x%x size = 0x%x\n", mVarCheckPcdBin, mVarCheckPcdBinSize)); ++ DEBUG ((DEBUG_INFO, "VarCheckPcdBin - at 0x%x size = 0x%x\n", mVarCheckPcdBin, mVarCheckPcdBinSize)); + + #ifdef DUMP_VAR_CHECK_PCD + DEBUG_CODE ( +@@ -444,7 +444,7 @@ LocateVarCheckPcdBin ( + ); + #endif + } else { +- DEBUG ((EFI_D_INFO, "[VarCheckPcd] No VarCheckPcdBin found at the first RAW section\n")); ++ DEBUG ((DEBUG_INFO, "[VarCheckPcd] No VarCheckPcdBin found at the first RAW section\n")); + } + } + +diff --git a/MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLibNullClass.c b/MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLibNullClass.c +index e3bf04a54f..5767213224 100644 +--- a/MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLibNullClass.c ++++ b/MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLibNullClass.c +@@ -836,7 +836,7 @@ SetVariableCheckHandlerUefiDefined ( + // only permit the creation of variables with a UEFI Specification-defined + // VendorGuid when these variables are documented in the UEFI Specification. + // +- DEBUG ((EFI_D_INFO, "UEFI Variable Check fail %r - %s not in %g namespace\n", EFI_INVALID_PARAMETER, VariableName, VendorGuid)); ++ DEBUG ((DEBUG_INFO, "UEFI Variable Check fail %r - %s not in %g namespace\n", EFI_INVALID_PARAMETER, VariableName, VendorGuid)); + return EFI_INVALID_PARAMETER; + } + } +@@ -855,7 +855,7 @@ SetVariableCheckHandlerUefiDefined ( + Data + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "UEFI Variable Check function fail %r - %g:%s\n", Status, VendorGuid, VariableName)); ++ DEBUG ((DEBUG_INFO, "UEFI Variable Check function fail %r - %g:%s\n", Status, VendorGuid, VariableName)); + return Status; + } + } +diff --git a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.c b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.c +index d98573d613..5019b49afe 100644 +--- a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.c ++++ b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiSdt.c +@@ -1048,9 +1048,9 @@ FindPath ( + } + + DEBUG_CODE_BEGIN (); +- DEBUG ((EFI_D_ERROR, "AcpiSdt: FindPath - ")); ++ DEBUG ((DEBUG_ERROR, "AcpiSdt: FindPath - ")); + AmlPrintNameString (AmlPath); +- DEBUG ((EFI_D_ERROR, "\n")); ++ DEBUG ((DEBUG_ERROR, "\n")); + DEBUG_CODE_END (); + + if (AmlHandle->Signature == EFI_AML_ROOT_HANDLE_SIGNATURE) { +diff --git a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AmlNamespace.c b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AmlNamespace.c +index 8139f3ab44..d5d48f9455 100644 +--- a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AmlNamespace.c ++++ b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AmlNamespace.c +@@ -263,9 +263,9 @@ AmlInsertNodeToTree ( + // + // Oops!!!, There must be something wrong. + // +- DEBUG ((EFI_D_ERROR, "AML: Override Happen - %a!\n", NameString)); +- DEBUG ((EFI_D_ERROR, "AML: Existing Node - %x\n", AmlNodeList->Buffer)); +- DEBUG ((EFI_D_ERROR, "AML: New Buffer - %x\n", Buffer)); ++ DEBUG ((DEBUG_ERROR, "AML: Override Happen - %a!\n", NameString)); ++ DEBUG ((DEBUG_ERROR, "AML: Existing Node - %x\n", AmlNodeList->Buffer)); ++ DEBUG ((DEBUG_ERROR, "AML: New Buffer - %x\n", Buffer)); + + return NULL; + } +@@ -476,14 +476,14 @@ AmlDumpNodeInfo ( + CurrentLink = AmlParentNodeList->Children.ForwardLink; + + if (Level == 0) { +- DEBUG ((EFI_D_ERROR, "\\")); ++ DEBUG ((DEBUG_ERROR, "\\")); + } else { + for (Index = 0; Index < Level; Index++) { +- DEBUG ((EFI_D_ERROR, " ")); ++ DEBUG ((DEBUG_ERROR, " ")); + } + AmlPrintNameSeg (AmlParentNodeList->Name); + } +- DEBUG ((EFI_D_ERROR, "\n")); ++ DEBUG ((DEBUG_ERROR, "\n")); + + while (CurrentLink != &AmlParentNodeList->Children) { + CurrentAmlNodeList = EFI_AML_NODE_LIST_FROM_LINK (CurrentLink); +@@ -543,7 +543,7 @@ AmlFindPath ( + } + + DEBUG_CODE_BEGIN (); +- DEBUG ((EFI_D_ERROR, "AcpiSdt: NameSpace:\n")); ++ DEBUG ((DEBUG_ERROR, "AcpiSdt: NameSpace:\n")); + AmlDumpNodeInfo (AmlRootNodeList, 0); + DEBUG_CODE_END (); + +@@ -579,9 +579,9 @@ AmlFindPath ( + // + if (CurrentAmlNodeList != NULL) { + DEBUG_CODE_BEGIN (); +- DEBUG ((EFI_D_ERROR, "AcpiSdt: Search from: \\")); ++ DEBUG ((DEBUG_ERROR, "AcpiSdt: Search from: \\")); + AmlPrintNameSeg (CurrentAmlNodeList->Name); +- DEBUG ((EFI_D_ERROR, "\n")); ++ DEBUG ((DEBUG_ERROR, "\n")); + DEBUG_CODE_END (); + AmlNodeList = AmlFindNodeInTheTree ( + AmlPath, +diff --git a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AmlString.c b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AmlString.c +index d0b8b0d0f4..96341b7fec 100644 +--- a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AmlString.c ++++ b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AmlString.c +@@ -457,19 +457,19 @@ AmlPrintNameSeg ( + IN UINT8 *Buffer + ) + { +- DEBUG ((EFI_D_ERROR, "%c", Buffer[0])); ++ DEBUG ((DEBUG_ERROR, "%c", Buffer[0])); + if ((Buffer[1] == '_') && (Buffer[2] == '_') && (Buffer[3] == '_')) { + return ; + } +- DEBUG ((EFI_D_ERROR, "%c", Buffer[1])); ++ DEBUG ((DEBUG_ERROR, "%c", Buffer[1])); + if ((Buffer[2] == '_') && (Buffer[3] == '_')) { + return ; + } +- DEBUG ((EFI_D_ERROR, "%c", Buffer[2])); ++ DEBUG ((DEBUG_ERROR, "%c", Buffer[2])); + if (Buffer[3] == '_') { + return ; + } +- DEBUG ((EFI_D_ERROR, "%c", Buffer[3])); ++ DEBUG ((DEBUG_ERROR, "%c", Buffer[3])); + return ; + } + +@@ -491,14 +491,14 @@ AmlPrintNameString ( + // RootChar + // + Buffer ++; +- DEBUG ((EFI_D_ERROR, "\\")); ++ DEBUG ((DEBUG_ERROR, "\\")); + } else if (*Buffer == AML_PARENT_PREFIX_CHAR) { + // + // ParentPrefixChar + // + do { + Buffer ++; +- DEBUG ((EFI_D_ERROR, "^")); ++ DEBUG ((DEBUG_ERROR, "^")); + } while (*Buffer == AML_PARENT_PREFIX_CHAR); + } + +@@ -530,7 +530,7 @@ AmlPrintNameString ( + AmlPrintNameSeg (Buffer); + Buffer += AML_NAME_SEG_SIZE; + for (Index = 0; Index < SegCount - 1; Index++) { +- DEBUG ((EFI_D_ERROR, ".")); ++ DEBUG ((DEBUG_ERROR, ".")); + AmlPrintNameSeg (Buffer); + Buffer += AML_NAME_SEG_SIZE; + } +diff --git a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c +index b2ae9ec3a4..4ed23979bd 100644 +--- a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c ++++ b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c +@@ -164,7 +164,7 @@ S3BootScriptExecutorEntryFunction ( + ); + } else { + // Unsupported for 32bit DXE, 64bit OS vector +- DEBUG (( EFI_D_ERROR, "Unsupported for 32bit DXE transfer to 64bit OS waking vector!\r\n")); ++ DEBUG (( DEBUG_ERROR, "Unsupported for 32bit DXE transfer to 64bit OS waking vector!\r\n")); + ASSERT (FALSE); + } + } else { +@@ -494,4 +494,3 @@ BootScriptExecutorEntryPoint ( + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.c b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.c +index 68755554ad..5c20002077 100644 +--- a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.c ++++ b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.c +@@ -248,7 +248,7 @@ FpdtAllocateS3PerformanceTableMemory ( + EFI_SIZE_TO_PAGES (sizeof (S3_PERFORMANCE_TABLE)) + ); + } +- DEBUG ((EFI_D_INFO, "FPDT: ACPI S3 Performance Table address = 0x%x\n", mAcpiS3PerformanceTable)); ++ DEBUG ((DEBUG_INFO, "FPDT: ACPI S3 Performance Table address = 0x%x\n", mAcpiS3PerformanceTable)); + if (mAcpiS3PerformanceTable != NULL) { + CopyMem (mAcpiS3PerformanceTable, &mS3PerformanceTableTemplate, sizeof (mS3PerformanceTableTemplate)); + } +@@ -526,11 +526,11 @@ FpdtStatusCodeListenerDxe ( + // + // Dump FPDT Boot Performance record. + // +- DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - ResetEnd = %ld\n", mAcpiBootPerformanceTable->BasicBoot.ResetEnd)); +- DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - OsLoaderLoadImageStart = 0\n")); +- DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - OsLoaderStartImageStart = %ld\n", mAcpiBootPerformanceTable->BasicBoot.OsLoaderStartImageStart)); +- DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - ExitBootServicesEntry = 0\n")); +- DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - ExitBootServicesExit = 0\n")); ++ DEBUG ((DEBUG_INFO, "FPDT: Boot Performance - ResetEnd = %ld\n", mAcpiBootPerformanceTable->BasicBoot.ResetEnd)); ++ DEBUG ((DEBUG_INFO, "FPDT: Boot Performance - OsLoaderLoadImageStart = 0\n")); ++ DEBUG ((DEBUG_INFO, "FPDT: Boot Performance - OsLoaderStartImageStart = %ld\n", mAcpiBootPerformanceTable->BasicBoot.OsLoaderStartImageStart)); ++ DEBUG ((DEBUG_INFO, "FPDT: Boot Performance - ExitBootServicesEntry = 0\n")); ++ DEBUG ((DEBUG_INFO, "FPDT: Boot Performance - ExitBootServicesExit = 0\n")); + } else if (Data != NULL && CompareGuid (&Data->Type, &gEdkiiFpdtExtendedFirmwarePerformanceGuid)) { + // + // Get the Boot performance table and then install it to ACPI table. +@@ -615,10 +615,10 @@ FpdtExitBootServicesEventNotify ( + // + // Dump FPDT Boot Performance record. + // +- DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - ResetEnd = %ld\n", mAcpiBootPerformanceTable->BasicBoot.ResetEnd)); +- DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - OsLoaderLoadImageStart = %ld\n", mAcpiBootPerformanceTable->BasicBoot.OsLoaderLoadImageStart)); +- DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - OsLoaderStartImageStart = %ld\n", mAcpiBootPerformanceTable->BasicBoot.OsLoaderStartImageStart)); +- DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - ExitBootServicesEntry = %ld\n", mAcpiBootPerformanceTable->BasicBoot.ExitBootServicesEntry)); ++ DEBUG ((DEBUG_INFO, "FPDT: Boot Performance - ResetEnd = %ld\n", mAcpiBootPerformanceTable->BasicBoot.ResetEnd)); ++ DEBUG ((DEBUG_INFO, "FPDT: Boot Performance - OsLoaderLoadImageStart = %ld\n", mAcpiBootPerformanceTable->BasicBoot.OsLoaderLoadImageStart)); ++ DEBUG ((DEBUG_INFO, "FPDT: Boot Performance - OsLoaderStartImageStart = %ld\n", mAcpiBootPerformanceTable->BasicBoot.OsLoaderStartImageStart)); ++ DEBUG ((DEBUG_INFO, "FPDT: Boot Performance - ExitBootServicesEntry = %ld\n", mAcpiBootPerformanceTable->BasicBoot.ExitBootServicesEntry)); + // + // ExitBootServicesExit will be updated later, so don't dump it here. + // +diff --git a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c +index 493d09c785..6881466201 100644 +--- a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c ++++ b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c +@@ -100,7 +100,7 @@ FpdtStatusCodeListenerPei ( + AcpiS3PerformanceTable = (S3_PERFORMANCE_TABLE *) (UINTN) S3PerformanceTablePointer; + ASSERT (AcpiS3PerformanceTable != NULL); + if (AcpiS3PerformanceTable->Header.Signature != EFI_ACPI_5_0_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE) { +- DEBUG ((EFI_D_ERROR, "FPDT S3 performance data in ACPI memory get corrupted\n")); ++ DEBUG ((DEBUG_ERROR, "FPDT S3 performance data in ACPI memory get corrupted\n")); + return EFI_ABORTED; + } + AcpiS3ResumeRecord = &AcpiS3PerformanceTable->S3Resume; +@@ -112,9 +112,9 @@ FpdtStatusCodeListenerPei ( + AcpiS3ResumeRecord->ResumeCount++; + AcpiS3ResumeRecord->AverageResume = DivU64x32 (S3ResumeTotal + AcpiS3ResumeRecord->FullResume, AcpiS3ResumeRecord->ResumeCount); + +- DEBUG ((EFI_D_INFO, "FPDT: S3 Resume Performance - ResumeCount = %d\n", AcpiS3ResumeRecord->ResumeCount)); +- DEBUG ((EFI_D_INFO, "FPDT: S3 Resume Performance - FullResume = %ld\n", AcpiS3ResumeRecord->FullResume)); +- DEBUG ((EFI_D_INFO, "FPDT: S3 Resume Performance - AverageResume = %ld\n", AcpiS3ResumeRecord->AverageResume)); ++ DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - ResumeCount = %d\n", AcpiS3ResumeRecord->ResumeCount)); ++ DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - FullResume = %ld\n", AcpiS3ResumeRecord->FullResume)); ++ DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - AverageResume = %ld\n", AcpiS3ResumeRecord->AverageResume)); + + // + // Update S3 Suspend Performance Record. +@@ -132,8 +132,8 @@ FpdtStatusCodeListenerPei ( + AcpiS3SuspendRecord->SuspendStart = S3SuspendRecord.SuspendStart; + AcpiS3SuspendRecord->SuspendEnd = S3SuspendRecord.SuspendEnd; + +- DEBUG ((EFI_D_INFO, "FPDT: S3 Suspend Performance - SuspendStart = %ld\n", AcpiS3SuspendRecord->SuspendStart)); +- DEBUG ((EFI_D_INFO, "FPDT: S3 Suspend Performance - SuspendEnd = %ld\n", AcpiS3SuspendRecord->SuspendEnd)); ++ DEBUG ((DEBUG_INFO, "FPDT: S3 Suspend Performance - SuspendStart = %ld\n", AcpiS3SuspendRecord->SuspendStart)); ++ DEBUG ((DEBUG_INFO, "FPDT: S3 Suspend Performance - SuspendEnd = %ld\n", AcpiS3SuspendRecord->SuspendEnd)); + + Status = PeiServicesLocatePpi ( + &gEfiPeiReadOnlyVariable2PpiGuid, +diff --git a/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/AcpiS3ContextSave.c b/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/AcpiS3ContextSave.c +index e7cd2a12a0..8df9d73a96 100644 +--- a/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/AcpiS3ContextSave.c ++++ b/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/AcpiS3ContextSave.c +@@ -236,11 +236,11 @@ AcpiS3ContextSaveOnEndOfDxe ( + EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *Facs; + VOID *Interface; + +- DEBUG ((EFI_D_INFO, "AcpiS3ContextSave!\n")); ++ DEBUG ((DEBUG_INFO, "AcpiS3ContextSave!\n")); + + Status = gBS->LocateProtocol (&gEfiLockBoxProtocolGuid, NULL, &Interface); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO | EFI_D_WARN, "ACPI S3 context can't be saved without LockBox!\n")); ++ DEBUG ((DEBUG_INFO | DEBUG_WARN, "ACPI S3 context can't be saved without LockBox!\n")); + goto Done; + } + +@@ -291,12 +291,12 @@ AcpiS3ContextSaveOnEndOfDxe ( + AcpiS3Context->S3DebugBufferAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)AllocateMemoryBelow4G (EfiReservedMemoryType, EFI_PAGE_SIZE); + SetMem ((VOID *)(UINTN)AcpiS3Context->S3DebugBufferAddress, EFI_PAGE_SIZE, 0xff); + +- DEBUG((EFI_D_INFO, "AcpiS3Context: AcpiFacsTable is 0x%8x\n", AcpiS3Context->AcpiFacsTable)); +- DEBUG((EFI_D_INFO, "AcpiS3Context: IdtrProfile is 0x%8x\n", AcpiS3Context->IdtrProfile)); +- DEBUG((EFI_D_INFO, "AcpiS3Context: S3NvsPageTableAddress is 0x%8x\n", AcpiS3Context->S3NvsPageTableAddress)); +- DEBUG((EFI_D_INFO, "AcpiS3Context: S3DebugBufferAddress is 0x%8x\n", AcpiS3Context->S3DebugBufferAddress)); +- DEBUG((EFI_D_INFO, "AcpiS3Context: BootScriptStackBase is 0x%8x\n", AcpiS3Context->BootScriptStackBase)); +- DEBUG((EFI_D_INFO, "AcpiS3Context: BootScriptStackSize is 0x%8x\n", AcpiS3Context->BootScriptStackSize)); ++ DEBUG((DEBUG_INFO, "AcpiS3Context: AcpiFacsTable is 0x%8x\n", AcpiS3Context->AcpiFacsTable)); ++ DEBUG((DEBUG_INFO, "AcpiS3Context: IdtrProfile is 0x%8x\n", AcpiS3Context->IdtrProfile)); ++ DEBUG((DEBUG_INFO, "AcpiS3Context: S3NvsPageTableAddress is 0x%8x\n", AcpiS3Context->S3NvsPageTableAddress)); ++ DEBUG((DEBUG_INFO, "AcpiS3Context: S3DebugBufferAddress is 0x%8x\n", AcpiS3Context->S3DebugBufferAddress)); ++ DEBUG((DEBUG_INFO, "AcpiS3Context: BootScriptStackBase is 0x%8x\n", AcpiS3Context->BootScriptStackBase)); ++ DEBUG((DEBUG_INFO, "AcpiS3Context: BootScriptStackSize is 0x%8x\n", AcpiS3Context->BootScriptStackSize)); + + Status = SaveLockBox ( + &gEfiAcpiVariableGuid, +@@ -322,4 +322,3 @@ Done: + Status = gBS->CloseEvent (Event); + ASSERT_EFI_ERROR (Status); + } +- +diff --git a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c +index 13c10bdc5b..4b10567eb3 100644 +--- a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c ++++ b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c +@@ -78,7 +78,7 @@ BdsDxeOnConnectConInCallBack ( + // Should not enter this case, if enter, the keyboard will not work. + // May need platfrom policy to connect keyboard. + // +- DEBUG ((EFI_D_WARN, "[Bds] Connect ConIn failed - %r!!!\n", Status)); ++ DEBUG ((DEBUG_WARN, "[Bds] Connect ConIn failed - %r!!!\n", Status)); + } + } + /** +@@ -315,11 +315,11 @@ BdsWait ( + EFI_STATUS Status; + UINT16 TimeoutRemain; + +- DEBUG ((EFI_D_INFO, "[Bds]BdsWait ...Zzzzzzzzzzzz...\n")); ++ DEBUG ((DEBUG_INFO, "[Bds]BdsWait ...Zzzzzzzzzzzz...\n")); + + TimeoutRemain = PcdGet16 (PcdPlatformBootTimeOut); + while (TimeoutRemain != 0) { +- DEBUG ((EFI_D_INFO, "[Bds]BdsWait(%d)..Zzzz...\n", (UINTN) TimeoutRemain)); ++ DEBUG ((DEBUG_INFO, "[Bds]BdsWait(%d)..Zzzz...\n", (UINTN) TimeoutRemain)); + PlatformBootManagerWaitCallback (TimeoutRemain); + + BdsReadKeys (); // BUGBUG: Only reading can signal HotkeyTriggered +@@ -353,7 +353,7 @@ BdsWait ( + if (PcdGet16 (PcdPlatformBootTimeOut) != 0 && TimeoutRemain == 0) { + PlatformBootManagerWaitCallback (0); + } +- DEBUG ((EFI_D_INFO, "[Bds]Exit the waiting!\n")); ++ DEBUG ((DEBUG_INFO, "[Bds]Exit the waiting!\n")); + } + + /** +@@ -610,7 +610,7 @@ BdsFormalizeOSIndicationVariable ( + (Attributes != (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE)) + ){ + +- DEBUG ((EFI_D_ERROR, "[Bds] Unformalized OsIndications variable exists. Delete it\n")); ++ DEBUG ((DEBUG_ERROR, "[Bds] Unformalized OsIndications variable exists. Delete it\n")); + Status = gRT->SetVariable ( + EFI_OS_INDICATIONS_VARIABLE_NAME, + &gEfiGlobalVariableGuid, +@@ -693,7 +693,7 @@ BdsEntry ( + // + PERF_CROSSMODULE_END("DXE"); + PERF_CROSSMODULE_BEGIN("BDS"); +- DEBUG ((EFI_D_INFO, "[Bds] Entry...\n")); ++ DEBUG ((DEBUG_INFO, "[Bds] Entry...\n")); + + // + // Fill in FirmwareVendor and FirmwareRevision from PCDs +@@ -943,17 +943,17 @@ BdsEntry ( + + DEBUG_CODE ( + EFI_BOOT_MANAGER_LOAD_OPTION_TYPE LoadOptionType; +- DEBUG ((EFI_D_INFO, "[Bds]OsIndication: %016x\n", OsIndication)); +- DEBUG ((EFI_D_INFO, "[Bds]=============Begin Load Options Dumping ...=============\n")); ++ DEBUG ((DEBUG_INFO, "[Bds]OsIndication: %016x\n", OsIndication)); ++ DEBUG ((DEBUG_INFO, "[Bds]=============Begin Load Options Dumping ...=============\n")); + for (LoadOptionType = 0; LoadOptionType < LoadOptionTypeMax; LoadOptionType++) { + DEBUG (( +- EFI_D_INFO, " %s Options:\n", ++ DEBUG_INFO, " %s Options:\n", + mBdsLoadOptionName[LoadOptionType] + )); + LoadOptions = EfiBootManagerGetLoadOptions (&LoadOptionCount, LoadOptionType); + for (Index = 0; Index < LoadOptionCount; Index++) { + DEBUG (( +- EFI_D_INFO, " %s%04x: %s \t\t 0x%04x\n", ++ DEBUG_INFO, " %s%04x: %s \t\t 0x%04x\n", + mBdsLoadOptionName[LoadOptionType], + LoadOptions[Index].OptionNumber, + LoadOptions[Index].Description, +@@ -962,7 +962,7 @@ BdsEntry ( + } + EfiBootManagerFreeLoadOptions (LoadOptions, LoadOptionCount); + } +- DEBUG ((EFI_D_INFO, "[Bds]=============End Load Options Dumping=============\n")); ++ DEBUG ((DEBUG_INFO, "[Bds]=============End Load Options Dumping=============\n")); + ); + + // +@@ -1092,7 +1092,7 @@ BdsEntry ( + } + EfiBootManagerFreeLoadOption (&PlatformDefaultBootOption); + +- DEBUG ((EFI_D_ERROR, "[Bds] Unable to boot!\n")); ++ DEBUG ((DEBUG_ERROR, "[Bds] Unable to boot!\n")); + PlatformBootManagerUnableToBoot (); + CpuDeadLoop (); + } +diff --git a/MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c b/MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c +index 4a0567fa76..22704910dd 100644 +--- a/MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c ++++ b/MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c +@@ -168,7 +168,7 @@ PageFaultHandler ( + AddressEncMask = PageFaultContext->AddressEncMask; + + PFAddress = AsmReadCr2 (); +- DEBUG ((EFI_D_ERROR, "CapsuleX64 - PageFaultHandler: Cr2 - %lx\n", PFAddress)); ++ DEBUG ((DEBUG_ERROR, "CapsuleX64 - PageFaultHandler: Cr2 - %lx\n", PFAddress)); + + if (PFAddress >= PhyMask + SIZE_4KB) { + return PageFaultContext->OriginalHandler; +diff --git a/MdeModulePkg/Universal/CapsuleRuntimeDxe/X64/SaveLongModeContext.c b/MdeModulePkg/Universal/CapsuleRuntimeDxe/X64/SaveLongModeContext.c +index d80d4ed3ac..eab24e4da0 100644 +--- a/MdeModulePkg/Universal/CapsuleRuntimeDxe/X64/SaveLongModeContext.c ++++ b/MdeModulePkg/Universal/CapsuleRuntimeDxe/X64/SaveLongModeContext.c +@@ -186,7 +186,7 @@ PrepareContextForCapsulePei ( + &Registration + ); + } else { +- DEBUG ((EFI_D_ERROR, "FATAL ERROR: CapsuleLongModeBuffer cannot be saved: %r. Capsule in PEI may fail!\n", Status)); ++ DEBUG ((DEBUG_ERROR, "FATAL ERROR: CapsuleLongModeBuffer cannot be saved: %r. Capsule in PEI may fail!\n", Status)); + gBS->FreePages (LongModeBuffer.StackBaseAddress, EFI_SIZE_TO_PAGES (LongModeBuffer.StackSize)); + } + } +diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c +index e8cd4ce120..114c46addd 100644 +--- a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c ++++ b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c +@@ -330,7 +330,7 @@ ToggleStateSyncKeyNotify ( + ); + } + mConIn.PhysicalKeyToggleState = KeyData->KeyState.KeyToggleState; +- DEBUG ((EFI_D_INFO, "Current toggle state is 0x%02x\n", mConIn.PhysicalKeyToggleState)); ++ DEBUG ((DEBUG_INFO, "Current toggle state is 0x%02x\n", mConIn.PhysicalKeyToggleState)); + } + + return EFI_SUCCESS; +@@ -3615,7 +3615,7 @@ ConSplitterTextInReadKeyStroke ( + // Signal ConnectConIn event on first call in Lazy ConIn mode + // + if (!mConInIsConnect && PcdGetBool (PcdConInConnectOnDemand)) { +- DEBUG ((EFI_D_INFO, "Connect ConIn in first ReadKeyStoke in Lazy ConIn mode.\n")); ++ DEBUG ((DEBUG_INFO, "Connect ConIn in first ReadKeyStoke in Lazy ConIn mode.\n")); + gBS->SignalEvent (Private->ConnectConInEvent); + mConInIsConnect = TRUE; + } +@@ -3809,7 +3809,7 @@ ConSplitterTextInReadKeyStrokeEx ( + // Signal ConnectConIn event on first call in Lazy ConIn mode + // + if (!mConInIsConnect && PcdGetBool (PcdConInConnectOnDemand)) { +- DEBUG ((EFI_D_INFO, "Connect ConIn in first ReadKeyStoke in Lazy ConIn mode.\n")); ++ DEBUG ((DEBUG_INFO, "Connect ConIn in first ReadKeyStoke in Lazy ConIn mode.\n")); + gBS->SignalEvent (Private->ConnectConInEvent); + mConInIsConnect = TRUE; + } +diff --git a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c +index d6d8db51d5..838c3337c7 100644 +--- a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c ++++ b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c +@@ -337,7 +337,7 @@ InitializeGraphicsConsoleTextMode ( + + DEBUG_CODE ( + for (Index = 0; Index < ValidCount; Index++) { +- DEBUG ((EFI_D_INFO, "Graphics - Mode %d, Column = %d, Row = %d\n", ++ DEBUG ((DEBUG_INFO, "Graphics - Mode %d, Column = %d, Row = %d\n", + Index, NewModeBuffer[Index].Columns, NewModeBuffer[Index].Rows)); + } + ); +@@ -551,7 +551,7 @@ GraphicsConsoleControllerDriverStart ( + } + } + +- DEBUG ((EFI_D_INFO, "GraphicsConsole video resolution %d x %d\n", HorizontalResolution, VerticalResolution)); ++ DEBUG ((DEBUG_INFO, "GraphicsConsole video resolution %d x %d\n", HorizontalResolution, VerticalResolution)); + + // + // Initialize the mode which GraphicsConsole supports. +@@ -2132,5 +2132,3 @@ InitializeGraphicsConsole ( + + return Status; + } +- +- +diff --git a/MdeModulePkg/Universal/Console/GraphicsOutputDxe/GraphicsOutput.c b/MdeModulePkg/Universal/Console/GraphicsOutputDxe/GraphicsOutput.c +index 99a76aa55c..ef82daebed 100644 +--- a/MdeModulePkg/Universal/Console/GraphicsOutputDxe/GraphicsOutput.c ++++ b/MdeModulePkg/Universal/Console/GraphicsOutputDxe/GraphicsOutput.c +@@ -323,10 +323,10 @@ GraphicsOutputDriverBindingStart ( + // Use default device infomation when the device info HOB doesn't exist + // + DeviceInfo = &mDefaultGraphicsDeviceInfo; +- DEBUG ((EFI_D_INFO, "[%a]: GraphicsDeviceInfo HOB doesn't exist!\n", gEfiCallerBaseName)); ++ DEBUG ((DEBUG_INFO, "[%a]: GraphicsDeviceInfo HOB doesn't exist!\n", gEfiCallerBaseName)); + } else { + DeviceInfo = (EFI_PEI_GRAPHICS_DEVICE_INFO_HOB *) (GET_GUID_HOB_DATA (HobStart)); +- DEBUG ((EFI_D_INFO, "[%a]: GraphicsDeviceInfo HOB:\n" ++ DEBUG ((DEBUG_INFO, "[%a]: GraphicsDeviceInfo HOB:\n" + " VendorId = %04x, DeviceId = %04x,\n" + " RevisionId = %02x, BarIndex = %x,\n" + " SubsystemVendorId = %04x, SubsystemId = %04x\n", +@@ -395,7 +395,7 @@ GraphicsOutputDriverBindingStart ( + } + Status = PciIo->GetBarAttributes (PciIo, Index, NULL, (VOID**) &Resources); + if (!EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "[%a]: BAR[%d]: Base = %lx, Length = %lx\n", ++ DEBUG ((DEBUG_INFO, "[%a]: BAR[%d]: Base = %lx, Length = %lx\n", + gEfiCallerBaseName, Index, Resources->AddrRangeMin, Resources->AddrLen)); + if ((Resources->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) && + (Resources->Len == (UINT16) (sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3)) && +@@ -403,7 +403,7 @@ GraphicsOutputDriverBindingStart ( + (Resources->AddrLen >= GraphicsInfo->FrameBufferSize) + ) { + FrameBufferBase = Resources->AddrRangeMin; +- DEBUG ((EFI_D_INFO, "[%a]: ... matched!\n", gEfiCallerBaseName)); ++ DEBUG ((DEBUG_INFO, "[%a]: ... matched!\n", gEfiCallerBaseName)); + break; + } + } +diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c +index f8c71f95c1..4d6ede4c9f 100644 +--- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c ++++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c +@@ -2025,7 +2025,7 @@ UnicodeToEfiKey ( + continue; + } + else { +- DEBUG ((EFI_D_ERROR, "Unexpected state in escape2\n")); ++ DEBUG ((DEBUG_ERROR, "Unexpected state in escape2\n")); + } + } + TerminalDevice->ResetState = RESET_STATE_DEFAULT; +diff --git a/MdeModulePkg/Universal/Disk/CdExpressPei/PeiCdExpress.c b/MdeModulePkg/Universal/Disk/CdExpressPei/PeiCdExpress.c +index fd34f07eec..242dbf8eb1 100644 +--- a/MdeModulePkg/Universal/Disk/CdExpressPei/PeiCdExpress.c ++++ b/MdeModulePkg/Universal/Disk/CdExpressPei/PeiCdExpress.c +@@ -231,9 +231,9 @@ UpdateBlocksAndVolumes ( + ) { + continue; + } +- DEBUG ((EFI_D_INFO, "PeiCdExpress InterfaceType is %d\n", Media2.InterfaceType)); +- DEBUG ((EFI_D_INFO, "PeiCdExpress MediaPresent is %d\n", Media2.MediaPresent)); +- DEBUG ((EFI_D_INFO, "PeiCdExpress BlockSize is 0x%x\n", Media2.BlockSize)); ++ DEBUG ((DEBUG_INFO, "PeiCdExpress InterfaceType is %d\n", Media2.InterfaceType)); ++ DEBUG ((DEBUG_INFO, "PeiCdExpress MediaPresent is %d\n", Media2.MediaPresent)); ++ DEBUG ((DEBUG_INFO, "PeiCdExpress BlockSize is 0x%x\n", Media2.BlockSize)); + } else { + Status = BlockIoPpi->GetBlockDeviceMediaInfo ( + PeiServices, +@@ -248,14 +248,14 @@ UpdateBlocksAndVolumes ( + ) { + continue; + } +- DEBUG ((EFI_D_INFO, "PeiCdExpress DeviceType is %d\n", Media.DeviceType)); +- DEBUG ((EFI_D_INFO, "PeiCdExpress MediaPresent is %d\n", Media.MediaPresent)); +- DEBUG ((EFI_D_INFO, "PeiCdExpress BlockSize is 0x%x\n", Media.BlockSize)); ++ DEBUG ((DEBUG_INFO, "PeiCdExpress DeviceType is %d\n", Media.DeviceType)); ++ DEBUG ((DEBUG_INFO, "PeiCdExpress MediaPresent is %d\n", Media.MediaPresent)); ++ DEBUG ((DEBUG_INFO, "PeiCdExpress BlockSize is 0x%x\n", Media.BlockSize)); + } + +- DEBUG ((EFI_D_INFO, "PeiCdExpress Status is %d\n", Status)); ++ DEBUG ((DEBUG_INFO, "PeiCdExpress Status is %d\n", Status)); + +- DEBUG ((EFI_D_INFO, "IndexBlockDevice is %d\n", IndexBlockDevice)); ++ DEBUG ((DEBUG_INFO, "IndexBlockDevice is %d\n", IndexBlockDevice)); + PrivateData->CapsuleData[PrivateData->CapsuleCount].IndexBlock = IndexBlockDevice; + if (BlockIo2) { + PrivateData->CapsuleData[PrivateData->CapsuleCount].BlockIo2 = BlockIo2Ppi; +@@ -263,7 +263,7 @@ UpdateBlocksAndVolumes ( + PrivateData->CapsuleData[PrivateData->CapsuleCount].BlockIo = BlockIoPpi; + } + Status = FindRecoveryCapsules (PrivateData); +- DEBUG ((EFI_D_INFO, "Status is %d\n", Status)); ++ DEBUG ((DEBUG_INFO, "Status is %d\n", Status)); + + if (EFI_ERROR (Status)) { + continue; +diff --git a/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIo.c b/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIo.c +index e19466bd26..235db92969 100644 +--- a/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIo.c ++++ b/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIo.c +@@ -492,7 +492,7 @@ DiskIoCreateSubtask ( + } + } + DEBUG (( +- EFI_D_BLKIO, ++ DEBUG_BLKIO, + " %c:Lba/Offset/Length/WorkingBuffer/Buffer = %016lx/%08x/%08x/%08x/%08x\n", + Write ? 'W': 'R', Lba, Offset, Length, WorkingBuffer, Buffer + )); +@@ -540,7 +540,7 @@ DiskIoCreateSubtaskList ( + VOID *WorkingBuffer; + LIST_ENTRY *Link; + +- DEBUG ((EFI_D_BLKIO, "DiskIo: Create subtasks for task: Offset/BufferSize/Buffer = %016lx/%08x/%08x\n", Offset, BufferSize, Buffer)); ++ DEBUG ((DEBUG_BLKIO, "DiskIo: Create subtasks for task: Offset/BufferSize/Buffer = %016lx/%08x/%08x\n", Offset, BufferSize, Buffer)); + + BlockSize = Instance->BlockIo->Media->BlockSize; + IoAlign = Instance->BlockIo->Media->IoAlign; +@@ -668,7 +668,7 @@ DiskIoCreateSubtaskList ( + // + // If there is not enough memory, downgrade to blocking access + // +- DEBUG ((EFI_D_VERBOSE, "DiskIo: No enough memory so downgrade to blocking access\n")); ++ DEBUG ((DEBUG_VERBOSE, "DiskIo: No enough memory so downgrade to blocking access\n")); + if (!DiskIoCreateSubtaskList (Instance, Write, Offset, BufferSize, BufferPtr, TRUE, SharedWorkingBuffer, Subtasks)) { + goto Done; + } +@@ -970,7 +970,7 @@ DiskIo2ReadWriteDisk ( + // Task->Token should be set to NULL by the DiskIo2OnReadWriteComplete + // It it's not, that means the non-blocking request was downgraded to blocking request. + // +- DEBUG ((EFI_D_VERBOSE, "DiskIo: Non-blocking request was downgraded to blocking request, signal event directly.\n")); ++ DEBUG ((DEBUG_VERBOSE, "DiskIo: Non-blocking request was downgraded to blocking request, signal event directly.\n")); + Task->Token->TransactionStatus = Status; + gBS->SignalEvent (Task->Token->Event); + } +diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c b/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c +index 3d2ff3bc29..e2b028f733 100644 +--- a/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c ++++ b/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c +@@ -141,7 +141,7 @@ PartitionInstallElToritoChildHandles ( + Catalog + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "EltCheckDevice: error reading catalog %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "EltCheckDevice: error reading catalog %r\n", Status)); + continue; + } + // +@@ -149,7 +149,7 @@ PartitionInstallElToritoChildHandles ( + // to make sure it looks like a Catalog header + // + if (Catalog->Catalog.Indicator != ELTORITO_ID_CATALOG || Catalog->Catalog.Id55AA != 0xAA55) { +- DEBUG ((EFI_D_ERROR, "EltCheckBootCatalog: El Torito boot catalog header IDs not correct\n")); ++ DEBUG ((DEBUG_ERROR, "EltCheckBootCatalog: El Torito boot catalog header IDs not correct\n")); + continue; + } + +@@ -160,7 +160,7 @@ PartitionInstallElToritoChildHandles ( + } + + if ((Check & 0xFFFF) != 0) { +- DEBUG ((EFI_D_ERROR, "EltCheckBootCatalog: El Torito boot catalog header checksum failed\n")); ++ DEBUG ((DEBUG_ERROR, "EltCheckBootCatalog: El Torito boot catalog header checksum failed\n")); + continue; + } + +@@ -203,7 +203,7 @@ PartitionInstallElToritoChildHandles ( + break; + + default: +- DEBUG ((EFI_D_INIT, "EltCheckDevice: unsupported El Torito boot media type %x\n", Catalog->Boot.MediaType)); ++ DEBUG ((DEBUG_INIT, "EltCheckDevice: unsupported El Torito boot media type %x\n", Catalog->Boot.MediaType)); + SectorCount = 0; + SubBlockSize = Media->BlockSize; + break; +diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c b/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c +index efaff5e080..e985bd2c44 100644 +--- a/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c ++++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c +@@ -225,8 +225,8 @@ PartitionInstallGptChildHandles ( + LastBlock = BlockIo->Media->LastBlock; + MediaId = BlockIo->Media->MediaId; + +- DEBUG ((EFI_D_INFO, " BlockSize : %d \n", BlockSize)); +- DEBUG ((EFI_D_INFO, " LastBlock : %lx \n", LastBlock)); ++ DEBUG ((DEBUG_INFO, " BlockSize : %d \n", BlockSize)); ++ DEBUG ((DEBUG_INFO, " LastBlock : %lx \n", LastBlock)); + + GptValidStatus = EFI_NOT_FOUND; + +@@ -291,43 +291,43 @@ PartitionInstallGptChildHandles ( + // Check primary and backup partition tables + // + if (!PartitionValidGptTable (BlockIo, DiskIo, PRIMARY_PART_HEADER_LBA, PrimaryHeader)) { +- DEBUG ((EFI_D_INFO, " Not Valid primary partition table\n")); ++ DEBUG ((DEBUG_INFO, " Not Valid primary partition table\n")); + + if (!PartitionValidGptTable (BlockIo, DiskIo, LastBlock, BackupHeader)) { +- DEBUG ((EFI_D_INFO, " Not Valid backup partition table\n")); ++ DEBUG ((DEBUG_INFO, " Not Valid backup partition table\n")); + goto Done; + } else { +- DEBUG ((EFI_D_INFO, " Valid backup partition table\n")); +- DEBUG ((EFI_D_INFO, " Restore primary partition table by the backup\n")); ++ DEBUG ((DEBUG_INFO, " Valid backup partition table\n")); ++ DEBUG ((DEBUG_INFO, " Restore primary partition table by the backup\n")); + if (!PartitionRestoreGptTable (BlockIo, DiskIo, BackupHeader)) { +- DEBUG ((EFI_D_INFO, " Restore primary partition table error\n")); ++ DEBUG ((DEBUG_INFO, " Restore primary partition table error\n")); + } + + if (PartitionValidGptTable (BlockIo, DiskIo, BackupHeader->AlternateLBA, PrimaryHeader)) { +- DEBUG ((EFI_D_INFO, " Restore backup partition table success\n")); ++ DEBUG ((DEBUG_INFO, " Restore backup partition table success\n")); + } + } + } else if (!PartitionValidGptTable (BlockIo, DiskIo, PrimaryHeader->AlternateLBA, BackupHeader)) { +- DEBUG ((EFI_D_INFO, " Valid primary and !Valid backup partition table\n")); +- DEBUG ((EFI_D_INFO, " Restore backup partition table by the primary\n")); ++ DEBUG ((DEBUG_INFO, " Valid primary and !Valid backup partition table\n")); ++ DEBUG ((DEBUG_INFO, " Restore backup partition table by the primary\n")); + if (!PartitionRestoreGptTable (BlockIo, DiskIo, PrimaryHeader)) { +- DEBUG ((EFI_D_INFO, " Restore backup partition table error\n")); ++ DEBUG ((DEBUG_INFO, " Restore backup partition table error\n")); + } + + if (PartitionValidGptTable (BlockIo, DiskIo, PrimaryHeader->AlternateLBA, BackupHeader)) { +- DEBUG ((EFI_D_INFO, " Restore backup partition table success\n")); ++ DEBUG ((DEBUG_INFO, " Restore backup partition table success\n")); + } + + } + +- DEBUG ((EFI_D_INFO, " Valid primary and Valid backup partition table\n")); ++ DEBUG ((DEBUG_INFO, " Valid primary and Valid backup partition table\n")); + + // + // Read the EFI Partition Entries + // + PartEntry = AllocatePool (PrimaryHeader->NumberOfPartitionEntries * PrimaryHeader->SizeOfPartitionEntry); + if (PartEntry == NULL) { +- DEBUG ((EFI_D_ERROR, "Allocate pool error\n")); ++ DEBUG ((DEBUG_ERROR, "Allocate pool error\n")); + goto Done; + } + +@@ -340,17 +340,17 @@ PartitionInstallGptChildHandles ( + ); + if (EFI_ERROR (Status)) { + GptValidStatus = Status; +- DEBUG ((EFI_D_ERROR, " Partition Entry ReadDisk error\n")); ++ DEBUG ((DEBUG_ERROR, " Partition Entry ReadDisk error\n")); + goto Done; + } + +- DEBUG ((EFI_D_INFO, " Partition entries read block success\n")); ++ DEBUG ((DEBUG_INFO, " Partition entries read block success\n")); + +- DEBUG ((EFI_D_INFO, " Number of partition entries: %d\n", PrimaryHeader->NumberOfPartitionEntries)); ++ DEBUG ((DEBUG_INFO, " Number of partition entries: %d\n", PrimaryHeader->NumberOfPartitionEntries)); + + PEntryStatus = AllocateZeroPool (PrimaryHeader->NumberOfPartitionEntries * sizeof (EFI_PARTITION_ENTRY_STATUS)); + if (PEntryStatus == NULL) { +- DEBUG ((EFI_D_ERROR, "Allocate pool error\n")); ++ DEBUG ((DEBUG_ERROR, "Allocate pool error\n")); + goto Done; + } + +@@ -401,12 +401,12 @@ PartitionInstallGptChildHandles ( + } + CopyMem (&PartitionInfo.Info.Gpt, Entry, sizeof (EFI_PARTITION_ENTRY)); + +- DEBUG ((EFI_D_INFO, " Index : %d\n", (UINT32) Index)); +- DEBUG ((EFI_D_INFO, " Start LBA : %lx\n", (UINT64) HdDev.PartitionStart)); +- DEBUG ((EFI_D_INFO, " End LBA : %lx\n", (UINT64) Entry->EndingLBA)); +- DEBUG ((EFI_D_INFO, " Partition size: %lx\n", (UINT64) HdDev.PartitionSize)); +- DEBUG ((EFI_D_INFO, " Start : %lx", MultU64x32 (Entry->StartingLBA, BlockSize))); +- DEBUG ((EFI_D_INFO, " End : %lx\n", MultU64x32 (Entry->EndingLBA, BlockSize))); ++ DEBUG ((DEBUG_INFO, " Index : %d\n", (UINT32) Index)); ++ DEBUG ((DEBUG_INFO, " Start LBA : %lx\n", (UINT64) HdDev.PartitionStart)); ++ DEBUG ((DEBUG_INFO, " End LBA : %lx\n", (UINT64) Entry->EndingLBA)); ++ DEBUG ((DEBUG_INFO, " Partition size: %lx\n", (UINT64) HdDev.PartitionSize)); ++ DEBUG ((DEBUG_INFO, " Start : %lx", MultU64x32 (Entry->StartingLBA, BlockSize))); ++ DEBUG ((DEBUG_INFO, " End : %lx\n", MultU64x32 (Entry->EndingLBA, BlockSize))); + + Status = PartitionInstallChildHandle ( + This, +@@ -425,7 +425,7 @@ PartitionInstallGptChildHandles ( + ); + } + +- DEBUG ((EFI_D_INFO, "Prepare to Free Pool\n")); ++ DEBUG ((DEBUG_INFO, "Prepare to Free Pool\n")); + + Done: + if (ProtectiveMbr != NULL) { +@@ -481,7 +481,7 @@ PartitionValidGptTable ( + PartHdr = AllocateZeroPool (BlockSize); + + if (PartHdr == NULL) { +- DEBUG ((EFI_D_ERROR, "Allocate pool error\n")); ++ DEBUG ((DEBUG_ERROR, "Allocate pool error\n")); + return FALSE; + } + // +@@ -504,7 +504,7 @@ PartitionValidGptTable ( + PartHdr->MyLBA != Lba || + (PartHdr->SizeOfPartitionEntry < sizeof (EFI_PARTITION_ENTRY)) + ) { +- DEBUG ((EFI_D_INFO, "Invalid efi partition table header\n")); ++ DEBUG ((DEBUG_INFO, "Invalid efi partition table header\n")); + FreePool (PartHdr); + return FALSE; + } +@@ -523,7 +523,7 @@ PartitionValidGptTable ( + return FALSE; + } + +- DEBUG ((EFI_D_INFO, " Valid efi partition table header\n")); ++ DEBUG ((DEBUG_INFO, " Valid efi partition table header\n")); + FreePool (PartHdr); + return TRUE; + } +@@ -557,7 +557,7 @@ PartitionCheckGptEntryArrayCRC ( + // + Ptr = AllocatePool (PartHeader->NumberOfPartitionEntries * PartHeader->SizeOfPartitionEntry); + if (Ptr == NULL) { +- DEBUG ((EFI_D_ERROR, " Allocate pool error\n")); ++ DEBUG ((DEBUG_ERROR, " Allocate pool error\n")); + return FALSE; + } + +@@ -577,7 +577,7 @@ PartitionCheckGptEntryArrayCRC ( + + Status = gBS->CalculateCrc32 (Ptr, Size, &Crc); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "CheckPEntryArrayCRC: Crc calculation failed\n")); ++ DEBUG ((DEBUG_ERROR, "CheckPEntryArrayCRC: Crc calculation failed\n")); + FreePool (Ptr); + return FALSE; + } +@@ -623,7 +623,7 @@ PartitionRestoreGptTable ( + PartHdr = AllocateZeroPool (BlockSize); + + if (PartHdr == NULL) { +- DEBUG ((EFI_D_ERROR, "Allocate pool error\n")); ++ DEBUG ((DEBUG_ERROR, "Allocate pool error\n")); + return FALSE; + } + +@@ -651,7 +651,7 @@ PartitionRestoreGptTable ( + + Ptr = AllocatePool (PartHeader->NumberOfPartitionEntries * PartHeader->SizeOfPartitionEntry); + if (Ptr == NULL) { +- DEBUG ((EFI_D_ERROR, " Allocate pool error\n")); ++ DEBUG ((DEBUG_ERROR, " Allocate pool error\n")); + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } +@@ -715,7 +715,7 @@ PartitionCheckGptEntry ( + UINTN Index1; + UINTN Index2; + +- DEBUG ((EFI_D_INFO, " start check partition entries\n")); ++ DEBUG ((DEBUG_INFO, " start check partition entries\n")); + for (Index1 = 0; Index1 < PartHeader->NumberOfPartitionEntries; Index1++) { + Entry = (EFI_PARTITION_ENTRY *) ((UINT8 *) PartEntry + Index1 * PartHeader->SizeOfPartitionEntry); + if (CompareGuid (&Entry->PartitionTypeGUID, &gEfiPartTypeUnusedGuid)) { +@@ -758,7 +758,7 @@ PartitionCheckGptEntry ( + } + } + +- DEBUG ((EFI_D_INFO, " End check partition entries\n")); ++ DEBUG ((DEBUG_INFO, " End check partition entries\n")); + } + + +@@ -850,7 +850,7 @@ PartitionCheckCrcAltSize ( + } + + if ((MaxSize != 0) && (Size > MaxSize)) { +- DEBUG ((EFI_D_ERROR, "CheckCrc32: Size > MaxSize\n")); ++ DEBUG ((DEBUG_ERROR, "CheckCrc32: Size > MaxSize\n")); + return FALSE; + } + // +@@ -861,7 +861,7 @@ PartitionCheckCrcAltSize ( + + Status = gBS->CalculateCrc32 ((UINT8 *) Hdr, Size, &Crc); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "CheckCrc32: Crc calculation failed\n")); ++ DEBUG ((DEBUG_ERROR, "CheckCrc32: Crc calculation failed\n")); + return FALSE; + } + // +@@ -874,7 +874,7 @@ PartitionCheckCrcAltSize ( + // + DEBUG_CODE_BEGIN (); + if (OrgCrc != Crc) { +- DEBUG ((EFI_D_ERROR, "CheckCrc32: Crc check failed\n")); ++ DEBUG ((DEBUG_ERROR, "CheckCrc32: Crc check failed\n")); + } + DEBUG_CODE_END (); + +diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c +index f0c92aa09a..df25a93f85 100644 +--- a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c ++++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c +@@ -71,7 +71,7 @@ PartitionValidMbr ( + // with INT 13h + // + +- DEBUG((EFI_D_INFO, "PartitionValidMbr: Bad MBR partition size EndingLBA(%1x) > LastLBA(%1x)\n", EndingLBA, LastLba)); ++ DEBUG((DEBUG_INFO, "PartitionValidMbr: Bad MBR partition size EndingLBA(%1x) > LastLBA(%1x)\n", EndingLBA, LastLba)); + + return FALSE; + } +diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c +index 473e091320..aebc8a1dac 100644 +--- a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c ++++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c +@@ -417,7 +417,7 @@ PartitionDriverBindingStop ( + // bus driver. Hence, additional check is needed here. + // + if (HasChildren (ControllerHandle)) { +- DEBUG((EFI_D_ERROR, "PartitionDriverBindingStop: Still has child.\n")); ++ DEBUG((DEBUG_ERROR, "PartitionDriverBindingStop: Still has child.\n")); + return EFI_DEVICE_ERROR; + } + +@@ -486,7 +486,7 @@ PartitionDriverBindingStop ( + + if (BlockIo2 != NULL) { + Status = BlockIo2->FlushBlocksEx (BlockIo2, NULL); +- DEBUG((EFI_D_ERROR, "PartitionDriverBindingStop: FlushBlocksEx returned with %r\n", Status)); ++ DEBUG((DEBUG_ERROR, "PartitionDriverBindingStop: FlushBlocksEx returned with %r\n", Status)); + } else { + Status = EFI_SUCCESS; + } +@@ -1372,4 +1372,3 @@ HasChildren ( + + return (BOOLEAN) (Index < EntryCount); + } +- +diff --git a/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDriver.c b/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDriver.c +index 13e2aed87c..1ecf8da1d3 100644 +--- a/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDriver.c ++++ b/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDriver.c +@@ -68,7 +68,7 @@ RamDiskAcpiCheck ( + ); + if (EFI_ERROR (Status)) { + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "RamDiskAcpiCheck: Cannot locate the EFI ACPI Table Protocol, " + "unable to publish RAM disks to NFIT.\n" + )); +@@ -85,7 +85,7 @@ RamDiskAcpiCheck ( + ); + if (EFI_ERROR (Status)) { + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "RamDiskAcpiCheck: Cannot locate the EFI ACPI Sdt Protocol, " + "unable to publish RAM disks to NFIT.\n" + )); +@@ -134,7 +134,7 @@ RamDiskDxeEntryPoint ( + &DummyInterface + ); + if (!EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "Driver already started!\n")); ++ DEBUG ((DEBUG_INFO, "Driver already started!\n")); + return EFI_ALREADY_STARTED; + } + +diff --git a/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskProtocol.c b/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskProtocol.c +index a45a55c823..329de17ff9 100644 +--- a/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskProtocol.c ++++ b/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskProtocol.c +@@ -194,7 +194,7 @@ RamDiskPublishNfit ( + >= PrivateData->StartingAddr + PrivateData->Size)) { + MemoryFound = TRUE; + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "RamDiskPublishNfit: RAM disk with reserved memory type, will publish to NFIT.\n" + )); + break; +@@ -237,7 +237,7 @@ RamDiskPublishNfit ( + // A NFIT is already in the ACPI table. + // + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "RamDiskPublishNfit: A NFIT is already exist in the ACPI Table.\n" + )); + +@@ -300,7 +300,7 @@ RamDiskPublishNfit ( + // No NFIT is in the ACPI table, we will create one here. + // + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "RamDiskPublishNfit: No NFIT is in the ACPI Table, will create one.\n" + )); + +diff --git a/MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.c b/MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.c +index 92c738a3f6..a873f0ae2f 100644 +--- a/MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.c ++++ b/MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.c +@@ -523,7 +523,7 @@ DriverHealthManagerRepairNotify ( + IN UINTN Limit + ) + { +- DEBUG ((EFI_D_INFO, "[DriverHealthManagement]RepairNotify: %d/%d\n", Value, Limit)); ++ DEBUG ((DEBUG_INFO, "[DriverHealthManagement]RepairNotify: %d/%d\n", Value, Limit)); + return EFI_SUCCESS; + } + +@@ -958,7 +958,7 @@ DriverHealthManagerCallback ( + return EFI_INVALID_PARAMETER; + } + +- DEBUG ((EFI_D_ERROR, "QuestionId = %x\n", QuestionId)); ++ DEBUG ((DEBUG_ERROR, "QuestionId = %x\n", QuestionId)); + + // + // We will have returned from processing a callback - user either hit ESC to exit, or selected +@@ -983,5 +983,3 @@ DriverHealthManagerCallback ( + + return EFI_SUCCESS; + } +- +- +diff --git a/MdeModulePkg/Universal/EbcDxe/EbcInt.c b/MdeModulePkg/Universal/EbcDxe/EbcInt.c +index eced1d5c7f..a255b4acc3 100644 +--- a/MdeModulePkg/Universal/EbcDxe/EbcInt.c ++++ b/MdeModulePkg/Universal/EbcDxe/EbcInt.c +@@ -988,51 +988,51 @@ CommonEbcExceptionHandler ( + // We print debug information to let user know what happen. + // + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + "EBC Interrupter Version - 0x%016lx\n", + (UINT64) (((VM_MAJOR_VERSION & 0xFFFF) << 16) | ((VM_MINOR_VERSION & 0xFFFF))) + )); + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + "Exception Type - 0x%016lx\n", + (UINT64)(UINTN)InterruptType + )); + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + " R0 - 0x%016lx, R1 - 0x%016lx\n", + SystemContext.SystemContextEbc->R0, + SystemContext.SystemContextEbc->R1 + )); + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + " R2 - 0x%016lx, R3 - 0x%016lx\n", + SystemContext.SystemContextEbc->R2, + SystemContext.SystemContextEbc->R3 + )); + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + " R4 - 0x%016lx, R5 - 0x%016lx\n", + SystemContext.SystemContextEbc->R4, + SystemContext.SystemContextEbc->R5 + )); + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + " R6 - 0x%016lx, R7 - 0x%016lx\n", + SystemContext.SystemContextEbc->R6, + SystemContext.SystemContextEbc->R7 + )); + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + " Flags - 0x%016lx\n", + SystemContext.SystemContextEbc->Flags + )); + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + " ControlFlags - 0x%016lx\n", + SystemContext.SystemContextEbc->ControlFlags + )); + DEBUG (( +- EFI_D_ERROR, ++ DEBUG_ERROR, + " Ip - 0x%016lx\n\n", + SystemContext.SystemContextEbc->Ip + )); +diff --git a/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c b/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c +index a386a97705..83deb14749 100644 +--- a/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c ++++ b/MdeModulePkg/Universal/EsrtDxe/EsrtDxe.c +@@ -485,10 +485,10 @@ EsrtDxeLockEsrtRepository( + Status = gBS->LocateProtocol (&gEdkiiVariableLockProtocolGuid, NULL, (VOID **) &VariableLock); + if (!EFI_ERROR (Status)) { + Status = VariableLock->RequestToLock (VariableLock, EFI_ESRT_FMP_VARIABLE_NAME, &gEfiCallerIdGuid); +- DEBUG((EFI_D_INFO, "EsrtDxe Lock EsrtFmp Variable Status 0x%x", Status)); ++ DEBUG((DEBUG_INFO, "EsrtDxe Lock EsrtFmp Variable Status 0x%x", Status)); + + Status = VariableLock->RequestToLock (VariableLock, EFI_ESRT_NONFMP_VARIABLE_NAME, &gEfiCallerIdGuid); +- DEBUG((EFI_D_INFO, "EsrtDxe Lock EsrtNonFmp Variable Status 0x%x", Status)); ++ DEBUG((DEBUG_INFO, "EsrtDxe Lock EsrtNonFmp Variable Status 0x%x", Status)); + } + + return Status; +@@ -539,7 +539,7 @@ EsrtReadyToBootEventNotify ( + } + + if (NonFmpRepositorySize % sizeof(EFI_SYSTEM_RESOURCE_ENTRY) != 0) { +- DEBUG((EFI_D_ERROR, "NonFmp Repository Corrupt. Need to rebuild NonFmp Repository.\n")); ++ DEBUG((DEBUG_ERROR, "NonFmp Repository Corrupt. Need to rebuild NonFmp Repository.\n")); + NonFmpRepositorySize = 0; + } + +@@ -558,7 +558,7 @@ EsrtReadyToBootEventNotify ( + } + + if (FmpRepositorySize % sizeof(EFI_SYSTEM_RESOURCE_ENTRY) != 0) { +- DEBUG((EFI_D_ERROR, "Fmp Repository Corrupt. Need to rebuild Fmp Repository.\n")); ++ DEBUG((DEBUG_ERROR, "Fmp Repository Corrupt. Need to rebuild Fmp Repository.\n")); + FmpRepositorySize = 0; + } + +@@ -573,7 +573,7 @@ EsrtReadyToBootEventNotify ( + + EsrtTable = AllocatePool(sizeof(EFI_SYSTEM_RESOURCE_TABLE) + NonFmpRepositorySize + FmpRepositorySize); + if (EsrtTable == NULL) { +- DEBUG ((EFI_D_ERROR, "Esrt table memory allocation failure\n")); ++ DEBUG ((DEBUG_ERROR, "Esrt table memory allocation failure\n")); + goto EXIT; + } + +diff --git a/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.c b/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.c +index fff17b98fa..0fa8c2ee99 100644 +--- a/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.c ++++ b/MdeModulePkg/Universal/EsrtDxe/EsrtImpl.c +@@ -56,7 +56,7 @@ GetEsrtEntry ( + } + + if (RepositorySize % sizeof(EFI_SYSTEM_RESOURCE_ENTRY) != 0) { +- DEBUG((EFI_D_ERROR, "Repository Corrupt. Need to rebuild Repository.\n")); ++ DEBUG((DEBUG_ERROR, "Repository Corrupt. Need to rebuild Repository.\n")); + Status = EFI_ABORTED; + goto EXIT; + } +@@ -137,7 +137,7 @@ InsertEsrtEntry( + // if exist, update Esrt cache repository + // + if (RepositorySize % sizeof(EFI_SYSTEM_RESOURCE_ENTRY) != 0) { +- DEBUG((EFI_D_ERROR, "Repository Corrupt. Need to rebuild Repository.\n")); ++ DEBUG((DEBUG_ERROR, "Repository Corrupt. Need to rebuild Repository.\n")); + // + // Repository is corrupt. Clear Repository before insert new entry + // +@@ -245,7 +245,7 @@ DeleteEsrtEntry( + } + + if ((RepositorySize % sizeof(EFI_SYSTEM_RESOURCE_ENTRY)) != 0) { +- DEBUG((EFI_D_ERROR, "Repository Corrupt. Need to rebuild Repository.\n")); ++ DEBUG((DEBUG_ERROR, "Repository Corrupt. Need to rebuild Repository.\n")); + // + // Repository is corrupt. Clear Repository before insert new entry + // +@@ -347,7 +347,7 @@ UpdateEsrtEntry( + // if exist, update Esrt cache repository + // + if (RepositorySize % sizeof(EFI_SYSTEM_RESOURCE_ENTRY) != 0) { +- DEBUG((EFI_D_ERROR, "Repository Corrupt. Need to rebuild Repository.\n")); ++ DEBUG((DEBUG_ERROR, "Repository Corrupt. Need to rebuild Repository.\n")); + // + // Repository is corrupt. Clear Repository before insert new entry + // +diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrite.c b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrite.c +index 484763225f..dbe5c00ba5 100644 +--- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrite.c ++++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrite.c +@@ -89,7 +89,7 @@ FtwAllocate ( + // Check if there is enough space for the coming allocation + // + if (FTW_WRITE_TOTAL_SIZE (NumberOfWrites, PrivateDataSize) > FtwDevice->FtwWorkSpaceHeader->WriteQueueSize) { +- DEBUG ((EFI_D_ERROR, "Ftw: Allocate() request exceed Workspace, Caller: %g\n", CallerId)); ++ DEBUG ((DEBUG_ERROR, "Ftw: Allocate() request exceed Workspace, Caller: %g\n", CallerId)); + return EFI_BUFFER_TOO_SMALL; + } + // +@@ -153,7 +153,7 @@ FtwAllocate ( + } + + DEBUG ( +- (EFI_D_INFO, ++ (DEBUG_INFO, + "Ftw: Allocate() success, Caller:%g, # %d\n", + CallerId, + NumberOfWrites) +@@ -358,8 +358,8 @@ FtwWrite ( + // Ftw Write Header is not allocated + // Additional private data is not NULL, the private data size can't be determined. + // +- DEBUG ((EFI_D_ERROR, "Ftw: no allocates space for write record!\n")); +- DEBUG ((EFI_D_ERROR, "Ftw: Allocate service should be called before Write service!\n")); ++ DEBUG ((DEBUG_ERROR, "Ftw: no allocates space for write record!\n")); ++ DEBUG ((DEBUG_ERROR, "Ftw: Allocate service should be called before Write service!\n")); + return EFI_NOT_READY; + } + } +@@ -396,7 +396,7 @@ FtwWrite ( + + Status = Fvb->GetPhysicalAddress (Fvb, &FvbPhysicalAddress); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Ftw: Write(), Get FVB physical address - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ftw: Write(), Get FVB physical address - %r\n", Status)); + return EFI_ABORTED; + } + +@@ -405,12 +405,12 @@ FtwWrite ( + // + Status = Fvb->GetBlockSize (Fvb, 0, &BlockSize, &NumberOfBlocks); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Ftw: Write(), Get block size - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ftw: Write(), Get block size - %r\n", Status)); + return EFI_ABORTED; + } + + NumberOfWriteBlocks = FTW_BLOCKS (Offset + Length, BlockSize); +- DEBUG ((EFI_D_INFO, "Ftw: Write(), BlockSize - 0x%x, NumberOfWriteBlock - 0x%x\n", BlockSize, NumberOfWriteBlocks)); ++ DEBUG ((DEBUG_INFO, "Ftw: Write(), BlockSize - 0x%x, NumberOfWriteBlock - 0x%x\n", BlockSize, NumberOfWriteBlocks)); + WriteLength = NumberOfWriteBlocks * BlockSize; + + // +@@ -611,7 +611,7 @@ FtwWrite ( + FreePool (SpareBuffer); + + DEBUG ( +- (EFI_D_INFO, ++ (DEBUG_INFO, + "Ftw: Write() success, (Lba:Offset)=(%lx:0x%x), Length: 0x%x\n", + Lba, + Offset, +@@ -674,7 +674,7 @@ FtwRestart ( + // + Status = Fvb->GetBlockSize (Fvb, 0, &BlockSize, &NumberOfBlocks); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Ftw: Restart(), Get block size - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ftw: Restart(), Get block size - %r\n", Status)); + return EFI_ABORTED; + } + +@@ -714,7 +714,7 @@ FtwRestart ( + return EFI_ABORTED; + } + +- DEBUG ((EFI_D_INFO, "%a(): success\n", __FUNCTION__)); ++ DEBUG ((DEBUG_INFO, "%a(): success\n", __FUNCTION__)); + return EFI_SUCCESS; + } + +@@ -769,7 +769,7 @@ FtwAbort ( + + FtwDevice->FtwLastWriteHeader->Complete = FTW_VALID_STATE; + +- DEBUG ((EFI_D_INFO, "%a(): success\n", __FUNCTION__)); ++ DEBUG ((DEBUG_INFO, "%a(): success\n", __FUNCTION__)); + return EFI_SUCCESS; + } + +@@ -880,8 +880,7 @@ FtwGetLastWrite ( + Status = EFI_SUCCESS; + } + +- DEBUG ((EFI_D_INFO, "%a(): success\n", __FUNCTION__)); ++ DEBUG ((DEBUG_INFO, "%a(): success\n", __FUNCTION__)); + + return Status; + } +- +diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.c b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.c +index 9612b39486..de7544e0ac 100644 +--- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.c ++++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.c +@@ -324,13 +324,13 @@ SmmFaultTolerantWriteHandler ( + TempCommBufferSize = *CommBufferSize; + + if (TempCommBufferSize < SMM_FTW_COMMUNICATE_HEADER_SIZE) { +- DEBUG ((EFI_D_ERROR, "SmmFtwHandler: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmFtwHandler: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + CommBufferPayloadSize = TempCommBufferSize - SMM_FTW_COMMUNICATE_HEADER_SIZE; + + if (!FtwSmmIsBufferOutsideSmmValid ((UINTN)CommBuffer, TempCommBufferSize)) { +- DEBUG ((EFI_D_ERROR, "SmmFtwHandler: SMM communication buffer in SMRAM or overflow!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmFtwHandler: SMM communication buffer in SMRAM or overflow!\n")); + return EFI_SUCCESS; + } + +@@ -340,7 +340,7 @@ SmmFaultTolerantWriteHandler ( + // + // It will be not safe to expose the operations after End Of Dxe. + // +- DEBUG ((EFI_D_ERROR, "SmmFtwHandler: Not safe to do the operation: %x after End Of Dxe, so access denied!\n", SmmFtwFunctionHeader->Function)); ++ DEBUG ((DEBUG_ERROR, "SmmFtwHandler: Not safe to do the operation: %x after End Of Dxe, so access denied!\n", SmmFtwFunctionHeader->Function)); + SmmFtwFunctionHeader->ReturnStatus = EFI_ACCESS_DENIED; + return EFI_SUCCESS; + } +@@ -348,7 +348,7 @@ SmmFaultTolerantWriteHandler ( + switch (SmmFtwFunctionHeader->Function) { + case FTW_FUNCTION_GET_MAX_BLOCK_SIZE: + if (CommBufferPayloadSize < sizeof (SMM_FTW_GET_MAX_BLOCK_SIZE_HEADER)) { +- DEBUG ((EFI_D_ERROR, "GetMaxBlockSize: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "GetMaxBlockSize: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + SmmGetMaxBlockSizeHeader = (SMM_FTW_GET_MAX_BLOCK_SIZE_HEADER *) SmmFtwFunctionHeader->Data; +@@ -361,7 +361,7 @@ SmmFaultTolerantWriteHandler ( + + case FTW_FUNCTION_ALLOCATE: + if (CommBufferPayloadSize < sizeof (SMM_FTW_ALLOCATE_HEADER)) { +- DEBUG ((EFI_D_ERROR, "Allocate: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "Allocate: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + SmmFtwAllocateHeader = (SMM_FTW_ALLOCATE_HEADER *) SmmFtwFunctionHeader->Data; +@@ -375,7 +375,7 @@ SmmFaultTolerantWriteHandler ( + + case FTW_FUNCTION_WRITE: + if (CommBufferPayloadSize < OFFSET_OF (SMM_FTW_WRITE_HEADER, Data)) { +- DEBUG ((EFI_D_ERROR, "Write: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "Write: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + SmmFtwWriteHeader = (SMM_FTW_WRITE_HEADER *) SmmFtwFunctionHeader->Data; +@@ -395,7 +395,7 @@ SmmFaultTolerantWriteHandler ( + // SMRAM range check already covered before + // + if (InfoSize > CommBufferPayloadSize) { +- DEBUG ((EFI_D_ERROR, "Write: Data size exceed communication buffer size limit!\n")); ++ DEBUG ((DEBUG_ERROR, "Write: Data size exceed communication buffer size limit!\n")); + Status = EFI_ACCESS_DENIED; + break; + } +@@ -431,7 +431,7 @@ SmmFaultTolerantWriteHandler ( + + case FTW_FUNCTION_RESTART: + if (CommBufferPayloadSize < sizeof (SMM_FTW_RESTART_HEADER)) { +- DEBUG ((EFI_D_ERROR, "Restart: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "Restart: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + SmmFtwRestartHeader = (SMM_FTW_RESTART_HEADER *) SmmFtwFunctionHeader->Data; +@@ -451,7 +451,7 @@ SmmFaultTolerantWriteHandler ( + + case FTW_FUNCTION_GET_LAST_WRITE: + if (CommBufferPayloadSize < OFFSET_OF (SMM_FTW_GET_LAST_WRITE_HEADER, Data)) { +- DEBUG ((EFI_D_ERROR, "GetLastWrite: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "GetLastWrite: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + SmmFtwGetLastWriteHeader = (SMM_FTW_GET_LAST_WRITE_HEADER *) SmmFtwFunctionHeader->Data; +@@ -469,7 +469,7 @@ SmmFaultTolerantWriteHandler ( + // SMRAM range check already covered before + // + if (InfoSize > CommBufferPayloadSize) { +- DEBUG ((EFI_D_ERROR, "Data size exceed communication buffer size limit!\n")); ++ DEBUG ((DEBUG_ERROR, "Data size exceed communication buffer size limit!\n")); + Status = EFI_ACCESS_DENIED; + break; + } +diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c +index ed73f887aa..dce50e81ab 100644 +--- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c ++++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c +@@ -340,7 +340,7 @@ FlushSpareBlockToBootBlock ( + // + Status = SarProtocol->GetSwapState (SarProtocol, &TopSwap); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Ftw: Get Top Swapped status - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ftw: Get Top Swapped status - %r\n", Status)); + FreePool (Buffer); + return EFI_ABORTED; + } +@@ -427,7 +427,7 @@ FlushSpareBlockToBootBlock ( + Ptr + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Ftw: FVB Write boot block - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ftw: FVB Write boot block - %r\n", Status)); + FreePool (Buffer); + return Status; + } +@@ -526,7 +526,7 @@ FlushSpareBlockToTargetBlock ( + Count = BlockSize; + Status = FvBlock->Write (FvBlock, Lba + Index, 0, &Count, Ptr); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Ftw: FVB Write block - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ftw: FVB Write block - %r\n", Status)); + FreePool (Buffer); + return Status; + } +@@ -667,7 +667,7 @@ FlushSpareBlockToWorkingBlock ( + Ptr + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Ftw: FVB Write block - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ftw: FVB Write block - %r\n", Status)); + FreePool (Buffer); + return Status; + } +@@ -984,7 +984,7 @@ InitFtwDevice ( + FtwDevice->WorkSpaceLength = (UINTN) PcdGet32 (PcdFlashNvStorageFtwWorkingSize); + FtwDevice->SpareAreaLength = (UINTN) PcdGet32 (PcdFlashNvStorageFtwSpareSize); + if ((FtwDevice->WorkSpaceLength == 0) || (FtwDevice->SpareAreaLength == 0)) { +- DEBUG ((EFI_D_ERROR, "Ftw: Workspace or Spare block does not exist!\n")); ++ DEBUG ((DEBUG_ERROR, "Ftw: Workspace or Spare block does not exist!\n")); + FreePool (FtwDevice); + return EFI_INVALID_PARAMETER; + } +@@ -1103,13 +1103,13 @@ FindFvbForFtw ( + // + if (((FtwDevice->WorkSpaceAddress & (FtwDevice->WorkBlockSize - 1)) != 0) || + ((FtwDevice->WorkSpaceLength & (FtwDevice->WorkBlockSize - 1)) != 0)) { +- DEBUG ((EFI_D_ERROR, "Ftw: Work space address or length is not block size aligned when work space size is larger than one block size\n")); ++ DEBUG ((DEBUG_ERROR, "Ftw: Work space address or length is not block size aligned when work space size is larger than one block size\n")); + FreePool (HandleBuffer); + ASSERT (FALSE); + return EFI_ABORTED; + } + } else if ((FtwDevice->FtwWorkSpaceBase + FtwDevice->FtwWorkSpaceSize) > FtwDevice->WorkBlockSize) { +- DEBUG ((EFI_D_ERROR, "Ftw: The work space range should not span blocks when work space size is less than one block size\n")); ++ DEBUG ((DEBUG_ERROR, "Ftw: The work space range should not span blocks when work space size is less than one block size\n")); + FreePool (HandleBuffer); + ASSERT (FALSE); + return EFI_ABORTED; +@@ -1138,7 +1138,7 @@ FindFvbForFtw ( + // Check the range of spare area to make sure that it's in FV range + // + if ((FtwDevice->FtwSpareLba + FtwDevice->NumberOfSpareBlock) > NumberOfBlocks) { +- DEBUG ((EFI_D_ERROR, "Ftw: Spare area is out of FV range\n")); ++ DEBUG ((DEBUG_ERROR, "Ftw: Spare area is out of FV range\n")); + FreePool (HandleBuffer); + ASSERT (FALSE); + return EFI_ABORTED; +@@ -1148,7 +1148,7 @@ FindFvbForFtw ( + // + if (((FtwDevice->SpareAreaAddress & (FtwDevice->SpareBlockSize - 1)) != 0) || + ((FtwDevice->SpareAreaLength & (FtwDevice->SpareBlockSize - 1)) != 0)) { +- DEBUG ((EFI_D_ERROR, "Ftw: Spare area address or length is not block size aligned\n")); ++ DEBUG ((DEBUG_ERROR, "Ftw: Spare area address or length is not block size aligned\n")); + FreePool (HandleBuffer); + // + // Report Status Code EFI_SW_EC_ABORTED. +@@ -1168,8 +1168,8 @@ FindFvbForFtw ( + (FtwDevice->FtwWorkSpaceLba == (EFI_LBA) (-1)) || (FtwDevice->FtwSpareLba == (EFI_LBA) (-1))) { + return EFI_ABORTED; + } +- DEBUG ((EFI_D_INFO, "Ftw: FtwWorkSpaceLba - 0x%lx, WorkBlockSize - 0x%x, FtwWorkSpaceBase - 0x%x\n", FtwDevice->FtwWorkSpaceLba, FtwDevice->WorkBlockSize, FtwDevice->FtwWorkSpaceBase)); +- DEBUG ((EFI_D_INFO, "Ftw: FtwSpareLba - 0x%lx, SpareBlockSize - 0x%x\n", FtwDevice->FtwSpareLba, FtwDevice->SpareBlockSize)); ++ DEBUG ((DEBUG_INFO, "Ftw: FtwWorkSpaceLba - 0x%lx, WorkBlockSize - 0x%x, FtwWorkSpaceBase - 0x%x\n", FtwDevice->FtwWorkSpaceLba, FtwDevice->WorkBlockSize, FtwDevice->FtwWorkSpaceBase)); ++ DEBUG ((DEBUG_INFO, "Ftw: FtwSpareLba - 0x%lx, SpareBlockSize - 0x%x\n", FtwDevice->FtwSpareLba, FtwDevice->SpareBlockSize)); + + return EFI_SUCCESS; + } +@@ -1225,7 +1225,7 @@ InitFtwProtocol ( + } + } + FtwDevice->FtwWorkBlockLba = FtwDevice->FtwWorkSpaceLba + FtwDevice->NumberOfWorkSpaceBlock - FtwDevice->NumberOfWorkBlock; +- DEBUG ((EFI_D_INFO, "Ftw: NumberOfWorkBlock - 0x%x, FtwWorkBlockLba - 0x%lx\n", FtwDevice->NumberOfWorkBlock, FtwDevice->FtwWorkBlockLba)); ++ DEBUG ((DEBUG_INFO, "Ftw: NumberOfWorkBlock - 0x%x, FtwWorkBlockLba - 0x%lx\n", FtwDevice->NumberOfWorkBlock, FtwDevice->FtwWorkBlockLba)); + + // + // Calcualte the LBA and base of work space in spare block. +@@ -1234,7 +1234,7 @@ InitFtwProtocol ( + WorkSpaceLbaOffset = FtwDevice->FtwWorkSpaceLba - FtwDevice->FtwWorkBlockLba; + FtwDevice->FtwWorkSpaceLbaInSpare = (EFI_LBA) (((UINTN) WorkSpaceLbaOffset * FtwDevice->WorkBlockSize + FtwDevice->FtwWorkSpaceBase) / FtwDevice->SpareBlockSize); + FtwDevice->FtwWorkSpaceBaseInSpare = ((UINTN) WorkSpaceLbaOffset * FtwDevice->WorkBlockSize + FtwDevice->FtwWorkSpaceBase) % FtwDevice->SpareBlockSize; +- DEBUG ((EFI_D_INFO, "Ftw: WorkSpaceLbaInSpare - 0x%lx, WorkSpaceBaseInSpare - 0x%x\n", FtwDevice->FtwWorkSpaceLbaInSpare, FtwDevice->FtwWorkSpaceBaseInSpare)); ++ DEBUG ((DEBUG_INFO, "Ftw: WorkSpaceLbaInSpare - 0x%lx, WorkSpaceBaseInSpare - 0x%x\n", FtwDevice->FtwWorkSpaceLbaInSpare, FtwDevice->FtwWorkSpaceBaseInSpare)); + + // + // Initialize other parameters, and set WorkSpace as FTW_ERASED_BYTE. +@@ -1274,7 +1274,7 @@ InitFtwProtocol ( + // + if (IsValidWorkSpace (FtwDevice->FtwWorkSpaceHeader)) { + Status = FlushSpareBlockToWorkingBlock (FtwDevice); +- DEBUG ((EFI_D_INFO, "Ftw: Restart working block update in %a() - %r\n", ++ DEBUG ((DEBUG_INFO, "Ftw: Restart working block update in %a() - %r\n", + __FUNCTION__, Status)); + FtwAbort (&FtwDevice->FtwInstance); + // +@@ -1283,7 +1283,7 @@ InitFtwProtocol ( + Status = WorkSpaceRefresh (FtwDevice); + ASSERT_EFI_ERROR (Status); + } else { +- DEBUG ((EFI_D_INFO, ++ DEBUG ((DEBUG_INFO, + "Ftw: Both working and spare blocks are invalid, init workspace\n")); + // + // If both are invalid, then initialize work space. +@@ -1309,7 +1309,7 @@ InitFtwProtocol ( + (FtwDevice->FtwLastWriteRecord->SpareComplete != FTW_VALID_STATE) && + IsFirstRecordOfWrites (FtwDevice->FtwLastWriteHeader, FtwDevice->FtwLastWriteRecord) + ) { +- DEBUG ((EFI_D_ERROR, "Ftw: Init.. find first record not SpareCompleted, abort()\n")); ++ DEBUG ((DEBUG_ERROR, "Ftw: Init.. find first record not SpareCompleted, abort()\n")); + FtwAbort (&FtwDevice->FtwInstance); + } + // +@@ -1320,7 +1320,7 @@ InitFtwProtocol ( + (FtwDevice->FtwLastWriteRecord->DestinationComplete == FTW_VALID_STATE) && + IsLastRecordOfWrites (FtwDevice->FtwLastWriteHeader, FtwDevice->FtwLastWriteRecord) + ) { +- DEBUG ((EFI_D_ERROR, "Ftw: Init.. find last record completed but header not, abort()\n")); ++ DEBUG ((DEBUG_ERROR, "Ftw: Init.. find last record completed but header not, abort()\n")); + FtwAbort (&FtwDevice->FtwInstance); + } + // +@@ -1346,7 +1346,7 @@ InitFtwProtocol ( + ) { + if (FtwDevice->FtwLastWriteRecord->BootBlockUpdate == FTW_VALID_STATE) { + Status = FlushSpareBlockToBootBlock (FtwDevice); +- DEBUG ((EFI_D_ERROR, "Ftw: Restart boot block update - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ftw: Restart boot block update - %r\n", Status)); + ASSERT_EFI_ERROR (Status); + FtwAbort (&FtwDevice->FtwInstance); + } else { +@@ -1357,7 +1357,7 @@ InitFtwProtocol ( + FvbHandle = GetFvbByAddress ((EFI_PHYSICAL_ADDRESS) (UINTN) ((INT64) FtwDevice->SpareAreaAddress + FtwDevice->FtwLastWriteRecord->RelativeOffset), &Fvb); + if (FvbHandle != NULL) { + Status = FtwRestart (&FtwDevice->FtwInstance, FvbHandle); +- DEBUG ((EFI_D_ERROR, "Ftw: Restart last write - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ftw: Restart last write - %r\n", Status)); + ASSERT_EFI_ERROR (Status); + } + FtwAbort (&FtwDevice->FtwInstance); +@@ -1375,4 +1375,3 @@ InitFtwProtocol ( + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/UpdateWorkingBlock.c b/MdeModulePkg/Universal/FaultTolerantWriteDxe/UpdateWorkingBlock.c +index 04cb38afd5..703da6d330 100644 +--- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/UpdateWorkingBlock.c ++++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/UpdateWorkingBlock.c +@@ -86,7 +86,7 @@ IsValidWorkSpace ( + return TRUE; + } + +- DEBUG ((EFI_D_INFO, "Ftw: Work block header check mismatch\n")); ++ DEBUG ((DEBUG_INFO, "Ftw: Work block header check mismatch\n")); + return FALSE; + } + +@@ -287,7 +287,7 @@ WorkSpaceRefresh ( + &FtwDevice->FtwLastWriteHeader + ); + RemainingSpaceSize = FtwDevice->FtwWorkSpaceSize - ((UINTN) FtwDevice->FtwLastWriteHeader - (UINTN) FtwDevice->FtwWorkSpace); +- DEBUG ((EFI_D_INFO, "Ftw: Remaining work space size - %x\n", RemainingSpaceSize)); ++ DEBUG ((DEBUG_INFO, "Ftw: Remaining work space size - %x\n", RemainingSpaceSize)); + // + // If FtwGetLastWriteHeader() returns error, or the remaining space size is even not enough to contain + // one EFI_FAULT_TOLERANT_WRITE_HEADER + one EFI_FAULT_TOLERANT_WRITE_RECORD(It will cause that the header +@@ -300,7 +300,7 @@ WorkSpaceRefresh ( + // + Status = FtwReclaimWorkSpace (FtwDevice, TRUE); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "Ftw: Reclaim workspace - %r\n", Status)); ++ DEBUG ((DEBUG_ERROR, "Ftw: Reclaim workspace - %r\n", Status)); + return EFI_ABORTED; + } + // +@@ -370,7 +370,7 @@ FtwReclaimWorkSpace ( + UINT8 *Ptr; + EFI_LBA WorkSpaceLbaOffset; + +- DEBUG ((EFI_D_INFO, "Ftw: start to reclaim work space\n")); ++ DEBUG ((DEBUG_INFO, "Ftw: start to reclaim work space\n")); + + WorkSpaceLbaOffset = FtwDevice->FtwWorkSpaceLba - FtwDevice->FtwWorkBlockLba; + +@@ -601,7 +601,7 @@ FtwReclaimWorkSpace ( + + FreePool (SpareBuffer); + +- DEBUG ((EFI_D_INFO, "Ftw: reclaim work space successfully\n")); ++ DEBUG ((DEBUG_INFO, "Ftw: reclaim work space successfully\n")); + + return EFI_SUCCESS; + } +diff --git a/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.c b/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.c +index 439d5b01e6..ca5d5b4a22 100644 +--- a/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.c ++++ b/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.c +@@ -152,12 +152,12 @@ IsValidWorkSpace ( + } + + if ((WorkingHeader->WorkingBlockValid != FTW_VALID_STATE) || (WorkingHeader->WorkingBlockInvalid == FTW_VALID_STATE)) { +- DEBUG ((EFI_D_ERROR, "FtwPei: Work block header valid bit check error\n")); ++ DEBUG ((DEBUG_ERROR, "FtwPei: Work block header valid bit check error\n")); + return FALSE; + } + + if (WorkingHeader->WriteQueueSize != (WorkingLength - sizeof (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER))) { +- DEBUG ((EFI_D_ERROR, "FtwPei: Work block header WriteQueueSize check error\n")); ++ DEBUG ((DEBUG_ERROR, "FtwPei: Work block header WriteQueueSize check error\n")); + return FALSE; + } + +@@ -165,7 +165,7 @@ IsValidWorkSpace ( + // Check signature with gEdkiiWorkingBlockSignatureGuid + // + if (!CompareGuid (&gEdkiiWorkingBlockSignatureGuid, &WorkingHeader->Signature)) { +- DEBUG ((EFI_D_ERROR, "FtwPei: Work block header signature check error, it should be gEdkiiWorkingBlockSignatureGuid\n")); ++ DEBUG ((DEBUG_ERROR, "FtwPei: Work block header signature check error, it should be gEdkiiWorkingBlockSignatureGuid\n")); + // + // To be compatible with old signature gEfiSystemNvDataFvGuid. + // +@@ -174,7 +174,7 @@ IsValidWorkSpace ( + } else { + Data = *(UINT8 *) (WorkingHeader + 1); + if (Data != 0xff) { +- DEBUG ((EFI_D_ERROR, "FtwPei: Old format FTW structure can't be handled\n")); ++ DEBUG ((DEBUG_ERROR, "FtwPei: Old format FTW structure can't be handled\n")); + ASSERT (FALSE); + return FALSE; + } +@@ -261,7 +261,7 @@ PeimFaultTolerantWriteInitialize ( + FtwLastWrite.SpareAddress = SpareAreaAddress; + FtwLastWrite.Length = SpareAreaLength; + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "FtwPei last write data: TargetAddress - 0x%x SpareAddress - 0x%x Length - 0x%x\n", + (UINTN) FtwLastWrite.TargetAddress, + (UINTN) FtwLastWrite.SpareAddress, +@@ -280,7 +280,7 @@ PeimFaultTolerantWriteInitialize ( + // + // Found the workspace. + // +- DEBUG ((EFI_D_INFO, "FtwPei: workspace in spare block is at 0x%x.\n", (UINTN) WorkSpaceInSpareArea)); ++ DEBUG ((DEBUG_INFO, "FtwPei: workspace in spare block is at 0x%x.\n", (UINTN) WorkSpaceInSpareArea)); + FtwWorkingBlockHeader = (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER *) (UINTN) WorkSpaceInSpareArea; + break; + } +@@ -294,7 +294,7 @@ PeimFaultTolerantWriteInitialize ( + FtwLastWrite.SpareAddress = SpareAreaAddress; + FtwLastWrite.Length = SpareAreaLength; + DEBUG (( +- EFI_D_INFO, ++ DEBUG_INFO, + "FtwPei last write data: TargetAddress - 0x%x SpareAddress - 0x%x Length - 0x%x\n", + (UINTN) FtwLastWrite.TargetAddress, + (UINTN) FtwLastWrite.SpareAddress, +@@ -304,7 +304,7 @@ PeimFaultTolerantWriteInitialize ( + // + // Both are invalid. + // +- DEBUG ((EFI_D_ERROR, "FtwPei: Both working and spare block are invalid.\n")); ++ DEBUG ((DEBUG_ERROR, "FtwPei: Both working and spare block are invalid.\n")); + } + } + +diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c +index 5ee866fb9e..3dfa8bf41f 100644 +--- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c ++++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c +@@ -2046,7 +2046,7 @@ ExtractConfigRequest ( + // Header->VarStoreId == 0 means no storage for this question. + // + ASSERT (Header->VarStoreId != 0); +- DEBUG ((EFI_D_INFO, "Varstore Id: 0x%x\n", Header->VarStoreId)); ++ DEBUG ((DEBUG_INFO, "Varstore Id: 0x%x\n", Header->VarStoreId)); + + Storage = FindStorageFromVarId (FormPackage, Header->VarStoreId); + ASSERT (Storage != NULL); +@@ -2149,7 +2149,7 @@ ExtractConfigResp ( + // Header->VarStoreId == 0 means no storage for this question. + // + ASSERT (Header->VarStoreId != 0); +- DEBUG ((EFI_D_INFO, "Varstore Id: 0x%x\n", Header->VarStoreId)); ++ DEBUG ((DEBUG_INFO, "Varstore Id: 0x%x\n", Header->VarStoreId)); + + Storage = FindStorageFromVarId (FormPackage, Header->VarStoreId); + ASSERT (Storage != NULL); +diff --git a/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c b/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c +index f11c3a17ef..e4659c149f 100644 +--- a/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c ++++ b/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c +@@ -54,7 +54,7 @@ SmmLockBoxSave ( + // Sanity check + // + if (mLocked) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Locked!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Locked!\n")); + LockBoxParameterSave->Header.ReturnStatus = (UINT64)EFI_ACCESS_DENIED; + return ; + } +@@ -65,7 +65,7 @@ SmmLockBoxSave ( + // Sanity check + // + if (!SmmIsBufferOutsideSmmValid ((UINTN)TempLockBoxParameterSave.Buffer, (UINTN)TempLockBoxParameterSave.Length)) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Save address in SMRAM or buffer overflow!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Save address in SMRAM or buffer overflow!\n")); + LockBoxParameterSave->Header.ReturnStatus = (UINT64)EFI_ACCESS_DENIED; + return ; + } +@@ -104,7 +104,7 @@ SmmLockBoxSetAttributes ( + // Sanity check + // + if (mLocked) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Locked!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Locked!\n")); + LockBoxParameterSetAttributes->Header.ReturnStatus = (UINT64)EFI_ACCESS_DENIED; + return ; + } +@@ -143,7 +143,7 @@ SmmLockBoxUpdate ( + // Sanity check + // + if (mLocked) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Locked!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Locked!\n")); + LockBoxParameterUpdate->Header.ReturnStatus = (UINT64)EFI_ACCESS_DENIED; + return ; + } +@@ -154,7 +154,7 @@ SmmLockBoxUpdate ( + // Sanity check + // + if (!SmmIsBufferOutsideSmmValid ((UINTN)TempLockBoxParameterUpdate.Buffer, (UINTN)TempLockBoxParameterUpdate.Length)) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Update address in SMRAM or buffer overflow!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Update address in SMRAM or buffer overflow!\n")); + LockBoxParameterUpdate->Header.ReturnStatus = (UINT64)EFI_ACCESS_DENIED; + return ; + } +@@ -200,7 +200,7 @@ SmmLockBoxRestore ( + // Sanity check + // + if (!SmmIsBufferOutsideSmmValid ((UINTN)TempLockBoxParameterRestore.Buffer, (UINTN)TempLockBoxParameterRestore.Length)) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Restore address in SMRAM or buffer overflow!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Restore address in SMRAM or buffer overflow!\n")); + LockBoxParameterRestore->Header.ReturnStatus = (UINT64)EFI_ACCESS_DENIED; + return ; + } +@@ -291,11 +291,11 @@ SmmLockBoxHandler ( + // Sanity check + // + if (TempCommBufferSize < sizeof(EFI_SMM_LOCK_BOX_PARAMETER_HEADER)) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Command Buffer Size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Command Buffer Size invalid!\n")); + return EFI_SUCCESS; + } + if (!SmmIsBufferOutsideSmmValid ((UINTN)CommBuffer, TempCommBufferSize)) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Command Buffer in SMRAM or overflow!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Command Buffer in SMRAM or overflow!\n")); + return EFI_SUCCESS; + } + +@@ -310,41 +310,41 @@ SmmLockBoxHandler ( + switch (LockBoxParameterHeader->Command) { + case EFI_SMM_LOCK_BOX_COMMAND_SAVE: + if (TempCommBufferSize < sizeof(EFI_SMM_LOCK_BOX_PARAMETER_SAVE)) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Command Buffer Size for SAVE invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Command Buffer Size for SAVE invalid!\n")); + break; + } + SmmLockBoxSave ((EFI_SMM_LOCK_BOX_PARAMETER_SAVE *)(UINTN)LockBoxParameterHeader); + break; + case EFI_SMM_LOCK_BOX_COMMAND_UPDATE: + if (TempCommBufferSize < sizeof(EFI_SMM_LOCK_BOX_PARAMETER_UPDATE)) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Command Buffer Size for UPDATE invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Command Buffer Size for UPDATE invalid!\n")); + break; + } + SmmLockBoxUpdate ((EFI_SMM_LOCK_BOX_PARAMETER_UPDATE *)(UINTN)LockBoxParameterHeader); + break; + case EFI_SMM_LOCK_BOX_COMMAND_RESTORE: + if (TempCommBufferSize < sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE)) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Command Buffer Size for RESTORE invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Command Buffer Size for RESTORE invalid!\n")); + break; + } + SmmLockBoxRestore ((EFI_SMM_LOCK_BOX_PARAMETER_RESTORE *)(UINTN)LockBoxParameterHeader); + break; + case EFI_SMM_LOCK_BOX_COMMAND_SET_ATTRIBUTES: + if (TempCommBufferSize < sizeof(EFI_SMM_LOCK_BOX_PARAMETER_SET_ATTRIBUTES)) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Command Buffer Size for SET_ATTRIBUTES invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Command Buffer Size for SET_ATTRIBUTES invalid!\n")); + break; + } + SmmLockBoxSetAttributes ((EFI_SMM_LOCK_BOX_PARAMETER_SET_ATTRIBUTES *)(UINTN)LockBoxParameterHeader); + break; + case EFI_SMM_LOCK_BOX_COMMAND_RESTORE_ALL_IN_PLACE: + if (TempCommBufferSize < sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE)) { +- DEBUG ((EFI_D_ERROR, "SmmLockBox Command Buffer Size for RESTORE_ALL_IN_PLACE invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Command Buffer Size for RESTORE_ALL_IN_PLACE invalid!\n")); + break; + } + SmmLockBoxRestoreAllInPlace ((EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE *)(UINTN)LockBoxParameterHeader); + break; + default: +- DEBUG ((EFI_D_ERROR, "SmmLockBox Command invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmLockBox Command invalid!\n")); + break; + } + +diff --git a/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.c b/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.c +index 400b0fa578..04c3dd34b1 100644 +--- a/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.c ++++ b/MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.c +@@ -426,10 +426,10 @@ SmbiosAdd ( + // + if ((EntryPointStructure != NULL) && + (EntryPointStructure->TableLength + StructureSize > SMBIOS_TABLE_MAX_LENGTH)) { +- DEBUG ((EFI_D_INFO, "SmbiosAdd: Total length exceeds max 32-bit table length with type = %d size = 0x%x\n", Record->Type, StructureSize)); ++ DEBUG ((DEBUG_INFO, "SmbiosAdd: Total length exceeds max 32-bit table length with type = %d size = 0x%x\n", Record->Type, StructureSize)); + } else { + Smbios32BitTable = TRUE; +- DEBUG ((EFI_D_INFO, "SmbiosAdd: Smbios type %d with size 0x%x is added to 32-bit table\n", Record->Type, StructureSize)); ++ DEBUG ((DEBUG_INFO, "SmbiosAdd: Smbios type %d with size 0x%x is added to 32-bit table\n", Record->Type, StructureSize)); + } + } + +@@ -443,9 +443,9 @@ SmbiosAdd ( + // + if ((Smbios30EntryPointStructure != NULL) && + (Smbios30EntryPointStructure->TableMaximumSize + StructureSize > SMBIOS_3_0_TABLE_MAX_LENGTH)) { +- DEBUG ((EFI_D_INFO, "SmbiosAdd: Total length exceeds max 64-bit table length with type = %d size = 0x%x\n", Record->Type, StructureSize)); ++ DEBUG ((DEBUG_INFO, "SmbiosAdd: Total length exceeds max 64-bit table length with type = %d size = 0x%x\n", Record->Type, StructureSize)); + } else { +- DEBUG ((EFI_D_INFO, "SmbiosAdd: Smbios type %d with size 0x%x is added to 64-bit table\n", Record->Type, StructureSize)); ++ DEBUG ((DEBUG_INFO, "SmbiosAdd: Smbios type %d with size 0x%x is added to 64-bit table\n", Record->Type, StructureSize)); + Smbios64BitTable = TRUE; + } + } +@@ -691,9 +691,9 @@ SmbiosUpdateString ( + // in the Structure Table Length field of the SMBIOS Structure Table Entry Point, + // which is a WORD field limited to 65,535 bytes. + // +- DEBUG ((EFI_D_INFO, "SmbiosUpdateString: Total length exceeds max 32-bit table length\n")); ++ DEBUG ((DEBUG_INFO, "SmbiosUpdateString: Total length exceeds max 32-bit table length\n")); + } else { +- DEBUG ((EFI_D_INFO, "SmbiosUpdateString: New smbios record add to 32-bit table\n")); ++ DEBUG ((DEBUG_INFO, "SmbiosUpdateString: New smbios record add to 32-bit table\n")); + SmbiosEntry->Smbios32BitTable = TRUE; + } + } +@@ -704,9 +704,9 @@ SmbiosUpdateString ( + // + if ((Smbios30EntryPointStructure != NULL) && + (Smbios30EntryPointStructure->TableMaximumSize + InputStrLen - TargetStrLen > SMBIOS_3_0_TABLE_MAX_LENGTH)) { +- DEBUG ((EFI_D_INFO, "SmbiosUpdateString: Total length exceeds max 64-bit table length\n")); ++ DEBUG ((DEBUG_INFO, "SmbiosUpdateString: Total length exceeds max 64-bit table length\n")); + } else { +- DEBUG ((EFI_D_INFO, "SmbiosUpdateString: New smbios record add to 64-bit table\n")); ++ DEBUG ((DEBUG_INFO, "SmbiosUpdateString: New smbios record add to 64-bit table\n")); + SmbiosEntry->Smbios64BitTable = TRUE; + } + } +@@ -852,10 +852,10 @@ SmbiosRemove ( + // configuration table without depending on PI SMBIOS protocol. + // + if (SmbiosEntry->Smbios32BitTable) { +- DEBUG ((EFI_D_INFO, "SmbiosRemove: remove from 32-bit table\n")); ++ DEBUG ((DEBUG_INFO, "SmbiosRemove: remove from 32-bit table\n")); + } + if (SmbiosEntry->Smbios64BitTable) { +- DEBUG ((EFI_D_INFO, "SmbiosRemove: remove from 64-bit table\n")); ++ DEBUG ((DEBUG_INFO, "SmbiosRemove: remove from 64-bit table\n")); + } + // + // Update the whole SMBIOS table again based on which table the removed SMBIOS record is in. +@@ -1058,7 +1058,7 @@ SmbiosCreateTable ( + // It should be done only once. + // Allocate memory (below 4GB). + // +- DEBUG ((EFI_D_INFO, "SmbiosCreateTable: Initialize 32-bit entry point structure\n")); ++ DEBUG ((DEBUG_INFO, "SmbiosCreateTable: Initialize 32-bit entry point structure\n")); + EntryPointStructureData.MajorVersion = mPrivateData.Smbios.MajorVersion; + EntryPointStructureData.MinorVersion = mPrivateData.Smbios.MinorVersion; + EntryPointStructureData.SmbiosBcdRevision = (UINT8) ((PcdGet16 (PcdSmbiosVersion) >> 4) & 0xf0) | (UINT8) (PcdGet16 (PcdSmbiosVersion) & 0x0f); +@@ -1070,7 +1070,7 @@ SmbiosCreateTable ( + &PhysicalAddress + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SmbiosCreateTable () could not allocate EntryPointStructure < 4GB\n")); ++ DEBUG ((DEBUG_ERROR, "SmbiosCreateTable () could not allocate EntryPointStructure < 4GB\n")); + Status = gBS->AllocatePages ( + AllocateAnyPages, + EfiRuntimeServicesData, +@@ -1143,7 +1143,7 @@ SmbiosCreateTable ( + // If new SMBIOS table size exceeds the previous allocated page, + // it is time to re-allocate memory (below 4GB). + // +- DEBUG ((EFI_D_INFO, "%a() re-allocate SMBIOS 32-bit table\n", ++ DEBUG ((DEBUG_INFO, "%a() re-allocate SMBIOS 32-bit table\n", + __FUNCTION__)); + if (EntryPointStructure->TableAddress != 0) { + // +@@ -1165,7 +1165,7 @@ SmbiosCreateTable ( + &PhysicalAddress + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SmbiosCreateTable() could not allocate SMBIOS table < 4GB\n")); ++ DEBUG ((DEBUG_ERROR, "SmbiosCreateTable() could not allocate SMBIOS table < 4GB\n")); + EntryPointStructure->TableAddress = 0; + return EFI_OUT_OF_RESOURCES; + } else { +@@ -1250,7 +1250,7 @@ SmbiosCreate64BitTable ( + // It should be done only once. + // Allocate memory at any address. + // +- DEBUG ((EFI_D_INFO, "SmbiosCreateTable: Initialize 64-bit entry point structure\n")); ++ DEBUG ((DEBUG_INFO, "SmbiosCreateTable: Initialize 64-bit entry point structure\n")); + Smbios30EntryPointStructureData.MajorVersion = mPrivateData.Smbios.MajorVersion; + Smbios30EntryPointStructureData.MinorVersion = mPrivateData.Smbios.MinorVersion; + Smbios30EntryPointStructureData.DocRev = PcdGet8 (PcdSmbiosDocRev); +@@ -1261,7 +1261,7 @@ SmbiosCreate64BitTable ( + &PhysicalAddress + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SmbiosCreate64BitTable() could not allocate Smbios30EntryPointStructure\n")); ++ DEBUG ((DEBUG_ERROR, "SmbiosCreate64BitTable() could not allocate Smbios30EntryPointStructure\n")); + return EFI_OUT_OF_RESOURCES; + } + +@@ -1312,7 +1312,7 @@ SmbiosCreate64BitTable ( + // If new SMBIOS table size exceeds the previous allocated page, + // it is time to re-allocate memory at anywhere. + // +- DEBUG ((EFI_D_INFO, "%a() re-allocate SMBIOS 64-bit table\n", ++ DEBUG ((DEBUG_INFO, "%a() re-allocate SMBIOS 64-bit table\n", + __FUNCTION__)); + if (Smbios30EntryPointStructure->TableAddress != 0) { + // +@@ -1333,7 +1333,7 @@ SmbiosCreate64BitTable ( + &PhysicalAddress + ); + if (EFI_ERROR (Status)) { +- DEBUG ((EFI_D_ERROR, "SmbiosCreateTable() could not allocate SMBIOS 64-bit table\n")); ++ DEBUG ((DEBUG_ERROR, "SmbiosCreateTable() could not allocate SMBIOS 64-bit table\n")); + Smbios30EntryPointStructure->TableAddress = 0; + return EFI_OUT_OF_RESOURCES; + } else { +diff --git a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c +index 1050c9b17b..98788ead9a 100644 +--- a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c ++++ b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c +@@ -137,7 +137,7 @@ InternalDumpData ( + { + UINTN Index; + for (Index = 0; Index < Size; Index++) { +- DEBUG ((EFI_D_VERBOSE, "%02x", (UINTN)Data[Index])); ++ DEBUG ((DEBUG_VERBOSE, "%02x", (UINTN)Data[Index])); + } + } + +@@ -164,15 +164,15 @@ InternalDumpHex ( + Count = Size / COLUME_SIZE; + Left = Size % COLUME_SIZE; + for (Index = 0; Index < Count; Index++) { +- DEBUG ((EFI_D_VERBOSE, "%04x: ", Index * COLUME_SIZE)); ++ DEBUG ((DEBUG_VERBOSE, "%04x: ", Index * COLUME_SIZE)); + InternalDumpData (Data + Index * COLUME_SIZE, COLUME_SIZE); +- DEBUG ((EFI_D_VERBOSE, "\n")); ++ DEBUG ((DEBUG_VERBOSE, "\n")); + } + + if (Left != 0) { +- DEBUG ((EFI_D_VERBOSE, "%04x: ", Index * COLUME_SIZE)); ++ DEBUG ((DEBUG_VERBOSE, "%04x: ", Index * COLUME_SIZE)); + InternalDumpData (Data + Index * COLUME_SIZE, Left); +- DEBUG ((EFI_D_VERBOSE, "\n")); ++ DEBUG ((DEBUG_VERBOSE, "\n")); + } + } + +@@ -282,7 +282,7 @@ FilterSmbiosEntry ( + CHAR8 *String; + UINTN StringLen; + +- DEBUG ((EFI_D_INFO, "Smbios Table (Type - %d):\n", ((SMBIOS_STRUCTURE *)TableEntry)->Type)); ++ DEBUG ((DEBUG_INFO, "Smbios Table (Type - %d):\n", ((SMBIOS_STRUCTURE *)TableEntry)->Type)); + DEBUG_CODE (InternalDumpHex (TableEntry, TableEntrySize);); + + // +@@ -310,7 +310,7 @@ FilterSmbiosEntry ( + // set ' ' for string field + String = GetSmbiosStringById (TableEntry, StringId, &StringLen); + ASSERT (String != NULL); +- //DEBUG ((EFI_D_INFO,"StrId(0x%x)-%a(%d)\n", StringId, String, StringLen)); ++ //DEBUG ((DEBUG_INFO,"StrId(0x%x)-%a(%d)\n", StringId, String, StringLen)); + SetMem (String, StringLen, ' '); + } + } +@@ -322,7 +322,7 @@ FilterSmbiosEntry ( + } + } + +- DEBUG ((EFI_D_INFO, "Filter Smbios Table (Type - %d):\n", ((SMBIOS_STRUCTURE *)TableEntry)->Type)); ++ DEBUG ((DEBUG_INFO, "Filter Smbios Table (Type - %d):\n", ((SMBIOS_STRUCTURE *)TableEntry)->Type)); + DEBUG_CODE (InternalDumpHex (TableEntry, TableEntrySize);); + } + +@@ -494,22 +494,22 @@ MeasureSmbiosTable ( + (VOID **) &Smbios3Table + ); + if (!EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "Smbios3Table:\n")); +- DEBUG ((EFI_D_INFO, " AnchorString - '%c%c%c%c%c'\n", ++ DEBUG ((DEBUG_INFO, "Smbios3Table:\n")); ++ DEBUG ((DEBUG_INFO, " AnchorString - '%c%c%c%c%c'\n", + Smbios3Table->AnchorString[0], + Smbios3Table->AnchorString[1], + Smbios3Table->AnchorString[2], + Smbios3Table->AnchorString[3], + Smbios3Table->AnchorString[4] + )); +- DEBUG ((EFI_D_INFO, " EntryPointStructureChecksum - 0x%02x\n", Smbios3Table->EntryPointStructureChecksum)); +- DEBUG ((EFI_D_INFO, " EntryPointLength - 0x%02x\n", Smbios3Table->EntryPointLength)); +- DEBUG ((EFI_D_INFO, " MajorVersion - 0x%02x\n", Smbios3Table->MajorVersion)); +- DEBUG ((EFI_D_INFO, " MinorVersion - 0x%02x\n", Smbios3Table->MinorVersion)); +- DEBUG ((EFI_D_INFO, " DocRev - 0x%02x\n", Smbios3Table->DocRev)); +- DEBUG ((EFI_D_INFO, " EntryPointRevision - 0x%02x\n", Smbios3Table->EntryPointRevision)); +- DEBUG ((EFI_D_INFO, " TableMaximumSize - 0x%08x\n", Smbios3Table->TableMaximumSize)); +- DEBUG ((EFI_D_INFO, " TableAddress - 0x%016lx\n", Smbios3Table->TableAddress)); ++ DEBUG ((DEBUG_INFO, " EntryPointStructureChecksum - 0x%02x\n", Smbios3Table->EntryPointStructureChecksum)); ++ DEBUG ((DEBUG_INFO, " EntryPointLength - 0x%02x\n", Smbios3Table->EntryPointLength)); ++ DEBUG ((DEBUG_INFO, " MajorVersion - 0x%02x\n", Smbios3Table->MajorVersion)); ++ DEBUG ((DEBUG_INFO, " MinorVersion - 0x%02x\n", Smbios3Table->MinorVersion)); ++ DEBUG ((DEBUG_INFO, " DocRev - 0x%02x\n", Smbios3Table->DocRev)); ++ DEBUG ((DEBUG_INFO, " EntryPointRevision - 0x%02x\n", Smbios3Table->EntryPointRevision)); ++ DEBUG ((DEBUG_INFO, " TableMaximumSize - 0x%08x\n", Smbios3Table->TableMaximumSize)); ++ DEBUG ((DEBUG_INFO, " TableAddress - 0x%016lx\n", Smbios3Table->TableAddress)); + } + } + +@@ -519,38 +519,38 @@ MeasureSmbiosTable ( + (VOID **) &SmbiosTable + ); + if (!EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "SmbiosTable:\n")); +- DEBUG ((EFI_D_INFO, " AnchorString - '%c%c%c%c'\n", ++ DEBUG ((DEBUG_INFO, "SmbiosTable:\n")); ++ DEBUG ((DEBUG_INFO, " AnchorString - '%c%c%c%c'\n", + SmbiosTable->AnchorString[0], + SmbiosTable->AnchorString[1], + SmbiosTable->AnchorString[2], + SmbiosTable->AnchorString[3] + )); +- DEBUG ((EFI_D_INFO, " EntryPointStructureChecksum - 0x%02x\n", SmbiosTable->EntryPointStructureChecksum)); +- DEBUG ((EFI_D_INFO, " EntryPointLength - 0x%02x\n", SmbiosTable->EntryPointLength)); +- DEBUG ((EFI_D_INFO, " MajorVersion - 0x%02x\n", SmbiosTable->MajorVersion)); +- DEBUG ((EFI_D_INFO, " MinorVersion - 0x%02x\n", SmbiosTable->MinorVersion)); +- DEBUG ((EFI_D_INFO, " MaxStructureSize - 0x%08x\n", SmbiosTable->MaxStructureSize)); +- DEBUG ((EFI_D_INFO, " EntryPointRevision - 0x%02x\n", SmbiosTable->EntryPointRevision)); +- DEBUG ((EFI_D_INFO, " FormattedArea - '%c%c%c%c%c'\n", ++ DEBUG ((DEBUG_INFO, " EntryPointStructureChecksum - 0x%02x\n", SmbiosTable->EntryPointStructureChecksum)); ++ DEBUG ((DEBUG_INFO, " EntryPointLength - 0x%02x\n", SmbiosTable->EntryPointLength)); ++ DEBUG ((DEBUG_INFO, " MajorVersion - 0x%02x\n", SmbiosTable->MajorVersion)); ++ DEBUG ((DEBUG_INFO, " MinorVersion - 0x%02x\n", SmbiosTable->MinorVersion)); ++ DEBUG ((DEBUG_INFO, " MaxStructureSize - 0x%08x\n", SmbiosTable->MaxStructureSize)); ++ DEBUG ((DEBUG_INFO, " EntryPointRevision - 0x%02x\n", SmbiosTable->EntryPointRevision)); ++ DEBUG ((DEBUG_INFO, " FormattedArea - '%c%c%c%c%c'\n", + SmbiosTable->FormattedArea[0], + SmbiosTable->FormattedArea[1], + SmbiosTable->FormattedArea[2], + SmbiosTable->FormattedArea[3], + SmbiosTable->FormattedArea[4] + )); +- DEBUG ((EFI_D_INFO, " IntermediateAnchorString - '%c%c%c%c%c'\n", ++ DEBUG ((DEBUG_INFO, " IntermediateAnchorString - '%c%c%c%c%c'\n", + SmbiosTable->IntermediateAnchorString[0], + SmbiosTable->IntermediateAnchorString[1], + SmbiosTable->IntermediateAnchorString[2], + SmbiosTable->IntermediateAnchorString[3], + SmbiosTable->IntermediateAnchorString[4] + )); +- DEBUG ((EFI_D_INFO, " IntermediateChecksum - 0x%02x\n", SmbiosTable->IntermediateChecksum)); +- DEBUG ((EFI_D_INFO, " TableLength - 0x%04x\n", SmbiosTable->TableLength)); +- DEBUG ((EFI_D_INFO, " TableAddress - 0x%08x\n", SmbiosTable->TableAddress)); +- DEBUG ((EFI_D_INFO, " NumberOfSmbiosStructures - 0x%04x\n", SmbiosTable->NumberOfSmbiosStructures)); +- DEBUG ((EFI_D_INFO, " SmbiosBcdRevision - 0x%02x\n", SmbiosTable->SmbiosBcdRevision)); ++ DEBUG ((DEBUG_INFO, " IntermediateChecksum - 0x%02x\n", SmbiosTable->IntermediateChecksum)); ++ DEBUG ((DEBUG_INFO, " TableLength - 0x%04x\n", SmbiosTable->TableLength)); ++ DEBUG ((DEBUG_INFO, " TableAddress - 0x%08x\n", SmbiosTable->TableAddress)); ++ DEBUG ((DEBUG_INFO, " NumberOfSmbiosStructures - 0x%04x\n", SmbiosTable->NumberOfSmbiosStructures)); ++ DEBUG ((DEBUG_INFO, " SmbiosBcdRevision - 0x%02x\n", SmbiosTable->SmbiosBcdRevision)); + } + } + +diff --git a/MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferDxe.c b/MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferDxe.c +index 9a5dbb2720..a2434908a8 100644 +--- a/MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferDxe.c ++++ b/MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferDxe.c +@@ -71,16 +71,16 @@ SmmCommunicationBufferEntryPoint ( + Entry->NumberOfPages = DEFAULT_COMMON_PI_SMM_COMMUNIATION_REGION_PAGES; + Entry->Attribute = 0; + +- DEBUG ((EFI_D_INFO, "PiSmmCommunicationRegionTable:(0x%x)\n", PiSmmCommunicationRegionTable)); +- DEBUG ((EFI_D_INFO, " Version - 0x%x\n", PiSmmCommunicationRegionTable->Version)); +- DEBUG ((EFI_D_INFO, " NumberOfEntries - 0x%x\n", PiSmmCommunicationRegionTable->NumberOfEntries)); +- DEBUG ((EFI_D_INFO, " DescriptorSize - 0x%x\n", PiSmmCommunicationRegionTable->DescriptorSize)); +- DEBUG ((EFI_D_INFO, "Entry:(0x%x)\n", Entry)); +- DEBUG ((EFI_D_INFO, " Type - 0x%x\n", Entry->Type)); +- DEBUG ((EFI_D_INFO, " PhysicalStart - 0x%lx\n", Entry->PhysicalStart)); +- DEBUG ((EFI_D_INFO, " VirtualStart - 0x%lx\n", Entry->VirtualStart)); +- DEBUG ((EFI_D_INFO, " NumberOfPages - 0x%lx\n", Entry->NumberOfPages)); +- DEBUG ((EFI_D_INFO, " Attribute - 0x%lx\n", Entry->Attribute)); ++ DEBUG ((DEBUG_INFO, "PiSmmCommunicationRegionTable:(0x%x)\n", PiSmmCommunicationRegionTable)); ++ DEBUG ((DEBUG_INFO, " Version - 0x%x\n", PiSmmCommunicationRegionTable->Version)); ++ DEBUG ((DEBUG_INFO, " NumberOfEntries - 0x%x\n", PiSmmCommunicationRegionTable->NumberOfEntries)); ++ DEBUG ((DEBUG_INFO, " DescriptorSize - 0x%x\n", PiSmmCommunicationRegionTable->DescriptorSize)); ++ DEBUG ((DEBUG_INFO, "Entry:(0x%x)\n", Entry)); ++ DEBUG ((DEBUG_INFO, " Type - 0x%x\n", Entry->Type)); ++ DEBUG ((DEBUG_INFO, " PhysicalStart - 0x%lx\n", Entry->PhysicalStart)); ++ DEBUG ((DEBUG_INFO, " VirtualStart - 0x%lx\n", Entry->VirtualStart)); ++ DEBUG ((DEBUG_INFO, " NumberOfPages - 0x%lx\n", Entry->NumberOfPages)); ++ DEBUG ((DEBUG_INFO, " Attribute - 0x%lx\n", Entry->Attribute)); + + // + // Publish this table, so that other driver can use the buffer. +diff --git a/MdeModulePkg/Universal/TimestampDxe/TimestampDxe.c b/MdeModulePkg/Universal/TimestampDxe/TimestampDxe.c +index 2ca4ae5cd2..a318ae00b5 100644 +--- a/MdeModulePkg/Universal/TimestampDxe/TimestampDxe.c ++++ b/MdeModulePkg/Universal/TimestampDxe/TimestampDxe.c +@@ -142,7 +142,7 @@ TimestampDriverInitialize ( + mTimestampProperties.EndValue = mTimerLibStartValue - mTimerLibEndValue; + } + +- DEBUG ((EFI_D_INFO, "TimerFrequency:0x%lx, TimerLibStartTime:0x%lx, TimerLibEndtime:0x%lx\n", mTimestampProperties.Frequency, mTimerLibStartValue, mTimerLibEndValue)); ++ DEBUG ((DEBUG_INFO, "TimerFrequency:0x%lx, TimerLibStartTime:0x%lx, TimerLibEndtime:0x%lx\n", mTimestampProperties.Frequency, mTimerLibStartValue, mTimerLibEndValue)); + + // + // Install the Timestamp Protocol onto a new handle +diff --git a/MdeModulePkg/Universal/Variable/Pei/Variable.c b/MdeModulePkg/Universal/Variable/Pei/Variable.c +index f420b58165..468b73215b 100644 +--- a/MdeModulePkg/Universal/Variable/Pei/Variable.c ++++ b/MdeModulePkg/Universal/Variable/Pei/Variable.c +@@ -608,14 +608,14 @@ GetVariableStore ( + // Let FvHeader point to spare block. + // + FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) FtwLastWriteData->SpareAddress; +- DEBUG ((EFI_D_INFO, "PeiVariable: NV storage is backed up in spare block: 0x%x\n", (UINTN) FtwLastWriteData->SpareAddress)); ++ DEBUG ((DEBUG_INFO, "PeiVariable: NV storage is backed up in spare block: 0x%x\n", (UINTN) FtwLastWriteData->SpareAddress)); + } else if ((FtwLastWriteData->TargetAddress > NvStorageBase) && (FtwLastWriteData->TargetAddress < (NvStorageBase + NvStorageSize))) { + StoreInfo->FtwLastWriteData = FtwLastWriteData; + // + // Flash NV storage from the offset is backed up in spare block. + // + BackUpOffset = (UINT32) (FtwLastWriteData->TargetAddress - NvStorageBase); +- DEBUG ((EFI_D_INFO, "PeiVariable: High partial NV storage from offset: %x is backed up in spare block: 0x%x\n", BackUpOffset, (UINTN) FtwLastWriteData->SpareAddress)); ++ DEBUG ((DEBUG_INFO, "PeiVariable: High partial NV storage from offset: %x is backed up in spare block: 0x%x\n", BackUpOffset, (UINTN) FtwLastWriteData->SpareAddress)); + // + // At least one block data in flash NV storage is still valid, so still leave FvHeader point to NV storage base. + // +@@ -626,7 +626,7 @@ GetVariableStore ( + // Check if the Firmware Volume is not corrupted + // + if ((FvHeader->Signature != EFI_FVH_SIGNATURE) || (!CompareGuid (&gEfiSystemNvDataFvGuid, &FvHeader->FileSystemGuid))) { +- DEBUG ((EFI_D_ERROR, "Firmware Volume for Variable Store is corrupted\n")); ++ DEBUG ((DEBUG_ERROR, "Firmware Volume for Variable Store is corrupted\n")); + break; + } + +diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/Measurement.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/Measurement.c +index 75350ca2ef..6f459e9549 100644 +--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/Measurement.c ++++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/Measurement.c +@@ -121,8 +121,8 @@ MeasureVariable ( + ); + } + +- DEBUG ((EFI_D_INFO, "VariableDxe: MeasureVariable (Pcr - %x, EventType - %x, ", (UINTN)7, (UINTN)EV_EFI_VARIABLE_DRIVER_CONFIG)); +- DEBUG ((EFI_D_INFO, "VariableName - %s, VendorGuid - %g)\n", VarName, VendorGuid)); ++ DEBUG ((DEBUG_INFO, "VariableDxe: MeasureVariable (Pcr - %x, EventType - %x, ", (UINTN)7, (UINTN)EV_EFI_VARIABLE_DRIVER_CONFIG)); ++ DEBUG ((DEBUG_INFO, "VariableName - %s, VendorGuid - %g)\n", VarName, VendorGuid)); + + Status = TpmMeasureAndLogData ( + 7, +@@ -257,7 +257,7 @@ SecureBootHook ( + VariableData, + VariableDataSize + ); +- DEBUG ((EFI_D_INFO, "MeasureBootPolicyVariable - %r\n", Status)); ++ DEBUG ((DEBUG_INFO, "MeasureBootPolicyVariable - %r\n", Status)); + + if (VariableData != NULL) { + FreePool (VariableData); +diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c +index 41f8ff4ceb..5115bcf816 100644 +--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c ++++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c +@@ -281,15 +281,15 @@ RecordVarErrorFlag ( + VAR_ERROR_FLAG TempFlag; + + DEBUG_CODE ( +- DEBUG ((EFI_D_ERROR, "RecordVarErrorFlag (0x%02x) %s:%g - 0x%08x - 0x%x\n", Flag, VariableName, VendorGuid, Attributes, VariableSize)); ++ DEBUG ((DEBUG_ERROR, "RecordVarErrorFlag (0x%02x) %s:%g - 0x%08x - 0x%x\n", Flag, VariableName, VendorGuid, Attributes, VariableSize)); + if (Flag == VAR_ERROR_FLAG_SYSTEM_ERROR) { + if (AtRuntime ()) { +- DEBUG ((EFI_D_ERROR, "CommonRuntimeVariableSpace = 0x%x - CommonVariableTotalSize = 0x%x\n", mVariableModuleGlobal->CommonRuntimeVariableSpace, mVariableModuleGlobal->CommonVariableTotalSize)); ++ DEBUG ((DEBUG_ERROR, "CommonRuntimeVariableSpace = 0x%x - CommonVariableTotalSize = 0x%x\n", mVariableModuleGlobal->CommonRuntimeVariableSpace, mVariableModuleGlobal->CommonVariableTotalSize)); + } else { +- DEBUG ((EFI_D_ERROR, "CommonVariableSpace = 0x%x - CommonVariableTotalSize = 0x%x\n", mVariableModuleGlobal->CommonVariableSpace, mVariableModuleGlobal->CommonVariableTotalSize)); ++ DEBUG ((DEBUG_ERROR, "CommonVariableSpace = 0x%x - CommonVariableTotalSize = 0x%x\n", mVariableModuleGlobal->CommonVariableSpace, mVariableModuleGlobal->CommonVariableTotalSize)); + } + } else { +- DEBUG ((EFI_D_ERROR, "CommonMaxUserVariableSpace = 0x%x - CommonUserVariableTotalSize = 0x%x\n", mVariableModuleGlobal->CommonMaxUserVariableSpace, mVariableModuleGlobal->CommonUserVariableTotalSize)); ++ DEBUG ((DEBUG_ERROR, "CommonMaxUserVariableSpace = 0x%x - CommonUserVariableTotalSize = 0x%x\n", mVariableModuleGlobal->CommonMaxUserVariableSpace, mVariableModuleGlobal->CommonUserVariableTotalSize)); + } + ); + +@@ -369,7 +369,7 @@ InitializeVarErrorFlag ( + } + + Flag = mCurrentBootVarErrFlag; +- DEBUG ((EFI_D_INFO, "Initialize variable error flag (%02x)\n", Flag)); ++ DEBUG ((DEBUG_INFO, "Initialize variable error flag (%02x)\n", Flag)); + + Status = FindVariable ( + VAR_ERROR_FLAG_NAME, +@@ -1532,7 +1532,7 @@ AutoUpdateLangVariable ( + ISO_639_2_ENTRY_SIZE + 1, Attributes, 0, 0, &Variable, NULL); + } + +- DEBUG ((EFI_D_INFO, "Variable Driver Auto Update PlatformLang, PlatformLang:%a, Lang:%a Status: %r\n", BestPlatformLang, BestLang, Status)); ++ DEBUG ((DEBUG_INFO, "Variable Driver Auto Update PlatformLang, PlatformLang:%a, Lang:%a Status: %r\n", BestPlatformLang, BestLang, Status)); + } + } + +@@ -1581,7 +1581,7 @@ AutoUpdateLangVariable ( + AsciiStrSize (BestPlatformLang), Attributes, 0, 0, &Variable, NULL); + } + +- DEBUG ((EFI_D_INFO, "Variable Driver Auto Update Lang, Lang:%a, PlatformLang:%a Status: %r\n", BestLang, BestPlatformLang, Status)); ++ DEBUG ((DEBUG_INFO, "Variable Driver Auto Update Lang, Lang:%a, PlatformLang:%a Status: %r\n", BestLang, BestPlatformLang, Status)); + } + } + } +@@ -1659,14 +1659,14 @@ UpdateVariable ( + // + // Trying to update NV variable prior to the installation of EFI_VARIABLE_WRITE_ARCH_PROTOCOL + // +- DEBUG ((EFI_D_ERROR, "Update NV variable before EFI_VARIABLE_WRITE_ARCH_PROTOCOL ready - %r\n", EFI_NOT_AVAILABLE_YET)); ++ DEBUG ((DEBUG_ERROR, "Update NV variable before EFI_VARIABLE_WRITE_ARCH_PROTOCOL ready - %r\n", EFI_NOT_AVAILABLE_YET)); + return EFI_NOT_AVAILABLE_YET; + } else if ((Attributes & VARIABLE_ATTRIBUTE_AT_AW) != 0) { + // + // Trying to update volatile authenticated variable prior to the installation of EFI_VARIABLE_WRITE_ARCH_PROTOCOL + // The authenticated variable perhaps is not initialized, just return here. + // +- DEBUG ((EFI_D_ERROR, "Update AUTH variable before EFI_VARIABLE_WRITE_ARCH_PROTOCOL ready - %r\n", EFI_NOT_AVAILABLE_YET)); ++ DEBUG ((DEBUG_ERROR, "Update AUTH variable before EFI_VARIABLE_WRITE_ARCH_PROTOCOL ready - %r\n", EFI_NOT_AVAILABLE_YET)); + return EFI_NOT_AVAILABLE_YET; + } + } +@@ -2764,7 +2764,7 @@ VariableServiceSetVariable ( + // 2. The only attribute differing is EFI_VARIABLE_APPEND_WRITE + // + Status = EFI_INVALID_PARAMETER; +- DEBUG ((EFI_D_INFO, "[Variable]: Rewritten a preexisting variable(0x%08x) with different attributes(0x%08x) - %g:%s\n", Variable.CurrPtr->Attributes, Attributes, VendorGuid, VariableName)); ++ DEBUG ((DEBUG_INFO, "[Variable]: Rewritten a preexisting variable(0x%08x) with different attributes(0x%08x) - %g:%s\n", Variable.CurrPtr->Attributes, Attributes, VendorGuid, VariableName)); + goto Done; + } + } +@@ -3264,7 +3264,7 @@ FlushHobVariableToFlash ( + // + // All HOB variables have been flushed in flash. + // +- DEBUG ((EFI_D_INFO, "Variable driver: all HOB variables have been flushed in flash.\n")); ++ DEBUG ((DEBUG_INFO, "Variable driver: all HOB variables have been flushed in flash.\n")); + if (mVariableModuleGlobal->VariableGlobal.VariableRuntimeCacheContext.HobFlushComplete != NULL) { + *(mVariableModuleGlobal->VariableGlobal.VariableRuntimeCacheContext.HobFlushComplete) = TRUE; + } +@@ -3333,7 +3333,7 @@ VariableWriteServiceInitialize ( + GetVariableHeaderSize (mVariableModuleGlobal->VariableGlobal.AuthFormat); + Status = AuthVariableLibInitialize (&mAuthContextIn, &mAuthContextOut); + if (!EFI_ERROR (Status)) { +- DEBUG ((EFI_D_INFO, "Variable driver will work with auth variable support!\n")); ++ DEBUG ((DEBUG_INFO, "Variable driver will work with auth variable support!\n")); + mVariableModuleGlobal->VariableGlobal.AuthSupport = TRUE; + if (mAuthContextOut.AuthVarEntry != NULL) { + for (Index = 0; Index < mAuthContextOut.AuthVarEntryCount; Index++) { +@@ -3347,8 +3347,8 @@ VariableWriteServiceInitialize ( + } + } + } else if (Status == EFI_UNSUPPORTED) { +- DEBUG ((EFI_D_INFO, "NOTICE - AuthVariableLibInitialize() returns %r!\n", Status)); +- DEBUG ((EFI_D_INFO, "Variable driver will continue to work without auth variable support!\n")); ++ DEBUG ((DEBUG_INFO, "NOTICE - AuthVariableLibInitialize() returns %r!\n", Status)); ++ DEBUG ((DEBUG_INFO, "Variable driver will continue to work without auth variable support!\n")); + mVariableModuleGlobal->VariableGlobal.AuthSupport = FALSE; + Status = EFI_SUCCESS; + } +@@ -3550,7 +3550,7 @@ GetHobVariableStore ( + return EFI_OUT_OF_RESOURCES; + } + } else { +- DEBUG ((EFI_D_ERROR, "HOB Variable Store header is corrupted!\n")); ++ DEBUG ((DEBUG_ERROR, "HOB Variable Store header is corrupted!\n")); + } + } + +@@ -3598,14 +3598,14 @@ VariableCommonInitialize ( + // has been initialized in InitNonVolatileVariableStore(). + // + if (mVariableModuleGlobal->VariableGlobal.AuthFormat) { +- DEBUG ((EFI_D_INFO, "Variable driver will work with auth variable format!\n")); ++ DEBUG ((DEBUG_INFO, "Variable driver will work with auth variable format!\n")); + // + // Set AuthSupport to FALSE first, VariableWriteServiceInitialize() will initialize it. + // + mVariableModuleGlobal->VariableGlobal.AuthSupport = FALSE; + VariableGuid = &gEfiAuthenticatedVariableGuid; + } else { +- DEBUG ((EFI_D_INFO, "Variable driver will work without auth variable support!\n")); ++ DEBUG ((DEBUG_INFO, "Variable driver will work without auth variable support!\n")); + mVariableModuleGlobal->VariableGlobal.AuthSupport = FALSE; + VariableGuid = &gEfiVariableGuid; + } +@@ -3750,4 +3750,3 @@ GetFvbInfoByAddress ( + + return Status; + } +- +diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c +index 0fca0bb2a9..9f19d73dd6 100644 +--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c ++++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c +@@ -345,7 +345,7 @@ OnEndOfDxe ( + { + EFI_STATUS Status; + +- DEBUG ((EFI_D_INFO, "[Variable]END_OF_DXE is signaled\n")); ++ DEBUG ((DEBUG_INFO, "[Variable]END_OF_DXE is signaled\n")); + MorLockInitAtEndOfDxe (); + Status = LockVariablePolicy (); + ASSERT_EFI_ERROR (Status); +@@ -638,4 +638,3 @@ VariableServiceInitialize ( + + return EFI_SUCCESS; + } +- +diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c +index 014aa79850..1ee6d2194e 100644 +--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c ++++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c +@@ -489,17 +489,17 @@ SmmVariableHandler ( + TempCommBufferSize = *CommBufferSize; + + if (TempCommBufferSize < SMM_VARIABLE_COMMUNICATE_HEADER_SIZE) { +- DEBUG ((EFI_D_ERROR, "SmmVariableHandler: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmVariableHandler: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + CommBufferPayloadSize = TempCommBufferSize - SMM_VARIABLE_COMMUNICATE_HEADER_SIZE; + if (CommBufferPayloadSize > mVariableBufferPayloadSize) { +- DEBUG ((EFI_D_ERROR, "SmmVariableHandler: SMM communication buffer payload size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmVariableHandler: SMM communication buffer payload size invalid!\n")); + return EFI_SUCCESS; + } + + if (!VariableSmmIsBufferOutsideSmmValid ((UINTN)CommBuffer, TempCommBufferSize)) { +- DEBUG ((EFI_D_ERROR, "SmmVariableHandler: SMM communication buffer in SMRAM or overflow!\n")); ++ DEBUG ((DEBUG_ERROR, "SmmVariableHandler: SMM communication buffer in SMRAM or overflow!\n")); + return EFI_SUCCESS; + } + +@@ -507,7 +507,7 @@ SmmVariableHandler ( + switch (SmmVariableFunctionHeader->Function) { + case SMM_VARIABLE_FUNCTION_GET_VARIABLE: + if (CommBufferPayloadSize < OFFSET_OF(SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE, Name)) { +- DEBUG ((EFI_D_ERROR, "GetVariable: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "GetVariable: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + // +@@ -530,7 +530,7 @@ SmmVariableHandler ( + // SMRAM range check already covered before + // + if (InfoSize > CommBufferPayloadSize) { +- DEBUG ((EFI_D_ERROR, "GetVariable: Data size exceed communication buffer size limit!\n")); ++ DEBUG ((DEBUG_ERROR, "GetVariable: Data size exceed communication buffer size limit!\n")); + Status = EFI_ACCESS_DENIED; + goto EXIT; + } +@@ -561,7 +561,7 @@ SmmVariableHandler ( + + case SMM_VARIABLE_FUNCTION_GET_NEXT_VARIABLE_NAME: + if (CommBufferPayloadSize < OFFSET_OF(SMM_VARIABLE_COMMUNICATE_GET_NEXT_VARIABLE_NAME, Name)) { +- DEBUG ((EFI_D_ERROR, "GetNextVariableName: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "GetNextVariableName: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + // +@@ -582,7 +582,7 @@ SmmVariableHandler ( + // SMRAM range check already covered before + // + if (InfoSize > CommBufferPayloadSize) { +- DEBUG ((EFI_D_ERROR, "GetNextVariableName: Data size exceed communication buffer size limit!\n")); ++ DEBUG ((DEBUG_ERROR, "GetNextVariableName: Data size exceed communication buffer size limit!\n")); + Status = EFI_ACCESS_DENIED; + goto EXIT; + } +@@ -606,7 +606,7 @@ SmmVariableHandler ( + + case SMM_VARIABLE_FUNCTION_SET_VARIABLE: + if (CommBufferPayloadSize < OFFSET_OF(SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE, Name)) { +- DEBUG ((EFI_D_ERROR, "SetVariable: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "SetVariable: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + // +@@ -630,7 +630,7 @@ SmmVariableHandler ( + // Data buffer should not contain SMM range + // + if (InfoSize > CommBufferPayloadSize) { +- DEBUG ((EFI_D_ERROR, "SetVariable: Data size exceed communication buffer size limit!\n")); ++ DEBUG ((DEBUG_ERROR, "SetVariable: Data size exceed communication buffer size limit!\n")); + Status = EFI_ACCESS_DENIED; + goto EXIT; + } +@@ -660,7 +660,7 @@ SmmVariableHandler ( + + case SMM_VARIABLE_FUNCTION_QUERY_VARIABLE_INFO: + if (CommBufferPayloadSize < sizeof (SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO)) { +- DEBUG ((EFI_D_ERROR, "QueryVariableInfo: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "QueryVariableInfo: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + QueryVariableInfo = (SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO *) SmmVariableFunctionHeader->Data; +@@ -675,7 +675,7 @@ SmmVariableHandler ( + + case SMM_VARIABLE_FUNCTION_GET_PAYLOAD_SIZE: + if (CommBufferPayloadSize < sizeof (SMM_VARIABLE_COMMUNICATE_GET_PAYLOAD_SIZE)) { +- DEBUG ((EFI_D_ERROR, "GetPayloadSize: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "GetPayloadSize: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + GetPayloadSize = (SMM_VARIABLE_COMMUNICATE_GET_PAYLOAD_SIZE *) SmmVariableFunctionHeader->Data; +@@ -752,7 +752,7 @@ SmmVariableHandler ( + break; + case SMM_VARIABLE_FUNCTION_VAR_CHECK_VARIABLE_PROPERTY_GET: + if (CommBufferPayloadSize < OFFSET_OF (SMM_VARIABLE_COMMUNICATE_VAR_CHECK_VARIABLE_PROPERTY, Name)) { +- DEBUG ((EFI_D_ERROR, "VarCheckVariablePropertyGet: SMM communication buffer size invalid!\n")); ++ DEBUG ((DEBUG_ERROR, "VarCheckVariablePropertyGet: SMM communication buffer size invalid!\n")); + return EFI_SUCCESS; + } + // +@@ -773,7 +773,7 @@ SmmVariableHandler ( + // SMRAM range check already covered before + // + if (InfoSize > CommBufferPayloadSize) { +- DEBUG ((EFI_D_ERROR, "VarCheckVariablePropertyGet: Data size exceed communication buffer size limit!\n")); ++ DEBUG ((DEBUG_ERROR, "VarCheckVariablePropertyGet: Data size exceed communication buffer size limit!\n")); + Status = EFI_ACCESS_DENIED; + goto EXIT; + } +@@ -979,7 +979,7 @@ SmmEndOfDxeCallback ( + { + EFI_STATUS Status; + +- DEBUG ((EFI_D_INFO, "[Variable]SMM_END_OF_DXE is signaled\n")); ++ DEBUG ((DEBUG_INFO, "[Variable]SMM_END_OF_DXE is signaled\n")); + MorLockInitAtEndOfDxe (); + Status = LockVariablePolicy (); + ASSERT_EFI_ERROR (Status); +@@ -1191,5 +1191,3 @@ MmVariableServiceInitialize ( + + return EFI_SUCCESS; + } +- +- +diff --git a/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.c b/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.c +index f72b4df80a..2403e1a1cd 100644 +--- a/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.c ++++ b/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.c +@@ -69,7 +69,7 @@ WatchdogTimerDriverExpires ( + mWatchdogTimerNotifyFunction (mWatchdogTimerPeriod); + } + +- DEBUG ((EFI_D_ERROR, "Watchdog Timer resetting system\n")); ++ DEBUG ((DEBUG_ERROR, "Watchdog Timer resetting system\n")); + + // + // Reset the platform +-- +2.39.3 + diff --git a/edk2-MdeModulePkg-Duplicate-BaseRngLibTimerLib-to-MdeModu.patch b/edk2-MdeModulePkg-Duplicate-BaseRngLibTimerLib-to-MdeModu.patch new file mode 100644 index 0000000..8f6d306 --- /dev/null +++ b/edk2-MdeModulePkg-Duplicate-BaseRngLibTimerLib-to-MdeModu.patch @@ -0,0 +1,2255 @@ +From a653b017b8d7222e95106eabb835c33a9dcb8f69 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 15:31:15 -0400 +Subject: [PATCH 15/31] MdeModulePkg: Duplicate BaseRngLibTimerLib to + MdeModulePkg + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [15/31] dd75e7846edc2449229c32d5c4fc5fef0133069f + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit 2f981bddcbd6adde5f682caf0d3812ba92bc0f73 +Author: Pierre Gondois +Date: Fri Aug 11 16:33:02 2023 +0200 + + MdeModulePkg: Duplicate BaseRngLibTimerLib to MdeModulePkg + + BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4504 + + The BaseRngLibTimerLib allows to generate number based on a timer. + This mechanism allows to have a basic non-secure implementation + for non-production platforms. + To bind and identify Random Number Generators implementations with + a GUID, an unsafe GUID should be added. This GUID cannot be added + to the MdePkg unless it is also added to a specification. + + To keep the MdePkg self-contained, copy the BaseRngLibTimerLib to + the MdeModulePkg. This will allow to define an unsafe Rng GUID + in a later patch in the MdeModulePkg. + + The MdePkg implementation will be removed later. This allows to give + some time to platform owners to switch to the MdeModulePkg + implementation. + + Signed-off-by: Pierre Gondois + Reviewed-by: Sami Mujawar + Acked-by: Ard Biesheuvel + Tested-by: Kun Qin + +Signed-off-by: Jon Maloy +--- + ArmVirtPkg/ArmVirt.dsc.inc | 2 +- + EmulatorPkg/EmulatorPkg.dsc | 2 +- + .../BaseRngLibTimerLib/BaseRngLibTimerLib.inf | 36 + + .../BaseRngLibTimerLib/BaseRngLibTimerLib.uni | 15 + + .../Library/BaseRngLibTimerLib/RngLibTimer.c | 192 ++++ + MdeModulePkg/MdeModulePkg.dsc | 1 + + NetworkPkg/NetworkPkg.dsc | 4 +- + OvmfPkg/AmdSev/AmdSevX64.dsc | 2 +- + OvmfPkg/Bhyve/BhyveX64.dsc | 2 +- + OvmfPkg/CloudHv/CloudHvX64.dsc | 949 ++++++++++++++++++ + OvmfPkg/IntelTdx/IntelTdxX64.dsc | 779 ++++++++++++++ + OvmfPkg/Microvm/MicrovmX64.dsc | 2 +- + OvmfPkg/OvmfPkgIa32.dsc | 2 +- + OvmfPkg/OvmfPkgIa32X64.dsc | 2 +- + OvmfPkg/OvmfPkgX64.dsc | 2 +- + OvmfPkg/OvmfXen.dsc | 2 +- + SecurityPkg/SecurityPkg.dsc | 4 +- + SignedCapsulePkg/SignedCapsulePkg.dsc | 4 +- + 18 files changed, 1987 insertions(+), 15 deletions(-) + create mode 100644 MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + create mode 100644 MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.uni + create mode 100644 MdeModulePkg/Library/BaseRngLibTimerLib/RngLibTimer.c + create mode 100644 OvmfPkg/CloudHv/CloudHvX64.dsc + create mode 100644 OvmfPkg/IntelTdx/IntelTdxX64.dsc + +diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc +index 5a1598d90c..584affa836 100644 +--- a/ArmVirtPkg/ArmVirt.dsc.inc ++++ b/ArmVirtPkg/ArmVirt.dsc.inc +@@ -161,7 +161,7 @@ + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf + !endif + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + # + # Secure Boot dependencies +diff --git a/EmulatorPkg/EmulatorPkg.dsc b/EmulatorPkg/EmulatorPkg.dsc +index 554c13ddb5..4168837b67 100644 +--- a/EmulatorPkg/EmulatorPkg.dsc ++++ b/EmulatorPkg/EmulatorPkg.dsc +@@ -127,7 +127,7 @@ + FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf + + !if $(SECURE_BOOT_ENABLE) == TRUE +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf + PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf +diff --git a/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf b/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf +new file mode 100644 +index 0000000000..f857290e82 +--- /dev/null ++++ b/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf +@@ -0,0 +1,36 @@ ++## @file ++# Instance of RNG (Random Number Generator) Library. ++# ++# BaseRng Library that uses the TimerLib to provide reasonably random numbers. ++# Do NOT use this on a production system as this uses the system performance ++# counter rather than a true source of random in addition to having a weak ++# random algorithm. This is provided primarily as a source of entropy for ++# OpenSSL for platforms that do not have a good built in RngLib as this ++# emulates what was done before (though it isn't perfect). ++# ++# Copyright (c) Microsoft Corporation. All rights reserved.
++# ++# SPDX-License-Identifier: BSD-2-Clause-Patent ++# ++# ++## ++ ++[Defines] ++ INF_VERSION = 1.27 ++ BASE_NAME = BaseRngLibTimerLib ++ MODULE_UNI_FILE = BaseRngLibTimerLib.uni ++ FILE_GUID = 74950C45-10FC-4AB5-B114-49C87C17409B ++ MODULE_TYPE = BASE ++ VERSION_STRING = 1.0 ++ LIBRARY_CLASS = RngLib ++ ++[Sources] ++ RngLibTimer.c ++ ++[Packages] ++ MdePkg/MdePkg.dec ++ ++[LibraryClasses] ++ BaseLib ++ DebugLib ++ TimerLib +diff --git a/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.uni b/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.uni +new file mode 100644 +index 0000000000..fde24b9f01 +--- /dev/null ++++ b/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.uni +@@ -0,0 +1,15 @@ ++// @file ++// Instance of RNG (Random Number Generator) Library. ++// ++// RngLib that uses TimerLib's performance counter to provide random numbers. ++// ++// Copyright (c) Microsoft Corporation. ++// ++// SPDX-License-Identifier: BSD-2-Clause-Patent ++// ++ ++ ++#string STR_MODULE_ABSTRACT #language en-US "Instance of RNG Library" ++ ++#string STR_MODULE_DESCRIPTION #language en-US "BaseRng Library that uses the TimerLib to provide low-entropy random numbers" ++ +diff --git a/MdeModulePkg/Library/BaseRngLibTimerLib/RngLibTimer.c b/MdeModulePkg/Library/BaseRngLibTimerLib/RngLibTimer.c +new file mode 100644 +index 0000000000..980854d67b +--- /dev/null ++++ b/MdeModulePkg/Library/BaseRngLibTimerLib/RngLibTimer.c +@@ -0,0 +1,192 @@ ++/** @file ++ BaseRng Library that uses the TimerLib to provide reasonably random numbers. ++ Do not use this on a production system. ++ ++ Copyright (c) Microsoft Corporation. ++ SPDX-License-Identifier: BSD-2-Clause-Patent ++**/ ++ ++#include ++#include ++#include ++#include ++ ++#define DEFAULT_DELAY_TIME_IN_MICROSECONDS 10 ++ ++/** ++ Using the TimerLib GetPerformanceCounterProperties() we delay ++ for enough time for the PerformanceCounter to increment. ++ ++ If the return value from GetPerformanceCounterProperties (TimerLib) ++ is zero, this function will return 10 and attempt to assert. ++ **/ ++STATIC ++UINT32 ++CalculateMinimumDecentDelayInMicroseconds ( ++ VOID ++ ) ++{ ++ UINT64 CounterHz; ++ ++ // Get the counter properties ++ CounterHz = GetPerformanceCounterProperties (NULL, NULL); ++ // Make sure we won't divide by zero ++ if (CounterHz == 0) { ++ ASSERT (CounterHz != 0); // Assert so the developer knows something is wrong ++ return DEFAULT_DELAY_TIME_IN_MICROSECONDS; ++ } ++ ++ // Calculate the minimum delay based on 1.5 microseconds divided by the hertz. ++ // We calculate the length of a cycle (1/CounterHz) and multiply it by 1.5 microseconds ++ // This ensures that the performance counter has increased by at least one ++ return (UINT32)(MAX (DivU64x64Remainder (1500000, CounterHz, NULL), 1)); ++} ++ ++/** ++ Generates a 16-bit random number. ++ ++ if Rand is NULL, then ASSERT(). ++ ++ @param[out] Rand Buffer pointer to store the 16-bit random value. ++ ++ @retval TRUE Random number generated successfully. ++ @retval FALSE Failed to generate the random number. ++ ++**/ ++BOOLEAN ++EFIAPI ++GetRandomNumber16 ( ++ OUT UINT16 *Rand ++ ) ++{ ++ UINT32 Index; ++ UINT8 *RandPtr; ++ UINT32 DelayInMicroSeconds; ++ ++ ASSERT (Rand != NULL); ++ ++ if (Rand == NULL) { ++ return FALSE; ++ } ++ ++ DelayInMicroSeconds = CalculateMinimumDecentDelayInMicroseconds (); ++ RandPtr = (UINT8 *)Rand; ++ // Get 2 bytes of random ish data ++ for (Index = 0; Index < sizeof (UINT16); Index++) { ++ *RandPtr = (UINT8)(GetPerformanceCounter () & 0xFF); ++ // Delay to give the performance counter a chance to change ++ MicroSecondDelay (DelayInMicroSeconds); ++ RandPtr++; ++ } ++ ++ return TRUE; ++} ++ ++/** ++ Generates a 32-bit random number. ++ ++ if Rand is NULL, then ASSERT(). ++ ++ @param[out] Rand Buffer pointer to store the 32-bit random value. ++ ++ @retval TRUE Random number generated successfully. ++ @retval FALSE Failed to generate the random number. ++ ++**/ ++BOOLEAN ++EFIAPI ++GetRandomNumber32 ( ++ OUT UINT32 *Rand ++ ) ++{ ++ UINT32 Index; ++ UINT8 *RandPtr; ++ UINT32 DelayInMicroSeconds; ++ ++ ASSERT (Rand != NULL); ++ ++ if (NULL == Rand) { ++ return FALSE; ++ } ++ ++ RandPtr = (UINT8 *)Rand; ++ DelayInMicroSeconds = CalculateMinimumDecentDelayInMicroseconds (); ++ // Get 4 bytes of random ish data ++ for (Index = 0; Index < sizeof (UINT32); Index++) { ++ *RandPtr = (UINT8)(GetPerformanceCounter () & 0xFF); ++ // Delay to give the performance counter a chance to change ++ MicroSecondDelay (DelayInMicroSeconds); ++ RandPtr++; ++ } ++ ++ return TRUE; ++} ++ ++/** ++ Generates a 64-bit random number. ++ ++ if Rand is NULL, then ASSERT(). ++ ++ @param[out] Rand Buffer pointer to store the 64-bit random value. ++ ++ @retval TRUE Random number generated successfully. ++ @retval FALSE Failed to generate the random number. ++ ++**/ ++BOOLEAN ++EFIAPI ++GetRandomNumber64 ( ++ OUT UINT64 *Rand ++ ) ++{ ++ UINT32 Index; ++ UINT8 *RandPtr; ++ UINT32 DelayInMicroSeconds; ++ ++ ASSERT (Rand != NULL); ++ ++ if (NULL == Rand) { ++ return FALSE; ++ } ++ ++ RandPtr = (UINT8 *)Rand; ++ DelayInMicroSeconds = CalculateMinimumDecentDelayInMicroseconds (); ++ // Get 8 bytes of random ish data ++ for (Index = 0; Index < sizeof (UINT64); Index++) { ++ *RandPtr = (UINT8)(GetPerformanceCounter () & 0xFF); ++ // Delay to give the performance counter a chance to change ++ MicroSecondDelay (DelayInMicroSeconds); ++ RandPtr++; ++ } ++ ++ return TRUE; ++} ++ ++/** ++ Generates a 128-bit random number. ++ ++ if Rand is NULL, then ASSERT(). ++ ++ @param[out] Rand Buffer pointer to store the 128-bit random value. ++ ++ @retval TRUE Random number generated successfully. ++ @retval FALSE Failed to generate the random number. ++ ++**/ ++BOOLEAN ++EFIAPI ++GetRandomNumber128 ( ++ OUT UINT64 *Rand ++ ) ++{ ++ ASSERT (Rand != NULL); ++ // This should take around 80ms ++ ++ // Read first 64 bits ++ if (!GetRandomNumber64 (Rand)) { ++ return FALSE; ++ } ++ ++ // Read second 64 bits ++ return GetRandomNumber64 (++Rand); ++} +diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc +index b1d8346186..a0f32431c2 100644 +--- a/MdeModulePkg/MdeModulePkg.dsc ++++ b/MdeModulePkg/MdeModulePkg.dsc +@@ -336,6 +336,7 @@ + MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf + MdeModulePkg/Library/DisplayUpdateProgressLibGraphics/DisplayUpdateProgressLibGraphics.inf + MdeModulePkg/Library/DisplayUpdateProgressLibText/DisplayUpdateProgressLibText.inf ++ MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + MdeModulePkg/Universal/BdsDxe/BdsDxe.inf + MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf +diff --git a/NetworkPkg/NetworkPkg.dsc b/NetworkPkg/NetworkPkg.dsc +index 8691a0f5d0..8362aef07e 100644 +--- a/NetworkPkg/NetworkPkg.dsc ++++ b/NetworkPkg/NetworkPkg.dsc +@@ -80,10 +80,10 @@ + ArmSoftFloatLib|ArmPkg/Library/ArmSoftFloatLib/ArmSoftFloatLib.inf + + [LibraryClasses.ARM] +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + [LibraryClasses.RISCV64] +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + [PcdsFeatureFlag] + gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable|TRUE +diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc +index ccdf9b8ce0..a1a6897bc2 100644 +--- a/OvmfPkg/AmdSev/AmdSevX64.dsc ++++ b/OvmfPkg/AmdSev/AmdSevX64.dsc +@@ -188,7 +188,7 @@ + + IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf + VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf +diff --git a/OvmfPkg/Bhyve/BhyveX64.dsc b/OvmfPkg/Bhyve/BhyveX64.dsc +index d8fe607d1c..1f710a0a04 100644 +--- a/OvmfPkg/Bhyve/BhyveX64.dsc ++++ b/OvmfPkg/Bhyve/BhyveX64.dsc +@@ -192,7 +192,7 @@ + !else + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf + !endif +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + !if $(SECURE_BOOT_ENABLE) == TRUE + PlatformSecureLib|OvmfPkg/Bhyve/Library/PlatformSecureLib/PlatformSecureLib.inf +diff --git a/OvmfPkg/CloudHv/CloudHvX64.dsc b/OvmfPkg/CloudHv/CloudHvX64.dsc +new file mode 100644 +index 0000000000..d76da20784 +--- /dev/null ++++ b/OvmfPkg/CloudHv/CloudHvX64.dsc +@@ -0,0 +1,949 @@ ++## @file ++# EFI/Framework Open Virtual Machine Firmware (OVMF) platform ++# ++# Copyright (c) 2006 - 2022, Intel Corporation. All rights reserved.
++# (C) Copyright 2016 Hewlett Packard Enterprise Development LP
++# Copyright (c) Microsoft Corporation. ++# ++# SPDX-License-Identifier: BSD-2-Clause-Patent ++# ++## ++ ++################################################################################ ++# ++# Defines Section - statements that will be processed to create a Makefile. ++# ++################################################################################ ++[Defines] ++ PLATFORM_NAME = CloudHv ++ PLATFORM_GUID = 97bb49d2-9814-4bea-8311-f8b9ac231e11 ++ PLATFORM_VERSION = 0.1 ++ DSC_SPECIFICATION = 0x00010005 ++ OUTPUT_DIRECTORY = Build/CloudHvX64 ++ SUPPORTED_ARCHITECTURES = X64 ++ BUILD_TARGETS = NOOPT|DEBUG|RELEASE ++ SKUID_IDENTIFIER = DEFAULT ++ FLASH_DEFINITION = OvmfPkg/CloudHv/CloudHvX64.fdf ++ ++ # ++ # Defines for default states. These can be changed on the command line. ++ # -D FLAG=VALUE ++ # ++ DEFINE SECURE_BOOT_ENABLE = FALSE ++ DEFINE SMM_REQUIRE = FALSE ++ DEFINE SOURCE_DEBUG_ENABLE = FALSE ++ ++!include OvmfPkg/OvmfTpmDefines.dsc.inc ++ ++ # ++ # Network definition ++ # ++ DEFINE NETWORK_TLS_ENABLE = FALSE ++ DEFINE NETWORK_IP6_ENABLE = FALSE ++ DEFINE NETWORK_HTTP_BOOT_ENABLE = FALSE ++ DEFINE NETWORK_ALLOW_HTTP_CONNECTIONS = TRUE ++ DEFINE NETWORK_ISCSI_ENABLE = TRUE ++ ++!include NetworkPkg/NetworkDefines.dsc.inc ++ ++ # ++ # Device drivers ++ # ++ DEFINE PVSCSI_ENABLE = FALSE ++ DEFINE MPT_SCSI_ENABLE = FALSE ++ DEFINE LSI_SCSI_ENABLE = FALSE ++ ++ # ++ # Flash size selection. Setting FD_SIZE_IN_KB on the command line directly to ++ # one of the supported values, in place of any of the convenience macros, is ++ # permitted. ++ # ++!ifdef $(FD_SIZE_1MB) ++ DEFINE FD_SIZE_IN_KB = 1024 ++!else ++!ifdef $(FD_SIZE_2MB) ++ DEFINE FD_SIZE_IN_KB = 2048 ++!else ++!ifdef $(FD_SIZE_4MB) ++ DEFINE FD_SIZE_IN_KB = 4096 ++!else ++ DEFINE FD_SIZE_IN_KB = 4096 ++!endif ++!endif ++!endif ++ ++[BuildOptions] ++ GCC:RELEASE_*_*_CC_FLAGS = -DMDEPKG_NDEBUG ++ INTEL:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG ++ MSFT:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG ++!if $(TOOL_CHAIN_TAG) != "XCODE5" && $(TOOL_CHAIN_TAG) != "CLANGPDB" ++ GCC:*_*_*_CC_FLAGS = -mno-mmx -mno-sse ++!endif ++!if $(SOURCE_DEBUG_ENABLE) == TRUE ++ MSFT:*_*_X64_GENFW_FLAGS = --keepexceptiontable ++ GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable ++ INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable ++!endif ++ RELEASE_*_*_GENFW_FLAGS = --zero ++ ++ # ++ # Disable deprecated APIs. ++ # ++ MSFT:*_*_*_CC_FLAGS = /D DISABLE_NEW_DEPRECATED_INTERFACES ++ INTEL:*_*_*_CC_FLAGS = /D DISABLE_NEW_DEPRECATED_INTERFACES ++ GCC:*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES ++ ++ # ++ # SECURE_BOOT_FEATURE_ENABLED ++ # ++!if $(SECURE_BOOT_ENABLE) == TRUE ++ MSFT:*_*_*_CC_FLAGS = /D SECURE_BOOT_FEATURE_ENABLED ++ INTEL:*_*_*_CC_FLAGS = /D SECURE_BOOT_FEATURE_ENABLED ++ GCC:*_*_*_CC_FLAGS = -D SECURE_BOOT_FEATURE_ENABLED ++!endif ++ ++!include NetworkPkg/NetworkBuildOptions.dsc.inc ++ ++[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER] ++ GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 ++ XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000 ++ XCODE:*_*_*_MTOC_FLAGS = -align 0x1000 ++ CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096 ++ ++# Force PE/COFF sections to be aligned at 4KB boundaries to support page level ++# protection of DXE_SMM_DRIVER/SMM_CORE modules ++[BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOptions.common.EDKII.SMM_CORE] ++ GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 ++ XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000 ++ XCODE:*_*_*_MTOC_FLAGS = -align 0x1000 ++ CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096 ++ ++################################################################################ ++# ++# SKU Identification section - list of all SKU IDs supported by this Platform. ++# ++################################################################################ ++[SkuIds] ++ 0|DEFAULT ++ ++################################################################################ ++# ++# Library Class section - list of all Library Classes needed by this Platform. ++# ++################################################################################ ++ ++!include MdePkg/MdeLibs.dsc.inc ++ ++[LibraryClasses] ++ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/BaseResetSystemLib.inf ++ PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf ++ BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf ++ BaseLib|MdePkg/Library/BaseLib/BaseLib.inf ++ SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf ++ TimeBaseLib|EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.inf ++ BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf ++ SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf ++ CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf ++ PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf ++ PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf ++ CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf ++ UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf ++ UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf ++ HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf ++ SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf ++ UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf ++ BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf ++ FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf ++ CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf ++ DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf ++ DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf ++ PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf ++ PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf ++ PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf ++ PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf ++ PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf ++ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf ++ PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPciSegmentLib.inf ++ PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf ++ CcProbeLib|MdePkg/Library/CcProbeLibNull/CcProbeLibNull.inf ++ IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf ++ OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf ++ SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf ++ MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf ++ MicrocodeLib|UefiCpuPkg/Library/MicrocodeLib/MicrocodeLib.inf ++ UefiLib|MdePkg/Library/UefiLib/UefiLib.inf ++ UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf ++ UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf ++ UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf ++ UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf ++ DevicePathLib|MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf ++ NvVarsFileLib|OvmfPkg/Library/NvVarsFileLib/NvVarsFileLib.inf ++ FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf ++ UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf ++ SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf ++ SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.inf ++ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLibNull.inf ++ QemuFwCfgSimpleParserLib|OvmfPkg/Library/QemuFwCfgSimpleParserLib/QemuFwCfgSimpleParserLib.inf ++ VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf ++ LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf ++ MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf ++ PeiHardwareInfoLib|OvmfPkg/Library/HardwareInfoLib/PeiHardwareInfoLib.inf ++ DxeHardwareInfoLib|OvmfPkg/Library/HardwareInfoLib/DxeHardwareInfoLib.inf ++!if $(SMM_REQUIRE) == FALSE ++ LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf ++!endif ++ CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf ++ FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf ++ MemEncryptTdxLib|OvmfPkg/Library/BaseMemEncryptTdxLib/BaseMemEncryptTdxLib.inf ++ ++!if $(SOURCE_DEBUG_ENABLE) == TRUE ++ PeCoffExtraActionLib|SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug/PeCoffExtraActionLibDebug.inf ++ DebugCommunicationLib|SourceLevelDebugPkg/Library/DebugCommunicationLibSerialPort/DebugCommunicationLibSerialPort.inf ++!else ++ PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf ++ DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf ++!endif ++ ++ LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf ++ DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf ++ ++ IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf ++!if $(NETWORK_TLS_ENABLE) == TRUE ++ OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf ++!else ++ OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf ++!endif ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ ++!if $(SECURE_BOOT_ENABLE) == TRUE ++ PlatformSecureLib|OvmfPkg/Library/PlatformSecureLib/PlatformSecureLib.inf ++ AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf ++ SecureBootVariableLib|SecurityPkg/Library/SecureBootVariableLib/SecureBootVariableLib.inf ++ PlatformPKProtectionLib|SecurityPkg/Library/PlatformPKProtectionLibVarPolicy/PlatformPKProtectionLibVarPolicy.inf ++ SecureBootVariableProvisionLib|SecurityPkg/Library/SecureBootVariableProvisionLib/SecureBootVariableProvisionLib.inf ++!else ++ AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf ++!endif ++ VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf ++ VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf ++ VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf ++ VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf ++ ++ ++ # ++ # Network libraries ++ # ++!include NetworkPkg/NetworkLibs.dsc.inc ++ ++!if $(NETWORK_TLS_ENABLE) == TRUE ++ TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf ++!endif ++ ++ ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf ++ ShellCEntryLib|ShellPkg/Library/UefiShellCEntryLib/UefiShellCEntryLib.inf ++ S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf ++ SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf ++ OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf ++ ++!include OvmfPkg/OvmfTpmLibs.dsc.inc ++ ++[LibraryClasses.common] ++ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf ++ CcExitLib|OvmfPkg/Library/CcExitLib/CcExitLib.inf ++ TdxLib|MdePkg/Library/TdxLib/TdxLib.inf ++ ++[LibraryClasses.common.SEC] ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/BaseRomAcpiTimerLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformRomDebugLibIoPort.inf ++!endif ++ ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf ++ ExtractGuidedSectionLib|MdePkg/Library/BaseExtractGuidedSectionLib/BaseExtractGuidedSectionLib.inf ++!if $(SOURCE_DEBUG_ENABLE) == TRUE ++ DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf ++!endif ++ HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf ++ PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf ++ PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf ++ MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf ++!if $(TOOL_CHAIN_TAG) == "XCODE5" ++ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/Xcode5SecPeiCpuExceptionHandlerLib.inf ++!else ++ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf ++!endif ++ CcExitLib|OvmfPkg/Library/CcExitLib/SecCcExitLib.inf ++ MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLib.inf ++ ++[LibraryClasses.common.PEI_CORE] ++ HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf ++ PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf ++ PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf ++ MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf ++ PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf ++ OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf ++ PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf ++ ++[LibraryClasses.common.PEIM] ++ HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf ++ PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf ++ PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf ++ MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf ++ PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf ++ OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf ++ PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf ++ ResourcePublicationLib|MdePkg/Library/PeiResourcePublicationLib/PeiResourcePublicationLib.inf ++ ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf ++!if $(SOURCE_DEBUG_ENABLE) == TRUE ++ DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf ++!endif ++ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf ++ MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf ++ QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/PeiQemuFwCfgS3LibFwCfg.inf ++ PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf ++ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLibNull.inf ++ ++ MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf ++ PlatformInitLib|OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf ++ ++[LibraryClasses.common.DXE_CORE] ++ HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf ++ DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf ++ MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf ++!if $(SOURCE_DEBUG_ENABLE) == TRUE ++ DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf ++!endif ++ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ ++[LibraryClasses.common.DXE_RUNTIME_DRIVER] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf ++ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf ++ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf ++!if $(SMM_REQUIRE) == TRUE ++ MmUnblockMemoryLib|MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibNull.inf ++!endif ++ ++[LibraryClasses.common.UEFI_DRIVER] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf ++ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ ++[LibraryClasses.common.DXE_DRIVER] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++ UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ PlatformBootManagerLib|OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf ++ PlatformBmPrintScLib|OvmfPkg/Library/PlatformBmPrintScLib/PlatformBmPrintScLib.inf ++ QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf ++ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf ++!if $(SMM_REQUIRE) == TRUE ++ LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf ++!else ++ LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf ++!endif ++!if $(SOURCE_DEBUG_ENABLE) == TRUE ++ DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf ++!endif ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf ++ QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf ++ QemuLoadImageLib|OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.inf ++ ++[LibraryClasses.common.UEFI_APPLICATION] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ ++[LibraryClasses.common.DXE_SMM_DRIVER] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf ++ MmServicesTableLib|MdePkg/Library/MmServicesTableLib/MmServicesTableLib.inf ++ SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf ++!if $(SOURCE_DEBUG_ENABLE) == TRUE ++ DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf ++!endif ++ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ SmmCpuRendezvousLib|UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf ++ ++[LibraryClasses.common.SMM_CORE] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ SmmCorePlatformHookLib|MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformHookLibNull.inf ++ MemoryAllocationLib|MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf ++ SmmServicesTableLib|MdeModulePkg/Library/PiSmmCoreSmmServicesTableLib/PiSmmCoreSmmServicesTableLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ ++################################################################################ ++# ++# Pcd Section - list of all EDK II PCD Entries defined by this Platform. ++# ++################################################################################ ++[PcdsFeatureFlag] ++ gEfiMdeModulePkgTokenSpaceGuid.PcdHiiOsRuntimeSupport|FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSupportUefiDecompress|FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol|TRUE ++!if $(SMM_REQUIRE) == TRUE ++ gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire|TRUE ++ gUefiCpuPkgTokenSpaceGuid.PcdCpuHotPlugSupport|TRUE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdEnableVariableRuntimeCache|FALSE ++!endif ++ ++[PcdsFixedAtBuild] ++ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize|1 ++!if $(SMM_REQUIRE) == FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE ++!endif ++ gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler|0x10 ++ gEfiMdePkgTokenSpaceGuid.PcdMaximumLinkedListLength|0 ++!if ($(FD_SIZE_IN_KB) == 1024) || ($(FD_SIZE_IN_KB) == 2048) ++ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x2800 ++!if $(NETWORK_TLS_ENABLE) == FALSE ++ # match PcdFlashNvStorageVariableSize purely for convenience ++ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0xe000 ++!endif ++!endif ++!if $(FD_SIZE_IN_KB) == 4096 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x8400 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x8400 ++!if $(NETWORK_TLS_ENABLE) == FALSE ++ # match PcdFlashNvStorageVariableSize purely for convenience ++ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x40000 ++!endif ++!endif ++!if $(NETWORK_TLS_ENABLE) == TRUE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x80000 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVolatileVariableSize|0x40000 ++!endif ++ ++ gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress|0x0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|TRUE ++ ++ gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 ++ ++ # DEBUG_INIT 0x00000001 // Initialization ++ # DEBUG_WARN 0x00000002 // Warnings ++ # DEBUG_LOAD 0x00000004 // Load events ++ # DEBUG_FS 0x00000008 // EFI File system ++ # DEBUG_POOL 0x00000010 // Alloc & Free (pool) ++ # DEBUG_PAGE 0x00000020 // Alloc & Free (page) ++ # DEBUG_INFO 0x00000040 // Informational debug messages ++ # DEBUG_DISPATCH 0x00000080 // PEI/DXE/SMM Dispatchers ++ # DEBUG_VARIABLE 0x00000100 // Variable ++ # DEBUG_BM 0x00000400 // Boot Manager ++ # DEBUG_BLKIO 0x00001000 // BlkIo Driver ++ # DEBUG_NET 0x00004000 // SNP Driver ++ # DEBUG_UNDI 0x00010000 // UNDI Driver ++ # DEBUG_LOADFILE 0x00020000 // LoadFile ++ # DEBUG_EVENT 0x00080000 // Event messages ++ # DEBUG_GCD 0x00100000 // Global Coherency Database changes ++ # DEBUG_CACHE 0x00200000 // Memory range cachability changes ++ # DEBUG_VERBOSE 0x00400000 // Detailed debug messages that may ++ # // significantly impact boot performance ++ # DEBUG_ERROR 0x80000000 // Error ++ gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8000004F ++ ++!if $(SOURCE_DEBUG_ENABLE) == TRUE ++ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17 ++!else ++ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2F ++!endif ++ ++!if $(SOURCE_DEBUG_ENABLE) == TRUE ++ gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugLoadImageMethod|0x2 ++!endif ++ ++ # ++ # The NumberOfPages values below are ad-hoc. They are updated sporadically at ++ # best (please refer to git-blame for past updates). The values capture a set ++ # of BIN hints that made sense at a particular time, for some (now likely ++ # unknown) workloads / boot paths. ++ # ++ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS|0x80 ++ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory|0x10 ++ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType|0x80 ++ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode|0x100 ++ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData|0x100 ++ ++ # ++ # Network Pcds ++ # ++!include NetworkPkg/NetworkPcds.dsc.inc ++ ++ gEfiShellPkgTokenSpaceGuid.PcdShellFileOperationSize|0x20000 ++ ++!if $(SMM_REQUIRE) == TRUE ++ gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackSize|0x4000 ++!endif ++ ++ # Point to the MdeModulePkg/Application/UiApp/UiApp.inf ++ gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 } ++ ++################################################################################ ++# ++# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform ++# ++################################################################################ ++ ++[PcdsDynamicDefault] ++ # only set when ++ # ($(SMM_REQUIRE) == FALSE) ++ gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0 ++ ++ gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE ++!if $(SMM_REQUIRE) == FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0 ++!endif ++ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable|FALSE ++ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Base|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x800000000 ++ ++ gEfiMdePkgTokenSpaceGuid.PcdFSBClock|1000000000 ++ gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0 ++ ++ gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0208 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE ++ ++ # Noexec settings for DXE. ++ gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack|FALSE ++ ++ # UefiCpuPkg PCDs related to initial AP bringup and general AP management. ++ gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber|64 ++ gUefiCpuPkgTokenSpaceGuid.PcdCpuBootLogicalProcessorNumber|0 ++ ++ # Set memory encryption mask ++ gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask|0x0 ++ ++ # Set Tdx shared bit mask ++ gEfiMdeModulePkgTokenSpaceGuid.PcdTdxSharedBitMask|0x0 ++ ++ # Set SEV-ES defaults ++ gEfiMdeModulePkgTokenSpaceGuid.PcdGhcbBase|0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdGhcbSize|0 ++ gUefiCpuPkgTokenSpaceGuid.PcdSevEsIsEnabled|0 ++ ++!if $(SMM_REQUIRE) == TRUE ++ gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode|0x01 ++ gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmApSyncTimeout|100000 ++!endif ++ ++ gEfiSecurityPkgTokenSpaceGuid.PcdOptionRomImageVerificationPolicy|0x00 ++ ++!include OvmfPkg/OvmfTpmPcds.dsc.inc ++ ++ # IPv4 and IPv6 PXE Boot support. ++ gEfiNetworkPkgTokenSpaceGuid.PcdIPv4PXESupport|0x01 ++ gEfiNetworkPkgTokenSpaceGuid.PcdIPv6PXESupport|0x01 ++ ++ # Set ConfidentialComputing defaults ++ gEfiMdePkgTokenSpaceGuid.PcdConfidentialComputingGuestAttr|0 ++ ++[PcdsDynamicHii] ++!include OvmfPkg/OvmfTpmPcdsHii.dsc.inc ++ ++################################################################################ ++# ++# Components Section - list of all EDK II Modules needed by this Platform. ++# ++################################################################################ ++[Components] ++ OvmfPkg/XenResetVector/XenResetVector.inf ++ ++ # ++ # SEC Phase modules ++ # ++ OvmfPkg/Sec/SecMain.inf { ++ ++ NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf ++ } ++ ++ # ++ # PEI Phase modules ++ # ++ MdeModulePkg/Core/Pei/PeiMain.inf ++ MdeModulePkg/Universal/PCD/Pei/Pcd.inf { ++ ++ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf ++ } ++ MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf { ++ ++ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf ++ } ++ MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf { ++ ++ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf ++ } ++ MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf ++ ++ OvmfPkg/PlatformPei/PlatformPei.inf ++ UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf { ++ ++!if $(SMM_REQUIRE) == TRUE ++ LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf ++!endif ++ } ++!if $(SMM_REQUIRE) == TRUE ++ MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf ++ MdeModulePkg/Universal/Variable/Pei/VariablePei.inf ++ OvmfPkg/SmmAccess/SmmAccessPei.inf ++!endif ++ UefiCpuPkg/CpuMpPei/CpuMpPei.inf ++ ++!include OvmfPkg/OvmfTpmComponentsPei.dsc.inc ++ ++ # ++ # DXE Phase modules ++ # ++ MdeModulePkg/Core/Dxe/DxeMain.inf { ++ ++ NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf ++ DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf ++ } ++ ++ MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf ++ MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf ++ MdeModulePkg/Universal/PCD/Dxe/Pcd.inf { ++ ++ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf ++ } ++ ++ MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf ++ ++ MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf { ++ ++!if $(SECURE_BOOT_ENABLE) == TRUE ++ NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf ++!include OvmfPkg/OvmfTpmSecurityStub.dsc.inc ++!endif ++ } ++ ++ MdeModulePkg/Universal/EbcDxe/EbcDxe.inf ++ UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf ++ UefiCpuPkg/CpuDxe/CpuDxe.inf ++ OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf ++ OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf ++ OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf ++ MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf { ++ ++ PciHostBridgeLib|OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf ++ PciHostBridgeUtilityLib|OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.inf ++ NULL|OvmfPkg/Library/PlatformHasIoMmuLib/PlatformHasIoMmuLib.inf ++ } ++ MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf { ++ ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ } ++ MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf ++ MdeModulePkg/Universal/Metronome/Metronome.inf ++ PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf ++ MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf ++ MdeModulePkg/Universal/BdsDxe/BdsDxe.inf { ++ ++ XenPlatformLib|OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf ++ } ++ MdeModulePkg/Logo/LogoDxe.inf ++ MdeModulePkg/Application/UiApp/UiApp.inf { ++ ++ NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf ++ NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf ++ NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf ++ } ++ OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.inf { ++ ++ NULL|OvmfPkg/Library/BlobVerifierLibNull/BlobVerifierLibNull.inf ++ } ++ OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf ++ OvmfPkg/Virtio10Dxe/Virtio10.inf ++ OvmfPkg/VirtioBlkDxe/VirtioBlk.inf ++ OvmfPkg/VirtioScsiDxe/VirtioScsi.inf ++ OvmfPkg/VirtioRngDxe/VirtioRng.inf ++!if $(PVSCSI_ENABLE) == TRUE ++ OvmfPkg/PvScsiDxe/PvScsiDxe.inf ++!endif ++!if $(MPT_SCSI_ENABLE) == TRUE ++ OvmfPkg/MptScsiDxe/MptScsiDxe.inf ++!endif ++!if $(LSI_SCSI_ENABLE) == TRUE ++ OvmfPkg/LsiScsiDxe/LsiScsiDxe.inf ++!endif ++ MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf ++ MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf ++ MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf ++ MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf ++ MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf ++ MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf { ++ ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ } ++ MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf ++ MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf { ++ ++ DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf ++ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf ++ } ++ MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf ++ MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf ++ MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.inf ++ MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf ++ FatPkg/EnhancedFatDxe/Fat.inf ++ MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf ++ OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf ++ MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf ++ MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf ++ OvmfPkg/SataControllerDxe/SataControllerDxe.inf ++ MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf ++ MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf ++ MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf ++ MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf ++ MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf ++ MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf ++ MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf ++ ++ # ++ # Serial Support ++ # ++ MdeModulePkg/Universal/SerialDxe/SerialDxe.inf ++ ++ # ++ # SMBIOS Support ++ # ++ MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf { ++ ++ NULL|OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf ++ } ++ OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf ++ ++ # ++ # ACPI Support ++ # ++ MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf ++ OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf ++ MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf ++ MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf ++ MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf ++ ++ # ++ # Network Support ++ # ++!include NetworkPkg/NetworkComponents.dsc.inc ++!include OvmfPkg/NetworkComponents.dsc.inc ++ ++ OvmfPkg/VirtioNetDxe/VirtioNet.inf ++ ++!if $(TOOL_CHAIN_TAG) != "XCODE5" ++ ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf { ++ ++ gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE ++ } ++ ShellPkg/DynamicCommand/HttpDynamicCommand/HttpDynamicCommand.inf { ++ ++ gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE ++ } ++ OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf { ++ ++ gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE ++ } ++!endif ++ ShellPkg/Application/Shell/Shell.inf { ++ ++ ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf ++ NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf ++ NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsLib.inf ++ NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsLib.inf ++ NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.inf ++ NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf ++ NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1CommandsLib.inf ++ NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.inf ++!if $(NETWORK_IP6_ENABLE) == TRUE ++ NULL|ShellPkg/Library/UefiShellNetwork2CommandsLib/UefiShellNetwork2CommandsLib.inf ++!endif ++ HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf ++ PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf ++ BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf ++ ++ ++ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF ++ gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE ++ gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 ++ } ++ ++!if $(SECURE_BOOT_ENABLE) == TRUE ++ SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf ++ OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.inf ++!endif ++ ++ OvmfPkg/PlatformDxe/Platform.inf ++ OvmfPkg/AmdSevDxe/AmdSevDxe.inf { ++ ++ PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf ++ } ++ OvmfPkg/IoMmuDxe/IoMmuDxe.inf ++ ++!if $(SMM_REQUIRE) == TRUE ++ OvmfPkg/SmmAccess/SmmAccess2Dxe.inf ++ OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf ++ OvmfPkg/CpuS3DataDxe/CpuS3DataDxe.inf ++ ++ # ++ # SMM Initial Program Load (a DXE_RUNTIME_DRIVER) ++ # ++ MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf ++ ++ # ++ # SMM_CORE ++ # ++ MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf ++ ++ # ++ # Privileged drivers (DXE_SMM_DRIVER modules) ++ # ++ OvmfPkg/CpuHotplugSmm/CpuHotplugSmm.inf ++ UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf ++ MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf { ++ ++ LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf ++ } ++ UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf { ++ ++ SmmCpuPlatformHookLib|OvmfPkg/Library/SmmCpuPlatformHookLibQemu/SmmCpuPlatformHookLibQemu.inf ++ SmmCpuFeaturesLib|OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf ++ } ++ ++ # ++ # Variable driver stack (SMM) ++ # ++ OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf { ++ ++ CcExitLib|UefiCpuPkg/Library/CcExitLibNull/CcExitLibNull.inf ++ } ++ MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf { ++ ++ NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf ++ NULL|MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf ++ } ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf ++ ++!else ++ ++ # ++ # Variable driver stack (non-SMM) ++ # ++ OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf ++ OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf { ++ ++ PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf ++ } ++ MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf { ++ ++ NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf ++ } ++!endif ++ ++ # ++ # TPM support ++ # ++!include OvmfPkg/OvmfTpmComponentsDxe.dsc.inc +diff --git a/OvmfPkg/IntelTdx/IntelTdxX64.dsc b/OvmfPkg/IntelTdx/IntelTdxX64.dsc +new file mode 100644 +index 0000000000..d08b77ff25 +--- /dev/null ++++ b/OvmfPkg/IntelTdx/IntelTdxX64.dsc +@@ -0,0 +1,779 @@ ++## @file ++# EFI/Framework Open Virtual Machine Firmware (OVMF) platform ++# ++# Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.
++# (C) Copyright 2016 Hewlett Packard Enterprise Development LP
++# Copyright (c) Microsoft Corporation. ++# ++# SPDX-License-Identifier: BSD-2-Clause-Patent ++# ++## ++ ++################################################################################ ++# ++# Defines Section - statements that will be processed to create a Makefile. ++# ++################################################################################ ++[Defines] ++ PLATFORM_NAME = Ovmf ++ PLATFORM_GUID = 5a9e7754-d81b-49ea-85ad-69eaa7b1539b ++ PLATFORM_VERSION = 0.1 ++ DSC_SPECIFICATION = 0x00010005 ++ OUTPUT_DIRECTORY = Build/IntelTdx ++ SUPPORTED_ARCHITECTURES = X64 ++ BUILD_TARGETS = NOOPT|DEBUG|RELEASE ++ SKUID_IDENTIFIER = DEFAULT ++ FLASH_DEFINITION = OvmfPkg/IntelTdx/IntelTdxX64.fdf ++ ++ # ++ # Defines for default states. These can be changed on the command line. ++ # -D FLAG=VALUE ++ # ++ DEFINE SECURE_BOOT_ENABLE = FALSE ++ ++ # ++ # Device drivers ++ # ++ DEFINE PVSCSI_ENABLE = FALSE ++ DEFINE MPT_SCSI_ENABLE = FALSE ++ DEFINE LSI_SCSI_ENABLE = FALSE ++ ++ # ++ # Flash size selection. Setting FD_SIZE_IN_KB on the command line directly to ++ # one of the supported values, in place of any of the convenience macros, is ++ # permitted. ++ # ++!ifdef $(FD_SIZE_1MB) ++ DEFINE FD_SIZE_IN_KB = 1024 ++!else ++!ifdef $(FD_SIZE_2MB) ++ DEFINE FD_SIZE_IN_KB = 2048 ++!else ++!ifdef $(FD_SIZE_4MB) ++ DEFINE FD_SIZE_IN_KB = 4096 ++!else ++ DEFINE FD_SIZE_IN_KB = 4096 ++!endif ++!endif ++!endif ++ ++ # ++ # Define the FILE_GUID of CpuDxe for unique-processor version. ++ # ++ DEFINE UP_CPU_DXE_GUID = 6490f1c5-ebcc-4665-8892-0075b9bb49b7 ++ ++[BuildOptions] ++ GCC:RELEASE_*_*_CC_FLAGS = -DMDEPKG_NDEBUG ++ INTEL:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG ++ MSFT:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG ++!if $(TOOL_CHAIN_TAG) != "XCODE5" && $(TOOL_CHAIN_TAG) != "CLANGPDB" ++ GCC:*_*_*_CC_FLAGS = -mno-mmx -mno-sse ++!endif ++ RELEASE_*_*_GENFW_FLAGS = --zero ++ ++ # ++ # Disable deprecated APIs. ++ # ++ MSFT:*_*_*_CC_FLAGS = /D DISABLE_NEW_DEPRECATED_INTERFACES ++ INTEL:*_*_*_CC_FLAGS = /D DISABLE_NEW_DEPRECATED_INTERFACES ++ GCC:*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES ++ ++ # ++ # Add TDX_PEI_LESS_BOOT ++ # ++ MSFT:*_*_*_CC_FLAGS = /D TDX_PEI_LESS_BOOT ++ INTEL:*_*_*_CC_FLAGS = /D TDX_PEI_LESS_BOOT ++ GCC:*_*_*_CC_FLAGS = -D TDX_PEI_LESS_BOOT ++ ++ # ++ # SECURE_BOOT_FEATURE_ENABLED ++ # ++!if $(SECURE_BOOT_ENABLE) == TRUE ++ MSFT:*_*_*_CC_FLAGS = /D SECURE_BOOT_FEATURE_ENABLED ++ INTEL:*_*_*_CC_FLAGS = /D SECURE_BOOT_FEATURE_ENABLED ++ GCC:*_*_*_CC_FLAGS = -D SECURE_BOOT_FEATURE_ENABLED ++!endif ++ ++[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER] ++ GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 ++ XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000 ++ XCODE:*_*_*_MTOC_FLAGS = -align 0x1000 ++ CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096 ++ ++################################################################################ ++# ++# SKU Identification section - list of all SKU IDs supported by this Platform. ++# ++################################################################################ ++[SkuIds] ++ 0|DEFAULT ++ ++################################################################################ ++# ++# Library Class section - list of all Library Classes needed by this Platform. ++# ++################################################################################ ++ ++!include MdePkg/MdeLibs.dsc.inc ++ ++[LibraryClasses] ++ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/BaseResetSystemLib.inf ++ PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf ++ BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf ++ BaseLib|MdePkg/Library/BaseLib/BaseLib.inf ++ SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf ++ TimeBaseLib|EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.inf ++ BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf ++ SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf ++ CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf ++ PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf ++ PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf ++ CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf ++ UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf ++ UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf ++ HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf ++ SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf ++ UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf ++ BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf ++ FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf ++ CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf ++ DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf ++ DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf ++ PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf ++ PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf ++ PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf ++ PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf ++ PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf ++ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf ++ PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPciSegmentLib.inf ++ PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf ++ CcProbeLib|OvmfPkg/Library/CcProbeLib/DxeCcProbeLib.inf ++ IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf ++ OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf ++ SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf ++ MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf ++ MicrocodeLib|UefiCpuPkg/Library/MicrocodeLib/MicrocodeLib.inf ++ UefiLib|MdePkg/Library/UefiLib/UefiLib.inf ++ UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf ++ UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf ++ UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf ++ UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf ++ DevicePathLib|MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf ++ NvVarsFileLib|OvmfPkg/Library/NvVarsFileLib/NvVarsFileLib.inf ++ FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf ++ UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf ++ SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf ++ UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf ++ SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.inf ++ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgDxeLib.inf ++ QemuFwCfgSimpleParserLib|OvmfPkg/Library/QemuFwCfgSimpleParserLib/QemuFwCfgSimpleParserLib.inf ++ VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf ++ LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf ++ MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf ++ MemEncryptTdxLib|OvmfPkg/Library/BaseMemEncryptTdxLib/BaseMemEncryptTdxLib.inf ++ PeiHardwareInfoLib|OvmfPkg/Library/HardwareInfoLib/PeiHardwareInfoLib.inf ++ DxeHardwareInfoLib|OvmfPkg/Library/HardwareInfoLib/DxeHardwareInfoLib.inf ++ ++ LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf ++ CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf ++ FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf ++ ++ PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf ++ DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf ++ ++ LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf ++ DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf ++ ++ IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf ++ OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ ++!if $(SECURE_BOOT_ENABLE) == TRUE ++ PlatformSecureLib|OvmfPkg/Library/PlatformSecureLib/PlatformSecureLib.inf ++ AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf ++ SecureBootVariableLib|SecurityPkg/Library/SecureBootVariableLib/SecureBootVariableLib.inf ++ PlatformPKProtectionLib|SecurityPkg/Library/PlatformPKProtectionLibVarPolicy/PlatformPKProtectionLibVarPolicy.inf ++ SecureBootVariableProvisionLib|SecurityPkg/Library/SecureBootVariableProvisionLib/SecureBootVariableProvisionLib.inf ++!else ++ AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf ++!endif ++ VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf ++ VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf ++ VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf ++ VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf ++ ++ ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf ++ ShellCEntryLib|ShellPkg/Library/UefiShellCEntryLib/UefiShellCEntryLib.inf ++ S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf ++ SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf ++ OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf ++ ++ Tcg2PhysicalPresenceLib|OvmfPkg/Library/Tcg2PhysicalPresenceLibNull/DxeTcg2PhysicalPresenceLib.inf ++ TpmMeasurementLib|SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf ++ ++[LibraryClasses.common] ++ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf ++ CcExitLib|OvmfPkg/Library/CcExitLib/CcExitLib.inf ++ TdxLib|MdePkg/Library/TdxLib/TdxLib.inf ++ TdxMailboxLib|OvmfPkg/Library/TdxMailboxLib/TdxMailboxLib.inf ++ PlatformInitLib|OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf ++ ++[LibraryClasses.common.SEC] ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/BaseRomAcpiTimerLib.inf ++ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSecLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformRomDebugLibIoPort.inf ++!endif ++ ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf ++ ExtractGuidedSectionLib|MdePkg/Library/BaseExtractGuidedSectionLib/BaseExtractGuidedSectionLib.inf ++ PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf ++ MemoryAllocationLib|EmbeddedPkg/Library/PrePiMemoryAllocationLib/PrePiMemoryAllocationLib.inf ++!if $(TOOL_CHAIN_TAG) == "XCODE5" ++ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/Xcode5SecPeiCpuExceptionHandlerLib.inf ++!else ++ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf ++!endif ++ CcExitLib|OvmfPkg/Library/CcExitLib/SecCcExitLib.inf ++ MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLib.inf ++ PrePiHobListPointerLib|OvmfPkg/IntelTdx/PrePiHobListPointerLibTdx/PrePiHobListPointerLibTdx.inf ++ HobLib|EmbeddedPkg/Library/PrePiHobLib/PrePiHobLib.inf ++ PrePiLib|EmbeddedPkg/Library/PrePiLib/PrePiLib.inf ++ PeilessStartupLib|OvmfPkg/Library/PeilessStartupLib/PeilessStartupLib.inf ++ CcProbeLib|OvmfPkg/Library/CcProbeLib/SecPeiCcProbeLib.inf ++ ++[LibraryClasses.common.DXE_CORE] ++ HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf ++ DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf ++ MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf ++ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ ++[LibraryClasses.common.DXE_RUNTIME_DRIVER] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf ++ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf ++ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf ++ VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf ++ ++[LibraryClasses.common.UEFI_DRIVER] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf ++ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ ++[LibraryClasses.common.DXE_DRIVER] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++ UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ PlatformBootManagerLib|OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf ++ PlatformBmPrintScLib|OvmfPkg/Library/PlatformBmPrintScLib/PlatformBmPrintScLib.inf ++ QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf ++ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf ++ LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf ++ QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf ++ QemuLoadImageLib|OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.inf ++ ++[LibraryClasses.common.UEFI_APPLICATION] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ ++[LibraryClasses.common.DXE_SMM_DRIVER] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf ++ MmServicesTableLib|MdePkg/Library/MmServicesTableLib/MmServicesTableLib.inf ++ SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf ++ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ ++[LibraryClasses.common.SMM_CORE] ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf ++ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf ++ SmmCorePlatformHookLib|MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformHookLibNull.inf ++ MemoryAllocationLib|MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf ++ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf ++ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ++ SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf ++ SmmServicesTableLib|MdeModulePkg/Library/PiSmmCoreSmmServicesTableLib/PiSmmCoreSmmServicesTableLib.inf ++!ifdef $(DEBUG_ON_SERIAL_PORT) ++ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf ++!else ++ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf ++!endif ++ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf ++ ++################################################################################ ++# ++# Pcd Section - list of all EDK II PCD Entries defined by this Platform. ++# ++################################################################################ ++[PcdsFeatureFlag] ++ gEfiMdeModulePkgTokenSpaceGuid.PcdHiiOsRuntimeSupport|FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSupportUefiDecompress|FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol|TRUE ++!ifdef $(CSM_ENABLE) ++ gUefiOvmfPkgTokenSpaceGuid.PcdCsmEnable|TRUE ++!endif ++ ++[PcdsFixedAtBuild] ++ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize|1 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE ++ gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler|0x10 ++ gEfiMdePkgTokenSpaceGuid.PcdMaximumLinkedListLength|0 ++!if ($(FD_SIZE_IN_KB) == 1024) || ($(FD_SIZE_IN_KB) == 2048) ++ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x2800 ++ # match PcdFlashNvStorageVariableSize purely for convenience ++ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0xe000 ++!endif ++!if $(FD_SIZE_IN_KB) == 4096 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x8400 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x8400 ++ # match PcdFlashNvStorageVariableSize purely for convenience ++ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x40000 ++!endif ++ ++ gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress|0x0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|TRUE ++ ++ gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 ++ ++ # DEBUG_INIT 0x00000001 // Initialization ++ # DEBUG_WARN 0x00000002 // Warnings ++ # DEBUG_LOAD 0x00000004 // Load events ++ # DEBUG_FS 0x00000008 // EFI File system ++ # DEBUG_POOL 0x00000010 // Alloc & Free (pool) ++ # DEBUG_PAGE 0x00000020 // Alloc & Free (page) ++ # DEBUG_INFO 0x00000040 // Informational debug messages ++ # DEBUG_DISPATCH 0x00000080 // PEI/DXE/SMM Dispatchers ++ # DEBUG_VARIABLE 0x00000100 // Variable ++ # DEBUG_BM 0x00000400 // Boot Manager ++ # DEBUG_BLKIO 0x00001000 // BlkIo Driver ++ # DEBUG_NET 0x00004000 // SNP Driver ++ # DEBUG_UNDI 0x00010000 // UNDI Driver ++ # DEBUG_LOADFILE 0x00020000 // LoadFile ++ # DEBUG_EVENT 0x00080000 // Event messages ++ # DEBUG_GCD 0x00100000 // Global Coherency Database changes ++ # DEBUG_CACHE 0x00200000 // Memory range cachability changes ++ # DEBUG_VERBOSE 0x00400000 // Detailed debug messages that may ++ # // significantly impact boot performance ++ # DEBUG_ERROR 0x80000000 // Error ++ gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8000004F ++ ++ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2F ++ ++ # This PCD is used to set the base address of the PCI express hierarchy. It ++ # is only consulted when OVMF runs on Q35. In that case it is programmed into ++ # the PCIEXBAR register. ++ # ++ # On Q35 machine types that QEMU intends to support in the long term, QEMU ++ # never lets the RAM below 4 GB exceed 2816 MB. ++ gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0xB0000000 ++ ++ # ++ # The NumberOfPages values below are ad-hoc. They are updated sporadically at ++ # best (please refer to git-blame for past updates). The values capture a set ++ # of BIN hints that made sense at a particular time, for some (now likely ++ # unknown) workloads / boot paths. ++ # ++ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS|0x80 ++ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory|0x10 ++ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType|0x80 ++ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode|0x100 ++ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData|0x100 ++ ++ # ++ # TDX need 1G PageTable support ++ gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable|TRUE ++ ++ gEfiShellPkgTokenSpaceGuid.PcdShellFileOperationSize|0x20000 ++ ++ # IRQs 5, 9, 10, 11 are level-triggered ++ gUefiOvmfPkgTokenSpaceGuid.Pcd8259LegacyModeEdgeLevel|0x0E20 ++ ++ # Point to the MdeModulePkg/Application/UiApp/UiApp.inf ++ gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 } ++ ++################################################################################ ++# ++# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform ++# ++################################################################################ ++ ++[PcdsDynamicDefault] ++ # only set when ++ # ($(SMM_REQUIRE) == FALSE) ++ gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0 ++ ++ gEfiMdeModulePkgTokenSpaceGuid.PcdResizeXterm|FALSE ++ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0 ++ ++ gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable|FALSE ++ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Base|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x800000000 ++ ++ gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0 ++ ++ # Set video resolution for text setup. ++ gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|640 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|480 ++ ++ gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0208 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0 ++ gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE ++ ++ # Noexec settings for DXE. ++ gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack|TRUE ++ ++ # UefiCpuPkg PCDs related to initial AP bringup and general AP management. ++ gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber|64 ++ gUefiCpuPkgTokenSpaceGuid.PcdCpuBootLogicalProcessorNumber|0 ++ ++ # Set memory encryption mask ++ gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask|0x0 ++ ++ # Set Tdx shared bit mask ++ gEfiMdeModulePkgTokenSpaceGuid.PcdTdxSharedBitMask|0x0 ++ ++ # Set SEV-ES defaults ++ gEfiMdeModulePkgTokenSpaceGuid.PcdGhcbBase|0 ++ gEfiMdeModulePkgTokenSpaceGuid.PcdGhcbSize|0 ++ gUefiCpuPkgTokenSpaceGuid.PcdSevEsIsEnabled|0 ++ ++ gEfiSecurityPkgTokenSpaceGuid.PcdOptionRomImageVerificationPolicy|0x00 ++ ++ # Set ConfidentialComputing defaults ++ gEfiMdePkgTokenSpaceGuid.PcdConfidentialComputingGuestAttr|0 ++ ++ gEfiMdePkgTokenSpaceGuid.PcdFSBClock|1000000000 ++ ++################################################################################ ++# ++# Components Section - list of all EDK II Modules needed by this Platform. ++# ++################################################################################ ++[Components] ++ OvmfPkg/ResetVector/ResetVector.inf ++ ++ # ++ # SEC Phase modules ++ # ++ OvmfPkg/IntelTdx/Sec/SecMain.inf { ++ ++ NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf ++ TpmMeasurementLib|SecurityPkg/Library/SecTpmMeasurementLib/SecTpmMeasurementLibTdx.inf ++ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf ++ HashLib|SecurityPkg/Library/HashLibTdx/HashLibTdx.inf ++ NULL|SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.inf ++ } ++ ++ # ++ # DXE Phase modules ++ # ++ MdeModulePkg/Core/Dxe/DxeMain.inf { ++ ++ NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf ++ DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf ++ } ++ ++ MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf ++ MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf ++ MdeModulePkg/Universal/PCD/Dxe/Pcd.inf { ++ ++ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf ++ } ++ ++ MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf ++ ++ MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf { ++ ++!if $(SECURE_BOOT_ENABLE) == TRUE ++ NULL|SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.inf ++!endif ++ NULL|SecurityPkg/Library/DxeTpm2MeasureBootLib/DxeTpm2MeasureBootLib.inf ++ } ++ ++ MdeModulePkg/Universal/EbcDxe/EbcDxe.inf ++ UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf ++ ++ UefiCpuPkg/CpuDxe/CpuDxe.inf { ++ ++ # ++ # Directly use DxeMpInitLib. It depends on DxeMpInitLibMpDepLib which ++ # checks the Protocol of gEfiMpInitLibMpDepProtocolGuid. ++ # ++ MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf ++ NULL|OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibMpDepLib.inf ++ } ++ ++ UefiCpuPkg/CpuDxe/CpuDxe.inf { ++ ++ FILE_GUID = $(UP_CPU_DXE_GUID) ++ ++ ++ # ++ # Directly use MpInitLibUp. It depends on DxeMpInitLibUpDepLib which ++ # checks the Protocol of gEfiMpInitLibUpDepProtocolGuid. ++ # ++ MpInitLib|UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf ++ NULL|OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibUpDepLib.inf ++ } ++ ++ OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf ++ OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf ++ OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf ++ MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf { ++ ++ PciHostBridgeLib|OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf ++ PciHostBridgeUtilityLib|OvmfPkg/Library/PciHostBridgeUtilityLib/PciHostBridgeUtilityLib.inf ++ NULL|OvmfPkg/Library/PlatformHasIoMmuLib/PlatformHasIoMmuLib.inf ++ } ++ MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf { ++ ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ } ++ MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf ++ MdeModulePkg/Universal/Metronome/Metronome.inf ++ PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf ++ MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf ++ MdeModulePkg/Universal/BdsDxe/BdsDxe.inf { ++ ++ XenPlatformLib|OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf ++ } ++ MdeModulePkg/Logo/LogoDxe.inf ++ MdeModulePkg/Application/UiApp/UiApp.inf { ++ ++ NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf ++ NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf ++ NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf ++ } ++ OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.inf { ++ ++ NULL|OvmfPkg/Library/BlobVerifierLibNull/BlobVerifierLibNull.inf ++ } ++ OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf ++ OvmfPkg/Virtio10Dxe/Virtio10.inf ++ OvmfPkg/VirtioBlkDxe/VirtioBlk.inf ++ OvmfPkg/VirtioScsiDxe/VirtioScsi.inf ++ OvmfPkg/VirtioRngDxe/VirtioRng.inf ++!if $(PVSCSI_ENABLE) == TRUE ++ OvmfPkg/PvScsiDxe/PvScsiDxe.inf ++!endif ++!if $(MPT_SCSI_ENABLE) == TRUE ++ OvmfPkg/MptScsiDxe/MptScsiDxe.inf ++!endif ++!if $(LSI_SCSI_ENABLE) == TRUE ++ OvmfPkg/LsiScsiDxe/LsiScsiDxe.inf ++!endif ++ MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf ++ MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf ++ MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf ++ MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf ++ MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf ++ MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf { ++ ++ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf ++ } ++ MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf ++ MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf { ++ ++ DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf ++ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf ++ } ++ ++ MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf ++ MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf ++ MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.inf ++ MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf ++ FatPkg/EnhancedFatDxe/Fat.inf ++ MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf ++ OvmfPkg/VirtioFsDxe/VirtioFsDxe.inf ++ MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf ++ MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf ++ OvmfPkg/SataControllerDxe/SataControllerDxe.inf ++ MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf ++ MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf ++ MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf ++ MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf ++ MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf ++ MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf ++ MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf ++ ++!ifndef $(CSM_ENABLE) ++ OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf ++!endif ++ OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf ++ OvmfPkg/VirtioGpuDxe/VirtioGpu.inf ++ ++ # ++ # ISA Support ++ # ++ OvmfPkg/SioBusDxe/SioBusDxe.inf ++ MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf ++ MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf ++ ++ # ++ # SMBIOS Support ++ # ++ MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf { ++ ++ NULL|OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf ++ } ++ OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf ++ ++ # ++ # ACPI Support ++ # ++ MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf ++ OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf ++ MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf ++ MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf ++ MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf ++ ++ # ++ # Usb Support ++ # ++ MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf ++ MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf ++ MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf ++ MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf ++ MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf ++ MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf ++ ++!if $(TOOL_CHAIN_TAG) != "XCODE5" ++ OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf { ++ ++ gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE ++ } ++!endif ++ ShellPkg/Application/Shell/Shell.inf { ++ ++ ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf ++ NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf ++ NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsLib.inf ++ NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsLib.inf ++ NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.inf ++ NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf ++ NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1CommandsLib.inf ++ HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf ++ PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf ++ BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf ++ ++ ++ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF ++ gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE ++ gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 ++ } ++ ++!if $(SECURE_BOOT_ENABLE) == TRUE ++ SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf ++ OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.inf ++!endif ++ ++ OvmfPkg/PlatformDxe/Platform.inf ++ OvmfPkg/IoMmuDxe/IoMmuDxe.inf ++ ++ OvmfPkg/TdxDxe/TdxDxe.inf ++ ++ # ++ # Variable driver stack (non-SMM) ++ # ++ OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf ++ OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf { ++ ++ PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf ++ } ++ MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf { ++ ++ NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf ++ } ++ ++ # ++ # Cc Measurement Protocol for Td guest ++ # ++ OvmfPkg/IntelTdx/TdTcg2Dxe/TdTcg2Dxe.inf { ++ ++ HashLib|SecurityPkg/Library/HashLibTdx/HashLibTdx.inf ++ NULL|SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.inf ++ } +diff --git a/OvmfPkg/Microvm/MicrovmX64.dsc b/OvmfPkg/Microvm/MicrovmX64.dsc +index 617f925395..afd4bf3e98 100644 +--- a/OvmfPkg/Microvm/MicrovmX64.dsc ++++ b/OvmfPkg/Microvm/MicrovmX64.dsc +@@ -201,7 +201,7 @@ + !else + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf + !endif +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf + VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf +diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc +index a0666930d6..47426c5cd2 100644 +--- a/OvmfPkg/OvmfPkgIa32.dsc ++++ b/OvmfPkg/OvmfPkgIa32.dsc +@@ -199,7 +199,7 @@ + !else + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf + !endif +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + !if $(SECURE_BOOT_ENABLE) == TRUE + PlatformSecureLib|OvmfPkg/Library/PlatformSecureLib/PlatformSecureLib.inf +diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc +index 5efeb42bf3..d4b30e8133 100644 +--- a/OvmfPkg/OvmfPkgIa32X64.dsc ++++ b/OvmfPkg/OvmfPkgIa32X64.dsc +@@ -203,7 +203,7 @@ + !else + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf + !endif +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + !if $(SECURE_BOOT_ENABLE) == TRUE + PlatformSecureLib|OvmfPkg/Library/PlatformSecureLib/PlatformSecureLib.inf +diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc +index 10fb7d7069..5b0f6c8747 100644 +--- a/OvmfPkg/OvmfPkgX64.dsc ++++ b/OvmfPkg/OvmfPkgX64.dsc +@@ -203,7 +203,7 @@ + !else + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf + !endif +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + !if $(SECURE_BOOT_ENABLE) == TRUE + PlatformSecureLib|OvmfPkg/Library/PlatformSecureLib/PlatformSecureLib.inf +diff --git a/OvmfPkg/OvmfXen.dsc b/OvmfPkg/OvmfXen.dsc +index a31519e356..e7c36d1b80 100644 +--- a/OvmfPkg/OvmfXen.dsc ++++ b/OvmfPkg/OvmfXen.dsc +@@ -188,7 +188,7 @@ + !else + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf + !endif +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf + VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf +diff --git a/SecurityPkg/SecurityPkg.dsc b/SecurityPkg/SecurityPkg.dsc +index 36493f04ee..3daf9e5462 100644 +--- a/SecurityPkg/SecurityPkg.dsc ++++ b/SecurityPkg/SecurityPkg.dsc +@@ -91,10 +91,10 @@ + ArmTrngLib|MdePkg/Library/BaseArmTrngLibNull/BaseArmTrngLibNull.inf + + [LibraryClasses.ARM] +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + [LibraryClasses.RISCV64] +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + [LibraryClasses.common.PEIM] + PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf +diff --git a/SignedCapsulePkg/SignedCapsulePkg.dsc b/SignedCapsulePkg/SignedCapsulePkg.dsc +index 8a27207a6f..4c656666e9 100644 +--- a/SignedCapsulePkg/SignedCapsulePkg.dsc ++++ b/SignedCapsulePkg/SignedCapsulePkg.dsc +@@ -110,10 +110,10 @@ + NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf + + [LibraryClasses.ARM] +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + [LibraryClasses.RISCV64] +- RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++ RngLib|MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + + [LibraryClasses.common.PEI_CORE] + HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf +-- +2.39.3 + diff --git a/edk2-MdeModulePkg-Potential-UINT32-overflow-in-S3-ResumeC.patch b/edk2-MdeModulePkg-Potential-UINT32-overflow-in-S3-ResumeC.patch new file mode 100644 index 0000000..2729b1f --- /dev/null +++ b/edk2-MdeModulePkg-Potential-UINT32-overflow-in-S3-ResumeC.patch @@ -0,0 +1,66 @@ +From 2e4b2b8fce40cf93f35e052102f37fee07b2e64a Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Mon, 10 Jun 2024 18:13:29 -0400 +Subject: [PATCH 02/31] MdeModulePkg: Potential UINT32 overflow in S3 + ResumeCount + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [2/31] a3592c3437041cbd33a6c11feb3d0999e122c8c0 + +JIRA: https://issues.redhat.com/browse/RHEL-40099 +CVE: CVE-2024-1298 +Upstream: Merged + +commit 284dbac43da752ee34825c8b3f6f9e8281cb5a19 +Author: Shanmugavel Pakkirisamy +Date: Mon May 6 17:53:09 2024 +0800 + + MdeModulePkg: Potential UINT32 overflow in S3 ResumeCount + + REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4677 + + Attacker able to modify physical memory and ResumeCount. + System will crash/DoS when ResumeCount reaches its MAX_UINT32. + + Cc: Zhiguang Liu + Cc: Dandan Bi + Cc: Liming Gao + + Signed-off-by: Pakkirisamy ShanmugavelX + Reviewed-by: Liming Gao + +Signed-off-by: Jon Maloy +--- + .../FirmwarePerformancePei.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c +index 6881466201..54b3bc3c54 100644 +--- a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c ++++ b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c +@@ -110,11 +110,15 @@ FpdtStatusCodeListenerPei ( + // + S3ResumeTotal = MultU64x32 (AcpiS3ResumeRecord->AverageResume, AcpiS3ResumeRecord->ResumeCount); + AcpiS3ResumeRecord->ResumeCount++; +- AcpiS3ResumeRecord->AverageResume = DivU64x32 (S3ResumeTotal + AcpiS3ResumeRecord->FullResume, AcpiS3ResumeRecord->ResumeCount); ++ if (AcpiS3ResumeRecord->ResumeCount > 0) { ++ AcpiS3ResumeRecord->AverageResume = DivU64x32 (S3ResumeTotal + AcpiS3ResumeRecord->FullResume, AcpiS3ResumeRecord->ResumeCount); ++ DEBUG ((DEBUG_INFO, "\nFPDT: S3 Resume Performance - AverageResume = 0x%x\n", AcpiS3ResumeRecord->AverageResume)); ++ } else { ++ DEBUG ((DEBUG_ERROR, "\nFPDT: S3 ResumeCount reaches the MAX_UINT32 value. S3 ResumeCount record reset to Zero.")); ++ } + +- DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - ResumeCount = %d\n", AcpiS3ResumeRecord->ResumeCount)); +- DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - FullResume = %ld\n", AcpiS3ResumeRecord->FullResume)); +- DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - AverageResume = %ld\n", AcpiS3ResumeRecord->AverageResume)); ++ DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - ResumeCount = 0x%x\n", AcpiS3ResumeRecord->ResumeCount)); ++ DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - FullResume = 0x%x\n", AcpiS3ResumeRecord->FullResume)); + + // + // Update S3 Suspend Performance Record. +-- +2.39.3 + diff --git a/edk2-MdeModulePkg-Rng-Add-GUID-to-describe-unsafe-Rng-alg.patch b/edk2-MdeModulePkg-Rng-Add-GUID-to-describe-unsafe-Rng-alg.patch new file mode 100644 index 0000000..9959d96 --- /dev/null +++ b/edk2-MdeModulePkg-Rng-Add-GUID-to-describe-unsafe-Rng-alg.patch @@ -0,0 +1,90 @@ +From 5ba444af245d59e3208260478aa710d4f143f259 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 16:06:25 -0400 +Subject: [PATCH 20/31] MdeModulePkg/Rng: Add GUID to describe unsafe Rng + algorithms + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [20/31] d0e553560d60122f2fe5f33923b5b943c138a18d + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit 414c0f20896f3dec412135fa4260f8aad8bef246 +Author: Pierre Gondois +Date: Fri Aug 11 16:33:07 2023 +0200 + + MdeModulePkg/Rng: Add GUID to describe unsafe Rng algorithms + + BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4441 + + The EFI_RNG_PROTOCOL can rely on the RngLib. The RngLib has multiple + implementations, some of them are unsafe (e.g. BaseRngLibTimerLib). + To allow the RngDxe to detect when such implementation is used, + a GetRngGuid() function is added in a following patch. + + Prepare GetRngGuid() return values and add a gEdkiiRngAlgorithmUnSafe + to describe an unsafe implementation, cf. the BaseRngLibTimerLib. + + Signed-off-by: Pierre Gondois + Reviewed-by: Sami Mujawar + Acked-by: Ard Biesheuvel + Tested-by: Kun Qin + +Signed-off-by: Jon Maloy +--- + MdeModulePkg/Include/Guid/RngAlgorithm.h | 23 +++++++++++++++++++++++ + MdeModulePkg/MdeModulePkg.dec | 3 +++ + 2 files changed, 26 insertions(+) + create mode 100644 MdeModulePkg/Include/Guid/RngAlgorithm.h + +diff --git a/MdeModulePkg/Include/Guid/RngAlgorithm.h b/MdeModulePkg/Include/Guid/RngAlgorithm.h +new file mode 100644 +index 0000000000..e2ac2ba3e5 +--- /dev/null ++++ b/MdeModulePkg/Include/Guid/RngAlgorithm.h +@@ -0,0 +1,23 @@ ++/** @file ++ Rng Algorithm ++ ++ Copyright (c) 2023, Arm Limited. All rights reserved.
++ SPDX-License-Identifier: BSD-2-Clause-Patent ++**/ ++ ++#ifndef RNG_ALGORITHM_GUID_H_ ++#define RNG_ALGORITHM_GUID_H_ ++ ++/// ++/// The implementation of a Random Number Generator might be unsafe, when using ++/// a dummy implementation for instance. Allow identifying such implementation ++/// with this GUID. ++/// ++#define EDKII_RNG_ALGORITHM_UNSAFE \ ++ { \ ++ 0x869f728c, 0x409d, 0x4ab4, {0xac, 0x03, 0x71, 0xd3, 0x09, 0xc1, 0xb3, 0xf4 } \ ++ } ++ ++extern EFI_GUID gEdkiiRngAlgorithmUnSafe; ++ ++#endif // #ifndef RNG_ALGORITHM_GUID_H_ +diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec +index 08d59dfb3e..3513a9678a 100644 +--- a/MdeModulePkg/MdeModulePkg.dec ++++ b/MdeModulePkg/MdeModulePkg.dec +@@ -401,6 +401,9 @@ + ## Include/Guid/MigratedFvInfo.h + gEdkiiMigratedFvInfoGuid = { 0xc1ab12f7, 0x74aa, 0x408d, { 0xa2, 0xf4, 0xc6, 0xce, 0xfd, 0x17, 0x98, 0x71 } } + ++ ## Include/Guid/RngAlgorithm.h ++ gEdkiiRngAlgorithmUnSafe = { 0x869f728c, 0x409d, 0x4ab4, {0xac, 0x03, 0x71, 0xd3, 0x09, 0xc1, 0xb3, 0xf4 }} ++ + # + # GUID defined in UniversalPayload + # +-- +2.39.3 + diff --git a/edk2-MdePkg-Add-deprecated-warning-to-BaseRngLibTimer.patch b/edk2-MdePkg-Add-deprecated-warning-to-BaseRngLibTimer.patch new file mode 100644 index 0000000..925fcf1 --- /dev/null +++ b/edk2-MdePkg-Add-deprecated-warning-to-BaseRngLibTimer.patch @@ -0,0 +1,89 @@ +From 3800b9ee5d6d4c05c7e27f949c3b32c422c78f2d Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 16:02:31 -0400 +Subject: [PATCH 16/31] MdePkg: Add deprecated warning to BaseRngLibTimer + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [16/31] 6e199344d083e90f60cbe01dfb3c2a3719e3177d + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit e93468442b7da7bc80e00014e854c0c8a0a7184b +Author: Pierre Gondois +Date: Fri Aug 11 16:33:03 2023 +0200 + + MdePkg: Add deprecated warning to BaseRngLibTimer + + BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4504 + + To keep the MdePkg self-contained and avoid dependencies on GUIDs + defined in other packages, the BaseRngLibTimer was moved to the + MdePkg. + Add a constructor to warn and request to use the MdeModulePkg + implementation. + + Signed-off-by: Pierre Gondois + Reviewed-by: Liming Gao + Reviewed-by: Sami Mujawar + Acked-by: Ard Biesheuvel + Tested-by: Kun Qin + +Signed-off-by: Jon Maloy +--- + .../BaseRngLibTimerLib/BaseRngLibTimerLib.inf | 1 + + .../Library/BaseRngLibTimerLib/RngLibTimer.c | 22 +++++++++++++++++++ + 2 files changed, 23 insertions(+) + +diff --git a/MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf b/MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf +index f857290e82..96c90db63f 100644 +--- a/MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++++ b/MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf +@@ -23,6 +23,7 @@ + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = RngLib ++ CONSTRUCTOR = BaseRngLibTimerConstructor + + [Sources] + RngLibTimer.c +diff --git a/MdePkg/Library/BaseRngLibTimerLib/RngLibTimer.c b/MdePkg/Library/BaseRngLibTimerLib/RngLibTimer.c +index 54d29d96f3..6b8392162b 100644 +--- a/MdePkg/Library/BaseRngLibTimerLib/RngLibTimer.c ++++ b/MdePkg/Library/BaseRngLibTimerLib/RngLibTimer.c +@@ -13,6 +13,28 @@ + + #define DEFAULT_DELAY_TIME_IN_MICROSECONDS 10 + ++/** ++ This implementation is to be replaced by its MdeModulePkg copy. ++ The cause being that some GUIDs (gEdkiiRngAlgorithmUnSafe) cannot ++ be defined in the MdePkg. ++ ++ @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. ++**/ ++RETURN_STATUS ++EFIAPI ++BaseRngLibTimerConstructor ( ++ VOID ++ ) ++{ ++ DEBUG (( ++ DEBUG_WARN, ++ "Warning: This BaseRngTimerLib implementation will be deprecated. " ++ "Please use the MdeModulePkg implementation equivalent.\n" ++ )); ++ ++ return RETURN_SUCCESS; ++} ++ + /** + Using the TimerLib GetPerformanceCounterProperties() we delay + for enough time for the PerformanceCounter to increment. +-- +2.39.3 + diff --git a/edk2-MdePkg-Apply-uncrustify-changes.patch b/edk2-MdePkg-Apply-uncrustify-changes.patch new file mode 100644 index 0000000..e5409de --- /dev/null +++ b/edk2-MdePkg-Apply-uncrustify-changes.patch @@ -0,0 +1,94 @@ +From 1198bceefa4834c09e1edc1c558aeffe4930d1f5 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Tue, 11 Jun 2024 21:32:26 -0400 +Subject: [PATCH 03/31] MdePkg: Apply uncrustify changes + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [3/31] 422d94b837bf0e65164968272a358c2656f59838 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +This is a subset of the whitespace changes in the corresponding upstream +commit. It is needed for the next commits in this series to apply with +less fewer conflicts. + +commit 2f88bd3a1296c522317f1c21377876de63de5be7 +Author: Michael Kubacki +Date: Sun Dec 5 14:54:05 2021 -0800 + + MdePkg: Apply uncrustify changes + + REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 + + Apply uncrustify changes to .c/.h files in the MdePkg package + + Cc: Andrew Fish + Cc: Leif Lindholm + Cc: Michael D Kinney + Signed-off-by: Michael Kubacki + Reviewed-by: Liming Gao + +Signed-off-by: Jon Maloy +--- + MdePkg/Include/Protocol/Rng.h | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/MdePkg/Include/Protocol/Rng.h b/MdePkg/Include/Protocol/Rng.h +index a0a05d1661..baf425587b 100644 +--- a/MdePkg/Include/Protocol/Rng.h ++++ b/MdePkg/Include/Protocol/Rng.h +@@ -93,7 +93,7 @@ typedef EFI_GUID EFI_RNG_ALGORITHM; + **/ + typedef + EFI_STATUS +-(EFIAPI *EFI_RNG_GET_INFO) ( ++(EFIAPI *EFI_RNG_GET_INFO)( + IN EFI_RNG_PROTOCOL *This, + IN OUT UINTN *RNGAlgorithmListSize, + OUT EFI_RNG_ALGORITHM *RNGAlgorithmList +@@ -123,9 +123,9 @@ EFI_STATUS + **/ + typedef + EFI_STATUS +-(EFIAPI *EFI_RNG_GET_RNG) ( ++(EFIAPI *EFI_RNG_GET_RNG)( + IN EFI_RNG_PROTOCOL *This, +- IN EFI_RNG_ALGORITHM *RNGAlgorithm, OPTIONAL ++ IN EFI_RNG_ALGORITHM *RNGAlgorithm OPTIONAL, + IN UINTN RNGValueLength, + OUT UINT8 *RNGValue + ); +@@ -135,16 +135,16 @@ EFI_STATUS + /// applications, or entropy for seeding other random number generators. + /// + struct _EFI_RNG_PROTOCOL { +- EFI_RNG_GET_INFO GetInfo; +- EFI_RNG_GET_RNG GetRNG; ++ EFI_RNG_GET_INFO GetInfo; ++ EFI_RNG_GET_RNG GetRNG; + }; + +-extern EFI_GUID gEfiRngProtocolGuid; +-extern EFI_GUID gEfiRngAlgorithmSp80090Hash256Guid; +-extern EFI_GUID gEfiRngAlgorithmSp80090Hmac256Guid; +-extern EFI_GUID gEfiRngAlgorithmSp80090Ctr256Guid; +-extern EFI_GUID gEfiRngAlgorithmX9313DesGuid; +-extern EFI_GUID gEfiRngAlgorithmX931AesGuid; +-extern EFI_GUID gEfiRngAlgorithmRaw; ++extern EFI_GUID gEfiRngProtocolGuid; ++extern EFI_GUID gEfiRngAlgorithmSp80090Hash256Guid; ++extern EFI_GUID gEfiRngAlgorithmSp80090Hmac256Guid; ++extern EFI_GUID gEfiRngAlgorithmSp80090Ctr256Guid; ++extern EFI_GUID gEfiRngAlgorithmX9313DesGuid; ++extern EFI_GUID gEfiRngAlgorithmX931AesGuid; ++extern EFI_GUID gEfiRngAlgorithmRaw; + + #endif +-- +2.39.3 + diff --git a/edk2-MdePkg-BaseRngLib-Add-a-smoketest-for-RDRAND-and-che.patch b/edk2-MdePkg-BaseRngLib-Add-a-smoketest-for-RDRAND-and-che.patch new file mode 100644 index 0000000..6067e74 --- /dev/null +++ b/edk2-MdePkg-BaseRngLib-Add-a-smoketest-for-RDRAND-and-che.patch @@ -0,0 +1,213 @@ +From 1d4b6d489cb919faa3ad67a3ae53fe26c4cd0a75 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 10:32:29 -0400 +Subject: [PATCH 25/31] MdePkg/BaseRngLib: Add a smoketest for RDRAND and check + CPUID + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [25/31] 11804d6f86a644ae2c3dcad89c633ad63b794d3f + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit c3a8ca7b54a9fd17acdf16c6282a92cc989fa92a +Author: Pedro Falcato +Date: Tue Nov 22 22:31:03 2022 +0000 + + MdePkg/BaseRngLib: Add a smoketest for RDRAND and check CPUID + + RDRAND has notoriously been broken many times over its lifespan. + Add a smoketest to RDRAND, in order to better sniff out potential + security concerns. + + Also add a proper CPUID test in order to support older CPUs which may + not have it; it was previously being tested but then promptly ignored. + + Testing algorithm inspired by linux's arch/x86/kernel/cpu/rdrand.c + :x86_init_rdrand() per commit 049f9ae9.. + + Many thanks to Jason Donenfeld for relicensing his linux RDRAND detection + code to MIT and the public domain. + + >On Tue, Nov 22, 2022 at 2:21 PM Jason A. Donenfeld wrote: + <..> + > I (re)wrote that function in Linux. I hereby relicense it as MIT, and + > also place it into public domain. Do with it what you will now. + > + > Jason + + BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4163 + + Signed-off-by: Pedro Falcato + Cc: Michael D Kinney + Cc: Liming Gao + Cc: Zhiguang Liu + Cc: Jason A. Donenfeld + +Signed-off-by: Jon Maloy +--- + MdePkg/Library/BaseRngLib/Rand/RdRand.c | 99 +++++++++++++++++++++++-- + 1 file changed, 91 insertions(+), 8 deletions(-) + +diff --git a/MdePkg/Library/BaseRngLib/Rand/RdRand.c b/MdePkg/Library/BaseRngLib/Rand/RdRand.c +index aee8ea04e8..7132ab0efd 100644 +--- a/MdePkg/Library/BaseRngLib/Rand/RdRand.c ++++ b/MdePkg/Library/BaseRngLib/Rand/RdRand.c +@@ -3,6 +3,7 @@ + to provide high-quality random numbers. + + Copyright (c) 2023, Arm Limited. All rights reserved.
++Copyright (c) 2022, Pedro Falcato. All rights reserved.
+ Copyright (c) 2021, NUVIA Inc. All rights reserved.
+ Copyright (c) 2015, Intel Corporation. All rights reserved.
+ +@@ -25,6 +26,88 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + + STATIC BOOLEAN mRdRandSupported; + ++// ++// Intel SDM says 10 tries is good enough for reliable RDRAND usage. ++// ++#define RDRAND_RETRIES 10 ++ ++#define RDRAND_TEST_SAMPLES 8 ++ ++#define RDRAND_MIN_CHANGE 5 ++ ++// ++// Add a define for native-word RDRAND, just for the test. ++// ++#ifdef MDE_CPU_X64 ++#define ASM_RDRAND AsmRdRand64 ++#else ++#define ASM_RDRAND AsmRdRand32 ++#endif ++ ++/** ++ Tests RDRAND for broken implementations. ++ ++ @retval TRUE RDRAND is reliable (and hopefully safe). ++ @retval FALSE RDRAND is unreliable and should be disabled, despite CPUID. ++ ++**/ ++STATIC ++BOOLEAN ++TestRdRand ( ++ VOID ++ ) ++{ ++ // ++ // Test for notoriously broken rdrand implementations that always return the same ++ // value, like the Zen 3 uarch (all-1s) or other several AMD families on suspend/resume (also all-1s). ++ // Note that this should be expanded to extensively test for other sorts of possible errata. ++ // ++ ++ // ++ // Our algorithm samples rdrand $RDRAND_TEST_SAMPLES times and expects ++ // a different result $RDRAND_MIN_CHANGE times for reliable RDRAND usage. ++ // ++ UINTN Prev; ++ UINT8 Idx; ++ UINT8 TestIteration; ++ UINT32 Changed; ++ ++ Changed = 0; ++ ++ for (TestIteration = 0; TestIteration < RDRAND_TEST_SAMPLES; TestIteration++) { ++ UINTN Sample; ++ // ++ // Note: We use a retry loop for rdrand. Normal users get this in BaseRng.c ++ // Any failure to get a random number will assume RDRAND does not work. ++ // ++ for (Idx = 0; Idx < RDRAND_RETRIES; Idx++) { ++ if (ASM_RDRAND (&Sample)) { ++ break; ++ } ++ } ++ ++ if (Idx == RDRAND_RETRIES) { ++ DEBUG ((DEBUG_ERROR, "BaseRngLib/x86: CPU BUG: Failed to get an RDRAND random number - disabling\n")); ++ return FALSE; ++ } ++ ++ if (TestIteration != 0) { ++ Changed += Sample != Prev; ++ } ++ ++ Prev = Sample; ++ } ++ ++ if (Changed < RDRAND_MIN_CHANGE) { ++ DEBUG ((DEBUG_ERROR, "BaseRngLib/x86: CPU BUG: RDRAND not reliable - disabling\n")); ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++#undef ASM_RDRAND ++ + /** + The constructor function checks whether or not RDRAND instruction is supported + by the host hardware. +@@ -49,10 +132,13 @@ BaseRngLibConstructor ( + // CPUID. A value of 1 indicates that processor support RDRAND instruction. + // + AsmCpuid (1, 0, 0, &RegEcx, 0); +- ASSERT ((RegEcx & RDRAND_MASK) == RDRAND_MASK); + + mRdRandSupported = ((RegEcx & RDRAND_MASK) == RDRAND_MASK); + ++ if (mRdRandSupported) { ++ mRdRandSupported = TestRdRand (); ++ } ++ + return EFI_SUCCESS; + } + +@@ -71,6 +157,7 @@ ArchGetRandomNumber16 ( + OUT UINT16 *Rand + ) + { ++ ASSERT (mRdRandSupported); + return AsmRdRand16 (Rand); + } + +@@ -89,6 +176,7 @@ ArchGetRandomNumber32 ( + OUT UINT32 *Rand + ) + { ++ ASSERT (mRdRandSupported); + return AsmRdRand32 (Rand); + } + +@@ -107,6 +195,7 @@ ArchGetRandomNumber64 ( + OUT UINT64 *Rand + ) + { ++ ASSERT (mRdRandSupported); + return AsmRdRand64 (Rand); + } + +@@ -123,13 +212,7 @@ ArchIsRngSupported ( + VOID + ) + { +- /* +- Existing software depends on this always returning TRUE, so for +- now hard-code it. +- +- return mRdRandSupported; +- */ +- return TRUE; ++ return mRdRandSupported; + } + + /** +-- +2.39.3 + diff --git a/edk2-MdePkg-DxeRngLib-Request-raw-algorithm-instead-of-de.patch b/edk2-MdePkg-DxeRngLib-Request-raw-algorithm-instead-of-de.patch new file mode 100644 index 0000000..ca73c6b --- /dev/null +++ b/edk2-MdePkg-DxeRngLib-Request-raw-algorithm-instead-of-de.patch @@ -0,0 +1,66 @@ +From 3351bd0ba07cc490c344d2dc54b86833993ca5a2 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 15:58:58 -0400 +Subject: [PATCH 18/31] MdePkg/DxeRngLib: Request raw algorithm instead of + default + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [18/31] fa2da700127ae713aa578638c2390673fc49522d + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit bd1f0eecc1dfe51ba20161bef8860d12392006bd +Author: Pierre Gondois +Date: Fri Aug 11 16:33:05 2023 +0200 + + MdePkg/DxeRngLib: Request raw algorithm instead of default + + The DxeRngLib tries to generate a random number using the 3 NIST + SP 800-90 compliant DRBG algorithms, i.e. 256-bits CTR, HASH and HMAC. + If none of the call is successful, the fallback option is the default + RNG algorithm of the EFI_RNG_PROTOCOL. This default algorithm might + be an unsafe implementation. + + Try requesting the Raw algorithm before requesting the default one. + + Signed-off-by: Pierre Gondois + Reviewed-by: Sami Mujawar + Reviewed-by: Liming Gao + Acked-by: Ard Biesheuvel + Tested-by: Kun Qin + +Signed-off-by: Jon Maloy +--- + MdePkg/Library/DxeRngLib/DxeRngLib.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/MdePkg/Library/DxeRngLib/DxeRngLib.c b/MdePkg/Library/DxeRngLib/DxeRngLib.c +index 9c3d67b5a6..4b2fc1cde5 100644 +--- a/MdePkg/Library/DxeRngLib/DxeRngLib.c ++++ b/MdePkg/Library/DxeRngLib/DxeRngLib.c +@@ -64,9 +64,16 @@ GenerateRandomNumberViaNist800Algorithm ( + if (!EFI_ERROR (Status)) { + return Status; + } ++ ++ Status = RngProtocol->GetRNG (RngProtocol, &gEfiRngAlgorithmRaw, BufferSize, Buffer); ++ DEBUG ((DEBUG_INFO, "%a: GetRNG algorithm Raw - Status = %r\n", __func__, Status)); ++ if (!EFI_ERROR (Status)) { ++ return Status; ++ } ++ + // If all the other methods have failed, use the default method from the RngProtocol + Status = RngProtocol->GetRNG (RngProtocol, NULL, BufferSize, Buffer); +- DEBUG((DEBUG_INFO, "%a: GetRNG algorithm Hash-256 - Status = %r\n", __FUNCTION__, Status)); ++ DEBUG ((DEBUG_INFO, "%a: GetRNG algorithm default - Status = %r\n", __func__, Status)); + if (!EFI_ERROR (Status)) { + return Status; + } +-- +2.39.3 + diff --git a/edk2-MdePkg-Rng-Add-GUID-to-describe-Arm-Rndr-Rng-algorit.patch b/edk2-MdePkg-Rng-Add-GUID-to-describe-Arm-Rndr-Rng-algorit.patch new file mode 100644 index 0000000..a2bbc6e --- /dev/null +++ b/edk2-MdePkg-Rng-Add-GUID-to-describe-Arm-Rndr-Rng-algorit.patch @@ -0,0 +1,91 @@ +From 2a01056c29542a10941cb32929032b80df091a17 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 16:04:48 -0400 +Subject: [PATCH 19/31] MdePkg/Rng: Add GUID to describe Arm Rndr Rng + algorithms + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [19/31] 58b0f069c74b00eb6476427dd84a50a86aceb598 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit cf07238e5fa4f8b1138ac1c9e80530b4d4e59f1c +Author: Pierre Gondois +Date: Fri Aug 11 16:33:06 2023 +0200 + + MdePkg/Rng: Add GUID to describe Arm Rndr Rng algorithms + + BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4441 + + The EFI_RNG_PROTOCOL can rely on the RngLib. The RngLib has multiple + implementations, some of them are unsafe (e.g. BaseRngLibTimerLib). + To allow the RngDxe to detect when such implementation is used, + a GetRngGuid() function is added in a following patch. + + Prepare GetRngGuid() return values and add a gEfiRngAlgorithmArmRndr + to describe a Rng algorithm accessed through Arm's RNDR instruction. + [1] states that the implementation of this algorithm should be + compliant to NIST SP900-80. The compliance is not guaranteed. + + [1] Arm Architecture Reference Manual Armv8, for A-profile architecture + sK12.1 'Properties of the generated random number' + + Signed-off-by: Pierre Gondois + Reviewed-by: Sami Mujawar + Reviewed-by: Liming Gao + Acked-by: Ard Biesheuvel + Tested-by: Kun Qin + +Signed-off-by: Jon Maloy +--- + MdePkg/Include/Protocol/Rng.h | 10 ++++++++++ + MdePkg/MdePkg.dec | 1 + + 2 files changed, 11 insertions(+) + +diff --git a/MdePkg/Include/Protocol/Rng.h b/MdePkg/Include/Protocol/Rng.h +index baf425587b..38bde53240 100644 +--- a/MdePkg/Include/Protocol/Rng.h ++++ b/MdePkg/Include/Protocol/Rng.h +@@ -67,6 +67,15 @@ typedef EFI_GUID EFI_RNG_ALGORITHM; + { \ + 0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61 } \ + } ++/// ++/// The Arm Architecture states the RNDR that the DRBG algorithm should be compliant ++/// with NIST SP800-90A, while not mandating a particular algorithm, so as to be ++/// inclusive of different geographies. ++/// ++#define EFI_RNG_ALGORITHM_ARM_RNDR \ ++ { \ ++ 0x43d2fde3, 0x9d4e, 0x4d79, {0x02, 0x96, 0xa8, 0x9b, 0xca, 0x78, 0x08, 0x41} \ ++ } + + /** + Returns information about the random number generation implementation. +@@ -146,5 +155,6 @@ extern EFI_GUID gEfiRngAlgorithmSp80090Ctr256Guid; + extern EFI_GUID gEfiRngAlgorithmX9313DesGuid; + extern EFI_GUID gEfiRngAlgorithmX931AesGuid; + extern EFI_GUID gEfiRngAlgorithmRaw; ++extern EFI_GUID gEfiRngAlgorithmArmRndr; + + #endif +diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec +index 8f05e822ac..36501e8bb9 100644 +--- a/MdePkg/MdePkg.dec ++++ b/MdePkg/MdePkg.dec +@@ -594,6 +594,7 @@ + gEfiRngAlgorithmX9313DesGuid = { 0x63c4785a, 0xca34, 0x4012, {0xa3, 0xc8, 0x0b, 0x6a, 0x32, 0x4f, 0x55, 0x46 }} + gEfiRngAlgorithmX931AesGuid = { 0xacd03321, 0x777e, 0x4d3d, {0xb1, 0xc8, 0x20, 0xcf, 0xd8, 0x88, 0x20, 0xc9 }} + gEfiRngAlgorithmRaw = { 0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61 }} ++ gEfiRngAlgorithmArmRndr = { 0x43d2fde3, 0x9d4e, 0x4d79, {0x02, 0x96, 0xa8, 0x9b, 0xca, 0x78, 0x08, 0x41 }} + + ## Include/Protocol/AdapterInformation.h + gEfiAdapterInfoMediaStateGuid = { 0xD7C74207, 0xA831, 0x4A26, {0xB1, 0xF5, 0xD1, 0x93, 0x06, 0x5C, 0xE8, 0xB6 }} +-- +2.39.3 + diff --git a/edk2-MdePkg-Rng-Add-GetRngGuid-to-RngLib.patch b/edk2-MdePkg-Rng-Add-GetRngGuid-to-RngLib.patch new file mode 100644 index 0000000..7369548 --- /dev/null +++ b/edk2-MdePkg-Rng-Add-GetRngGuid-to-RngLib.patch @@ -0,0 +1,409 @@ +From b466e2545e25ebb2004ae9b9f95c6c2f60d1f168 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 16:08:28 -0400 +Subject: [PATCH 21/31] MdePkg/Rng: Add GetRngGuid() to RngLib + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [21/31] 54783ad88ba101c620240aa463c5d758fa416c31 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit 5443c2dc310d2c8eb15fb8eefd5057342e78cd0d +Author: Pierre Gondois +Date: Fri Aug 11 16:33:08 2023 +0200 + + MdePkg/Rng: Add GetRngGuid() to RngLib + + The EFI_RNG_PROTOCOL can use the RngLib. The RngLib has multiple + implementations, some of them are unsafe (e.g. BaseRngLibTimerLib). + To allow the RngDxe to detect when such implementation is used, + add a GetRngGuid() function to the RngLib. + + Signed-off-by: Pierre Gondois + Reviewed-by: Liming Gao + Reviewed-by: Sami Mujawar + Acked-by: Ard Biesheuvel + Tested-by: Kun Qin + +Signed-off-by: Jon Maloy +--- + .../BaseRngLibTimerLib/BaseRngLibTimerLib.inf | 4 ++ + .../Library/BaseRngLibTimerLib/RngLibTimer.c | 28 +++++++++++++ + MdePkg/Include/Library/RngLib.h | 19 ++++++++- + MdePkg/Library/BaseRngLib/AArch64/Rndr.c | 42 +++++++++++++++++++ + MdePkg/Library/BaseRngLib/BaseRngLib.inf | 10 +++++ + MdePkg/Library/BaseRngLib/Rand/RdRand.c | 26 ++++++++++++ + .../Library/BaseRngLibNull/BaseRngLibNull.c | 22 ++++++++++ + .../Library/BaseRngLibTimerLib/RngLibTimer.c | 23 ++++++++++ + MdePkg/Library/DxeRngLib/DxeRngLib.c | 28 +++++++++++++ + 9 files changed, 201 insertions(+), 1 deletion(-) + +diff --git a/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf b/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf +index f729001060..8461260cc8 100644 +--- a/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++++ b/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf +@@ -29,6 +29,10 @@ + + [Packages] + MdePkg/MdePkg.dec ++ MdeModulePkg/MdeModulePkg.dec ++ ++[Guids] ++ gEdkiiRngAlgorithmUnSafe + + [LibraryClasses] + BaseLib +diff --git a/MdeModulePkg/Library/BaseRngLibTimerLib/RngLibTimer.c b/MdeModulePkg/Library/BaseRngLibTimerLib/RngLibTimer.c +index 980854d67b..28ff46c71f 100644 +--- a/MdeModulePkg/Library/BaseRngLibTimerLib/RngLibTimer.c ++++ b/MdeModulePkg/Library/BaseRngLibTimerLib/RngLibTimer.c +@@ -2,14 +2,18 @@ + BaseRng Library that uses the TimerLib to provide reasonably random numbers. + Do not use this on a production system. + ++ Copyright (c) 2023, Arm Limited. All rights reserved. + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent + **/ + + #include ++#include + #include ++#include + #include + #include ++#include + + #define DEFAULT_DELAY_TIME_IN_MICROSECONDS 10 + +@@ -190,3 +194,27 @@ GetRandomNumber128 ( + // Read second 64 bits + return GetRandomNumber64 (++Rand); + } ++ ++/** ++ Get a GUID identifying the RNG algorithm implementation. ++ ++ @param [out] RngGuid If success, contains the GUID identifying ++ the RNG algorithm implementation. ++ ++ @retval EFI_SUCCESS Success. ++ @retval EFI_UNSUPPORTED Not supported. ++ @retval EFI_INVALID_PARAMETER Invalid parameter. ++**/ ++EFI_STATUS ++EFIAPI ++GetRngGuid ( ++ GUID *RngGuid ++ ) ++{ ++ if (RngGuid == NULL) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ CopyMem (RngGuid, &gEdkiiRngAlgorithmUnSafe, sizeof (*RngGuid)); ++ return EFI_SUCCESS; ++} +diff --git a/MdePkg/Include/Library/RngLib.h b/MdePkg/Include/Library/RngLib.h +index 05e513022e..801aa6d5bd 100644 +--- a/MdePkg/Include/Library/RngLib.h ++++ b/MdePkg/Include/Library/RngLib.h +@@ -1,6 +1,7 @@ + /** @file + Provides random number generator services. + ++Copyright (c) 2023, Arm Limited. All rights reserved.
+ Copyright (c) 2015, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +@@ -77,4 +78,20 @@ GetRandomNumber128 ( + OUT UINT64 *Rand + ); + +-#endif // __RNG_LIB_H__ ++/** ++ Get a GUID identifying the RNG algorithm implementation. ++ ++ @param [out] RngGuid If success, contains the GUID identifying ++ the RNG algorithm implementation. ++ ++ @retval EFI_SUCCESS Success. ++ @retval EFI_UNSUPPORTED Not supported. ++ @retval EFI_INVALID_PARAMETER Invalid parameter. ++**/ ++EFI_STATUS ++EFIAPI ++GetRngGuid ( ++ GUID *RngGuid ++ ); ++ ++#endif // __RNG_LIB_H__ +diff --git a/MdePkg/Library/BaseRngLib/AArch64/Rndr.c b/MdePkg/Library/BaseRngLib/AArch64/Rndr.c +index c9f8c813ed..7641314a54 100644 +--- a/MdePkg/Library/BaseRngLib/AArch64/Rndr.c ++++ b/MdePkg/Library/BaseRngLib/AArch64/Rndr.c +@@ -2,6 +2,7 @@ + Random number generator service that uses the RNDR instruction + to provide pseudorandom numbers. + ++ Copyright (c) 2023, Arm Limited. All rights reserved.
+ Copyright (c) 2021, NUVIA Inc. All rights reserved.
+ Copyright (c) 2015, Intel Corporation. All rights reserved.
+ +@@ -11,6 +12,7 @@ + + #include + #include ++#include + #include + #include + +@@ -137,3 +139,43 @@ ArchIsRngSupported ( + { + return mRndrSupported; + } ++ ++/** ++ Get a GUID identifying the RNG algorithm implementation. ++ ++ @param [out] RngGuid If success, contains the GUID identifying ++ the RNG algorithm implementation. ++ ++ @retval EFI_SUCCESS Success. ++ @retval EFI_UNSUPPORTED Not supported. ++ @retval EFI_INVALID_PARAMETER Invalid parameter. ++**/ ++EFI_STATUS ++EFIAPI ++GetRngGuid ( ++ GUID *RngGuid ++ ) ++{ ++ GUID *RngLibGuid; ++ ++ if (RngGuid == NULL) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ if (!mRndrSupported) { ++ return EFI_UNSUPPORTED; ++ } ++ ++ // ++ // If the platform advertises the algorithm behind RNDR instruction, ++ // use it. Otherwise use gEfiRngAlgorithmArmRndr. ++ // ++ RngLibGuid = PcdGetPtr (PcdCpuRngSupportedAlgorithm); ++ if (!IsZeroGuid (RngLibGuid)) { ++ CopyMem (RngGuid, RngLibGuid, sizeof (*RngGuid)); ++ } else { ++ CopyMem (RngGuid, &gEfiRngAlgorithmArmRndr, sizeof (*RngGuid)); ++ } ++ ++ return EFI_SUCCESS; ++} +diff --git a/MdePkg/Library/BaseRngLib/BaseRngLib.inf b/MdePkg/Library/BaseRngLib/BaseRngLib.inf +index 1fcceb9414..49503b139b 100644 +--- a/MdePkg/Library/BaseRngLib/BaseRngLib.inf ++++ b/MdePkg/Library/BaseRngLib/BaseRngLib.inf +@@ -4,6 +4,7 @@ + # BaseRng Library that uses CPU RNG instructions (e.g. RdRand) to + # provide random numbers. + # ++# Copyright (c) 2023, Arm Limited. All rights reserved.
+ # Copyright (c) 2021, NUVIA Inc. All rights reserved.
+ # Copyright (c) 2015, Intel Corporation. All rights reserved.
+ # +@@ -43,9 +44,18 @@ + AArch64/ArmReadIdIsar0.asm | MSFT + AArch64/ArmRng.asm | MSFT + ++[Guids.AARCH64] ++ gEfiRngAlgorithmArmRndr ++ ++[Guids.Ia32, Guids.X64] ++ gEfiRngAlgorithmSp80090Ctr256Guid ++ + [Packages] + MdePkg/MdePkg.dec + ++[Pcd.AARCH64] ++ gEfiMdePkgTokenSpaceGuid.PcdCpuRngSupportedAlgorithm ++ + [LibraryClasses] + BaseLib + DebugLib +diff --git a/MdePkg/Library/BaseRngLib/Rand/RdRand.c b/MdePkg/Library/BaseRngLib/Rand/RdRand.c +index 09fb875ac3..aee8ea04e8 100644 +--- a/MdePkg/Library/BaseRngLib/Rand/RdRand.c ++++ b/MdePkg/Library/BaseRngLib/Rand/RdRand.c +@@ -2,6 +2,7 @@ + Random number generator services that uses RdRand instruction access + to provide high-quality random numbers. + ++Copyright (c) 2023, Arm Limited. All rights reserved.
+ Copyright (c) 2021, NUVIA Inc. All rights reserved.
+ Copyright (c) 2015, Intel Corporation. All rights reserved.
+ +@@ -11,6 +12,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + + #include + #include ++#include + #include + + #include "BaseRngLibInternals.h" +@@ -129,3 +131,27 @@ ArchIsRngSupported ( + */ + return TRUE; + } ++ ++/** ++ Get a GUID identifying the RNG algorithm implementation. ++ ++ @param [out] RngGuid If success, contains the GUID identifying ++ the RNG algorithm implementation. ++ ++ @retval EFI_SUCCESS Success. ++ @retval EFI_UNSUPPORTED Not supported. ++ @retval EFI_INVALID_PARAMETER Invalid parameter. ++**/ ++EFI_STATUS ++EFIAPI ++GetRngGuid ( ++ GUID *RngGuid ++ ) ++{ ++ if (RngGuid == NULL) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ CopyMem (RngGuid, &gEfiRngAlgorithmSp80090Ctr256Guid, sizeof (*RngGuid)); ++ return EFI_SUCCESS; ++} +diff --git a/MdePkg/Library/BaseRngLibNull/BaseRngLibNull.c b/MdePkg/Library/BaseRngLibNull/BaseRngLibNull.c +index cad30599ea..34a18e6a4d 100644 +--- a/MdePkg/Library/BaseRngLibNull/BaseRngLibNull.c ++++ b/MdePkg/Library/BaseRngLibNull/BaseRngLibNull.c +@@ -1,13 +1,16 @@ + /** @file + Null version of Random number generator services. + ++Copyright (c) 2023, Arm Limited. All rights reserved.
+ Copyright (c) 2019, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ + ++#include + #include + #include ++#include + + /** + Generates a 16-bit random number. +@@ -92,3 +95,22 @@ GetRandomNumber128 ( + ASSERT (FALSE); + return FALSE; + } ++ ++/** ++ Get a GUID identifying the RNG algorithm implementation. ++ ++ @param [out] RngGuid If success, contains the GUID identifying ++ the RNG algorithm implementation. ++ ++ @retval EFI_SUCCESS Success. ++ @retval EFI_UNSUPPORTED Not supported. ++ @retval EFI_INVALID_PARAMETER Invalid parameter. ++**/ ++EFI_STATUS ++EFIAPI ++GetRngGuid ( ++ GUID *RngGuid ++ ) ++{ ++ return EFI_UNSUPPORTED; ++} +diff --git a/MdePkg/Library/BaseRngLibTimerLib/RngLibTimer.c b/MdePkg/Library/BaseRngLibTimerLib/RngLibTimer.c +index 6b8392162b..7337500fec 100644 +--- a/MdePkg/Library/BaseRngLibTimerLib/RngLibTimer.c ++++ b/MdePkg/Library/BaseRngLibTimerLib/RngLibTimer.c +@@ -209,3 +209,26 @@ GetRandomNumber128 ( + // Read second 64 bits + return GetRandomNumber64 (++Rand); + } ++ ++/** ++ Get a GUID identifying the RNG algorithm implementation. ++ ++ @param [out] RngGuid If success, contains the GUID identifying ++ the RNG algorithm implementation. ++ ++ @retval EFI_SUCCESS Success. ++ @retval EFI_UNSUPPORTED Not supported. ++ @retval EFI_INVALID_PARAMETER Invalid parameter. ++**/ ++RETURN_STATUS ++EFIAPI ++GetRngGuid ( ++ GUID *RngGuid ++ ) ++{ ++ /* This implementation is to be replaced by its MdeModulePkg copy. ++ * The cause being that some GUIDs (gEdkiiRngAlgorithmUnSafe) cannot ++ * be defined in the MdePkg. ++ */ ++ return RETURN_UNSUPPORTED; ++} +diff --git a/MdePkg/Library/DxeRngLib/DxeRngLib.c b/MdePkg/Library/DxeRngLib/DxeRngLib.c +index 4b2fc1cde5..20248b4107 100644 +--- a/MdePkg/Library/DxeRngLib/DxeRngLib.c ++++ b/MdePkg/Library/DxeRngLib/DxeRngLib.c +@@ -1,6 +1,7 @@ + /** @file + Provides an implementation of the library class RngLib that uses the Rng protocol. + ++ Copyright (c) 2023, Arm Limited. All rights reserved. + Copyright (c) Microsoft Corporation. All rights reserved. + SPDX-License-Identifier: BSD-2-Clause-Patent + +@@ -204,3 +205,30 @@ GetRandomNumber128 ( + } + return TRUE; + } ++ ++/** ++ Get a GUID identifying the RNG algorithm implementation. ++ ++ @param [out] RngGuid If success, contains the GUID identifying ++ the RNG algorithm implementation. ++ ++ @retval EFI_SUCCESS Success. ++ @retval EFI_UNSUPPORTED Not supported. ++ @retval EFI_INVALID_PARAMETER Invalid parameter. ++**/ ++EFI_STATUS ++EFIAPI ++GetRngGuid ( ++ GUID *RngGuid ++ ) ++{ ++ /* It is not possible to know beforehand which Rng algorithm will ++ * be used by this library. ++ * This API is mainly used by RngDxe. RngDxe relies on the RngLib. ++ * The RngLib|DxeRngLib.inf implementation locates and uses an installed ++ * EFI_RNG_PROTOCOL. ++ * It is thus not possible to have both RngDxe and RngLib|DxeRngLib.inf. ++ * and it is ok not to support this API. ++ */ ++ return EFI_UNSUPPORTED; ++} +-- +2.39.3 + diff --git a/edk2-MdePkg-X86UnitTestHost-set-rdrand-cpuid-bit.patch b/edk2-MdePkg-X86UnitTestHost-set-rdrand-cpuid-bit.patch new file mode 100644 index 0000000..fffb448 --- /dev/null +++ b/edk2-MdePkg-X86UnitTestHost-set-rdrand-cpuid-bit.patch @@ -0,0 +1,63 @@ +From 634ee7a8cef2eac9f41cff4b42859d9d54b204bf Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 10:35:27 -0400 +Subject: [PATCH 29/31] MdePkg/X86UnitTestHost: set rdrand cpuid bit + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [29/31] 60851c6253df6f0114dc2c5598e0dde139d56c4c + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit 5e776299a2604b336a947e68593012ab2cc16eb4 +Author: Gerd Hoffmann +Date: Fri Jun 14 11:45:53 2024 +0200 + + MdePkg/X86UnitTestHost: set rdrand cpuid bit + + Set the rdrand feature bit when faking cpuid for host test cases. + Needed to make the CryptoPkg test cases work. + + Signed-off-by: Gerd Hoffmann + +Signed-off-by: Jon Maloy +--- + MdePkg/Library/BaseLib/X86UnitTestHost.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/MdePkg/Library/BaseLib/X86UnitTestHost.c b/MdePkg/Library/BaseLib/X86UnitTestHost.c +index d0e428457e..abc092a990 100644 +--- a/MdePkg/Library/BaseLib/X86UnitTestHost.c ++++ b/MdePkg/Library/BaseLib/X86UnitTestHost.c +@@ -66,6 +66,15 @@ UnitTestHostBaseLibAsmCpuid ( + OUT UINT32 *Edx OPTIONAL + ) + { ++ UINT32 RetEcx; ++ ++ RetEcx = 0; ++ switch (Index) { ++ case 1: ++ RetEcx |= BIT30; /* RdRand */ ++ break; ++ } ++ + if (Eax != NULL) { + *Eax = 0; + } +@@ -73,7 +82,7 @@ UnitTestHostBaseLibAsmCpuid ( + *Ebx = 0; + } + if (Ecx != NULL) { +- *Ecx = 0; ++ *Ecx = RetEcx; + } + if (Edx != NULL) { + *Edx = 0; +-- +2.39.3 + diff --git a/edk2-NetworkPkg-Apply-uncrustify-changes.p2.patch b/edk2-NetworkPkg-Apply-uncrustify-changes.p2.patch new file mode 100644 index 0000000..a7ca769 --- /dev/null +++ b/edk2-NetworkPkg-Apply-uncrustify-changes.p2.patch @@ -0,0 +1,16641 @@ +From 1a92cf063c3d77f3706a7d9d57fafa9364317554 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Wed, 12 Jun 2024 18:16:26 -0400 +Subject: [PATCH 04/31] NetworkPkg: Apply uncrustify changes + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [4/31] a42ad4b2dd705cb3492d99cbd00378581207ad65 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +CVE: CVE-2022-45237 +Upstream: Merged + +This upstream commit makes it very hard to backport more recent changes +from upstream, since it always causes numerous whitespace conflicts. In +order to make application of the next commits in this series cleaner, +and hopefully to save ourselves some future work, we apply parts of the +commit on some files which will be affected by the next commits. + +This commit only contains whitespace changes. + +commit d1050b9dff1cace252aff86630bfdb59dff5f507 +Author: Michael Kubacki +Date: Sun Dec 5 14:54:07 2021 -0800 + + NetworkPkg: Apply uncrustify changes + + REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 + + Apply uncrustify changes to .c/.h files in the NetworkPkg package + + Cc: Andrew Fish + Cc: Leif Lindholm + Cc: Michael D Kinney + Signed-off-by: Michael Kubacki + Reviewed-by: Maciej Rabeda + +Signed-off-by: Jon Maloy +--- + NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c | 175 ++- + NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c | 149 +-- + NetworkPkg/DnsDxe/DnsDhcp.c | 187 ++- + NetworkPkg/DnsDxe/DnsImpl.c | 819 ++++++------ + NetworkPkg/HttpBootDxe/HttpBootDhcp6.c | 438 +++--- + NetworkPkg/IScsiDxe/IScsiCHAP.c | 634 ++++----- + NetworkPkg/IScsiDxe/IScsiMisc.c | 779 +++++------ + NetworkPkg/Include/Library/NetLib.h | 700 +++++----- + NetworkPkg/Ip4Dxe/Ip4Driver.c | 158 ++- + NetworkPkg/Ip6Dxe/Ip6If.c | 210 ++- + NetworkPkg/Ip6Dxe/Ip6Mld.c | 232 ++-- + NetworkPkg/Ip6Dxe/Ip6Nd.c | 1554 +++++++++++----------- + NetworkPkg/Library/DxeNetLib/DxeNetLib.c | 877 ++++++------ + NetworkPkg/TcpDxe/TcpDriver.c | 107 +- + NetworkPkg/TcpDxe/TcpMain.h | 150 +-- + NetworkPkg/TcpDxe/TcpMisc.c | 436 +++--- + NetworkPkg/Udp4Dxe/Udp4Driver.c | 52 +- + NetworkPkg/Udp6Dxe/Udp6Driver.c | 85 +- + NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c | 46 +- + NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c | 365 +++-- + 20 files changed, 4062 insertions(+), 4091 deletions(-) + +diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c b/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c +index 970141abfe..8c37e93be3 100644 +--- a/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c ++++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c +@@ -8,7 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + #include "Dhcp4Impl.h" + #include "Dhcp4Driver.h" + +-EFI_DRIVER_BINDING_PROTOCOL gDhcp4DriverBinding = { ++EFI_DRIVER_BINDING_PROTOCOL gDhcp4DriverBinding = { + Dhcp4DriverBindingSupported, + Dhcp4DriverBindingStart, + Dhcp4DriverBindingStop, +@@ -17,7 +17,7 @@ EFI_DRIVER_BINDING_PROTOCOL gDhcp4DriverBinding = { + NULL + }; + +-EFI_SERVICE_BINDING_PROTOCOL mDhcp4ServiceBindingTemplate = { ++EFI_SERVICE_BINDING_PROTOCOL mDhcp4ServiceBindingTemplate = { + Dhcp4ServiceBindingCreateChild, + Dhcp4ServiceBindingDestroyChild + }; +@@ -39,8 +39,8 @@ EFI_SERVICE_BINDING_PROTOCOL mDhcp4ServiceBindingTemplate = { + EFI_STATUS + EFIAPI + Dhcp4DriverEntryPoint ( +- IN EFI_HANDLE ImageHandle, +- IN EFI_SYSTEM_TABLE *SystemTable ++ IN EFI_HANDLE ImageHandle, ++ IN EFI_SYSTEM_TABLE *SystemTable + ) + { + return EfiLibInstallDriverBindingComponentName2 ( +@@ -53,7 +53,6 @@ Dhcp4DriverEntryPoint ( + ); + } + +- + /** + Test to see if this driver supports ControllerHandle. This service + is called by the EFI boot service ConnectController(). In +@@ -94,8 +93,6 @@ Dhcp4DriverBindingSupported ( + return Status; + } + +- +- + /** + Configure the default UDP child to receive all the DHCP traffics + on this network interface. +@@ -110,35 +107,33 @@ Dhcp4DriverBindingSupported ( + EFI_STATUS + EFIAPI + DhcpConfigUdpIo ( +- IN UDP_IO *UdpIo, +- IN VOID *Context ++ IN UDP_IO *UdpIo, ++ IN VOID *Context + ) + { +- EFI_UDP4_CONFIG_DATA UdpConfigData; +- +- UdpConfigData.AcceptBroadcast = TRUE; +- UdpConfigData.AcceptPromiscuous = FALSE; +- UdpConfigData.AcceptAnyPort = FALSE; +- UdpConfigData.AllowDuplicatePort = TRUE; +- UdpConfigData.TypeOfService = 0; +- UdpConfigData.TimeToLive = 64; +- UdpConfigData.DoNotFragment = FALSE; +- UdpConfigData.ReceiveTimeout = 0; +- UdpConfigData.TransmitTimeout = 0; +- +- UdpConfigData.UseDefaultAddress = FALSE; +- UdpConfigData.StationPort = DHCP_CLIENT_PORT; +- UdpConfigData.RemotePort = DHCP_SERVER_PORT; ++ EFI_UDP4_CONFIG_DATA UdpConfigData; ++ ++ UdpConfigData.AcceptBroadcast = TRUE; ++ UdpConfigData.AcceptPromiscuous = FALSE; ++ UdpConfigData.AcceptAnyPort = FALSE; ++ UdpConfigData.AllowDuplicatePort = TRUE; ++ UdpConfigData.TypeOfService = 0; ++ UdpConfigData.TimeToLive = 64; ++ UdpConfigData.DoNotFragment = FALSE; ++ UdpConfigData.ReceiveTimeout = 0; ++ UdpConfigData.TransmitTimeout = 0; ++ ++ UdpConfigData.UseDefaultAddress = FALSE; ++ UdpConfigData.StationPort = DHCP_CLIENT_PORT; ++ UdpConfigData.RemotePort = DHCP_SERVER_PORT; + + ZeroMem (&UdpConfigData.StationAddress, sizeof (EFI_IPv4_ADDRESS)); + ZeroMem (&UdpConfigData.SubnetMask, sizeof (EFI_IPv4_ADDRESS)); + ZeroMem (&UdpConfigData.RemoteAddress, sizeof (EFI_IPv4_ADDRESS)); + +- return UdpIo->Protocol.Udp4->Configure (UdpIo->Protocol.Udp4, &UdpConfigData);; ++ return UdpIo->Protocol.Udp4->Configure (UdpIo->Protocol.Udp4, &UdpConfigData); + } + +- +- + /** + Destroy the DHCP service. The Dhcp4 service may be partly initialized, + or partly destroyed. If a resource is destroyed, it is marked as so in +@@ -151,7 +146,7 @@ DhcpConfigUdpIo ( + **/ + EFI_STATUS + Dhcp4CloseService ( +- IN DHCP_SERVICE *DhcpSb ++ IN DHCP_SERVICE *DhcpSb + ) + { + DhcpCleanLease (DhcpSb); +@@ -171,8 +166,6 @@ Dhcp4CloseService ( + return EFI_SUCCESS; + } + +- +- + /** + Create a new DHCP service binding instance for the controller. + +@@ -189,28 +182,28 @@ Dhcp4CloseService ( + **/ + EFI_STATUS + Dhcp4CreateService ( +- IN EFI_HANDLE Controller, +- IN EFI_HANDLE ImageHandle, +- OUT DHCP_SERVICE **Service ++ IN EFI_HANDLE Controller, ++ IN EFI_HANDLE ImageHandle, ++ OUT DHCP_SERVICE **Service + ) + { +- DHCP_SERVICE *DhcpSb; +- EFI_STATUS Status; ++ DHCP_SERVICE *DhcpSb; ++ EFI_STATUS Status; + +- *Service = NULL; +- DhcpSb = AllocateZeroPool (sizeof (DHCP_SERVICE)); ++ *Service = NULL; ++ DhcpSb = AllocateZeroPool (sizeof (DHCP_SERVICE)); + + if (DhcpSb == NULL) { + return EFI_OUT_OF_RESOURCES; + } + +- DhcpSb->Signature = DHCP_SERVICE_SIGNATURE; +- DhcpSb->ServiceState = DHCP_UNCONFIGED; +- DhcpSb->Controller = Controller; +- DhcpSb->Image = ImageHandle; ++ DhcpSb->Signature = DHCP_SERVICE_SIGNATURE; ++ DhcpSb->ServiceState = DHCP_UNCONFIGED; ++ DhcpSb->Controller = Controller; ++ DhcpSb->Image = ImageHandle; + InitializeListHead (&DhcpSb->Children); +- DhcpSb->DhcpState = Dhcp4Stopped; +- DhcpSb->Xid = NET_RANDOM (NetRandomInitSeed ()); ++ DhcpSb->DhcpState = Dhcp4Stopped; ++ DhcpSb->Xid = NET_RANDOM (NetRandomInitSeed ()); + CopyMem ( + &DhcpSb->ServiceBinding, + &mDhcp4ServiceBindingTemplate, +@@ -244,11 +237,11 @@ Dhcp4CreateService ( + goto ON_ERROR; + } + +- DhcpSb->HwLen = (UINT8) DhcpSb->UdpIo->SnpMode.HwAddressSize; ++ DhcpSb->HwLen = (UINT8)DhcpSb->UdpIo->SnpMode.HwAddressSize; + DhcpSb->HwType = DhcpSb->UdpIo->SnpMode.IfType; + CopyMem (&DhcpSb->Mac, &DhcpSb->UdpIo->SnpMode.CurrentAddress, sizeof (DhcpSb->Mac)); + +- *Service = DhcpSb; ++ *Service = DhcpSb; + return EFI_SUCCESS; + + ON_ERROR: +@@ -258,7 +251,6 @@ ON_ERROR: + return Status; + } + +- + /** + Start this driver on ControllerHandle. This service is called by the + EFI boot service ConnectController(). In order to make +@@ -285,8 +277,8 @@ Dhcp4DriverBindingStart ( + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ) + { +- DHCP_SERVICE *DhcpSb; +- EFI_STATUS Status; ++ DHCP_SERVICE *DhcpSb; ++ EFI_STATUS Status; + + // + // First: test for the DHCP4 Protocol +@@ -309,6 +301,7 @@ Dhcp4DriverBindingStart ( + if (EFI_ERROR (Status)) { + return Status; + } ++ + ASSERT (DhcpSb != NULL); + + // +@@ -319,6 +312,7 @@ Dhcp4DriverBindingStart ( + if (EFI_ERROR (Status)) { + goto ON_ERROR; + } ++ + Status = gBS->SetTimer (DhcpSb->Timer, TimerPeriodic, TICKS_PER_SECOND); + + if (EFI_ERROR (Status)) { +@@ -360,24 +354,23 @@ ON_ERROR: + EFI_STATUS + EFIAPI + Dhcp4DestroyChildEntry ( +- IN LIST_ENTRY *Entry, +- IN VOID *Context ++ IN LIST_ENTRY *Entry, ++ IN VOID *Context + ) + { +- DHCP_PROTOCOL *Instance; +- EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; ++ DHCP_PROTOCOL *Instance; ++ EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + +- if (Entry == NULL || Context == NULL) { ++ if ((Entry == NULL) || (Context == NULL)) { + return EFI_INVALID_PARAMETER; + } + +- Instance = NET_LIST_USER_STRUCT_S (Entry, DHCP_PROTOCOL, Link, DHCP_PROTOCOL_SIGNATURE); +- ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *) Context; ++ Instance = NET_LIST_USER_STRUCT_S (Entry, DHCP_PROTOCOL, Link, DHCP_PROTOCOL_SIGNATURE); ++ ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *)Context; + + return ServiceBinding->DestroyChild (ServiceBinding, Instance->Handle); + } + +- + /** + Stop this driver on ControllerHandle. This service is called by the + EFI boot service DisconnectController(). In order to +@@ -422,10 +415,10 @@ Dhcp4DriverBindingStop ( + return EFI_SUCCESS; + } + +- Status = gBS->OpenProtocol ( ++ Status = gBS->OpenProtocol ( + NicHandle, + &gEfiDhcp4ServiceBindingProtocolGuid, +- (VOID **) &ServiceBinding, ++ (VOID **)&ServiceBinding, + This->DriverBindingHandle, + NicHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -440,23 +433,23 @@ Dhcp4DriverBindingStop ( + // + // Destroy all the children instances before destroy the service. + // +- List = &DhcpSb->Children; ++ List = &DhcpSb->Children; + Status = NetDestroyLinkList ( + List, + Dhcp4DestroyChildEntry, + ServiceBinding, + &ListLength + ); +- if (EFI_ERROR (Status) || ListLength != 0) { ++ if (EFI_ERROR (Status) || (ListLength != 0)) { + Status = EFI_DEVICE_ERROR; + } + } + +- if (NumberOfChildren == 0 && !IsListEmpty (&DhcpSb->Children)) { ++ if ((NumberOfChildren == 0) && !IsListEmpty (&DhcpSb->Children)) { + Status = EFI_DEVICE_ERROR; + } + +- if (NumberOfChildren == 0 && IsListEmpty (&DhcpSb->Children)) { ++ if ((NumberOfChildren == 0) && IsListEmpty (&DhcpSb->Children)) { + // + // Destroy the service itself if no child instance left. + // +@@ -474,6 +467,7 @@ Dhcp4DriverBindingStop ( + FreeUnicodeStringTable (gDhcpControllerNameTable); + gDhcpControllerNameTable = NULL; + } ++ + FreePool (DhcpSb); + + Status = EFI_SUCCESS; +@@ -482,7 +476,6 @@ Dhcp4DriverBindingStop ( + return Status; + } + +- + /** + Initialize a new DHCP instance. + +@@ -492,25 +485,24 @@ Dhcp4DriverBindingStop ( + **/ + VOID + DhcpInitProtocol ( +- IN DHCP_SERVICE *DhcpSb, +- IN OUT DHCP_PROTOCOL *Instance ++ IN DHCP_SERVICE *DhcpSb, ++ IN OUT DHCP_PROTOCOL *Instance + ) + { +- Instance->Signature = DHCP_PROTOCOL_SIGNATURE; ++ Instance->Signature = DHCP_PROTOCOL_SIGNATURE; + CopyMem (&Instance->Dhcp4Protocol, &mDhcp4ProtocolTemplate, sizeof (Instance->Dhcp4Protocol)); + InitializeListHead (&Instance->Link); +- Instance->Handle = NULL; +- Instance->Service = DhcpSb; +- Instance->InDestroy = FALSE; +- Instance->CompletionEvent = NULL; +- Instance->RenewRebindEvent = NULL; +- Instance->Token = NULL; +- Instance->UdpIo = NULL; +- Instance->ElaspedTime = 0; ++ Instance->Handle = NULL; ++ Instance->Service = DhcpSb; ++ Instance->InDestroy = FALSE; ++ Instance->CompletionEvent = NULL; ++ Instance->RenewRebindEvent = NULL; ++ Instance->Token = NULL; ++ Instance->UdpIo = NULL; ++ Instance->ElaspedTime = 0; + NetbufQueInit (&Instance->ResponseQueue); + } + +- + /** + Creates a child handle and installs a protocol. + +@@ -537,11 +529,11 @@ Dhcp4ServiceBindingCreateChild ( + IN EFI_HANDLE *ChildHandle + ) + { +- DHCP_SERVICE *DhcpSb; +- DHCP_PROTOCOL *Instance; +- EFI_STATUS Status; +- EFI_TPL OldTpl; +- VOID *Udp4; ++ DHCP_SERVICE *DhcpSb; ++ DHCP_PROTOCOL *Instance; ++ EFI_STATUS Status; ++ EFI_TPL OldTpl; ++ VOID *Udp4; + + if ((This == NULL) || (ChildHandle == NULL)) { + return EFI_INVALID_PARAMETER; +@@ -571,7 +563,7 @@ Dhcp4ServiceBindingCreateChild ( + return Status; + } + +- Instance->Handle = *ChildHandle; ++ Instance->Handle = *ChildHandle; + + // + // Open the Udp4 protocol BY_CHILD. +@@ -579,7 +571,7 @@ Dhcp4ServiceBindingCreateChild ( + Status = gBS->OpenProtocol ( + DhcpSb->UdpIo->UdpHandle, + &gEfiUdp4ProtocolGuid, +- (VOID **) &Udp4, ++ (VOID **)&Udp4, + gDhcp4DriverBinding.DriverBindingHandle, + Instance->Handle, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER +@@ -606,7 +598,6 @@ Dhcp4ServiceBindingCreateChild ( + return EFI_SUCCESS; + } + +- + /** + Destroys a child handle with a protocol installed on it. + +@@ -632,11 +623,11 @@ Dhcp4ServiceBindingDestroyChild ( + IN EFI_HANDLE ChildHandle + ) + { +- DHCP_SERVICE *DhcpSb; +- DHCP_PROTOCOL *Instance; +- EFI_DHCP4_PROTOCOL *Dhcp; +- EFI_TPL OldTpl; +- EFI_STATUS Status; ++ DHCP_SERVICE *DhcpSb; ++ DHCP_PROTOCOL *Instance; ++ EFI_DHCP4_PROTOCOL *Dhcp; ++ EFI_TPL OldTpl; ++ EFI_STATUS Status; + + if ((This == NULL) || (ChildHandle == NULL)) { + return EFI_INVALID_PARAMETER; +@@ -648,7 +639,7 @@ Dhcp4ServiceBindingDestroyChild ( + Status = gBS->OpenProtocol ( + ChildHandle, + &gEfiDhcp4ProtocolGuid, +- (VOID **) &Dhcp, ++ (VOID **)&Dhcp, + gDhcp4DriverBinding.DriverBindingHandle, + ChildHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -658,8 +649,8 @@ Dhcp4ServiceBindingDestroyChild ( + return EFI_UNSUPPORTED; + } + +- Instance = DHCP_INSTANCE_FROM_THIS (Dhcp); +- DhcpSb = DHCP_SERVICE_FROM_THIS (This); ++ Instance = DHCP_INSTANCE_FROM_THIS (Dhcp); ++ DhcpSb = DHCP_SERVICE_FROM_THIS (This); + + if (Instance->Service != DhcpSb) { + return EFI_INVALID_PARAMETER; +@@ -675,7 +666,7 @@ Dhcp4ServiceBindingDestroyChild ( + return EFI_SUCCESS; + } + +- OldTpl = gBS->RaiseTPL (TPL_CALLBACK); ++ OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + Instance->InDestroy = TRUE; + + // +diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c b/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c +index f0b236835f..b591a4605b 100644 +--- a/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c ++++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c +@@ -10,8 +10,7 @@ + + #include "Dhcp6Impl.h" + +- +-EFI_DRIVER_BINDING_PROTOCOL gDhcp6DriverBinding = { ++EFI_DRIVER_BINDING_PROTOCOL gDhcp6DriverBinding = { + Dhcp6DriverBindingSupported, + Dhcp6DriverBindingStart, + Dhcp6DriverBindingStop, +@@ -20,7 +19,7 @@ EFI_DRIVER_BINDING_PROTOCOL gDhcp6DriverBinding = { + NULL + }; + +-EFI_SERVICE_BINDING_PROTOCOL gDhcp6ServiceBindingTemplate = { ++EFI_SERVICE_BINDING_PROTOCOL gDhcp6ServiceBindingTemplate = { + Dhcp6ServiceBindingCreateChild, + Dhcp6ServiceBindingDestroyChild + }; +@@ -39,12 +38,12 @@ EFI_SERVICE_BINDING_PROTOCOL gDhcp6ServiceBindingTemplate = { + EFI_STATUS + EFIAPI + Dhcp6ConfigureUdpIo ( +- IN UDP_IO *UdpIo, +- IN VOID *Context ++ IN UDP_IO *UdpIo, ++ IN VOID *Context + ) + { +- EFI_UDP6_PROTOCOL *Udp6; +- EFI_UDP6_CONFIG_DATA *Config; ++ EFI_UDP6_PROTOCOL *Udp6; ++ EFI_UDP6_CONFIG_DATA *Config; + + Udp6 = UdpIo->Protocol.Udp6; + Config = &(UdpIo->Config.Udp6); +@@ -67,13 +66,12 @@ Dhcp6ConfigureUdpIo ( + // will be overridden later. Note that we MUST not limit RemotePort. + // More details, refer to RFC 3315 section 5.2. + // +- Config->StationPort = DHCP6_PORT_CLIENT; +- Config->RemotePort = 0; ++ Config->StationPort = DHCP6_PORT_CLIENT; ++ Config->RemotePort = 0; + +- return Udp6->Configure (Udp6, Config);; ++ return Udp6->Configure (Udp6, Config); + } + +- + /** + Destroy the Dhcp6 service. The Dhcp6 service may be partly initialized, + or partly destroyed. If a resource is destroyed, it is marked as such in +@@ -84,7 +82,7 @@ Dhcp6ConfigureUdpIo ( + **/ + VOID + Dhcp6DestroyService ( +- IN OUT DHCP6_SERVICE *Service ++ IN OUT DHCP6_SERVICE *Service + ) + { + // +@@ -103,7 +101,6 @@ Dhcp6DestroyService ( + FreePool (Service); + } + +- + /** + Create a new Dhcp6 service for the Nic controller. + +@@ -119,13 +116,13 @@ Dhcp6DestroyService ( + **/ + EFI_STATUS + Dhcp6CreateService ( +- IN EFI_HANDLE Controller, +- IN EFI_HANDLE ImageHandle, +- OUT DHCP6_SERVICE **Service ++ IN EFI_HANDLE Controller, ++ IN EFI_HANDLE ImageHandle, ++ OUT DHCP6_SERVICE **Service + ) + { +- DHCP6_SERVICE *Dhcp6Srv; +- EFI_STATUS Status; ++ DHCP6_SERVICE *Dhcp6Srv; ++ EFI_STATUS Status; + + *Service = NULL; + Dhcp6Srv = AllocateZeroPool (sizeof (DHCP6_SERVICE)); +@@ -147,10 +144,10 @@ Dhcp6CreateService ( + // + // Initialize the fields of the new Dhcp6 service. + // +- Dhcp6Srv->Signature = DHCP6_SERVICE_SIGNATURE; +- Dhcp6Srv->Controller = Controller; +- Dhcp6Srv->Image = ImageHandle; +- Dhcp6Srv->Xid = (0xffffff & NET_RANDOM (NetRandomInitSeed ())); ++ Dhcp6Srv->Signature = DHCP6_SERVICE_SIGNATURE; ++ Dhcp6Srv->Controller = Controller; ++ Dhcp6Srv->Image = ImageHandle; ++ Dhcp6Srv->Xid = (0xffffff & NET_RANDOM (NetRandomInitSeed ())); + + CopyMem ( + &Dhcp6Srv->ServiceBinding, +@@ -164,7 +161,7 @@ Dhcp6CreateService ( + Status = gBS->HandleProtocol ( + Controller, + &gEfiIp6ConfigProtocolGuid, +- (VOID **) &Dhcp6Srv->Ip6Cfg ++ (VOID **)&Dhcp6Srv->Ip6Cfg + ); + if (EFI_ERROR (Status)) { + FreePool (Dhcp6Srv); +@@ -175,7 +172,7 @@ Dhcp6CreateService ( + // Generate client Duid: If SMBIOS system UUID is located, generate DUID in DUID-UUID format. + // Otherwise, in DUID-LLT format. + // +- Dhcp6Srv->ClientId = Dhcp6GenerateClientId (Dhcp6Srv->Snp->Mode); ++ Dhcp6Srv->ClientId = Dhcp6GenerateClientId (Dhcp6Srv->Snp->Mode); + + if (Dhcp6Srv->ClientId == NULL) { + FreePool (Dhcp6Srv); +@@ -206,7 +203,6 @@ Dhcp6CreateService ( + return EFI_SUCCESS; + } + +- + /** + Destroy the Dhcp6 instance and recycle the resources. + +@@ -215,7 +211,7 @@ Dhcp6CreateService ( + **/ + VOID + Dhcp6DestroyInstance ( +- IN OUT DHCP6_INSTANCE *Instance ++ IN OUT DHCP6_INSTANCE *Instance + ) + { + // +@@ -239,6 +235,7 @@ Dhcp6DestroyInstance ( + if (Instance->IaCb.Ia->ReplyPacket != NULL) { + FreePool (Instance->IaCb.Ia->ReplyPacket); + } ++ + FreePool (Instance->IaCb.Ia); + } + +@@ -253,7 +250,6 @@ Dhcp6DestroyInstance ( + FreePool (Instance); + } + +- + /** + Create the Dhcp6 instance and initialize it. + +@@ -266,12 +262,12 @@ Dhcp6DestroyInstance ( + **/ + EFI_STATUS + Dhcp6CreateInstance ( +- IN DHCP6_SERVICE *Service, +- OUT DHCP6_INSTANCE **Instance ++ IN DHCP6_SERVICE *Service, ++ OUT DHCP6_INSTANCE **Instance + ) + { +- EFI_STATUS Status; +- DHCP6_INSTANCE *Dhcp6Ins; ++ EFI_STATUS Status; ++ DHCP6_INSTANCE *Dhcp6Ins; + + *Instance = NULL; + Dhcp6Ins = AllocateZeroPool (sizeof (DHCP6_INSTANCE)); +@@ -283,11 +279,11 @@ Dhcp6CreateInstance ( + // + // Initialize the fields of the new Dhcp6 instance. + // +- Dhcp6Ins->Signature = DHCP6_INSTANCE_SIGNATURE; +- Dhcp6Ins->UdpSts = EFI_ALREADY_STARTED; +- Dhcp6Ins->Service = Service; +- Dhcp6Ins->InDestroy = FALSE; +- Dhcp6Ins->MediaPresent = TRUE; ++ Dhcp6Ins->Signature = DHCP6_INSTANCE_SIGNATURE; ++ Dhcp6Ins->UdpSts = EFI_ALREADY_STARTED; ++ Dhcp6Ins->Service = Service; ++ Dhcp6Ins->InDestroy = FALSE; ++ Dhcp6Ins->MediaPresent = TRUE; + + CopyMem ( + &Dhcp6Ins->Dhcp6, +@@ -333,24 +329,23 @@ Dhcp6CreateInstance ( + EFI_STATUS + EFIAPI + Dhcp6DestroyChildEntry ( +- IN LIST_ENTRY *Entry, +- IN VOID *Context ++ IN LIST_ENTRY *Entry, ++ IN VOID *Context + ) + { +- DHCP6_INSTANCE *Instance; +- EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; ++ DHCP6_INSTANCE *Instance; ++ EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + +- if (Entry == NULL || Context == NULL) { ++ if ((Entry == NULL) || (Context == NULL)) { + return EFI_INVALID_PARAMETER; + } + +- Instance = NET_LIST_USER_STRUCT_S (Entry, DHCP6_INSTANCE, Link, DHCP6_INSTANCE_SIGNATURE); +- ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *) Context; ++ Instance = NET_LIST_USER_STRUCT_S (Entry, DHCP6_INSTANCE, Link, DHCP6_INSTANCE_SIGNATURE); ++ ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *)Context; + + return ServiceBinding->DestroyChild (ServiceBinding, Instance->Handle); + } + +- + /** + Entry point of the DHCP6 driver to install various protocols. + +@@ -364,8 +359,8 @@ Dhcp6DestroyChildEntry ( + EFI_STATUS + EFIAPI + Dhcp6DriverEntryPoint ( +- IN EFI_HANDLE ImageHandle, +- IN EFI_SYSTEM_TABLE *SystemTable ++ IN EFI_HANDLE ImageHandle, ++ IN EFI_SYSTEM_TABLE *SystemTable + ) + { + return EfiLibInstallDriverBindingComponentName2 ( +@@ -378,7 +373,6 @@ Dhcp6DriverEntryPoint ( + ); + } + +- + /** + Test to see if this driver supports ControllerHandle. This service + is called by the EFI boot service ConnectController(). In +@@ -414,7 +408,6 @@ Dhcp6DriverBindingSupported ( + ); + } + +- + /** + Start this driver on ControllerHandle. This service is called by the + EFI boot service ConnectController(). In order to make +@@ -441,8 +434,8 @@ Dhcp6DriverBindingStart ( + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ) + { +- EFI_STATUS Status; +- DHCP6_SERVICE *Service; ++ EFI_STATUS Status; ++ DHCP6_SERVICE *Service; + + // + // Check the Dhcp6 service whether already started. +@@ -490,7 +483,6 @@ Dhcp6DriverBindingStart ( + return EFI_SUCCESS; + } + +- + /** + Stop this driver on ControllerHandle. This service is called by the + EFI boot service DisconnectController(). In order to +@@ -519,12 +511,12 @@ Dhcp6DriverBindingStop ( + IN EFI_HANDLE *ChildHandleBuffer OPTIONAL + ) + { +- EFI_STATUS Status; +- EFI_HANDLE NicHandle; +- EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; +- DHCP6_SERVICE *Service; +- LIST_ENTRY *List; +- UINTN ListLength; ++ EFI_STATUS Status; ++ EFI_HANDLE NicHandle; ++ EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; ++ DHCP6_SERVICE *Service; ++ LIST_ENTRY *List; ++ UINTN ListLength; + + // + // Find and check the Nic handle by the controller handle. +@@ -538,7 +530,7 @@ Dhcp6DriverBindingStop ( + Status = gBS->OpenProtocol ( + NicHandle, + &gEfiDhcp6ServiceBindingProtocolGuid, +- (VOID **) &ServiceBinding, ++ (VOID **)&ServiceBinding, + This->DriverBindingHandle, + NicHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -553,23 +545,23 @@ Dhcp6DriverBindingStop ( + // + // Destroy all the children instances before destroy the service. + // +- List = &Service->Child; ++ List = &Service->Child; + Status = NetDestroyLinkList ( + List, + Dhcp6DestroyChildEntry, + ServiceBinding, + &ListLength + ); +- if (EFI_ERROR (Status) || ListLength != 0) { ++ if (EFI_ERROR (Status) || (ListLength != 0)) { + Status = EFI_DEVICE_ERROR; + } + } + +- if (NumberOfChildren == 0 && !IsListEmpty (&Service->Child)) { ++ if ((NumberOfChildren == 0) && !IsListEmpty (&Service->Child)) { + Status = EFI_DEVICE_ERROR; + } + +- if (NumberOfChildren == 0 && IsListEmpty (&Service->Child)) { ++ if ((NumberOfChildren == 0) && IsListEmpty (&Service->Child)) { + // + // Destroy the service itself if no child instance left. + // +@@ -590,7 +582,6 @@ ON_EXIT: + return Status; + } + +- + /** + Creates a child handle and installs a protocol. + +@@ -615,19 +606,19 @@ Dhcp6ServiceBindingCreateChild ( + IN OUT EFI_HANDLE *ChildHandle + ) + { +- EFI_STATUS Status; +- EFI_TPL OldTpl; +- DHCP6_SERVICE *Service; +- DHCP6_INSTANCE *Instance; +- VOID *Udp6; ++ EFI_STATUS Status; ++ EFI_TPL OldTpl; ++ DHCP6_SERVICE *Service; ++ DHCP6_INSTANCE *Instance; ++ VOID *Udp6; + +- if (This == NULL || ChildHandle == NULL) { ++ if ((This == NULL) || (ChildHandle == NULL)) { + return EFI_INVALID_PARAMETER; + } + + Service = DHCP6_SERVICE_FROM_THIS (This); + +- Status = Dhcp6CreateInstance (Service, &Instance); ++ Status = Dhcp6CreateInstance (Service, &Instance); + + if (EFI_ERROR (Status)) { + return Status; +@@ -670,14 +661,13 @@ Dhcp6ServiceBindingCreateChild ( + Status = gBS->OpenProtocol ( + Service->UdpIo->UdpHandle, + &gEfiUdp6ProtocolGuid, +- (VOID **) &Udp6, ++ (VOID **)&Udp6, + gDhcp6DriverBinding.DriverBindingHandle, + Instance->Handle, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER + ); + + if (EFI_ERROR (Status)) { +- + gBS->UninstallMultipleProtocolInterfaces ( + Instance->Handle, + &gEfiDhcp6ProtocolGuid, +@@ -704,7 +694,6 @@ ON_ERROR: + return Status; + } + +- + /** + Destroys a child handle with a protocol installed on it. + +@@ -730,13 +719,13 @@ Dhcp6ServiceBindingDestroyChild ( + IN EFI_HANDLE ChildHandle + ) + { +- EFI_STATUS Status; +- EFI_TPL OldTpl; +- EFI_DHCP6_PROTOCOL *Dhcp6; +- DHCP6_SERVICE *Service; +- DHCP6_INSTANCE *Instance; ++ EFI_STATUS Status; ++ EFI_TPL OldTpl; ++ EFI_DHCP6_PROTOCOL *Dhcp6; ++ DHCP6_SERVICE *Service; ++ DHCP6_INSTANCE *Instance; + +- if (This == NULL || ChildHandle == NULL) { ++ if ((This == NULL) || (ChildHandle == NULL)) { + return EFI_INVALID_PARAMETER; + } + +@@ -746,7 +735,7 @@ Dhcp6ServiceBindingDestroyChild ( + Status = gBS->OpenProtocol ( + ChildHandle, + &gEfiDhcp6ProtocolGuid, +- (VOID **) &Dhcp6, ++ (VOID **)&Dhcp6, + gDhcp6DriverBinding.DriverBindingHandle, + ChildHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +diff --git a/NetworkPkg/DnsDxe/DnsDhcp.c b/NetworkPkg/DnsDxe/DnsDhcp.c +index 8f8b2aab1e..933565a32d 100644 +--- a/NetworkPkg/DnsDxe/DnsDhcp.c ++++ b/NetworkPkg/DnsDxe/DnsDhcp.c +@@ -19,22 +19,22 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + **/ + VOID + DnsInitSeedPacket ( +- OUT EFI_DHCP4_PACKET *Seed, +- IN EFI_IP4_CONFIG2_INTERFACE_INFO *InterfaceInfo ++ OUT EFI_DHCP4_PACKET *Seed, ++ IN EFI_IP4_CONFIG2_INTERFACE_INFO *InterfaceInfo + ) + { +- EFI_DHCP4_HEADER *Header; ++ EFI_DHCP4_HEADER *Header; + + // + // Get IfType and HwAddressSize from SNP mode data. + // +- Seed->Size = sizeof (EFI_DHCP4_PACKET); +- Seed->Length = sizeof (Seed->Dhcp4); +- Header = &Seed->Dhcp4.Header; ++ Seed->Size = sizeof (EFI_DHCP4_PACKET); ++ Seed->Length = sizeof (Seed->Dhcp4); ++ Header = &Seed->Dhcp4.Header; + ZeroMem (Header, sizeof (EFI_DHCP4_HEADER)); +- Header->OpCode = DHCP4_OPCODE_REQUEST; +- Header->HwType = InterfaceInfo->IfType; +- Header->HwAddrLen = (UINT8) InterfaceInfo->HwAddressSize; ++ Header->OpCode = DHCP4_OPCODE_REQUEST; ++ Header->HwType = InterfaceInfo->IfType; ++ Header->HwAddrLen = (UINT8)InterfaceInfo->HwAddressSize; + CopyMem (Header->ClientHwAddr, &(InterfaceInfo->HwAddress), Header->HwAddrLen); + + Seed->Dhcp4.Magik = DHCP4_MAGIC; +@@ -56,10 +56,10 @@ DhcpCommonNotify ( + ) + { + if ((Event == NULL) || (Context == NULL)) { +- return ; ++ return; + } + +- *((BOOLEAN *) Context) = TRUE; ++ *((BOOLEAN *)Context) = TRUE; + } + + /** +@@ -77,26 +77,26 @@ DhcpCommonNotify ( + **/ + EFI_STATUS + ParseDhcp4Ack ( +- IN EFI_DHCP4_PROTOCOL *Dhcp4, +- IN EFI_DHCP4_PACKET *Packet, +- IN DNS4_SERVER_INFOR *DnsServerInfor ++ IN EFI_DHCP4_PROTOCOL *Dhcp4, ++ IN EFI_DHCP4_PACKET *Packet, ++ IN DNS4_SERVER_INFOR *DnsServerInfor + ) + { +- EFI_STATUS Status; +- UINT32 OptionCount; +- EFI_DHCP4_PACKET_OPTION **OptionList; +- UINT32 ServerCount; +- EFI_IPv4_ADDRESS *ServerList; +- UINT32 Index; +- UINT32 Count; ++ EFI_STATUS Status; ++ UINT32 OptionCount; ++ EFI_DHCP4_PACKET_OPTION **OptionList; ++ UINT32 ServerCount; ++ EFI_IPv4_ADDRESS *ServerList; ++ UINT32 Index; ++ UINT32 Count; + + ServerCount = 0; +- ServerList = NULL; ++ ServerList = NULL; + + OptionCount = 0; + OptionList = NULL; + +- Status = Dhcp4->Parse (Dhcp4, Packet, &OptionCount, OptionList); ++ Status = Dhcp4->Parse (Dhcp4, Packet, &OptionCount, OptionList); + if (Status != EFI_BUFFER_TOO_SMALL) { + return EFI_DEVICE_ERROR; + } +@@ -119,19 +119,18 @@ ParseDhcp4Ack ( + // Get DNS server addresses + // + if (OptionList[Index]->OpCode == DHCP4_TAG_DNS_SERVER) { +- + if (((OptionList[Index]->Length & 0x3) != 0) || (OptionList[Index]->Length == 0)) { + Status = EFI_DEVICE_ERROR; + break; + } + + ServerCount = OptionList[Index]->Length/4; +- ServerList = AllocatePool (ServerCount * sizeof (EFI_IPv4_ADDRESS)); ++ ServerList = AllocatePool (ServerCount * sizeof (EFI_IPv4_ADDRESS)); + if (ServerList == NULL) { + return EFI_OUT_OF_RESOURCES; + } + +- for (Count=0; Count < ServerCount; Count++) { ++ for (Count = 0; Count < ServerCount; Count++) { + CopyMem (ServerList + Count, &OptionList[Index]->Data[4 * Count], sizeof (EFI_IPv4_ADDRESS)); + } + +@@ -167,25 +166,25 @@ ParseDhcp4Ack ( + EFI_STATUS + EFIAPI + ParseDhcp6Ack ( +- IN EFI_DHCP6_PROTOCOL *This, +- IN VOID *Context, +- IN EFI_DHCP6_PACKET *Packet ++ IN EFI_DHCP6_PROTOCOL *This, ++ IN VOID *Context, ++ IN EFI_DHCP6_PACKET *Packet + ) + { +- EFI_STATUS Status; +- UINT32 OptionCount; +- EFI_DHCP6_PACKET_OPTION **OptionList; +- DNS6_SERVER_INFOR *DnsServerInfor; +- UINT32 ServerCount; +- EFI_IPv6_ADDRESS *ServerList; +- UINT32 Index; +- UINT32 Count; ++ EFI_STATUS Status; ++ UINT32 OptionCount; ++ EFI_DHCP6_PACKET_OPTION **OptionList; ++ DNS6_SERVER_INFOR *DnsServerInfor; ++ UINT32 ServerCount; ++ EFI_IPv6_ADDRESS *ServerList; ++ UINT32 Index; ++ UINT32 Count; + + OptionCount = 0; + ServerCount = 0; + ServerList = NULL; + +- Status = This->Parse (This, Packet, &OptionCount, NULL); ++ Status = This->Parse (This, Packet, &OptionCount, NULL); + if (Status != EFI_BUFFER_TOO_SMALL) { + return EFI_DEVICE_ERROR; + } +@@ -201,7 +200,7 @@ ParseDhcp6Ack ( + return EFI_DEVICE_ERROR; + } + +- DnsServerInfor = (DNS6_SERVER_INFOR *) Context; ++ DnsServerInfor = (DNS6_SERVER_INFOR *)Context; + + for (Index = 0; Index < OptionCount; Index++) { + OptionList[Index]->OpCode = NTOHS (OptionList[Index]->OpCode); +@@ -211,7 +210,6 @@ ParseDhcp6Ack ( + // Get DNS server addresses from this reply packet. + // + if (OptionList[Index]->OpCode == DHCP6_TAG_DNS_SERVER) { +- + if (((OptionList[Index]->OpLen & 0xf) != 0) || (OptionList[Index]->OpLen == 0)) { + Status = EFI_DEVICE_ERROR; + gBS->FreePool (OptionList); +@@ -219,13 +217,13 @@ ParseDhcp6Ack ( + } + + ServerCount = OptionList[Index]->OpLen/16; +- ServerList = AllocatePool (ServerCount * sizeof (EFI_IPv6_ADDRESS)); ++ ServerList = AllocatePool (ServerCount * sizeof (EFI_IPv6_ADDRESS)); + if (ServerList == NULL) { + gBS->FreePool (OptionList); + return EFI_OUT_OF_RESOURCES; + } + +- for (Count=0; Count < ServerCount; Count++) { ++ for (Count = 0; Count < ServerCount; Count++) { + CopyMem (ServerList + Count, &OptionList[Index]->Data[16 * Count], sizeof (EFI_IPv6_ADDRESS)); + } + +@@ -237,7 +235,6 @@ ParseDhcp6Ack ( + gBS->FreePool (OptionList); + + return Status; +- + } + + /** +@@ -255,47 +252,47 @@ ParseDhcp6Ack ( + **/ + EFI_STATUS + GetDns4ServerFromDhcp4 ( +- IN DNS_INSTANCE *Instance, +- OUT UINT32 *DnsServerCount, +- OUT EFI_IPv4_ADDRESS **DnsServerList ++ IN DNS_INSTANCE *Instance, ++ OUT UINT32 *DnsServerCount, ++ OUT EFI_IPv4_ADDRESS **DnsServerList + ) + { +- EFI_STATUS Status; +- EFI_HANDLE Image; +- EFI_HANDLE Controller; +- EFI_STATUS MediaStatus; +- EFI_HANDLE MnpChildHandle; +- EFI_MANAGED_NETWORK_PROTOCOL *Mnp; +- EFI_MANAGED_NETWORK_CONFIG_DATA MnpConfigData; +- EFI_HANDLE Dhcp4Handle; +- EFI_DHCP4_PROTOCOL *Dhcp4; +- EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; +- UINTN DataSize; +- VOID *Data; +- EFI_IP4_CONFIG2_INTERFACE_INFO *InterfaceInfo; +- EFI_DHCP4_PACKET SeedPacket; +- EFI_DHCP4_PACKET_OPTION *ParaList[2]; +- DNS4_SERVER_INFOR DnsServerInfor; +- +- EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN Token; +- BOOLEAN IsDone; +- UINTN Index; +- +- Image = Instance->Service->ImageHandle; +- Controller = Instance->Service->ControllerHandle; +- +- MnpChildHandle = NULL; +- Mnp = NULL; +- +- Dhcp4Handle = NULL; +- Dhcp4 = NULL; +- +- Ip4Config2 = NULL; +- DataSize = 0; +- Data = NULL; +- InterfaceInfo = NULL; +- +- ZeroMem ((UINT8 *) ParaList, sizeof (ParaList)); ++ EFI_STATUS Status; ++ EFI_HANDLE Image; ++ EFI_HANDLE Controller; ++ EFI_STATUS MediaStatus; ++ EFI_HANDLE MnpChildHandle; ++ EFI_MANAGED_NETWORK_PROTOCOL *Mnp; ++ EFI_MANAGED_NETWORK_CONFIG_DATA MnpConfigData; ++ EFI_HANDLE Dhcp4Handle; ++ EFI_DHCP4_PROTOCOL *Dhcp4; ++ EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; ++ UINTN DataSize; ++ VOID *Data; ++ EFI_IP4_CONFIG2_INTERFACE_INFO *InterfaceInfo; ++ EFI_DHCP4_PACKET SeedPacket; ++ EFI_DHCP4_PACKET_OPTION *ParaList[2]; ++ DNS4_SERVER_INFOR DnsServerInfor; ++ ++ EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN Token; ++ BOOLEAN IsDone; ++ UINTN Index; ++ ++ Image = Instance->Service->ImageHandle; ++ Controller = Instance->Service->ControllerHandle; ++ ++ MnpChildHandle = NULL; ++ Mnp = NULL; ++ ++ Dhcp4Handle = NULL; ++ Dhcp4 = NULL; ++ ++ Ip4Config2 = NULL; ++ DataSize = 0; ++ Data = NULL; ++ InterfaceInfo = NULL; ++ ++ ZeroMem ((UINT8 *)ParaList, sizeof (ParaList)); + + ZeroMem (&MnpConfigData, sizeof (EFI_MANAGED_NETWORK_CONFIG_DATA)); + +@@ -332,7 +329,7 @@ GetDns4ServerFromDhcp4 ( + Status = gBS->OpenProtocol ( + MnpChildHandle, + &gEfiManagedNetworkProtocolGuid, +- (VOID **) &Mnp, ++ (VOID **)&Mnp, + Image, + Controller, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -352,7 +349,7 @@ GetDns4ServerFromDhcp4 ( + MnpConfigData.EnableReceiveTimestamps = FALSE; + MnpConfigData.DisableBackgroundPolling = FALSE; + +- Status = Mnp->Configure(Mnp, &MnpConfigData); ++ Status = Mnp->Configure (Mnp, &MnpConfigData); + if (EFI_ERROR (Status)) { + goto ON_EXIT; + } +@@ -373,7 +370,7 @@ GetDns4ServerFromDhcp4 ( + Status = gBS->OpenProtocol ( + Dhcp4Handle, + &gEfiDhcp4ProtocolGuid, +- (VOID **) &Dhcp4, ++ (VOID **)&Dhcp4, + Image, + Controller, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -385,13 +382,13 @@ GetDns4ServerFromDhcp4 ( + // + // Get Ip4Config2 instance info. + // +- Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **) &Ip4Config2); ++ Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **)&Ip4Config2); + if (EFI_ERROR (Status)) { + goto ON_EXIT; + } + + Status = Ip4Config2->GetData (Ip4Config2, Ip4Config2DataTypeInterfaceInfo, &DataSize, Data); +- if (EFI_ERROR (Status) && Status != EFI_BUFFER_TOO_SMALL) { ++ if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) { + goto ON_EXIT; + } + +@@ -470,7 +467,7 @@ GetDns4ServerFromDhcp4 ( + + Status = Dhcp4->Build (Dhcp4, &SeedPacket, 0, NULL, 2, ParaList, &Token.Packet); + +- Token.Packet->Dhcp4.Header.Xid = HTONL(NET_RANDOM (NetRandomInitSeed ())); ++ Token.Packet->Dhcp4.Header.Xid = HTONL (NET_RANDOM (NetRandomInitSeed ())); + + Token.Packet->Dhcp4.Header.Reserved = HTONS ((UINT16)0x8000); + +@@ -601,10 +598,10 @@ ON_EXIT: + **/ + EFI_STATUS + GetDns6ServerFromDhcp6 ( +- IN EFI_HANDLE Image, +- IN EFI_HANDLE Controller, +- OUT UINT32 *DnsServerCount, +- OUT EFI_IPv6_ADDRESS **DnsServerList ++ IN EFI_HANDLE Image, ++ IN EFI_HANDLE Controller, ++ OUT UINT32 *DnsServerCount, ++ OUT EFI_IPv6_ADDRESS **DnsServerList + ) + { + EFI_HANDLE Dhcp6Handle; +@@ -651,7 +648,7 @@ GetDns6ServerFromDhcp6 ( + Status = gBS->OpenProtocol ( + Dhcp6Handle, + &gEfiDhcp6ProtocolGuid, +- (VOID **) &Dhcp6, ++ (VOID **)&Dhcp6, + Image, + Controller, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -724,7 +721,7 @@ GetDns6ServerFromDhcp6 ( + } while (TimerStatus == EFI_NOT_READY); + } + +- *DnsServerList = DnsServerInfor.ServerList; ++ *DnsServerList = DnsServerInfor.ServerList; + + ON_EXIT: + +@@ -753,6 +750,4 @@ ON_EXIT: + ); + + return Status; +- + } +- +diff --git a/NetworkPkg/DnsDxe/DnsImpl.c b/NetworkPkg/DnsDxe/DnsImpl.c +index 78a56f2b56..d311812800 100644 +--- a/NetworkPkg/DnsDxe/DnsImpl.c ++++ b/NetworkPkg/DnsDxe/DnsImpl.c +@@ -20,8 +20,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + **/ + EFI_STATUS + Dns4RemoveTokenEntry ( +- IN NET_MAP *TokenMap, +- IN DNS4_TOKEN_ENTRY *TokenEntry ++ IN NET_MAP *TokenMap, ++ IN DNS4_TOKEN_ENTRY *TokenEntry + ) + { + NET_MAP_ITEM *Item; +@@ -29,7 +29,7 @@ Dns4RemoveTokenEntry ( + // + // Find the TokenEntry first. + // +- Item = NetMapFindKey (TokenMap, (VOID *) TokenEntry); ++ Item = NetMapFindKey (TokenMap, (VOID *)TokenEntry); + + if (Item != NULL) { + // +@@ -55,8 +55,8 @@ Dns4RemoveTokenEntry ( + **/ + EFI_STATUS + Dns6RemoveTokenEntry ( +- IN NET_MAP *TokenMap, +- IN DNS6_TOKEN_ENTRY *TokenEntry ++ IN NET_MAP *TokenMap, ++ IN DNS6_TOKEN_ENTRY *TokenEntry + ) + { + NET_MAP_ITEM *Item; +@@ -64,7 +64,7 @@ Dns6RemoveTokenEntry ( + // + // Find the TokenEntry first. + // +- Item = NetMapFindKey (TokenMap, (VOID *) TokenEntry); ++ Item = NetMapFindKey (TokenMap, (VOID *)TokenEntry); + + if (Item != NULL) { + // +@@ -102,9 +102,9 @@ Dns4CancelTokens ( + IN VOID *Arg OPTIONAL + ) + { +- DNS4_TOKEN_ENTRY *TokenEntry; +- NET_BUF *Packet; +- UDP_IO *UdpIo; ++ DNS4_TOKEN_ENTRY *TokenEntry; ++ NET_BUF *Packet; ++ UDP_IO *UdpIo; + + if ((Arg != NULL) && (Item->Key != Arg)) { + return EFI_SUCCESS; +@@ -115,8 +115,8 @@ Dns4CancelTokens ( + // If the TokenEntry is a transmit TokenEntry, the corresponding Packet is recorded in + // Item->Value. + // +- Packet = (NET_BUF *) (Item->Value); +- UdpIo = (UDP_IO *) (*((UINTN *) &Packet->ProtoData[0])); ++ Packet = (NET_BUF *)(Item->Value); ++ UdpIo = (UDP_IO *)(*((UINTN *)&Packet->ProtoData[0])); + + UdpIoCancelSentDatagram (UdpIo, Packet); + } +@@ -124,7 +124,7 @@ Dns4CancelTokens ( + // + // Remove TokenEntry from Dns4TxTokens. + // +- TokenEntry = (DNS4_TOKEN_ENTRY *) Item->Key; ++ TokenEntry = (DNS4_TOKEN_ENTRY *)Item->Key; + if (Dns4RemoveTokenEntry (Map, TokenEntry) == EFI_SUCCESS) { + TokenEntry->Token->Status = EFI_ABORTED; + gBS->SignalEvent (TokenEntry->Token->Event); +@@ -162,9 +162,9 @@ Dns6CancelTokens ( + IN VOID *Arg OPTIONAL + ) + { +- DNS6_TOKEN_ENTRY *TokenEntry; +- NET_BUF *Packet; +- UDP_IO *UdpIo; ++ DNS6_TOKEN_ENTRY *TokenEntry; ++ NET_BUF *Packet; ++ UDP_IO *UdpIo; + + if ((Arg != NULL) && (Item->Key != Arg)) { + return EFI_SUCCESS; +@@ -175,8 +175,8 @@ Dns6CancelTokens ( + // If the TokenEntry is a transmit TokenEntry, the corresponding Packet is recorded in + // Item->Value. + // +- Packet = (NET_BUF *) (Item->Value); +- UdpIo = (UDP_IO *) (*((UINTN *) &Packet->ProtoData[0])); ++ Packet = (NET_BUF *)(Item->Value); ++ UdpIo = (UDP_IO *)(*((UINTN *)&Packet->ProtoData[0])); + + UdpIoCancelSentDatagram (UdpIo, Packet); + } +@@ -184,7 +184,7 @@ Dns6CancelTokens ( + // + // Remove TokenEntry from Dns6TxTokens. + // +- TokenEntry = (DNS6_TOKEN_ENTRY *) Item->Key; ++ TokenEntry = (DNS6_TOKEN_ENTRY *)Item->Key; + if (Dns6RemoveTokenEntry (Map, TokenEntry) == EFI_SUCCESS) { + TokenEntry->Token->Status = EFI_ABORTED; + gBS->SignalEvent (TokenEntry->Token->Event); +@@ -212,18 +212,18 @@ Dns6CancelTokens ( + EFI_STATUS + EFIAPI + GetDns4TokenEntry ( +- IN NET_MAP *TokensMap, +- IN EFI_DNS4_COMPLETION_TOKEN *Token, +- OUT DNS4_TOKEN_ENTRY **TokenEntry ++ IN NET_MAP *TokensMap, ++ IN EFI_DNS4_COMPLETION_TOKEN *Token, ++ OUT DNS4_TOKEN_ENTRY **TokenEntry + ) + { +- LIST_ENTRY *Entry; ++ LIST_ENTRY *Entry; + +- NET_MAP_ITEM *Item; ++ NET_MAP_ITEM *Item; + + NET_LIST_FOR_EACH (Entry, &TokensMap->Used) { +- Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); +- *TokenEntry = (DNS4_TOKEN_ENTRY *) (Item->Key); ++ Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); ++ *TokenEntry = (DNS4_TOKEN_ENTRY *)(Item->Key); + if ((*TokenEntry)->Token == Token) { + return EFI_SUCCESS; + } +@@ -248,24 +248,24 @@ GetDns4TokenEntry ( + EFI_STATUS + EFIAPI + GetDns6TokenEntry ( +- IN NET_MAP *TokensMap, +- IN EFI_DNS6_COMPLETION_TOKEN *Token, +- OUT DNS6_TOKEN_ENTRY **TokenEntry ++ IN NET_MAP *TokensMap, ++ IN EFI_DNS6_COMPLETION_TOKEN *Token, ++ OUT DNS6_TOKEN_ENTRY **TokenEntry + ) + { +- LIST_ENTRY *Entry; ++ LIST_ENTRY *Entry; + +- NET_MAP_ITEM *Item; ++ NET_MAP_ITEM *Item; + + NET_LIST_FOR_EACH (Entry, &TokensMap->Used) { +- Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); +- *TokenEntry = (DNS6_TOKEN_ENTRY *) (Item->Key); ++ Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); ++ *TokenEntry = (DNS6_TOKEN_ENTRY *)(Item->Key); + if ((*TokenEntry)->Token == Token) { + return EFI_SUCCESS; + } + } + +- *TokenEntry =NULL; ++ *TokenEntry = NULL; + + return EFI_NOT_FOUND; + } +@@ -293,7 +293,7 @@ Dns4InstanceCancelToken ( + + TokenEntry = NULL; + +- if(Token != NULL ) { ++ if (Token != NULL ) { + Status = GetDns4TokenEntry (&Instance->Dns4TxTokens, Token, &TokenEntry); + if (EFI_ERROR (Status)) { + return Status; +@@ -313,8 +313,9 @@ Dns4InstanceCancelToken ( + // the Dns4TxTokens and returns success. + // + if (NetMapIsEmpty (&Instance->Dns4TxTokens)) { +- Instance->UdpIo->Protocol.Udp4->Cancel (Instance->UdpIo->Protocol.Udp4, &Instance->UdpIo->RecvRequest->Token.Udp4); ++ Instance->UdpIo->Protocol.Udp4->Cancel (Instance->UdpIo->Protocol.Udp4, &Instance->UdpIo->RecvRequest->Token.Udp4); + } ++ + return EFI_SUCCESS; + } + +@@ -350,7 +351,7 @@ Dns6InstanceCancelToken ( + + TokenEntry = NULL; + +- if(Token != NULL ) { ++ if (Token != NULL ) { + Status = GetDns6TokenEntry (&Instance->Dns6TxTokens, Token, &TokenEntry); + if (EFI_ERROR (Status)) { + return Status; +@@ -370,8 +371,9 @@ Dns6InstanceCancelToken ( + // the Dns6TxTokens and returns success. + // + if (NetMapIsEmpty (&Instance->Dns6TxTokens)) { +- Instance->UdpIo->Protocol.Udp6->Cancel (Instance->UdpIo->Protocol.Udp6, &Instance->UdpIo->RecvRequest->Token.Udp6); ++ Instance->UdpIo->Protocol.Udp6->Cancel (Instance->UdpIo->Protocol.Udp6, &Instance->UdpIo->RecvRequest->Token.Udp6); + } ++ + return EFI_SUCCESS; + } + +@@ -437,8 +439,8 @@ Dns4CopyConfigure ( + IN EFI_DNS4_CONFIG_DATA *Src + ) + { +- UINTN Len; +- UINT32 Index; ++ UINTN Len; ++ UINT32 Index; + + CopyMem (Dst, Src, sizeof (*Dst)); + Dst->DnsServerList = NULL; +@@ -479,8 +481,8 @@ Dns6CopyConfigure ( + IN EFI_DNS6_CONFIG_DATA *Src + ) + { +- UINTN Len; +- UINT32 Index; ++ UINTN Len; ++ UINT32 Index; + + CopyMem (Dst, Src, sizeof (*Dst)); + Dst->DnsServerList = NULL; +@@ -513,7 +515,7 @@ Dns6CopyConfigure ( + VOID + EFIAPI + DnsDummyExtFree ( +- IN VOID *Arg ++ IN VOID *Arg + ) + { + } +@@ -535,15 +537,15 @@ DnsDummyExtFree ( + **/ + BOOLEAN + Dns4GetMapping ( +- IN DNS_INSTANCE *Instance, +- IN UDP_IO *UdpIo, +- IN EFI_UDP4_CONFIG_DATA *UdpCfgData ++ IN DNS_INSTANCE *Instance, ++ IN UDP_IO *UdpIo, ++ IN EFI_UDP4_CONFIG_DATA *UdpCfgData + ) + { +- DNS_SERVICE *Service; +- EFI_IP4_MODE_DATA Ip4Mode; +- EFI_UDP4_PROTOCOL *Udp; +- EFI_STATUS Status; ++ DNS_SERVICE *Service; ++ EFI_IP4_MODE_DATA Ip4Mode; ++ EFI_UDP4_PROTOCOL *Udp; ++ EFI_STATUS Status; + + ASSERT (Instance->Dns4CfgData.UseDefaultSetting); + +@@ -563,10 +565,10 @@ Dns4GetMapping ( + Udp->Poll (Udp); + + if (!EFI_ERROR (Udp->GetModeData (Udp, NULL, &Ip4Mode, NULL, NULL)) && +- Ip4Mode.IsConfigured) { +- ++ Ip4Mode.IsConfigured) ++ { + Udp->Configure (Udp, NULL); +- return (BOOLEAN) (Udp->Configure (Udp, UdpCfgData) == EFI_SUCCESS); ++ return (BOOLEAN)(Udp->Configure (Udp, UdpCfgData) == EFI_SUCCESS); + } + } + +@@ -587,15 +589,15 @@ Dns4GetMapping ( + **/ + BOOLEAN + Dns6GetMapping ( +- IN DNS_INSTANCE *Instance, +- IN UDP_IO *UdpIo, +- IN EFI_UDP6_CONFIG_DATA *UdpCfgData ++ IN DNS_INSTANCE *Instance, ++ IN UDP_IO *UdpIo, ++ IN EFI_UDP6_CONFIG_DATA *UdpCfgData + ) + { +- DNS_SERVICE *Service; +- EFI_IP6_MODE_DATA Ip6Mode; +- EFI_UDP6_PROTOCOL *Udp; +- EFI_STATUS Status; ++ DNS_SERVICE *Service; ++ EFI_IP6_MODE_DATA Ip6Mode; ++ EFI_UDP6_PROTOCOL *Udp; ++ EFI_STATUS Status; + + Service = Instance->Service; + Udp = UdpIo->Protocol.Udp6; +@@ -661,13 +663,13 @@ Dns6GetMapping ( + **/ + EFI_STATUS + Dns4ConfigUdp ( +- IN DNS_INSTANCE *Instance, +- IN UDP_IO *UdpIo ++ IN DNS_INSTANCE *Instance, ++ IN UDP_IO *UdpIo + ) + { +- EFI_DNS4_CONFIG_DATA *Config; +- EFI_UDP4_CONFIG_DATA UdpConfig; +- EFI_STATUS Status; ++ EFI_DNS4_CONFIG_DATA *Config; ++ EFI_UDP4_CONFIG_DATA UdpConfig; ++ EFI_STATUS Status; + + Config = &Instance->Dns4CfgData; + +@@ -709,13 +711,13 @@ Dns4ConfigUdp ( + **/ + EFI_STATUS + Dns6ConfigUdp ( +- IN DNS_INSTANCE *Instance, +- IN UDP_IO *UdpIo ++ IN DNS_INSTANCE *Instance, ++ IN UDP_IO *UdpIo + ) + { +- EFI_DNS6_CONFIG_DATA *Config; +- EFI_UDP6_CONFIG_DATA UdpConfig; +- EFI_STATUS Status; ++ EFI_DNS6_CONFIG_DATA *Config; ++ EFI_UDP6_CONFIG_DATA UdpConfig; ++ EFI_STATUS Status; + + Config = &Instance->Dns6CfgData; + +@@ -757,16 +759,16 @@ Dns6ConfigUdp ( + EFI_STATUS + EFIAPI + UpdateDns4Cache ( +- IN LIST_ENTRY *Dns4CacheList, +- IN BOOLEAN DeleteFlag, +- IN BOOLEAN Override, +- IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry ++ IN LIST_ENTRY *Dns4CacheList, ++ IN BOOLEAN DeleteFlag, ++ IN BOOLEAN Override, ++ IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry + ) + { +- DNS4_CACHE *NewDnsCache; +- DNS4_CACHE *Item; +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; ++ DNS4_CACHE *NewDnsCache; ++ DNS4_CACHE *Item; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; + + NewDnsCache = NULL; + Item = NULL; +@@ -776,8 +778,9 @@ UpdateDns4Cache ( + // + NET_LIST_FOR_EACH_SAFE (Entry, Next, Dns4CacheList) { + Item = NET_LIST_USER_STRUCT (Entry, DNS4_CACHE, AllCacheLink); +- if (StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0 && \ +- CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv4_ADDRESS)) == 0) { ++ if ((StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0) && \ ++ (CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv4_ADDRESS)) == 0)) ++ { + // + // This is the Dns cache entry + // +@@ -855,16 +858,16 @@ UpdateDns4Cache ( + EFI_STATUS + EFIAPI + UpdateDns6Cache ( +- IN LIST_ENTRY *Dns6CacheList, +- IN BOOLEAN DeleteFlag, +- IN BOOLEAN Override, +- IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry ++ IN LIST_ENTRY *Dns6CacheList, ++ IN BOOLEAN DeleteFlag, ++ IN BOOLEAN Override, ++ IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry + ) + { +- DNS6_CACHE *NewDnsCache; +- DNS6_CACHE *Item; +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; ++ DNS6_CACHE *NewDnsCache; ++ DNS6_CACHE *Item; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; + + NewDnsCache = NULL; + Item = NULL; +@@ -874,8 +877,9 @@ UpdateDns6Cache ( + // + NET_LIST_FOR_EACH_SAFE (Entry, Next, Dns6CacheList) { + Item = NET_LIST_USER_STRUCT (Entry, DNS6_CACHE, AllCacheLink); +- if (StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0 && \ +- CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv6_ADDRESS)) == 0) { ++ if ((StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0) && \ ++ (CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv6_ADDRESS)) == 0)) ++ { + // + // This is the Dns cache entry + // +@@ -950,14 +954,14 @@ UpdateDns6Cache ( + EFI_STATUS + EFIAPI + AddDns4ServerIp ( +- IN LIST_ENTRY *Dns4ServerList, +- IN EFI_IPv4_ADDRESS ServerIp ++ IN LIST_ENTRY *Dns4ServerList, ++ IN EFI_IPv4_ADDRESS ServerIp + ) + { +- DNS4_SERVER_IP *NewServerIp; +- DNS4_SERVER_IP *Item; +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; ++ DNS4_SERVER_IP *NewServerIp; ++ DNS4_SERVER_IP *Item; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; + + NewServerIp = NULL; + Item = NULL; +@@ -1005,14 +1009,14 @@ AddDns4ServerIp ( + EFI_STATUS + EFIAPI + AddDns6ServerIp ( +- IN LIST_ENTRY *Dns6ServerList, +- IN EFI_IPv6_ADDRESS ServerIp ++ IN LIST_ENTRY *Dns6ServerList, ++ IN EFI_IPv6_ADDRESS ServerIp + ) + { +- DNS6_SERVER_IP *NewServerIp; +- DNS6_SERVER_IP *Item; +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; ++ DNS6_SERVER_IP *NewServerIp; ++ DNS6_SERVER_IP *Item; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; + + NewServerIp = NULL; + Item = NULL; +@@ -1062,37 +1066,37 @@ AddDns6ServerIp ( + **/ + BOOLEAN + IsValidDnsResponse ( +- IN NET_MAP *TokensMap, +- IN UINT16 Identification, +- IN UINT16 Type, +- IN UINT16 Class, +- OUT NET_MAP_ITEM **Item ++ IN NET_MAP *TokensMap, ++ IN UINT16 Identification, ++ IN UINT16 Type, ++ IN UINT16 Class, ++ OUT NET_MAP_ITEM **Item + ) + { +- LIST_ENTRY *Entry; ++ LIST_ENTRY *Entry; + +- NET_BUF *Packet; +- UINT8 *TxString; +- DNS_HEADER *DnsHeader; +- CHAR8 *QueryName; +- DNS_QUERY_SECTION *QuerySection; ++ NET_BUF *Packet; ++ UINT8 *TxString; ++ DNS_HEADER *DnsHeader; ++ CHAR8 *QueryName; ++ DNS_QUERY_SECTION *QuerySection; + + NET_LIST_FOR_EACH (Entry, &TokensMap->Used) { +- *Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); +- Packet = (NET_BUF *) ((*Item)->Value); ++ *Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); ++ Packet = (NET_BUF *)((*Item)->Value); + if (Packet == NULL) { +- + continue; + } else { + TxString = NetbufGetByte (Packet, 0, NULL); + ASSERT (TxString != NULL); +- DnsHeader = (DNS_HEADER *) TxString; +- QueryName = (CHAR8 *) (TxString + sizeof (*DnsHeader)); +- QuerySection = (DNS_QUERY_SECTION *) (QueryName + AsciiStrLen (QueryName) + 1); +- +- if (NTOHS (DnsHeader->Identification) == Identification && +- NTOHS (QuerySection->Type) == Type && +- NTOHS (QuerySection->Class) == Class) { ++ DnsHeader = (DNS_HEADER *)TxString; ++ QueryName = (CHAR8 *)(TxString + sizeof (*DnsHeader)); ++ QuerySection = (DNS_QUERY_SECTION *)(QueryName + AsciiStrLen (QueryName) + 1); ++ ++ if ((NTOHS (DnsHeader->Identification) == Identification) && ++ (NTOHS (QuerySection->Type) == Type) && ++ (NTOHS (QuerySection->Class) == Class)) ++ { + return TRUE; + } + } +@@ -1117,33 +1121,33 @@ IsValidDnsResponse ( + **/ + EFI_STATUS + ParseDnsResponse ( +- IN OUT DNS_INSTANCE *Instance, +- IN UINT8 *RxString, +- IN UINT32 Length, +- OUT BOOLEAN *Completed ++ IN OUT DNS_INSTANCE *Instance, ++ IN UINT8 *RxString, ++ IN UINT32 Length, ++ OUT BOOLEAN *Completed + ) + { +- DNS_HEADER *DnsHeader; ++ DNS_HEADER *DnsHeader; + +- CHAR8 *QueryName; +- UINT32 QueryNameLen; +- DNS_QUERY_SECTION *QuerySection; ++ CHAR8 *QueryName; ++ UINT32 QueryNameLen; ++ DNS_QUERY_SECTION *QuerySection; + +- CHAR8 *AnswerName; +- DNS_ANSWER_SECTION *AnswerSection; +- UINT8 *AnswerData; ++ CHAR8 *AnswerName; ++ DNS_ANSWER_SECTION *AnswerSection; ++ UINT8 *AnswerData; + +- NET_MAP_ITEM *Item; +- DNS4_TOKEN_ENTRY *Dns4TokenEntry; +- DNS6_TOKEN_ENTRY *Dns6TokenEntry; ++ NET_MAP_ITEM *Item; ++ DNS4_TOKEN_ENTRY *Dns4TokenEntry; ++ DNS6_TOKEN_ENTRY *Dns6TokenEntry; + +- UINT32 IpCount; +- UINT32 RRCount; +- UINT32 AnswerSectionNum; +- UINT32 CNameTtl; ++ UINT32 IpCount; ++ UINT32 RRCount; ++ UINT32 AnswerSectionNum; ++ UINT32 CNameTtl; + +- EFI_IPv4_ADDRESS *HostAddr4; +- EFI_IPv6_ADDRESS *HostAddr6; ++ EFI_IPv4_ADDRESS *HostAddr4; ++ EFI_IPv6_ADDRESS *HostAddr6; + + EFI_DNS4_CACHE_ENTRY *Dns4CacheEntry; + EFI_DNS6_CACHE_ENTRY *Dns6CacheEntry; +@@ -1151,32 +1155,32 @@ ParseDnsResponse ( + DNS_RESOURCE_RECORD *Dns4RR; + DNS6_RESOURCE_RECORD *Dns6RR; + +- EFI_STATUS Status; +- UINT32 RemainingLength; ++ EFI_STATUS Status; ++ UINT32 RemainingLength; + +- EFI_TPL OldTpl; ++ EFI_TPL OldTpl; + +- Item = NULL; +- Dns4TokenEntry = NULL; +- Dns6TokenEntry = NULL; ++ Item = NULL; ++ Dns4TokenEntry = NULL; ++ Dns6TokenEntry = NULL; + + IpCount = 0; + RRCount = 0; + AnswerSectionNum = 0; + CNameTtl = 0; + +- HostAddr4 = NULL; +- HostAddr6 = NULL; ++ HostAddr4 = NULL; ++ HostAddr6 = NULL; + +- Dns4CacheEntry = NULL; +- Dns6CacheEntry = NULL; ++ Dns4CacheEntry = NULL; ++ Dns6CacheEntry = NULL; + +- Dns4RR = NULL; +- Dns6RR = NULL; ++ Dns4RR = NULL; ++ Dns6RR = NULL; + +- *Completed = TRUE; +- Status = EFI_SUCCESS; +- RemainingLength = Length; ++ *Completed = TRUE; ++ Status = EFI_SUCCESS; ++ RemainingLength = Length; + + // + // Check whether the remaining packet length is available or not. +@@ -1191,14 +1195,14 @@ ParseDnsResponse ( + // + // Get header + // +- DnsHeader = (DNS_HEADER *) RxString; ++ DnsHeader = (DNS_HEADER *)RxString; + + DnsHeader->Identification = NTOHS (DnsHeader->Identification); +- DnsHeader->Flags.Uint16 = NTOHS (DnsHeader->Flags.Uint16); +- DnsHeader->QuestionsNum = NTOHS (DnsHeader->QuestionsNum); +- DnsHeader->AnswersNum = NTOHS (DnsHeader->AnswersNum); +- DnsHeader->AuthorityNum = NTOHS (DnsHeader->AuthorityNum); +- DnsHeader->AditionalNum = NTOHS (DnsHeader->AditionalNum); ++ DnsHeader->Flags.Uint16 = NTOHS (DnsHeader->Flags.Uint16); ++ DnsHeader->QuestionsNum = NTOHS (DnsHeader->QuestionsNum); ++ DnsHeader->AnswersNum = NTOHS (DnsHeader->AnswersNum); ++ DnsHeader->AuthorityNum = NTOHS (DnsHeader->AuthorityNum); ++ DnsHeader->AditionalNum = NTOHS (DnsHeader->AditionalNum); + + // + // There is always one QuestionsNum in DNS message. The capability to handle more +@@ -1212,9 +1216,9 @@ ParseDnsResponse ( + // + // Get Query name + // +- QueryName = (CHAR8 *) (RxString + sizeof (*DnsHeader)); ++ QueryName = (CHAR8 *)(RxString + sizeof (*DnsHeader)); + +- QueryNameLen = (UINT32) AsciiStrLen (QueryName) + 1; ++ QueryNameLen = (UINT32)AsciiStrLen (QueryName) + 1; + + // + // Check whether the remaining packet length is available or not. +@@ -1229,8 +1233,8 @@ ParseDnsResponse ( + // + // Get query section + // +- QuerySection = (DNS_QUERY_SECTION *) (QueryName + QueryNameLen); +- QuerySection->Type = NTOHS (QuerySection->Type); ++ QuerySection = (DNS_QUERY_SECTION *)(QueryName + QueryNameLen); ++ QuerySection->Type = NTOHS (QuerySection->Type); + QuerySection->Class = NTOHS (QuerySection->Class); + + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); +@@ -1245,13 +1249,15 @@ ParseDnsResponse ( + QuerySection->Type, + QuerySection->Class, + &Item +- )) { ++ )) ++ { + *Completed = FALSE; +- Status = EFI_ABORTED; ++ Status = EFI_ABORTED; + goto ON_EXIT; + } ++ + ASSERT (Item != NULL); +- Dns4TokenEntry = (DNS4_TOKEN_ENTRY *) (Item->Key); ++ Dns4TokenEntry = (DNS4_TOKEN_ENTRY *)(Item->Key); + } else { + if (!IsValidDnsResponse ( + &Instance->Dns6TxTokens, +@@ -1259,20 +1265,23 @@ ParseDnsResponse ( + QuerySection->Type, + QuerySection->Class, + &Item +- )) { ++ )) ++ { + *Completed = FALSE; +- Status = EFI_ABORTED; ++ Status = EFI_ABORTED; + goto ON_EXIT; + } ++ + ASSERT (Item != NULL); +- Dns6TokenEntry = (DNS6_TOKEN_ENTRY *) (Item->Key); ++ Dns6TokenEntry = (DNS6_TOKEN_ENTRY *)(Item->Key); + } + + // + // Continue Check Some Errors. + // +- if (DnsHeader->Flags.Bits.RCode != DNS_FLAGS_RCODE_NO_ERROR || DnsHeader->AnswersNum < 1 || \ +- DnsHeader->Flags.Bits.QR != DNS_FLAGS_QR_RESPONSE) { ++ if ((DnsHeader->Flags.Bits.RCode != DNS_FLAGS_RCODE_NO_ERROR) || (DnsHeader->AnswersNum < 1) || \ ++ (DnsHeader->Flags.Bits.QR != DNS_FLAGS_QR_RESPONSE)) ++ { + // + // The domain name referenced in the query does not exist. + // +@@ -1300,6 +1309,7 @@ ParseDnsResponse ( + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } ++ + Dns4TokenEntry->Token->RspData.GLookupData->RRList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (DNS_RESOURCE_RECORD)); + if (Dns4TokenEntry->Token->RspData.GLookupData->RRList == NULL) { + Status = EFI_OUT_OF_RESOURCES; +@@ -1315,6 +1325,7 @@ ParseDnsResponse ( + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } ++ + Dns4TokenEntry->Token->RspData.H2AData->IpList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (EFI_IPv4_ADDRESS)); + if (Dns4TokenEntry->Token->RspData.H2AData->IpList == NULL) { + Status = EFI_OUT_OF_RESOURCES; +@@ -1337,6 +1348,7 @@ ParseDnsResponse ( + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } ++ + Dns6TokenEntry->Token->RspData.GLookupData->RRList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (DNS_RESOURCE_RECORD)); + if (Dns6TokenEntry->Token->RspData.GLookupData->RRList == NULL) { + Status = EFI_OUT_OF_RESOURCES; +@@ -1352,6 +1364,7 @@ ParseDnsResponse ( + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } ++ + Dns6TokenEntry->Token->RspData.H2AData->IpList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (EFI_IPv6_ADDRESS)); + if (Dns6TokenEntry->Token->RspData.H2AData->IpList == NULL) { + Status = EFI_OUT_OF_RESOURCES; +@@ -1369,7 +1382,7 @@ ParseDnsResponse ( + // + // Get Answer name + // +- AnswerName = (CHAR8 *) QuerySection + sizeof (*QuerySection); ++ AnswerName = (CHAR8 *)QuerySection + sizeof (*QuerySection); + + // + // Processing AnswerSection. +@@ -1380,7 +1393,7 @@ ParseDnsResponse ( + // + if (RemainingLength <= sizeof (UINT16) + sizeof (DNS_ANSWER_SECTION)) { + *Completed = FALSE; +- Status = EFI_ABORTED; ++ Status = EFI_ABORTED; + goto ON_EXIT; + } else { + RemainingLength -= (sizeof (UINT16) + sizeof (DNS_ANSWER_SECTION)); +@@ -1389,7 +1402,7 @@ ParseDnsResponse ( + // + // Answer name should be PTR, else EFI_UNSUPPORTED returned. + // +- if ((*(UINT8 *) AnswerName & 0xC0) != 0xC0) { ++ if ((*(UINT8 *)AnswerName & 0xC0) != 0xC0) { + Status = EFI_UNSUPPORTED; + goto ON_EXIT; + } +@@ -1397,10 +1410,10 @@ ParseDnsResponse ( + // + // Get Answer section. + // +- AnswerSection = (DNS_ANSWER_SECTION *) (AnswerName + sizeof (UINT16)); +- AnswerSection->Type = NTOHS (AnswerSection->Type); +- AnswerSection->Class = NTOHS (AnswerSection->Class); +- AnswerSection->Ttl = NTOHL (AnswerSection->Ttl); ++ AnswerSection = (DNS_ANSWER_SECTION *)(AnswerName + sizeof (UINT16)); ++ AnswerSection->Type = NTOHS (AnswerSection->Type); ++ AnswerSection->Class = NTOHS (AnswerSection->Class); ++ AnswerSection->Ttl = NTOHL (AnswerSection->Ttl); + AnswerSection->DataLength = NTOHS (AnswerSection->DataLength); + + // +@@ -1408,7 +1421,7 @@ ParseDnsResponse ( + // + if (RemainingLength < AnswerSection->DataLength) { + *Completed = FALSE; +- Status = EFI_ABORTED; ++ Status = EFI_ABORTED; + goto ON_EXIT; + } else { + RemainingLength -= AnswerSection->DataLength; +@@ -1417,9 +1430,9 @@ ParseDnsResponse ( + // + // Check whether it's the GeneralLookUp querying. + // +- if (Instance->Service->IpVersion == IP_VERSION_4 && Dns4TokenEntry->GeneralLookUp) { +- Dns4RR = Dns4TokenEntry->Token->RspData.GLookupData->RRList; +- AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection); ++ if ((Instance->Service->IpVersion == IP_VERSION_4) && Dns4TokenEntry->GeneralLookUp) { ++ Dns4RR = Dns4TokenEntry->Token->RspData.GLookupData->RRList; ++ AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection); + + // + // Fill the ResourceRecord. +@@ -1429,23 +1442,25 @@ ParseDnsResponse ( + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } ++ + CopyMem (Dns4RR[RRCount].QName, QueryName, AsciiStrLen (QueryName)); +- Dns4RR[RRCount].QType = AnswerSection->Type; +- Dns4RR[RRCount].QClass = AnswerSection->Class; +- Dns4RR[RRCount].TTL = AnswerSection->Ttl; ++ Dns4RR[RRCount].QType = AnswerSection->Type; ++ Dns4RR[RRCount].QClass = AnswerSection->Class; ++ Dns4RR[RRCount].TTL = AnswerSection->Ttl; + Dns4RR[RRCount].DataLength = AnswerSection->DataLength; +- Dns4RR[RRCount].RData = AllocateZeroPool (Dns4RR[RRCount].DataLength); ++ Dns4RR[RRCount].RData = AllocateZeroPool (Dns4RR[RRCount].DataLength); + if (Dns4RR[RRCount].RData == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } ++ + CopyMem (Dns4RR[RRCount].RData, AnswerData, Dns4RR[RRCount].DataLength); + +- RRCount ++; ++ RRCount++; + Status = EFI_SUCCESS; +- } else if (Instance->Service->IpVersion == IP_VERSION_6 && Dns6TokenEntry->GeneralLookUp) { +- Dns6RR = Dns6TokenEntry->Token->RspData.GLookupData->RRList; +- AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection); ++ } else if ((Instance->Service->IpVersion == IP_VERSION_6) && Dns6TokenEntry->GeneralLookUp) { ++ Dns6RR = Dns6TokenEntry->Token->RspData.GLookupData->RRList; ++ AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection); + + // + // Fill the ResourceRecord. +@@ -1455,19 +1470,21 @@ ParseDnsResponse ( + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } ++ + CopyMem (Dns6RR[RRCount].QName, QueryName, AsciiStrLen (QueryName)); +- Dns6RR[RRCount].QType = AnswerSection->Type; +- Dns6RR[RRCount].QClass = AnswerSection->Class; +- Dns6RR[RRCount].TTL = AnswerSection->Ttl; ++ Dns6RR[RRCount].QType = AnswerSection->Type; ++ Dns6RR[RRCount].QClass = AnswerSection->Class; ++ Dns6RR[RRCount].TTL = AnswerSection->Ttl; + Dns6RR[RRCount].DataLength = AnswerSection->DataLength; +- Dns6RR[RRCount].RData = AllocateZeroPool (Dns6RR[RRCount].DataLength); ++ Dns6RR[RRCount].RData = AllocateZeroPool (Dns6RR[RRCount].DataLength); + if (Dns6RR[RRCount].RData == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } ++ + CopyMem (Dns6RR[RRCount].RData, AnswerData, Dns6RR[RRCount].DataLength); + +- RRCount ++; ++ RRCount++; + Status = EFI_SUCCESS; + } else { + // +@@ -1475,143 +1492,149 @@ ParseDnsResponse ( + // Check the Query type, parse the response packet. + // + switch (AnswerSection->Type) { +- case DNS_TYPE_A: +- // +- // This is address entry, get Data. +- // +- ASSERT (Dns4TokenEntry != NULL); ++ case DNS_TYPE_A: ++ // ++ // This is address entry, get Data. ++ // ++ ASSERT (Dns4TokenEntry != NULL); + +- if (AnswerSection->DataLength != 4) { +- Status = EFI_ABORTED; +- goto ON_EXIT; +- } ++ if (AnswerSection->DataLength != 4) { ++ Status = EFI_ABORTED; ++ goto ON_EXIT; ++ } + +- HostAddr4 = Dns4TokenEntry->Token->RspData.H2AData->IpList; +- AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection); +- CopyMem (&HostAddr4[IpCount], AnswerData, sizeof (EFI_IPv4_ADDRESS)); ++ HostAddr4 = Dns4TokenEntry->Token->RspData.H2AData->IpList; ++ AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection); ++ CopyMem (&HostAddr4[IpCount], AnswerData, sizeof (EFI_IPv4_ADDRESS)); + +- // +- // Allocate new CacheEntry pool to update DNS cache dynamically. +- // +- Dns4CacheEntry = AllocateZeroPool (sizeof (EFI_DNS4_CACHE_ENTRY)); +- if (Dns4CacheEntry == NULL) { +- Status = EFI_OUT_OF_RESOURCES; +- goto ON_EXIT; +- } +- Dns4CacheEntry->HostName = AllocateZeroPool (2 * (StrLen(Dns4TokenEntry->QueryHostName) + 1)); +- if (Dns4CacheEntry->HostName == NULL) { +- Status = EFI_OUT_OF_RESOURCES; +- goto ON_EXIT; +- } +- CopyMem (Dns4CacheEntry->HostName, Dns4TokenEntry->QueryHostName, 2 * (StrLen(Dns4TokenEntry->QueryHostName) + 1)); +- Dns4CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv4_ADDRESS)); +- if (Dns4CacheEntry->IpAddress == NULL) { +- Status = EFI_OUT_OF_RESOURCES; +- goto ON_EXIT; +- } +- CopyMem (Dns4CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv4_ADDRESS)); ++ // ++ // Allocate new CacheEntry pool to update DNS cache dynamically. ++ // ++ Dns4CacheEntry = AllocateZeroPool (sizeof (EFI_DNS4_CACHE_ENTRY)); ++ if (Dns4CacheEntry == NULL) { ++ Status = EFI_OUT_OF_RESOURCES; ++ goto ON_EXIT; ++ } + +- if (CNameTtl != 0 && AnswerSection->Ttl != 0) { +- Dns4CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl); +- } else { +- Dns4CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl); +- } ++ Dns4CacheEntry->HostName = AllocateZeroPool (2 * (StrLen (Dns4TokenEntry->QueryHostName) + 1)); ++ if (Dns4CacheEntry->HostName == NULL) { ++ Status = EFI_OUT_OF_RESOURCES; ++ goto ON_EXIT; ++ } + +- UpdateDns4Cache (&mDriverData->Dns4CacheList, FALSE, TRUE, *Dns4CacheEntry); ++ CopyMem (Dns4CacheEntry->HostName, Dns4TokenEntry->QueryHostName, 2 * (StrLen (Dns4TokenEntry->QueryHostName) + 1)); ++ Dns4CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv4_ADDRESS)); ++ if (Dns4CacheEntry->IpAddress == NULL) { ++ Status = EFI_OUT_OF_RESOURCES; ++ goto ON_EXIT; ++ } + +- // +- // Free allocated CacheEntry pool. +- // +- FreePool (Dns4CacheEntry->HostName); +- Dns4CacheEntry->HostName = NULL; ++ CopyMem (Dns4CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv4_ADDRESS)); + +- FreePool (Dns4CacheEntry->IpAddress); +- Dns4CacheEntry->IpAddress = NULL; ++ if ((CNameTtl != 0) && (AnswerSection->Ttl != 0)) { ++ Dns4CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl); ++ } else { ++ Dns4CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl); ++ } + +- FreePool (Dns4CacheEntry); +- Dns4CacheEntry = NULL; ++ UpdateDns4Cache (&mDriverData->Dns4CacheList, FALSE, TRUE, *Dns4CacheEntry); + +- IpCount ++; +- Status = EFI_SUCCESS; +- break; +- case DNS_TYPE_AAAA: +- // +- // This is address entry, get Data. +- // +- ASSERT (Dns6TokenEntry != NULL); ++ // ++ // Free allocated CacheEntry pool. ++ // ++ FreePool (Dns4CacheEntry->HostName); ++ Dns4CacheEntry->HostName = NULL; + +- if (AnswerSection->DataLength != 16) { +- Status = EFI_ABORTED; +- goto ON_EXIT; +- } ++ FreePool (Dns4CacheEntry->IpAddress); ++ Dns4CacheEntry->IpAddress = NULL; + +- HostAddr6 = Dns6TokenEntry->Token->RspData.H2AData->IpList; +- AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection); +- CopyMem (&HostAddr6[IpCount], AnswerData, sizeof (EFI_IPv6_ADDRESS)); ++ FreePool (Dns4CacheEntry); ++ Dns4CacheEntry = NULL; + +- // +- // Allocate new CacheEntry pool to update DNS cache dynamically. +- // +- Dns6CacheEntry = AllocateZeroPool (sizeof (EFI_DNS6_CACHE_ENTRY)); +- if (Dns6CacheEntry == NULL) { +- Status = EFI_OUT_OF_RESOURCES; +- goto ON_EXIT; +- } +- Dns6CacheEntry->HostName = AllocateZeroPool (2 * (StrLen(Dns6TokenEntry->QueryHostName) + 1)); +- if (Dns6CacheEntry->HostName == NULL) { +- Status = EFI_OUT_OF_RESOURCES; +- goto ON_EXIT; +- } +- CopyMem (Dns6CacheEntry->HostName, Dns6TokenEntry->QueryHostName, 2 * (StrLen(Dns6TokenEntry->QueryHostName) + 1)); +- Dns6CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv6_ADDRESS)); +- if (Dns6CacheEntry->IpAddress == NULL) { +- Status = EFI_OUT_OF_RESOURCES; +- goto ON_EXIT; +- } +- CopyMem (Dns6CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv6_ADDRESS)); ++ IpCount++; ++ Status = EFI_SUCCESS; ++ break; ++ case DNS_TYPE_AAAA: ++ // ++ // This is address entry, get Data. ++ // ++ ASSERT (Dns6TokenEntry != NULL); + +- if (CNameTtl != 0 && AnswerSection->Ttl != 0) { +- Dns6CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl); +- } else { +- Dns6CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl); +- } ++ if (AnswerSection->DataLength != 16) { ++ Status = EFI_ABORTED; ++ goto ON_EXIT; ++ } + +- UpdateDns6Cache (&mDriverData->Dns6CacheList, FALSE, TRUE, *Dns6CacheEntry); ++ HostAddr6 = Dns6TokenEntry->Token->RspData.H2AData->IpList; ++ AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection); ++ CopyMem (&HostAddr6[IpCount], AnswerData, sizeof (EFI_IPv6_ADDRESS)); + +- // +- // Free allocated CacheEntry pool. +- // +- FreePool (Dns6CacheEntry->HostName); +- Dns6CacheEntry->HostName = NULL; ++ // ++ // Allocate new CacheEntry pool to update DNS cache dynamically. ++ // ++ Dns6CacheEntry = AllocateZeroPool (sizeof (EFI_DNS6_CACHE_ENTRY)); ++ if (Dns6CacheEntry == NULL) { ++ Status = EFI_OUT_OF_RESOURCES; ++ goto ON_EXIT; ++ } + +- FreePool (Dns6CacheEntry->IpAddress); +- Dns6CacheEntry->IpAddress = NULL; ++ Dns6CacheEntry->HostName = AllocateZeroPool (2 * (StrLen (Dns6TokenEntry->QueryHostName) + 1)); ++ if (Dns6CacheEntry->HostName == NULL) { ++ Status = EFI_OUT_OF_RESOURCES; ++ goto ON_EXIT; ++ } + +- FreePool (Dns6CacheEntry); +- Dns6CacheEntry = NULL; ++ CopyMem (Dns6CacheEntry->HostName, Dns6TokenEntry->QueryHostName, 2 * (StrLen (Dns6TokenEntry->QueryHostName) + 1)); ++ Dns6CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv6_ADDRESS)); ++ if (Dns6CacheEntry->IpAddress == NULL) { ++ Status = EFI_OUT_OF_RESOURCES; ++ goto ON_EXIT; ++ } + +- IpCount ++; +- Status = EFI_SUCCESS; +- break; +- case DNS_TYPE_CNAME: +- // +- // According RFC 1034 - 3.6.2, if the query name is an alias, the name server will include the CNAME +- // record in the response and restart the query at the domain name specified in the data field of the +- // CNAME record. So, just record the TTL value of the CNAME, then skip to parse the next record. +- // +- CNameTtl = AnswerSection->Ttl; +- break; +- default: +- Status = EFI_UNSUPPORTED; +- goto ON_EXIT; ++ CopyMem (Dns6CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv6_ADDRESS)); ++ ++ if ((CNameTtl != 0) && (AnswerSection->Ttl != 0)) { ++ Dns6CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl); ++ } else { ++ Dns6CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl); ++ } ++ ++ UpdateDns6Cache (&mDriverData->Dns6CacheList, FALSE, TRUE, *Dns6CacheEntry); ++ ++ // ++ // Free allocated CacheEntry pool. ++ // ++ FreePool (Dns6CacheEntry->HostName); ++ Dns6CacheEntry->HostName = NULL; ++ ++ FreePool (Dns6CacheEntry->IpAddress); ++ Dns6CacheEntry->IpAddress = NULL; ++ ++ FreePool (Dns6CacheEntry); ++ Dns6CacheEntry = NULL; ++ ++ IpCount++; ++ Status = EFI_SUCCESS; ++ break; ++ case DNS_TYPE_CNAME: ++ // ++ // According RFC 1034 - 3.6.2, if the query name is an alias, the name server will include the CNAME ++ // record in the response and restart the query at the domain name specified in the data field of the ++ // CNAME record. So, just record the TTL value of the CNAME, then skip to parse the next record. ++ // ++ CNameTtl = AnswerSection->Ttl; ++ break; ++ default: ++ Status = EFI_UNSUPPORTED; ++ goto ON_EXIT; + } + } + + // + // Find next one + // +- AnswerName = (CHAR8 *) AnswerSection + sizeof (*AnswerSection) + AnswerSection->DataLength; +- AnswerSectionNum ++; ++ AnswerName = (CHAR8 *)AnswerSection + sizeof (*AnswerSection) + AnswerSection->DataLength; ++ AnswerSectionNum++; + } + + if (Instance->Service->IpVersion == IP_VERSION_4) { +@@ -1646,8 +1669,8 @@ ON_COMPLETE: + // + // Parsing is complete, free the sending packet and signal Event here. + // +- if (Item != NULL && Item->Value != NULL) { +- NetbufFree ((NET_BUF *) (Item->Value)); ++ if ((Item != NULL) && (Item->Value != NULL)) { ++ NetbufFree ((NET_BUF *)(Item->Value)); + } + + if (Instance->Service->IpVersion == IP_VERSION_4) { +@@ -1678,7 +1701,7 @@ ON_EXIT: + if (Dns4TokenEntry->Token->RspData.GLookupData != NULL) { + if (Dns4TokenEntry->Token->RspData.GLookupData->RRList != NULL) { + while (RRCount != 0) { +- RRCount --; ++ RRCount--; + if (Dns4TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName != NULL) { + FreePool (Dns4TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName); + } +@@ -1694,7 +1717,7 @@ ON_EXIT: + FreePool (Dns4TokenEntry->Token->RspData.GLookupData); + } + } else { +- if (QuerySection->Type == DNS_TYPE_A && Dns4TokenEntry->Token->RspData.H2AData != NULL) { ++ if ((QuerySection->Type == DNS_TYPE_A) && (Dns4TokenEntry->Token->RspData.H2AData != NULL)) { + if (Dns4TokenEntry->Token->RspData.H2AData->IpList != NULL) { + FreePool (Dns4TokenEntry->Token->RspData.H2AData->IpList); + } +@@ -1710,7 +1733,7 @@ ON_EXIT: + if (Dns6TokenEntry->Token->RspData.GLookupData != NULL) { + if (Dns6TokenEntry->Token->RspData.GLookupData->RRList != NULL) { + while (RRCount != 0) { +- RRCount --; ++ RRCount--; + if (Dns6TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName != NULL) { + FreePool (Dns6TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName); + } +@@ -1726,7 +1749,7 @@ ON_EXIT: + FreePool (Dns6TokenEntry->Token->RspData.GLookupData); + } + } else { +- if (QuerySection->Type == DNS_TYPE_AAAA && Dns6TokenEntry->Token->RspData.H2AData != NULL) { ++ if ((QuerySection->Type == DNS_TYPE_AAAA) && (Dns6TokenEntry->Token->RspData.H2AData != NULL)) { + if (Dns6TokenEntry->Token->RspData.H2AData->IpList != NULL) { + FreePool (Dns6TokenEntry->Token->RspData.H2AData->IpList); + } +@@ -1778,20 +1801,20 @@ ON_EXIT: + VOID + EFIAPI + DnsOnPacketReceived ( +- NET_BUF *Packet, +- UDP_END_POINT *EndPoint, +- EFI_STATUS IoStatus, +- VOID *Context ++ NET_BUF *Packet, ++ UDP_END_POINT *EndPoint, ++ EFI_STATUS IoStatus, ++ VOID *Context + ) + { +- DNS_INSTANCE *Instance; ++ DNS_INSTANCE *Instance; + +- UINT8 *RcvString; +- UINT32 Len; ++ UINT8 *RcvString; ++ UINT32 Len; + +- BOOLEAN Completed; ++ BOOLEAN Completed; + +- Instance = (DNS_INSTANCE *) Context; ++ Instance = (DNS_INSTANCE *)Context; + NET_CHECK_SIGNATURE (Instance, DNS_INSTANCE_SIGNATURE); + + RcvString = NULL; +@@ -1836,29 +1859,29 @@ ON_EXIT: + VOID + EFIAPI + DnsOnPacketSent ( +- NET_BUF *Packet, +- UDP_END_POINT *EndPoint, +- EFI_STATUS IoStatus, +- VOID *Context ++ NET_BUF *Packet, ++ UDP_END_POINT *EndPoint, ++ EFI_STATUS IoStatus, ++ VOID *Context + ) + { +- DNS_INSTANCE *Instance; +- LIST_ENTRY *Entry; +- NET_MAP_ITEM *Item; +- DNS4_TOKEN_ENTRY *Dns4TokenEntry; +- DNS6_TOKEN_ENTRY *Dns6TokenEntry; ++ DNS_INSTANCE *Instance; ++ LIST_ENTRY *Entry; ++ NET_MAP_ITEM *Item; ++ DNS4_TOKEN_ENTRY *Dns4TokenEntry; ++ DNS6_TOKEN_ENTRY *Dns6TokenEntry; + + Dns4TokenEntry = NULL; + Dns6TokenEntry = NULL; + +- Instance = (DNS_INSTANCE *) Context; ++ Instance = (DNS_INSTANCE *)Context; + NET_CHECK_SIGNATURE (Instance, DNS_INSTANCE_SIGNATURE); + + if (Instance->Service->IpVersion == IP_VERSION_4) { + NET_LIST_FOR_EACH (Entry, &Instance->Dns4TxTokens.Used) { + Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); + if (Packet == (NET_BUF *)(Item->Value)) { +- Dns4TokenEntry = ((DNS4_TOKEN_ENTRY *)Item->Key); ++ Dns4TokenEntry = ((DNS4_TOKEN_ENTRY *)Item->Key); + Dns4TokenEntry->PacketToLive = Dns4TokenEntry->Token->RetryInterval; + break; + } +@@ -1867,7 +1890,7 @@ DnsOnPacketSent ( + NET_LIST_FOR_EACH (Entry, &Instance->Dns6TxTokens.Used) { + Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); + if (Packet == (NET_BUF *)(Item->Value)) { +- Dns6TokenEntry = ((DNS6_TOKEN_ENTRY *)Item->Key); ++ Dns6TokenEntry = ((DNS6_TOKEN_ENTRY *)Item->Key); + Dns6TokenEntry->PacketToLive = Dns6TokenEntry->Token->RetryInterval; + break; + } +@@ -1889,11 +1912,11 @@ DnsOnPacketSent ( + **/ + EFI_STATUS + DoDnsQuery ( +- IN DNS_INSTANCE *Instance, +- IN NET_BUF *Packet ++ IN DNS_INSTANCE *Instance, ++ IN NET_BUF *Packet + ) + { +- EFI_STATUS Status; ++ EFI_STATUS Status; + + // + // Ready to receive the DNS response. +@@ -1930,16 +1953,16 @@ DoDnsQuery ( + **/ + EFI_STATUS + ConstructDNSQuery ( +- IN DNS_INSTANCE *Instance, +- IN CHAR8 *QueryName, +- IN UINT16 Type, +- IN UINT16 Class, +- OUT NET_BUF **Packet ++ IN DNS_INSTANCE *Instance, ++ IN CHAR8 *QueryName, ++ IN UINT16 Type, ++ IN UINT16 Class, ++ OUT NET_BUF **Packet + ) + { +- NET_FRAGMENT Frag; +- DNS_HEADER *DnsHeader; +- DNS_QUERY_SECTION *DnsQuery; ++ NET_FRAGMENT Frag; ++ DNS_HEADER *DnsHeader; ++ DNS_QUERY_SECTION *DnsQuery; + + // + // Messages carried by UDP are restricted to 512 bytes (not counting the IP +@@ -1953,23 +1976,23 @@ ConstructDNSQuery ( + // + // Fill header + // +- DnsHeader = (DNS_HEADER *) Frag.Bulk; +- DnsHeader->Identification = (UINT16)NET_RANDOM (NetRandomInitSeed()); +- DnsHeader->Flags.Uint16 = 0x0000; +- DnsHeader->Flags.Bits.RD = 1; ++ DnsHeader = (DNS_HEADER *)Frag.Bulk; ++ DnsHeader->Identification = (UINT16)NET_RANDOM (NetRandomInitSeed ()); ++ DnsHeader->Flags.Uint16 = 0x0000; ++ DnsHeader->Flags.Bits.RD = 1; + DnsHeader->Flags.Bits.OpCode = DNS_FLAGS_OPCODE_STANDARD; +- DnsHeader->Flags.Bits.QR = DNS_FLAGS_QR_QUERY; +- DnsHeader->QuestionsNum = 1; +- DnsHeader->AnswersNum = 0; +- DnsHeader->AuthorityNum = 0; +- DnsHeader->AditionalNum = 0; ++ DnsHeader->Flags.Bits.QR = DNS_FLAGS_QR_QUERY; ++ DnsHeader->QuestionsNum = 1; ++ DnsHeader->AnswersNum = 0; ++ DnsHeader->AuthorityNum = 0; ++ DnsHeader->AditionalNum = 0; + + DnsHeader->Identification = HTONS (DnsHeader->Identification); +- DnsHeader->Flags.Uint16 = HTONS (DnsHeader->Flags.Uint16); +- DnsHeader->QuestionsNum = HTONS (DnsHeader->QuestionsNum); +- DnsHeader->AnswersNum = HTONS (DnsHeader->AnswersNum); +- DnsHeader->AuthorityNum = HTONS (DnsHeader->AuthorityNum); +- DnsHeader->AditionalNum = HTONS (DnsHeader->AditionalNum); ++ DnsHeader->Flags.Uint16 = HTONS (DnsHeader->Flags.Uint16); ++ DnsHeader->QuestionsNum = HTONS (DnsHeader->QuestionsNum); ++ DnsHeader->AnswersNum = HTONS (DnsHeader->AnswersNum); ++ DnsHeader->AuthorityNum = HTONS (DnsHeader->AuthorityNum); ++ DnsHeader->AditionalNum = HTONS (DnsHeader->AditionalNum); + + Frag.Len = sizeof (*DnsHeader); + +@@ -1977,16 +2000,16 @@ ConstructDNSQuery ( + // Fill Query name + // + CopyMem (Frag.Bulk + Frag.Len, QueryName, AsciiStrLen (QueryName)); +- Frag.Len = (UINT32) (Frag.Len + AsciiStrLen (QueryName)); ++ Frag.Len = (UINT32)(Frag.Len + AsciiStrLen (QueryName)); + *(Frag.Bulk + Frag.Len) = 0; +- Frag.Len ++; ++ Frag.Len++; + + // + // Rest query section + // +- DnsQuery = (DNS_QUERY_SECTION *) (Frag.Bulk + Frag.Len); ++ DnsQuery = (DNS_QUERY_SECTION *)(Frag.Bulk + Frag.Len); + +- DnsQuery->Type = HTONS (Type); ++ DnsQuery->Type = HTONS (Type); + DnsQuery->Class = HTONS (Class); + + Frag.Len += sizeof (*DnsQuery); +@@ -2003,7 +2026,7 @@ ConstructDNSQuery ( + // + // Store the UdpIo in ProtoData. + // +- *((UINTN *) &((*Packet)->ProtoData[0])) = (UINTN) (Instance->UdpIo); ++ *((UINTN *)&((*Packet)->ProtoData[0])) = (UINTN)(Instance->UdpIo); + + return EFI_SUCCESS; + } +@@ -2020,13 +2043,13 @@ ConstructDNSQuery ( + **/ + EFI_STATUS + DnsRetransmit ( +- IN DNS_INSTANCE *Instance, +- IN NET_BUF *Packet ++ IN DNS_INSTANCE *Instance, ++ IN NET_BUF *Packet + ) + { +- EFI_STATUS Status; ++ EFI_STATUS Status; + +- UINT8 *Buffer; ++ UINT8 *Buffer; + + ASSERT (Packet != NULL); + +@@ -2064,26 +2087,25 @@ DnsRetransmit ( + VOID + EFIAPI + DnsOnTimerRetransmit ( +- IN EFI_EVENT Event, +- IN VOID *Context ++ IN EFI_EVENT Event, ++ IN VOID *Context + ) + { +- DNS_SERVICE *Service; ++ DNS_SERVICE *Service; + +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; + +- DNS_INSTANCE *Instance; +- LIST_ENTRY *EntryNetMap; +- NET_MAP_ITEM *ItemNetMap; +- DNS4_TOKEN_ENTRY *Dns4TokenEntry; +- DNS6_TOKEN_ENTRY *Dns6TokenEntry; ++ DNS_INSTANCE *Instance; ++ LIST_ENTRY *EntryNetMap; ++ NET_MAP_ITEM *ItemNetMap; ++ DNS4_TOKEN_ENTRY *Dns4TokenEntry; ++ DNS6_TOKEN_ENTRY *Dns6TokenEntry; + + Dns4TokenEntry = NULL; + Dns6TokenEntry = NULL; + +- Service = (DNS_SERVICE *) Context; +- ++ Service = (DNS_SERVICE *)Context; + + if (Service->IpVersion == IP_VERSION_4) { + // +@@ -2095,9 +2117,9 @@ DnsOnTimerRetransmit ( + + EntryNetMap = Instance->Dns4TxTokens.Used.ForwardLink; + while (EntryNetMap != &Instance->Dns4TxTokens.Used) { +- ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link); ++ ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link); + Dns4TokenEntry = (DNS4_TOKEN_ENTRY *)(ItemNetMap->Key); +- if (Dns4TokenEntry->PacketToLive == 0 || (--Dns4TokenEntry->PacketToLive > 0)) { ++ if ((Dns4TokenEntry->PacketToLive == 0) || (--Dns4TokenEntry->PacketToLive > 0)) { + EntryNetMap = EntryNetMap->ForwardLink; + continue; + } +@@ -2139,9 +2161,9 @@ DnsOnTimerRetransmit ( + + EntryNetMap = Instance->Dns6TxTokens.Used.ForwardLink; + while (EntryNetMap != &Instance->Dns6TxTokens.Used) { +- ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link); +- Dns6TokenEntry = (DNS6_TOKEN_ENTRY *) (ItemNetMap->Key); +- if (Dns6TokenEntry->PacketToLive == 0 || (--Dns6TokenEntry->PacketToLive > 0)) { ++ ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link); ++ Dns6TokenEntry = (DNS6_TOKEN_ENTRY *)(ItemNetMap->Key); ++ if ((Dns6TokenEntry->PacketToLive == 0) || (--Dns6TokenEntry->PacketToLive > 0)) { + EntryNetMap = EntryNetMap->ForwardLink; + continue; + } +@@ -2151,7 +2173,7 @@ DnsOnTimerRetransmit ( + // otherwise exit the transfer. + // + if (++Dns6TokenEntry->RetryCounting <= Dns6TokenEntry->Token->RetryCount) { +- DnsRetransmit (Instance, (NET_BUF *) ItemNetMap->Value); ++ DnsRetransmit (Instance, (NET_BUF *)ItemNetMap->Value); + EntryNetMap = EntryNetMap->ForwardLink; + } else { + // +@@ -2166,7 +2188,7 @@ DnsOnTimerRetransmit ( + // Free the sending packet. + // + if (ItemNetMap->Value != NULL) { +- NetbufFree ((NET_BUF *) (ItemNetMap->Value)); ++ NetbufFree ((NET_BUF *)(ItemNetMap->Value)); + } + + EntryNetMap = Instance->Dns6TxTokens.Used.ForwardLink; +@@ -2186,14 +2208,14 @@ DnsOnTimerRetransmit ( + VOID + EFIAPI + DnsOnTimerUpdate ( +- IN EFI_EVENT Event, +- IN VOID *Context ++ IN EFI_EVENT Event, ++ IN VOID *Context + ) + { +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; +- DNS4_CACHE *Item4; +- DNS6_CACHE *Item6; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; ++ DNS4_CACHE *Item4; ++ DNS6_CACHE *Item6; + + Item4 = NULL; + Item6 = NULL; +@@ -2242,4 +2264,3 @@ DnsOnTimerUpdate ( + } + } + } +- +diff --git a/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c b/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c +index 4905bca4ad..b22cef4ff5 100644 +--- a/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c ++++ b/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c +@@ -20,70 +20,70 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + **/ + UINT32 + HttpBootBuildDhcp6Options ( +- IN HTTP_BOOT_PRIVATE_DATA *Private, +- OUT EFI_DHCP6_PACKET_OPTION **OptList, +- IN UINT8 *Buffer ++ IN HTTP_BOOT_PRIVATE_DATA *Private, ++ OUT EFI_DHCP6_PACKET_OPTION **OptList, ++ IN UINT8 *Buffer + ) + { +- HTTP_BOOT_DHCP6_OPTION_ENTRY OptEnt; +- UINT16 Value; +- UINT32 Index; ++ HTTP_BOOT_DHCP6_OPTION_ENTRY OptEnt; ++ UINT16 Value; ++ UINT32 Index; + + Index = 0; +- OptList[0] = (EFI_DHCP6_PACKET_OPTION *) Buffer; ++ OptList[0] = (EFI_DHCP6_PACKET_OPTION *)Buffer; + + // + // Append client option request option + // +- OptList[Index]->OpCode = HTONS (DHCP6_OPT_ORO); +- OptList[Index]->OpLen = HTONS (8); +- OptEnt.Oro = (HTTP_BOOT_DHCP6_OPTION_ORO *) OptList[Index]->Data; +- OptEnt.Oro->OpCode[0] = HTONS(DHCP6_OPT_BOOT_FILE_URL); +- OptEnt.Oro->OpCode[1] = HTONS(DHCP6_OPT_BOOT_FILE_PARAM); +- OptEnt.Oro->OpCode[2] = HTONS(DHCP6_OPT_DNS_SERVERS); +- OptEnt.Oro->OpCode[3] = HTONS(DHCP6_OPT_VENDOR_CLASS); ++ OptList[Index]->OpCode = HTONS (DHCP6_OPT_ORO); ++ OptList[Index]->OpLen = HTONS (8); ++ OptEnt.Oro = (HTTP_BOOT_DHCP6_OPTION_ORO *)OptList[Index]->Data; ++ OptEnt.Oro->OpCode[0] = HTONS (DHCP6_OPT_BOOT_FILE_URL); ++ OptEnt.Oro->OpCode[1] = HTONS (DHCP6_OPT_BOOT_FILE_PARAM); ++ OptEnt.Oro->OpCode[2] = HTONS (DHCP6_OPT_DNS_SERVERS); ++ OptEnt.Oro->OpCode[3] = HTONS (DHCP6_OPT_VENDOR_CLASS); + Index++; +- OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); ++ OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); + + // + // Append client network device interface option + // +- OptList[Index]->OpCode = HTONS (DHCP6_OPT_UNDI); +- OptList[Index]->OpLen = HTONS ((UINT16)3); +- OptEnt.Undi = (HTTP_BOOT_DHCP6_OPTION_UNDI *) OptList[Index]->Data; ++ OptList[Index]->OpCode = HTONS (DHCP6_OPT_UNDI); ++ OptList[Index]->OpLen = HTONS ((UINT16)3); ++ OptEnt.Undi = (HTTP_BOOT_DHCP6_OPTION_UNDI *)OptList[Index]->Data; + + if (Private->Nii != NULL) { +- OptEnt.Undi->Type = Private->Nii->Type; +- OptEnt.Undi->MajorVer = Private->Nii->MajorVer; +- OptEnt.Undi->MinorVer = Private->Nii->MinorVer; ++ OptEnt.Undi->Type = Private->Nii->Type; ++ OptEnt.Undi->MajorVer = Private->Nii->MajorVer; ++ OptEnt.Undi->MinorVer = Private->Nii->MinorVer; + } else { +- OptEnt.Undi->Type = DEFAULT_UNDI_TYPE; +- OptEnt.Undi->MajorVer = DEFAULT_UNDI_MAJOR; +- OptEnt.Undi->MinorVer = DEFAULT_UNDI_MINOR; ++ OptEnt.Undi->Type = DEFAULT_UNDI_TYPE; ++ OptEnt.Undi->MajorVer = DEFAULT_UNDI_MAJOR; ++ OptEnt.Undi->MinorVer = DEFAULT_UNDI_MINOR; + } + + Index++; +- OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); ++ OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); + + // + // Append client system architecture option + // +- OptList[Index]->OpCode = HTONS (DHCP6_OPT_ARCH); +- OptList[Index]->OpLen = HTONS ((UINT16) sizeof (HTTP_BOOT_DHCP6_OPTION_ARCH)); +- OptEnt.Arch = (HTTP_BOOT_DHCP6_OPTION_ARCH *) OptList[Index]->Data; +- Value = HTONS (EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE); ++ OptList[Index]->OpCode = HTONS (DHCP6_OPT_ARCH); ++ OptList[Index]->OpLen = HTONS ((UINT16)sizeof (HTTP_BOOT_DHCP6_OPTION_ARCH)); ++ OptEnt.Arch = (HTTP_BOOT_DHCP6_OPTION_ARCH *)OptList[Index]->Data; ++ Value = HTONS (EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE); + CopyMem (&OptEnt.Arch->Type, &Value, sizeof (UINT16)); + Index++; +- OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); ++ OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); + + // + // Append vendor class identify option. + // + OptList[Index]->OpCode = HTONS (DHCP6_OPT_VENDOR_CLASS); +- OptList[Index]->OpLen = HTONS ((UINT16) sizeof (HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS)); +- OptEnt.VendorClass = (HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS *) OptList[Index]->Data; ++ OptList[Index]->OpLen = HTONS ((UINT16)sizeof (HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS)); ++ OptEnt.VendorClass = (HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS *)OptList[Index]->Data; + OptEnt.VendorClass->Vendor = HTONL (HTTP_BOOT_DHCP6_ENTERPRISE_NUM); +- OptEnt.VendorClass->ClassLen = HTONS ((UINT16) sizeof (HTTP_BOOT_CLASS_ID)); ++ OptEnt.VendorClass->ClassLen = HTONS ((UINT16)sizeof (HTTP_BOOT_CLASS_ID)); + CopyMem ( + &OptEnt.VendorClass->ClassId, + DEFAULT_CLASS_ID_DATA, +@@ -131,33 +131,30 @@ HttpBootBuildDhcp6Options ( + **/ + EFI_DHCP6_PACKET_OPTION * + HttpBootParseDhcp6Options ( +- IN UINT8 *Buffer, +- IN UINT32 Length, +- IN UINT16 OptTag ++ IN UINT8 *Buffer, ++ IN UINT32 Length, ++ IN UINT16 OptTag + ) + { +- EFI_DHCP6_PACKET_OPTION *Option; +- UINT32 Offset; ++ EFI_DHCP6_PACKET_OPTION *Option; ++ UINT32 Offset; + +- Option = (EFI_DHCP6_PACKET_OPTION *) Buffer; +- Offset = 0; ++ Option = (EFI_DHCP6_PACKET_OPTION *)Buffer; ++ Offset = 0; + + // + // OpLen and OpCode here are both stored in network order. + // + while (Offset < Length) { +- + if (NTOHS (Option->OpCode) == OptTag) { +- + return Option; + } + +- Offset += (NTOHS(Option->OpLen) + 4); +- Option = (EFI_DHCP6_PACKET_OPTION *) (Buffer + Offset); ++ Offset += (NTOHS (Option->OpLen) + 4); ++ Option = (EFI_DHCP6_PACKET_OPTION *)(Buffer + Offset); + } + + return NULL; +- + } + + /** +@@ -171,40 +168,39 @@ HttpBootParseDhcp6Options ( + **/ + EFI_STATUS + HttpBootParseDhcp6Packet ( +- IN HTTP_BOOT_DHCP6_PACKET_CACHE *Cache6 ++ IN HTTP_BOOT_DHCP6_PACKET_CACHE *Cache6 + ) + { +- EFI_DHCP6_PACKET *Offer; +- EFI_DHCP6_PACKET_OPTION **Options; +- EFI_DHCP6_PACKET_OPTION *Option; +- HTTP_BOOT_OFFER_TYPE OfferType; +- EFI_IPv6_ADDRESS IpAddr; +- BOOLEAN IsProxyOffer; +- BOOLEAN IsHttpOffer; +- BOOLEAN IsDnsOffer; +- BOOLEAN IpExpressedUri; +- EFI_STATUS Status; +- UINT32 Offset; +- UINT32 Length; ++ EFI_DHCP6_PACKET *Offer; ++ EFI_DHCP6_PACKET_OPTION **Options; ++ EFI_DHCP6_PACKET_OPTION *Option; ++ HTTP_BOOT_OFFER_TYPE OfferType; ++ EFI_IPv6_ADDRESS IpAddr; ++ BOOLEAN IsProxyOffer; ++ BOOLEAN IsHttpOffer; ++ BOOLEAN IsDnsOffer; ++ BOOLEAN IpExpressedUri; ++ EFI_STATUS Status; ++ UINT32 Offset; ++ UINT32 Length; + + IsDnsOffer = FALSE; + IpExpressedUri = FALSE; + IsProxyOffer = TRUE; + IsHttpOffer = FALSE; +- Offer = &Cache6->Packet.Offer; +- Options = Cache6->OptList; ++ Offer = &Cache6->Packet.Offer; ++ Options = Cache6->OptList; + + ZeroMem (Cache6->OptList, sizeof (Cache6->OptList)); + +- Option = (EFI_DHCP6_PACKET_OPTION *) (Offer->Dhcp6.Option); +- Offset = 0; +- Length = GET_DHCP6_OPTION_SIZE (Offer); ++ Option = (EFI_DHCP6_PACKET_OPTION *)(Offer->Dhcp6.Option); ++ Offset = 0; ++ Length = GET_DHCP6_OPTION_SIZE (Offer); + + // + // OpLen and OpCode here are both stored in network order, since they are from original packet. + // + while (Offset < Length) { +- + if (NTOHS (Option->OpCode) == DHCP6_OPT_IA_NA) { + Options[HTTP_BOOT_DHCP6_IDX_IA_NA] = Option; + } else if (NTOHS (Option->OpCode) == DHCP6_OPT_BOOT_FILE_URL) { +@@ -221,8 +217,9 @@ HttpBootParseDhcp6Packet ( + } + + Offset += (NTOHS (Option->OpLen) + 4); +- Option = (EFI_DHCP6_PACKET_OPTION *) (Offer->Dhcp6.Option + Offset); ++ Option = (EFI_DHCP6_PACKET_OPTION *)(Offer->Dhcp6.Option + Offset); + } ++ + // + // The offer with assigned client address is NOT a proxy offer. + // An ia_na option, embedded with valid ia_addr option and a status_code of success. +@@ -234,7 +231,7 @@ HttpBootParseDhcp6Packet ( + NTOHS (Option->OpLen), + DHCP6_OPT_STATUS_CODE + ); +- if ((Option != NULL && Option->Data[0] == 0) || (Option == NULL)) { ++ if (((Option != NULL) && (Option->Data[0] == 0)) || (Option == NULL)) { + IsProxyOffer = FALSE; + } + } +@@ -244,10 +241,11 @@ HttpBootParseDhcp6Packet ( + // + Option = Options[HTTP_BOOT_DHCP6_IDX_VENDOR_CLASS]; + +- if (Option != NULL && +- NTOHS(Option->OpLen) >= 16 && +- CompareMem ((Option->Data + 6), DEFAULT_CLASS_ID_DATA, 10) == 0) { +- IsHttpOffer = TRUE; ++ if ((Option != NULL) && ++ (NTOHS (Option->OpLen) >= 16) && ++ (CompareMem ((Option->Data + 6), DEFAULT_CLASS_ID_DATA, 10) == 0)) ++ { ++ IsHttpOffer = TRUE; + } + + // +@@ -261,7 +259,7 @@ HttpBootParseDhcp6Packet ( + // + // Http offer must have a boot URI. + // +- if (IsHttpOffer && Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL] == NULL) { ++ if (IsHttpOffer && (Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL] == NULL)) { + return EFI_DEVICE_ERROR; + } + +@@ -270,8 +268,8 @@ HttpBootParseDhcp6Packet ( + // + if (IsHttpOffer) { + Status = HttpParseUrl ( +- (CHAR8*) Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data, +- (UINT32) AsciiStrLen ((CHAR8*) Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data), ++ (CHAR8 *)Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data, ++ (UINT32)AsciiStrLen ((CHAR8 *)Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data), + FALSE, + &Cache6->UriParser + ); +@@ -280,7 +278,7 @@ HttpBootParseDhcp6Packet ( + } + + Status = HttpUrlGetIp6 ( +- (CHAR8*) Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data, ++ (CHAR8 *)Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data, + Cache6->UriParser, + &IpAddr + ); +@@ -304,7 +302,6 @@ HttpBootParseDhcp6Packet ( + OfferType = HttpOfferTypeProxyNameUri; + } + } +- + } else { + if (!IsProxyOffer) { + OfferType = IsDnsOffer ? HttpOfferTypeDhcpDns : HttpOfferTypeDhcpOnly; +@@ -329,8 +326,8 @@ HttpBootParseDhcp6Packet ( + **/ + EFI_STATUS + HttpBootCacheDhcp6Packet ( +- IN EFI_DHCP6_PACKET *Dst, +- IN EFI_DHCP6_PACKET *Src ++ IN EFI_DHCP6_PACKET *Dst, ++ IN EFI_DHCP6_PACKET *Src + ) + { + if (Dst->Size < Src->Length) { +@@ -359,10 +356,10 @@ HttpBootCacheDhcp6Offer ( + IN EFI_DHCP6_PACKET *RcvdOffer + ) + { +- HTTP_BOOT_DHCP6_PACKET_CACHE *Cache6; +- EFI_DHCP6_PACKET *Offer; +- HTTP_BOOT_OFFER_TYPE OfferType; +- EFI_STATUS Status; ++ HTTP_BOOT_DHCP6_PACKET_CACHE *Cache6; ++ EFI_DHCP6_PACKET *Offer; ++ HTTP_BOOT_OFFER_TYPE OfferType; ++ EFI_STATUS Status; + + Cache6 = &Private->OfferBuffer[Private->OfferNum].Dhcp6; + Offer = &Cache6->Packet.Offer; +@@ -370,7 +367,7 @@ HttpBootCacheDhcp6Offer ( + // + // Cache the content of DHCPv6 packet firstly. + // +- Status = HttpBootCacheDhcp6Packet(Offer, RcvdOffer); ++ Status = HttpBootCacheDhcp6Packet (Offer, RcvdOffer); + if (EFI_ERROR (Status)) { + return Status; + } +@@ -417,86 +414,91 @@ HttpBootCacheDhcp6Offer ( + EFI_STATUS + EFIAPI + HttpBootDhcp6CallBack ( +- IN EFI_DHCP6_PROTOCOL *This, +- IN VOID *Context, +- IN EFI_DHCP6_STATE CurrentState, +- IN EFI_DHCP6_EVENT Dhcp6Event, +- IN EFI_DHCP6_PACKET *Packet, +- OUT EFI_DHCP6_PACKET **NewPacket OPTIONAL ++ IN EFI_DHCP6_PROTOCOL *This, ++ IN VOID *Context, ++ IN EFI_DHCP6_STATE CurrentState, ++ IN EFI_DHCP6_EVENT Dhcp6Event, ++ IN EFI_DHCP6_PACKET *Packet, ++ OUT EFI_DHCP6_PACKET **NewPacket OPTIONAL + ) + { +- HTTP_BOOT_PRIVATE_DATA *Private; +- EFI_DHCP6_PACKET *SelectAd; +- EFI_STATUS Status; +- BOOLEAN Received; ++ HTTP_BOOT_PRIVATE_DATA *Private; ++ EFI_DHCP6_PACKET *SelectAd; ++ EFI_STATUS Status; ++ BOOLEAN Received; + + if ((Dhcp6Event != Dhcp6SendSolicit) && +- (Dhcp6Event != Dhcp6RcvdAdvertise) && +- (Dhcp6Event != Dhcp6SendRequest) && +- (Dhcp6Event != Dhcp6RcvdReply) && +- (Dhcp6Event != Dhcp6SelectAdvertise)) { ++ (Dhcp6Event != Dhcp6RcvdAdvertise) && ++ (Dhcp6Event != Dhcp6SendRequest) && ++ (Dhcp6Event != Dhcp6RcvdReply) && ++ (Dhcp6Event != Dhcp6SelectAdvertise)) ++ { + return EFI_SUCCESS; + } + + ASSERT (Packet != NULL); + +- Private = (HTTP_BOOT_PRIVATE_DATA *) Context; +- Status = EFI_SUCCESS; +- if (Private->HttpBootCallback != NULL && Dhcp6Event != Dhcp6SelectAdvertise) { +- Received = (BOOLEAN) (Dhcp6Event == Dhcp6RcvdAdvertise || Dhcp6Event == Dhcp6RcvdReply); +- Status = Private->HttpBootCallback->Callback ( +- Private->HttpBootCallback, +- HttpBootDhcp6, +- Received, +- Packet->Length, +- &Packet->Dhcp6 +- ); ++ Private = (HTTP_BOOT_PRIVATE_DATA *)Context; ++ Status = EFI_SUCCESS; ++ if ((Private->HttpBootCallback != NULL) && (Dhcp6Event != Dhcp6SelectAdvertise)) { ++ Received = (BOOLEAN)(Dhcp6Event == Dhcp6RcvdAdvertise || Dhcp6Event == Dhcp6RcvdReply); ++ Status = Private->HttpBootCallback->Callback ( ++ Private->HttpBootCallback, ++ HttpBootDhcp6, ++ Received, ++ Packet->Length, ++ &Packet->Dhcp6 ++ ); + if (EFI_ERROR (Status)) { + return EFI_ABORTED; + } + } ++ + switch (Dhcp6Event) { ++ case Dhcp6RcvdAdvertise: ++ Status = EFI_NOT_READY; ++ if (Packet->Length > HTTP_BOOT_DHCP6_PACKET_MAX_SIZE) { ++ // ++ // Ignore the incoming packets which exceed the maximum length. ++ // ++ break; ++ } ++ ++ if (Private->OfferNum < HTTP_BOOT_OFFER_MAX_NUM) { ++ // ++ // Cache the dhcp offers to OfferBuffer[] for select later, and record ++ // the OfferIndex and OfferCount. ++ // If error happens, just ignore this packet and continue to wait more offer. ++ // ++ HttpBootCacheDhcp6Offer (Private, Packet); ++ } + +- case Dhcp6RcvdAdvertise: +- Status = EFI_NOT_READY; +- if (Packet->Length > HTTP_BOOT_DHCP6_PACKET_MAX_SIZE) { +- // +- // Ignore the incoming packets which exceed the maximum length. +- // + break; +- } +- if (Private->OfferNum < HTTP_BOOT_OFFER_MAX_NUM) { ++ ++ case Dhcp6SelectAdvertise: + // +- // Cache the dhcp offers to OfferBuffer[] for select later, and record +- // the OfferIndex and OfferCount. +- // If error happens, just ignore this packet and continue to wait more offer. ++ // Select offer by the default policy or by order, and record the SelectIndex ++ // and SelectProxyType. + // +- HttpBootCacheDhcp6Offer (Private, Packet); +- } +- break; +- +- case Dhcp6SelectAdvertise: +- // +- // Select offer by the default policy or by order, and record the SelectIndex +- // and SelectProxyType. +- // +- HttpBootSelectDhcpOffer (Private); ++ HttpBootSelectDhcpOffer (Private); + +- if (Private->SelectIndex == 0) { +- Status = EFI_ABORTED; +- } else { +- ASSERT (NewPacket != NULL); +- SelectAd = &Private->OfferBuffer[Private->SelectIndex - 1].Dhcp6.Packet.Offer; +- *NewPacket = AllocateZeroPool (SelectAd->Size); +- if (*NewPacket == NULL) { +- return EFI_OUT_OF_RESOURCES; ++ if (Private->SelectIndex == 0) { ++ Status = EFI_ABORTED; ++ } else { ++ ASSERT (NewPacket != NULL); ++ SelectAd = &Private->OfferBuffer[Private->SelectIndex - 1].Dhcp6.Packet.Offer; ++ *NewPacket = AllocateZeroPool (SelectAd->Size); ++ if (*NewPacket == NULL) { ++ return EFI_OUT_OF_RESOURCES; ++ } ++ ++ CopyMem (*NewPacket, SelectAd, SelectAd->Size); + } +- CopyMem (*NewPacket, SelectAd, SelectAd->Size); +- } +- break; + +- default: +- break; ++ break; ++ ++ default: ++ break; + } + + return Status; +@@ -519,18 +521,18 @@ HttpBootDhcp6CallBack ( + **/ + EFI_STATUS + HttpBootCheckRouteTable ( +- IN HTTP_BOOT_PRIVATE_DATA *Private, +- IN UINTN TimeOutInSecond, +- OUT EFI_IPv6_ADDRESS *GatewayAddr ++ IN HTTP_BOOT_PRIVATE_DATA *Private, ++ IN UINTN TimeOutInSecond, ++ OUT EFI_IPv6_ADDRESS *GatewayAddr + ) + { +- EFI_STATUS Status; +- EFI_IP6_PROTOCOL *Ip6; +- EFI_IP6_MODE_DATA Ip6ModeData; +- UINTN Index; +- EFI_EVENT TimeOutEvt; +- UINTN RetryCount; +- BOOLEAN GatewayIsFound; ++ EFI_STATUS Status; ++ EFI_IP6_PROTOCOL *Ip6; ++ EFI_IP6_MODE_DATA Ip6ModeData; ++ UINTN Index; ++ EFI_EVENT TimeOutEvt; ++ UINTN RetryCount; ++ BOOLEAN GatewayIsFound; + + ASSERT (GatewayAddr != NULL); + ASSERT (Private != NULL); +@@ -562,23 +564,28 @@ HttpBootCheckRouteTable ( + if (Ip6ModeData.AddressList != NULL) { + FreePool (Ip6ModeData.AddressList); + } ++ + if (Ip6ModeData.GroupTable != NULL) { + FreePool (Ip6ModeData.GroupTable); + } ++ + if (Ip6ModeData.RouteTable != NULL) { + FreePool (Ip6ModeData.RouteTable); + } ++ + if (Ip6ModeData.NeighborCache != NULL) { + FreePool (Ip6ModeData.NeighborCache); + } ++ + if (Ip6ModeData.PrefixTable != NULL) { + FreePool (Ip6ModeData.PrefixTable); + } ++ + if (Ip6ModeData.IcmpTypeList != NULL) { + FreePool (Ip6ModeData.IcmpTypeList); + } + +- if (GatewayIsFound || RetryCount == TimeOutInSecond) { ++ if (GatewayIsFound || (RetryCount == TimeOutInSecond)) { + break; + } + +@@ -604,6 +611,7 @@ HttpBootCheckRouteTable ( + if (EFI_ERROR (Status)) { + goto ON_EXIT; + } ++ + while (EFI_ERROR (gBS->CheckEvent (TimeOutEvt))) { + Ip6->Poll (Ip6); + } +@@ -634,16 +642,16 @@ ON_EXIT: + **/ + EFI_STATUS + HttpBootSetIp6Policy ( +- IN HTTP_BOOT_PRIVATE_DATA *Private ++ IN HTTP_BOOT_PRIVATE_DATA *Private + ) + { +- EFI_IP6_CONFIG_POLICY Policy; +- EFI_IP6_CONFIG_PROTOCOL *Ip6Config; +- EFI_STATUS Status; +- UINTN DataSize; ++ EFI_IP6_CONFIG_POLICY Policy; ++ EFI_IP6_CONFIG_PROTOCOL *Ip6Config; ++ EFI_STATUS Status; ++ UINTN DataSize; + +- Ip6Config = Private->Ip6Config; +- DataSize = sizeof (EFI_IP6_CONFIG_POLICY); ++ Ip6Config = Private->Ip6Config; ++ DataSize = sizeof (EFI_IP6_CONFIG_POLICY); + + // + // Get and store the current policy of IP6 driver. +@@ -663,13 +671,14 @@ HttpBootSetIp6Policy ( + Status = Ip6Config->SetData ( + Ip6Config, + Ip6ConfigDataTypePolicy, +- sizeof(EFI_IP6_CONFIG_POLICY), ++ sizeof (EFI_IP6_CONFIG_POLICY), + &Policy + ); + if (EFI_ERROR (Status)) { + return Status; + } + } ++ + return EFI_SUCCESS; + } + +@@ -687,12 +696,12 @@ HttpBootSetIp6Policy ( + **/ + EFI_STATUS + HttpBootSetIp6Dns ( +- IN HTTP_BOOT_PRIVATE_DATA *Private, +- IN UINTN DataLength, +- IN VOID *DnsServerData ++ IN HTTP_BOOT_PRIVATE_DATA *Private, ++ IN UINTN DataLength, ++ IN VOID *DnsServerData + ) + { +- EFI_IP6_CONFIG_PROTOCOL *Ip6Config; ++ EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + + ASSERT (Private->UsingIpv6); + +@@ -717,11 +726,11 @@ HttpBootSetIp6Dns ( + **/ + EFI_STATUS + HttpBootSetIp6Gateway ( +- IN HTTP_BOOT_PRIVATE_DATA *Private ++ IN HTTP_BOOT_PRIVATE_DATA *Private + ) + { +- EFI_IP6_CONFIG_PROTOCOL *Ip6Config; +- EFI_STATUS Status; ++ EFI_IP6_CONFIG_PROTOCOL *Ip6Config; ++ EFI_STATUS Status; + + ASSERT (Private->UsingIpv6); + Ip6Config = Private->Ip6Config; +@@ -736,7 +745,7 @@ HttpBootSetIp6Gateway ( + sizeof (EFI_IPv6_ADDRESS), + &Private->GatewayIp.v6 + ); +- if (EFI_ERROR(Status)) { ++ if (EFI_ERROR (Status)) { + return Status; + } + } +@@ -755,21 +764,21 @@ HttpBootSetIp6Gateway ( + **/ + EFI_STATUS + HttpBootSetIp6Address ( +- IN HTTP_BOOT_PRIVATE_DATA *Private +-) ++ IN HTTP_BOOT_PRIVATE_DATA *Private ++ ) + { +- EFI_STATUS Status; +- EFI_IP6_PROTOCOL *Ip6; +- EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; +- EFI_IP6_CONFIG_POLICY Policy; +- EFI_IP6_CONFIG_MANUAL_ADDRESS CfgAddr; +- EFI_IPv6_ADDRESS *Ip6Addr; +- EFI_IPv6_ADDRESS GatewayAddr; +- EFI_IP6_CONFIG_DATA Ip6CfgData; +- EFI_EVENT MappedEvt; +- UINTN DataSize; +- BOOLEAN IsAddressOk; +- UINTN Index; ++ EFI_STATUS Status; ++ EFI_IP6_PROTOCOL *Ip6; ++ EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; ++ EFI_IP6_CONFIG_POLICY Policy; ++ EFI_IP6_CONFIG_MANUAL_ADDRESS CfgAddr; ++ EFI_IPv6_ADDRESS *Ip6Addr; ++ EFI_IPv6_ADDRESS GatewayAddr; ++ EFI_IP6_CONFIG_DATA Ip6CfgData; ++ EFI_EVENT MappedEvt; ++ UINTN DataSize; ++ BOOLEAN IsAddressOk; ++ UINTN Index; + + ASSERT (Private->UsingIpv6); + +@@ -783,11 +792,11 @@ HttpBootSetIp6Address ( + CopyMem (&CfgAddr, &Private->StationIp.v6, sizeof (EFI_IPv6_ADDRESS)); + ZeroMem (&Ip6CfgData, sizeof (EFI_IP6_CONFIG_DATA)); + +- Ip6CfgData.AcceptIcmpErrors = TRUE; +- Ip6CfgData.DefaultProtocol = IP6_ICMP; +- Ip6CfgData.HopLimit = HTTP_BOOT_DEFAULT_HOPLIMIT; +- Ip6CfgData.ReceiveTimeout = HTTP_BOOT_DEFAULT_LIFETIME; +- Ip6CfgData.TransmitTimeout = HTTP_BOOT_DEFAULT_LIFETIME; ++ Ip6CfgData.AcceptIcmpErrors = TRUE; ++ Ip6CfgData.DefaultProtocol = IP6_ICMP; ++ Ip6CfgData.HopLimit = HTTP_BOOT_DEFAULT_HOPLIMIT; ++ Ip6CfgData.ReceiveTimeout = HTTP_BOOT_DEFAULT_LIFETIME; ++ Ip6CfgData.TransmitTimeout = HTTP_BOOT_DEFAULT_LIFETIME; + + Status = Ip6->Configure (Ip6, &Ip6CfgData); + if (EFI_ERROR (Status)) { +@@ -811,7 +820,7 @@ HttpBootSetIp6Address ( + Status = Ip6Cfg->SetData ( + Ip6Cfg, + Ip6ConfigDataTypePolicy, +- sizeof(EFI_IP6_CONFIG_POLICY), ++ sizeof (EFI_IP6_CONFIG_POLICY), + &Policy + ); + if (EFI_ERROR (Status)) { +@@ -840,7 +849,7 @@ HttpBootSetIp6Address ( + Ip6ConfigDataTypeManualAddress, + MappedEvt + ); +- if (EFI_ERROR(Status)) { ++ if (EFI_ERROR (Status)) { + goto ON_EXIT; + } + +@@ -850,7 +859,7 @@ HttpBootSetIp6Address ( + sizeof (EFI_IP6_CONFIG_MANUAL_ADDRESS), + &CfgAddr + ); +- if (EFI_ERROR (Status) && Status != EFI_NOT_READY) { ++ if (EFI_ERROR (Status) && (Status != EFI_NOT_READY)) { + goto ON_EXIT; + } else if (Status == EFI_NOT_READY) { + // +@@ -859,17 +868,18 @@ HttpBootSetIp6Address ( + while (!IsAddressOk) { + Ip6->Poll (Ip6); + } ++ + // + // Check whether the Ip6 Address setting is successed. + // + DataSize = 0; +- Status = Ip6Cfg->GetData ( +- Ip6Cfg, +- Ip6ConfigDataTypeManualAddress, +- &DataSize, +- NULL +- ); +- if (Status != EFI_BUFFER_TOO_SMALL || DataSize == 0) { ++ Status = Ip6Cfg->GetData ( ++ Ip6Cfg, ++ Ip6ConfigDataTypeManualAddress, ++ &DataSize, ++ NULL ++ ); ++ if ((Status != EFI_BUFFER_TOO_SMALL) || (DataSize == 0)) { + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; + } +@@ -878,22 +888,24 @@ HttpBootSetIp6Address ( + if (Ip6Addr == NULL) { + return EFI_OUT_OF_RESOURCES; + } ++ + Status = Ip6Cfg->GetData ( + Ip6Cfg, + Ip6ConfigDataTypeManualAddress, + &DataSize, +- (VOID *) Ip6Addr ++ (VOID *)Ip6Addr + ); + if (EFI_ERROR (Status)) { + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; + } + +- for (Index = 0; Index < DataSize / sizeof (EFI_IPv6_ADDRESS); Index ++) { ++ for (Index = 0; Index < DataSize / sizeof (EFI_IPv6_ADDRESS); Index++) { + if (CompareMem (Ip6Addr + Index, &CfgAddr, sizeof (EFI_IPv6_ADDRESS)) == 0) { + break; + } + } ++ + if (Index == DataSize / sizeof (EFI_IPv6_ADDRESS)) { + Status = EFI_ABORTED; + goto ON_EXIT; +@@ -928,17 +940,17 @@ ON_EXIT: + **/ + EFI_STATUS + HttpBootDhcp6Sarr ( +- IN HTTP_BOOT_PRIVATE_DATA *Private ++ IN HTTP_BOOT_PRIVATE_DATA *Private + ) + { +- EFI_DHCP6_PROTOCOL *Dhcp6; +- EFI_DHCP6_CONFIG_DATA Config; +- EFI_DHCP6_MODE_DATA Mode; +- EFI_DHCP6_RETRANSMISSION *Retransmit; +- EFI_DHCP6_PACKET_OPTION *OptList[HTTP_BOOT_DHCP6_OPTION_MAX_NUM]; +- UINT32 OptCount; +- UINT8 Buffer[HTTP_BOOT_DHCP6_OPTION_MAX_SIZE]; +- EFI_STATUS Status; ++ EFI_DHCP6_PROTOCOL *Dhcp6; ++ EFI_DHCP6_CONFIG_DATA Config; ++ EFI_DHCP6_MODE_DATA Mode; ++ EFI_DHCP6_RETRANSMISSION *Retransmit; ++ EFI_DHCP6_PACKET_OPTION *OptList[HTTP_BOOT_DHCP6_OPTION_MAX_NUM]; ++ UINT32 OptCount; ++ UINT8 Buffer[HTTP_BOOT_DHCP6_OPTION_MAX_SIZE]; ++ EFI_STATUS Status; + + Dhcp6 = Private->Dhcp6; + ASSERT (Dhcp6 != NULL); +@@ -947,7 +959,7 @@ HttpBootDhcp6Sarr ( + // Build options list for the request packet. + // + OptCount = HttpBootBuildDhcp6Options (Private, OptList, Buffer); +- ASSERT (OptCount >0); ++ ASSERT (OptCount > 0); + + Retransmit = AllocateZeroPool (sizeof (EFI_DHCP6_RETRANSMISSION)); + if (Retransmit == NULL) { +@@ -980,11 +992,12 @@ HttpBootDhcp6Sarr ( + if (EFI_ERROR (Status)) { + goto ON_EXIT; + } ++ + // + // Initialize the record fields for DHCPv6 offer in private data. + // +- Private->OfferNum = 0; +- Private->SelectIndex = 0; ++ Private->OfferNum = 0; ++ Private->SelectIndex = 0; + ZeroMem (Private->OfferCount, sizeof (Private->OfferCount)); + ZeroMem (Private->OfferIndex, sizeof (Private->OfferIndex)); + +@@ -1021,12 +1034,11 @@ ON_EXIT: + if (Mode.ClientId != NULL) { + FreePool (Mode.ClientId); + } ++ + if (Mode.Ia != NULL) { + FreePool (Mode.Ia); + } + } + + return Status; +- + } +- +diff --git a/NetworkPkg/IScsiDxe/IScsiCHAP.c b/NetworkPkg/IScsiDxe/IScsiCHAP.c +index 0491ef42db..b507f11cd4 100644 +--- a/NetworkPkg/IScsiDxe/IScsiCHAP.c ++++ b/NetworkPkg/IScsiDxe/IScsiCHAP.c +@@ -14,7 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + // macros. CHAP_HASH structures at lower subscripts in the array are preferred + // by the initiator. + // +-STATIC CONST CHAP_HASH mChapHash[] = { ++STATIC CONST CHAP_HASH mChapHash[] = { + { + ISCSI_CHAP_ALGORITHM_SHA256, + SHA256_DIGEST_SIZE, +@@ -23,7 +23,7 @@ STATIC CONST CHAP_HASH mChapHash[] = { + Sha256Update, + Sha256Final + }, +-#ifdef ENABLE_MD5_DEPRECATED_INTERFACES ++ #ifdef ENABLE_MD5_DEPRECATED_INTERFACES + // + // Keep the deprecated MD5 entry at the end of the array (making MD5 the + // least preferred choice of the initiator). +@@ -36,7 +36,7 @@ STATIC CONST CHAP_HASH mChapHash[] = { + Md5Update, + Md5Final + }, +-#endif // ENABLE_MD5_DEPRECATED_INTERFACES ++ #endif // ENABLE_MD5_DEPRECATED_INTERFACES + }; + + // +@@ -44,17 +44,17 @@ STATIC CONST CHAP_HASH mChapHash[] = { + // CHAP_A= value string, by the IScsiCHAPInitHashList() function. It + // is sent by the initiator in ISCSI_CHAP_STEP_ONE. + // +-STATIC CHAR8 mChapHashListString[ +- 3 + // UINT8 identifier in +- // decimal +- (1 + 3) * (ARRAY_SIZE (mChapHash) - 1) + // comma prepended for +- // entries after the +- // first +- 1 + // extra character for +- // AsciiSPrint() +- // truncation check +- 1 // terminating NUL +- ]; ++STATIC CHAR8 mChapHashListString[ ++ 3 + // UINT8 identifier in ++ // decimal ++ (1 + 3) * (ARRAY_SIZE (mChapHash) - 1) + // comma prepended for ++ // entries after the ++ // first ++ 1 + // extra character for ++ // AsciiSPrint() ++ // truncation check ++ 1 // terminating NUL ++]; + + /** + Initiator calculates its own expected hash value. +@@ -82,13 +82,13 @@ STATIC CHAR8 mChapHashListString[ + **/ + EFI_STATUS + IScsiCHAPCalculateResponse ( +- IN UINT32 ChapIdentifier, +- IN CHAR8 *ChapSecret, +- IN UINT32 SecretLength, +- IN UINT8 *ChapChallenge, +- IN UINT32 ChallengeLength, +- IN CONST CHAP_HASH *Hash, +- OUT UINT8 *ChapResponse ++ IN UINT32 ChapIdentifier, ++ IN CHAR8 *ChapSecret, ++ IN UINT32 SecretLength, ++ IN UINT8 *ChapChallenge, ++ IN UINT32 ChallengeLength, ++ IN CONST CHAP_HASH *Hash, ++ OUT UINT8 *ChapResponse + ) + { + UINTN ContextSize; +@@ -103,7 +103,7 @@ IScsiCHAPCalculateResponse ( + ASSERT (Hash != NULL); + + ContextSize = Hash->GetContextSize (); +- Ctx = AllocatePool (ContextSize); ++ Ctx = AllocatePool (ContextSize); + if (Ctx == NULL) { + return EFI_OUT_OF_RESOURCES; + } +@@ -117,7 +117,7 @@ IScsiCHAPCalculateResponse ( + // + // Hash Identifier - Only calculate 1 byte data (RFC1994) + // +- IdByte[0] = (CHAR8) ChapIdentifier; ++ IdByte[0] = (CHAR8)ChapIdentifier; + if (!Hash->Update (Ctx, IdByte, 1)) { + goto Exit; + } +@@ -170,9 +170,9 @@ IScsiCHAPAuthTarget ( + UINT8 VerifyRsp[ISCSI_CHAP_MAX_DIGEST_SIZE]; + INTN Mismatch; + +- Status = EFI_SUCCESS; ++ Status = EFI_SUCCESS; + +- SecretSize = (UINT32) AsciiStrLen (AuthData->AuthConfig->ReverseCHAPSecret); ++ SecretSize = (UINT32)AsciiStrLen (AuthData->AuthConfig->ReverseCHAPSecret); + + ASSERT (AuthData->Hash != NULL); + +@@ -198,7 +198,6 @@ IScsiCHAPAuthTarget ( + return Status; + } + +- + /** + This function checks the received iSCSI Login Response during the security + negotiation stage. +@@ -216,33 +215,34 @@ IScsiCHAPOnRspReceived ( + IN ISCSI_CONNECTION *Conn + ) + { +- EFI_STATUS Status; +- ISCSI_SESSION *Session; +- ISCSI_CHAP_AUTH_DATA *AuthData; +- CHAR8 *Value; +- UINT8 *Data; +- UINT32 Len; +- LIST_ENTRY *KeyValueList; +- UINTN Algorithm; +- CHAR8 *Identifier; +- CHAR8 *Challenge; +- CHAR8 *Name; +- CHAR8 *Response; +- UINT8 TargetRsp[ISCSI_CHAP_MAX_DIGEST_SIZE]; +- UINT32 RspLen; +- UINTN Result; +- UINTN HashIndex; ++ EFI_STATUS Status; ++ ISCSI_SESSION *Session; ++ ISCSI_CHAP_AUTH_DATA *AuthData; ++ CHAR8 *Value; ++ UINT8 *Data; ++ UINT32 Len; ++ LIST_ENTRY *KeyValueList; ++ UINTN Algorithm; ++ CHAR8 *Identifier; ++ CHAR8 *Challenge; ++ CHAR8 *Name; ++ CHAR8 *Response; ++ UINT8 TargetRsp[ISCSI_CHAP_MAX_DIGEST_SIZE]; ++ UINT32 RspLen; ++ UINTN Result; ++ UINTN HashIndex; + + ASSERT (Conn->CurrentStage == ISCSI_SECURITY_NEGOTIATION); + ASSERT (Conn->RspQue.BufNum != 0); + +- Session = Conn->Session; +- AuthData = &Session->AuthData.CHAP; +- Len = Conn->RspQue.BufSize; +- Data = AllocateZeroPool (Len); ++ Session = Conn->Session; ++ AuthData = &Session->AuthData.CHAP; ++ Len = Conn->RspQue.BufSize; ++ Data = AllocateZeroPool (Len); + if (Data == NULL) { + return EFI_OUT_OF_RESOURCES; + } ++ + // + // Copy the data in case the data spans over multiple PDUs. + // +@@ -251,7 +251,7 @@ IScsiCHAPOnRspReceived ( + // + // Build the key-value list from the data segment of the Login Response. + // +- KeyValueList = IScsiBuildKeyValueList ((CHAR8 *) Data, Len); ++ KeyValueList = IScsiBuildKeyValueList ((CHAR8 *)Data, Len); + if (KeyValueList == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; +@@ -260,179 +260,184 @@ IScsiCHAPOnRspReceived ( + Status = EFI_PROTOCOL_ERROR; + + switch (Conn->AuthStep) { +- case ISCSI_AUTH_INITIAL: +- // +- // The first Login Response. +- // +- Value = IScsiGetValueByKeyFromList ( +- KeyValueList, +- ISCSI_KEY_TARGET_PORTAL_GROUP_TAG +- ); +- if (Value == NULL) { +- goto ON_EXIT; +- } +- +- Result = IScsiNetNtoi (Value); +- if (Result > 0xFFFF) { +- goto ON_EXIT; +- } +- +- Session->TargetPortalGroupTag = (UINT16) Result; +- +- Value = IScsiGetValueByKeyFromList ( +- KeyValueList, +- ISCSI_KEY_AUTH_METHOD +- ); +- if (Value == NULL) { +- goto ON_EXIT; +- } +- // +- // Initiator mandates CHAP authentication but target replies without +- // "CHAP", or initiator suggets "None" but target replies with some kind of +- // auth method. +- // +- if (Session->AuthType == ISCSI_AUTH_TYPE_NONE) { +- if (AsciiStrCmp (Value, ISCSI_KEY_VALUE_NONE) != 0) { ++ case ISCSI_AUTH_INITIAL: ++ // ++ // The first Login Response. ++ // ++ Value = IScsiGetValueByKeyFromList ( ++ KeyValueList, ++ ISCSI_KEY_TARGET_PORTAL_GROUP_TAG ++ ); ++ if (Value == NULL) { + goto ON_EXIT; + } +- } else if (Session->AuthType == ISCSI_AUTH_TYPE_CHAP) { +- if (AsciiStrCmp (Value, ISCSI_AUTH_METHOD_CHAP) != 0) { ++ ++ Result = IScsiNetNtoi (Value); ++ if (Result > 0xFFFF) { + goto ON_EXIT; + } +- } else { +- goto ON_EXIT; +- } + +- // +- // Transit to CHAP step one. +- // +- Conn->AuthStep = ISCSI_CHAP_STEP_ONE; +- Status = EFI_SUCCESS; +- break; ++ Session->TargetPortalGroupTag = (UINT16)Result; + +- case ISCSI_CHAP_STEP_TWO: +- // +- // The Target replies with CHAP_A= CHAP_I= CHAP_C= +- // +- Value = IScsiGetValueByKeyFromList ( +- KeyValueList, +- ISCSI_KEY_CHAP_ALGORITHM +- ); +- if (Value == NULL) { +- goto ON_EXIT; +- } +- +- Algorithm = IScsiNetNtoi (Value); +- for (HashIndex = 0; HashIndex < ARRAY_SIZE (mChapHash); HashIndex++) { +- if (Algorithm == mChapHash[HashIndex].Algorithm) { +- break; ++ Value = IScsiGetValueByKeyFromList ( ++ KeyValueList, ++ ISCSI_KEY_AUTH_METHOD ++ ); ++ if (Value == NULL) { ++ goto ON_EXIT; + } +- } +- if (HashIndex == ARRAY_SIZE (mChapHash)) { ++ + // +- // Unsupported algorithm is chosen by target. ++ // Initiator mandates CHAP authentication but target replies without ++ // "CHAP", or initiator suggets "None" but target replies with some kind of ++ // auth method. + // +- goto ON_EXIT; +- } +- // +- // Remember the target's chosen hash algorithm. +- // +- ASSERT (AuthData->Hash == NULL); +- AuthData->Hash = &mChapHash[HashIndex]; ++ if (Session->AuthType == ISCSI_AUTH_TYPE_NONE) { ++ if (AsciiStrCmp (Value, ISCSI_KEY_VALUE_NONE) != 0) { ++ goto ON_EXIT; ++ } ++ } else if (Session->AuthType == ISCSI_AUTH_TYPE_CHAP) { ++ if (AsciiStrCmp (Value, ISCSI_AUTH_METHOD_CHAP) != 0) { ++ goto ON_EXIT; ++ } ++ } else { ++ goto ON_EXIT; ++ } + +- Identifier = IScsiGetValueByKeyFromList ( +- KeyValueList, +- ISCSI_KEY_CHAP_IDENTIFIER +- ); +- if (Identifier == NULL) { +- goto ON_EXIT; +- } +- +- Challenge = IScsiGetValueByKeyFromList ( +- KeyValueList, +- ISCSI_KEY_CHAP_CHALLENGE +- ); +- if (Challenge == NULL) { +- goto ON_EXIT; +- } +- // +- // Process the CHAP identifier and CHAP Challenge from Target. +- // Calculate Response value. +- // +- Result = IScsiNetNtoi (Identifier); +- if (Result > 0xFF) { +- goto ON_EXIT; +- } +- +- AuthData->InIdentifier = (UINT32) Result; +- AuthData->InChallengeLength = (UINT32) sizeof (AuthData->InChallenge); +- Status = IScsiHexToBin ( +- (UINT8 *) AuthData->InChallenge, +- &AuthData->InChallengeLength, +- Challenge +- ); +- if (EFI_ERROR (Status)) { +- Status = EFI_PROTOCOL_ERROR; +- goto ON_EXIT; +- } +- Status = IScsiCHAPCalculateResponse ( +- AuthData->InIdentifier, +- AuthData->AuthConfig->CHAPSecret, +- (UINT32) AsciiStrLen (AuthData->AuthConfig->CHAPSecret), +- AuthData->InChallenge, +- AuthData->InChallengeLength, +- AuthData->Hash, +- AuthData->CHAPResponse +- ); ++ // ++ // Transit to CHAP step one. ++ // ++ Conn->AuthStep = ISCSI_CHAP_STEP_ONE; ++ Status = EFI_SUCCESS; ++ break; + +- // +- // Transit to next step. +- // +- Conn->AuthStep = ISCSI_CHAP_STEP_THREE; +- break; ++ case ISCSI_CHAP_STEP_TWO: ++ // ++ // The Target replies with CHAP_A= CHAP_I= CHAP_C= ++ // ++ Value = IScsiGetValueByKeyFromList ( ++ KeyValueList, ++ ISCSI_KEY_CHAP_ALGORITHM ++ ); ++ if (Value == NULL) { ++ goto ON_EXIT; ++ } + +- case ISCSI_CHAP_STEP_THREE: +- // +- // One way CHAP authentication and the target would like to +- // authenticate us. +- // +- Status = EFI_SUCCESS; +- break; ++ Algorithm = IScsiNetNtoi (Value); ++ for (HashIndex = 0; HashIndex < ARRAY_SIZE (mChapHash); HashIndex++) { ++ if (Algorithm == mChapHash[HashIndex].Algorithm) { ++ break; ++ } ++ } + +- case ISCSI_CHAP_STEP_FOUR: +- ASSERT (AuthData->AuthConfig->CHAPType == ISCSI_CHAP_MUTUAL); +- // +- // The forth step, CHAP_N= CHAP_R= is received from Target. +- // +- Name = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_NAME); +- if (Name == NULL) { +- goto ON_EXIT; +- } +- +- Response = IScsiGetValueByKeyFromList ( +- KeyValueList, +- ISCSI_KEY_CHAP_RESPONSE ++ if (HashIndex == ARRAY_SIZE (mChapHash)) { ++ // ++ // Unsupported algorithm is chosen by target. ++ // ++ goto ON_EXIT; ++ } ++ ++ // ++ // Remember the target's chosen hash algorithm. ++ // ++ ASSERT (AuthData->Hash == NULL); ++ AuthData->Hash = &mChapHash[HashIndex]; ++ ++ Identifier = IScsiGetValueByKeyFromList ( ++ KeyValueList, ++ ISCSI_KEY_CHAP_IDENTIFIER ++ ); ++ if (Identifier == NULL) { ++ goto ON_EXIT; ++ } ++ ++ Challenge = IScsiGetValueByKeyFromList ( ++ KeyValueList, ++ ISCSI_KEY_CHAP_CHALLENGE ++ ); ++ if (Challenge == NULL) { ++ goto ON_EXIT; ++ } ++ ++ // ++ // Process the CHAP identifier and CHAP Challenge from Target. ++ // Calculate Response value. ++ // ++ Result = IScsiNetNtoi (Identifier); ++ if (Result > 0xFF) { ++ goto ON_EXIT; ++ } ++ ++ AuthData->InIdentifier = (UINT32)Result; ++ AuthData->InChallengeLength = (UINT32)sizeof (AuthData->InChallenge); ++ Status = IScsiHexToBin ( ++ (UINT8 *)AuthData->InChallenge, ++ &AuthData->InChallengeLength, ++ Challenge ++ ); ++ if (EFI_ERROR (Status)) { ++ Status = EFI_PROTOCOL_ERROR; ++ goto ON_EXIT; ++ } ++ ++ Status = IScsiCHAPCalculateResponse ( ++ AuthData->InIdentifier, ++ AuthData->AuthConfig->CHAPSecret, ++ (UINT32)AsciiStrLen (AuthData->AuthConfig->CHAPSecret), ++ AuthData->InChallenge, ++ AuthData->InChallengeLength, ++ AuthData->Hash, ++ AuthData->CHAPResponse + ); +- if (Response == NULL) { +- goto ON_EXIT; +- } +- +- ASSERT (AuthData->Hash != NULL); +- RspLen = AuthData->Hash->DigestSize; +- Status = IScsiHexToBin (TargetRsp, &RspLen, Response); +- if (EFI_ERROR (Status) || RspLen != AuthData->Hash->DigestSize) { +- Status = EFI_PROTOCOL_ERROR; +- goto ON_EXIT; +- } + +- // +- // Check the CHAP Name and Response replied by Target. +- // +- Status = IScsiCHAPAuthTarget (AuthData, TargetRsp); +- break; ++ // ++ // Transit to next step. ++ // ++ Conn->AuthStep = ISCSI_CHAP_STEP_THREE; ++ break; ++ ++ case ISCSI_CHAP_STEP_THREE: ++ // ++ // One way CHAP authentication and the target would like to ++ // authenticate us. ++ // ++ Status = EFI_SUCCESS; ++ break; ++ ++ case ISCSI_CHAP_STEP_FOUR: ++ ASSERT (AuthData->AuthConfig->CHAPType == ISCSI_CHAP_MUTUAL); ++ // ++ // The forth step, CHAP_N= CHAP_R= is received from Target. ++ // ++ Name = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_NAME); ++ if (Name == NULL) { ++ goto ON_EXIT; ++ } ++ ++ Response = IScsiGetValueByKeyFromList ( ++ KeyValueList, ++ ISCSI_KEY_CHAP_RESPONSE ++ ); ++ if (Response == NULL) { ++ goto ON_EXIT; ++ } + +- default: +- break; ++ ASSERT (AuthData->Hash != NULL); ++ RspLen = AuthData->Hash->DigestSize; ++ Status = IScsiHexToBin (TargetRsp, &RspLen, Response); ++ if (EFI_ERROR (Status) || (RspLen != AuthData->Hash->DigestSize)) { ++ Status = EFI_PROTOCOL_ERROR; ++ goto ON_EXIT; ++ } ++ ++ // ++ // Check the CHAP Name and Response replied by Target. ++ // ++ Status = IScsiCHAPAuthTarget (AuthData, TargetRsp); ++ break; ++ ++ default: ++ break; + } + + ON_EXIT: +@@ -446,7 +451,6 @@ ON_EXIT: + return Status; + } + +- + /** + This function fills the CHAP authentication information into the login PDU + during the security negotiation stage in the iSCSI connection login. +@@ -467,140 +471,142 @@ IScsiCHAPToSendReq ( + IN OUT NET_BUF *Pdu + ) + { +- EFI_STATUS Status; +- ISCSI_SESSION *Session; +- ISCSI_LOGIN_REQUEST *LoginReq; +- ISCSI_CHAP_AUTH_DATA *AuthData; +- CHAR8 *Value; +- CHAR8 ValueStr[256]; +- CHAR8 *Response; +- UINT32 RspLen; +- CHAR8 *Challenge; +- UINT32 ChallengeLen; +- EFI_STATUS BinToHexStatus; ++ EFI_STATUS Status; ++ ISCSI_SESSION *Session; ++ ISCSI_LOGIN_REQUEST *LoginReq; ++ ISCSI_CHAP_AUTH_DATA *AuthData; ++ CHAR8 *Value; ++ CHAR8 ValueStr[256]; ++ CHAR8 *Response; ++ UINT32 RspLen; ++ CHAR8 *Challenge; ++ UINT32 ChallengeLen; ++ EFI_STATUS BinToHexStatus; + + ASSERT (Conn->CurrentStage == ISCSI_SECURITY_NEGOTIATION); + +- Session = Conn->Session; +- AuthData = &Session->AuthData.CHAP; +- LoginReq = (ISCSI_LOGIN_REQUEST *) NetbufGetByte (Pdu, 0, 0); ++ Session = Conn->Session; ++ AuthData = &Session->AuthData.CHAP; ++ LoginReq = (ISCSI_LOGIN_REQUEST *)NetbufGetByte (Pdu, 0, 0); + if (LoginReq == NULL) { + return EFI_PROTOCOL_ERROR; + } +- Status = EFI_SUCCESS; + +- RspLen = 2 * ISCSI_CHAP_MAX_DIGEST_SIZE + 3; +- Response = AllocateZeroPool (RspLen); ++ Status = EFI_SUCCESS; ++ ++ RspLen = 2 * ISCSI_CHAP_MAX_DIGEST_SIZE + 3; ++ Response = AllocateZeroPool (RspLen); + if (Response == NULL) { + return EFI_OUT_OF_RESOURCES; + } + +- ChallengeLen = 2 * ISCSI_CHAP_MAX_DIGEST_SIZE + 3; +- Challenge = AllocateZeroPool (ChallengeLen); ++ ChallengeLen = 2 * ISCSI_CHAP_MAX_DIGEST_SIZE + 3; ++ Challenge = AllocateZeroPool (ChallengeLen); + if (Challenge == NULL) { + FreePool (Response); + return EFI_OUT_OF_RESOURCES; + } + + switch (Conn->AuthStep) { +- case ISCSI_AUTH_INITIAL: +- // +- // It's the initial Login Request. Fill in the key=value pairs mandatory +- // for the initial Login Request. +- // +- IScsiAddKeyValuePair ( +- Pdu, +- ISCSI_KEY_INITIATOR_NAME, +- mPrivate->InitiatorName +- ); +- IScsiAddKeyValuePair (Pdu, ISCSI_KEY_SESSION_TYPE, "Normal"); +- IScsiAddKeyValuePair ( +- Pdu, +- ISCSI_KEY_TARGET_NAME, +- Session->ConfigData->SessionConfigData.TargetName +- ); +- +- if (Session->AuthType == ISCSI_AUTH_TYPE_NONE) { +- Value = ISCSI_KEY_VALUE_NONE; +- ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT); +- } else { +- Value = ISCSI_AUTH_METHOD_CHAP; +- } +- +- IScsiAddKeyValuePair (Pdu, ISCSI_KEY_AUTH_METHOD, Value); ++ case ISCSI_AUTH_INITIAL: ++ // ++ // It's the initial Login Request. Fill in the key=value pairs mandatory ++ // for the initial Login Request. ++ // ++ IScsiAddKeyValuePair ( ++ Pdu, ++ ISCSI_KEY_INITIATOR_NAME, ++ mPrivate->InitiatorName ++ ); ++ IScsiAddKeyValuePair (Pdu, ISCSI_KEY_SESSION_TYPE, "Normal"); ++ IScsiAddKeyValuePair ( ++ Pdu, ++ ISCSI_KEY_TARGET_NAME, ++ Session->ConfigData->SessionConfigData.TargetName ++ ); + +- break; ++ if (Session->AuthType == ISCSI_AUTH_TYPE_NONE) { ++ Value = ISCSI_KEY_VALUE_NONE; ++ ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT); ++ } else { ++ Value = ISCSI_AUTH_METHOD_CHAP; ++ } + +- case ISCSI_CHAP_STEP_ONE: +- // +- // First step, send the Login Request with CHAP_A= key-value +- // pair. +- // +- IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_ALGORITHM, mChapHashListString); ++ IScsiAddKeyValuePair (Pdu, ISCSI_KEY_AUTH_METHOD, Value); + +- Conn->AuthStep = ISCSI_CHAP_STEP_TWO; +- break; ++ break; + +- case ISCSI_CHAP_STEP_THREE: +- // +- // Third step, send the Login Request with CHAP_N= CHAP_R= or +- // CHAP_N= CHAP_R= CHAP_I= CHAP_C= if target authentication is +- // required too. +- // +- // CHAP_N= +- // +- IScsiAddKeyValuePair ( +- Pdu, +- ISCSI_KEY_CHAP_NAME, +- (CHAR8 *) &AuthData->AuthConfig->CHAPName +- ); +- // +- // CHAP_R= +- // +- ASSERT (AuthData->Hash != NULL); +- BinToHexStatus = IScsiBinToHex ( +- (UINT8 *) AuthData->CHAPResponse, +- AuthData->Hash->DigestSize, +- Response, +- &RspLen +- ); +- ASSERT_EFI_ERROR (BinToHexStatus); +- IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_RESPONSE, Response); +- +- if (AuthData->AuthConfig->CHAPType == ISCSI_CHAP_MUTUAL) { ++ case ISCSI_CHAP_STEP_ONE: + // +- // CHAP_I= ++ // First step, send the Login Request with CHAP_A= key-value ++ // pair. + // +- IScsiGenRandom ((UINT8 *) &AuthData->OutIdentifier, 1); +- AsciiSPrint (ValueStr, sizeof (ValueStr), "%d", AuthData->OutIdentifier); +- IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_IDENTIFIER, ValueStr); ++ IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_ALGORITHM, mChapHashListString); ++ ++ Conn->AuthStep = ISCSI_CHAP_STEP_TWO; ++ break; ++ ++ case ISCSI_CHAP_STEP_THREE: + // +- // CHAP_C= ++ // Third step, send the Login Request with CHAP_N= CHAP_R= or ++ // CHAP_N= CHAP_R= CHAP_I= CHAP_C= if target authentication is ++ // required too. + // +- IScsiGenRandom ( +- (UINT8 *) AuthData->OutChallenge, +- AuthData->Hash->DigestSize ++ // CHAP_N= ++ // ++ IScsiAddKeyValuePair ( ++ Pdu, ++ ISCSI_KEY_CHAP_NAME, ++ (CHAR8 *)&AuthData->AuthConfig->CHAPName + ); ++ // ++ // CHAP_R= ++ // ++ ASSERT (AuthData->Hash != NULL); + BinToHexStatus = IScsiBinToHex ( +- (UINT8 *) AuthData->OutChallenge, ++ (UINT8 *)AuthData->CHAPResponse, + AuthData->Hash->DigestSize, +- Challenge, +- &ChallengeLen ++ Response, ++ &RspLen + ); + ASSERT_EFI_ERROR (BinToHexStatus); +- IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_CHALLENGE, Challenge); ++ IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_RESPONSE, Response); ++ ++ if (AuthData->AuthConfig->CHAPType == ISCSI_CHAP_MUTUAL) { ++ // ++ // CHAP_I= ++ // ++ IScsiGenRandom ((UINT8 *)&AuthData->OutIdentifier, 1); ++ AsciiSPrint (ValueStr, sizeof (ValueStr), "%d", AuthData->OutIdentifier); ++ IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_IDENTIFIER, ValueStr); ++ // ++ // CHAP_C= ++ // ++ IScsiGenRandom ( ++ (UINT8 *)AuthData->OutChallenge, ++ AuthData->Hash->DigestSize ++ ); ++ BinToHexStatus = IScsiBinToHex ( ++ (UINT8 *)AuthData->OutChallenge, ++ AuthData->Hash->DigestSize, ++ Challenge, ++ &ChallengeLen ++ ); ++ ASSERT_EFI_ERROR (BinToHexStatus); ++ IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_CHALLENGE, Challenge); ++ ++ Conn->AuthStep = ISCSI_CHAP_STEP_FOUR; ++ } + +- Conn->AuthStep = ISCSI_CHAP_STEP_FOUR; +- } +- // +- // Set the stage transition flag. +- // +- ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT); +- break; ++ // ++ // Set the stage transition flag. ++ // ++ ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT); ++ break; + +- default: +- Status = EFI_PROTOCOL_ERROR; +- break; ++ default: ++ Status = EFI_PROTOCOL_ERROR; ++ break; + } + + FreePool (Response); +@@ -621,14 +627,14 @@ IScsiCHAPInitHashList ( + VOID + ) + { +- CHAR8 *Position; +- UINTN Left; +- UINTN HashIndex; +- CONST CHAP_HASH *Hash; +- UINTN Printed; ++ CHAR8 *Position; ++ UINTN Left; ++ UINTN HashIndex; ++ CONST CHAP_HASH *Hash; ++ UINTN Printed; + + Position = mChapHashListString; +- Left = sizeof (mChapHashListString); ++ Left = sizeof (mChapHashListString); + for (HashIndex = 0; HashIndex < ARRAY_SIZE (mChapHash); HashIndex++) { + Hash = &mChapHash[HashIndex]; + +@@ -657,7 +663,7 @@ IScsiCHAPInitHashList ( + ASSERT (Printed + 1 < Left); + + Position += Printed; +- Left -= Printed; ++ Left -= Printed; + + // + // Sanity-check the digest size for Hash. +diff --git a/NetworkPkg/IScsiDxe/IScsiMisc.c b/NetworkPkg/IScsiDxe/IScsiMisc.c +index 4069547867..b3ea90158f 100644 +--- a/NetworkPkg/IScsiDxe/IScsiMisc.c ++++ b/NetworkPkg/IScsiDxe/IScsiMisc.c +@@ -21,22 +21,21 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 IScsiHexString[] = "0123456789ABCDEFa + **/ + VOID + IScsiStrTrim ( +- IN OUT CHAR16 *Str, +- IN CHAR16 CharC ++ IN OUT CHAR16 *Str, ++ IN CHAR16 CharC + ) + { + CHAR16 *Pointer1; + CHAR16 *Pointer2; + + if (*Str == 0) { +- return ; ++ return; + } + + // + // Trim off the leading and trailing characters c + // + for (Pointer1 = Str; (*Pointer1 != 0) && (*Pointer1 == CharC); Pointer1++) { +- ; + } + + Pointer2 = Str; +@@ -47,18 +46,18 @@ IScsiStrTrim ( + } + } else { + while (*Pointer1 != 0) { +- *Pointer2 = *Pointer1; +- Pointer1++; +- Pointer2++; ++ *Pointer2 = *Pointer1; ++ Pointer1++; ++ Pointer2++; + } ++ + *Pointer2 = 0; + } + +- +- for (Pointer1 = Str + StrLen(Str) - 1; Pointer1 >= Str && *Pointer1 == CharC; Pointer1--) { +- ; ++ for (Pointer1 = Str + StrLen (Str) - 1; Pointer1 >= Str && *Pointer1 == CharC; Pointer1--) { + } +- if (Pointer1 != Str + StrLen(Str) - 1) { ++ ++ if (Pointer1 != Str + StrLen (Str) - 1) { + *(Pointer1 + 1) = 0; + } + } +@@ -101,10 +100,9 @@ IScsiGetSubnetMaskPrefixLength ( + Len++; + } + +- return (UINT8) (32 - Len); ++ return (UINT8)(32 - Len); + } + +- + /** + Convert the hexadecimal encoded LUN string into the 64-bit LUN. + +@@ -128,15 +126,15 @@ IScsiAsciiStrToLun ( + + ZeroMem (Lun, 8); + ZeroMem (TemStr, 2); +- ZeroMem ((UINT8 *) Value, sizeof (Value)); ++ ZeroMem ((UINT8 *)Value, sizeof (Value)); + SizeStr = AsciiStrLen (Str); + IndexValue = 0; + IndexNum = 0; + +- for (Index = 0; Index < SizeStr; Index ++) { ++ for (Index = 0; Index < SizeStr; Index++) { + TemStr[0] = Str[Index]; +- TemValue = (UINT8) AsciiStrHexToUint64 (TemStr); +- if (TemValue == 0 && TemStr[0] != '0') { ++ TemValue = (UINT8)AsciiStrHexToUint64 (TemStr); ++ if ((TemValue == 0) && (TemStr[0] != '0')) { + if ((TemStr[0] != '-') || (IndexNum == 0)) { + // + // Invalid Lun Char. +@@ -155,6 +153,7 @@ IScsiAsciiStrToLun ( + // + return EFI_INVALID_PARAMETER; + } ++ + // + // Restart str index for the next lun value. + // +@@ -172,11 +171,11 @@ IScsiAsciiStrToLun ( + // + // Combine UINT16 value. + // +- Value[IndexValue] = (UINT16) ((Value[IndexValue] << 4) + TemValue); ++ Value[IndexValue] = (UINT16)((Value[IndexValue] << 4) + TemValue); + } + +- for (Index = 0; Index <= IndexValue; Index ++) { +- *((UINT16 *) &Lun[Index * 2]) = HTONS (Value[Index]); ++ for (Index = 0; Index <= IndexValue; Index++) { ++ *((UINT16 *)&Lun[Index * 2]) = HTONS (Value[Index]); + } + + return EFI_SUCCESS; +@@ -201,26 +200,26 @@ IScsiLunToUnicodeStr ( + TempStr = Str; + + for (Index = 0; Index < 4; Index++) { +- + if ((Lun[2 * Index] | Lun[2 * Index + 1]) == 0) { + CopyMem (TempStr, L"0-", sizeof (L"0-")); + } else { +- TempStr[0] = (CHAR16) IScsiHexString[Lun[2 * Index] >> 4]; +- TempStr[1] = (CHAR16) IScsiHexString[Lun[2 * Index] & 0x0F]; +- TempStr[2] = (CHAR16) IScsiHexString[Lun[2 * Index + 1] >> 4]; +- TempStr[3] = (CHAR16) IScsiHexString[Lun[2 * Index + 1] & 0x0F]; +- TempStr[4] = L'-'; +- TempStr[5] = 0; ++ TempStr[0] = (CHAR16)IScsiHexString[Lun[2 * Index] >> 4]; ++ TempStr[1] = (CHAR16)IScsiHexString[Lun[2 * Index] & 0x0F]; ++ TempStr[2] = (CHAR16)IScsiHexString[Lun[2 * Index + 1] >> 4]; ++ TempStr[3] = (CHAR16)IScsiHexString[Lun[2 * Index + 1] & 0x0F]; ++ TempStr[4] = L'-'; ++ TempStr[5] = 0; + + IScsiStrTrim (TempStr, L'0'); + } + + TempStr += StrLen (TempStr); + } ++ + // + // Remove the last '-' + // +- ASSERT (StrLen(Str) >= 1); ++ ASSERT (StrLen (Str) >= 1); + Str[StrLen (Str) - 1] = 0; + + for (Index = StrLen (Str) - 1; Index > 1; Index = Index - 2) { +@@ -246,26 +245,24 @@ IScsiLunToUnicodeStr ( + **/ + EFI_STATUS + IScsiAsciiStrToIp ( +- IN CHAR8 *Str, +- IN UINT8 IpMode, +- OUT EFI_IP_ADDRESS *Ip ++ IN CHAR8 *Str, ++ IN UINT8 IpMode, ++ OUT EFI_IP_ADDRESS *Ip + ) + { +- EFI_STATUS Status; ++ EFI_STATUS Status; + +- if (IpMode == IP_MODE_IP4 || IpMode == IP_MODE_AUTOCONFIG_IP4) { ++ if ((IpMode == IP_MODE_IP4) || (IpMode == IP_MODE_AUTOCONFIG_IP4)) { + return NetLibAsciiStrToIp4 (Str, &Ip->v4); +- +- } else if (IpMode == IP_MODE_IP6 || IpMode == IP_MODE_AUTOCONFIG_IP6) { ++ } else if ((IpMode == IP_MODE_IP6) || (IpMode == IP_MODE_AUTOCONFIG_IP6)) { + return NetLibAsciiStrToIp6 (Str, &Ip->v6); +- + } else if (IpMode == IP_MODE_AUTOCONFIG) { + Status = NetLibAsciiStrToIp4 (Str, &Ip->v4); + if (!EFI_ERROR (Status)) { + return Status; + } +- return NetLibAsciiStrToIp6 (Str, &Ip->v6); + ++ return NetLibAsciiStrToIp6 (Str, &Ip->v6); + } + + return EFI_INVALID_PARAMETER; +@@ -292,14 +289,14 @@ IScsiMacAddrToStr ( + CHAR16 *String; + + for (Index = 0; Index < Len; Index++) { +- Str[3 * Index] = (CHAR16) IScsiHexString[(Mac->Addr[Index] >> 4) & 0x0F]; +- Str[3 * Index + 1] = (CHAR16) IScsiHexString[Mac->Addr[Index] & 0x0F]; +- Str[3 * Index + 2] = L':'; ++ Str[3 * Index] = (CHAR16)IScsiHexString[(Mac->Addr[Index] >> 4) & 0x0F]; ++ Str[3 * Index + 1] = (CHAR16)IScsiHexString[Mac->Addr[Index] & 0x0F]; ++ Str[3 * Index + 2] = L':'; + } + +- String = &Str[3 * Index - 1] ; ++ String = &Str[3 * Index - 1]; + if (VlanId != 0) { +- String += UnicodeSPrint (String, 6 * sizeof (CHAR16), L"\\%04x", (UINTN) VlanId); ++ String += UnicodeSPrint (String, 6 * sizeof (CHAR16), L"\\%04x", (UINTN)VlanId); + } + + *String = L'\0'; +@@ -322,15 +319,15 @@ IScsiMacAddrToStr ( + **/ + EFI_STATUS + IScsiBinToHex ( +- IN UINT8 *BinBuffer, +- IN UINT32 BinLength, +- IN OUT CHAR8 *HexStr, +- IN OUT UINT32 *HexLength ++ IN UINT8 *BinBuffer, ++ IN UINT32 BinLength, ++ IN OUT CHAR8 *HexStr, ++ IN OUT UINT32 *HexLength + ) + { +- UINT32 HexLengthMin; +- UINT32 HexLengthProvided; +- UINT32 Index; ++ UINT32 HexLengthMin; ++ UINT32 HexLengthProvided; ++ UINT32 Index; + + if ((HexStr == NULL) || (BinBuffer == NULL) || (BinLength == 0)) { + return EFI_INVALID_PARAMETER; +@@ -340,12 +337,13 @@ IScsiBinToHex ( + // Safely calculate: HexLengthMin := BinLength * 2 + 3. + // + if (RETURN_ERROR (SafeUint32Mult (BinLength, 2, &HexLengthMin)) || +- RETURN_ERROR (SafeUint32Add (HexLengthMin, 3, &HexLengthMin))) { ++ RETURN_ERROR (SafeUint32Add (HexLengthMin, 3, &HexLengthMin))) ++ { + return EFI_BAD_BUFFER_SIZE; + } + + HexLengthProvided = *HexLength; +- *HexLength = HexLengthMin; ++ *HexLength = HexLengthMin; + if (HexLengthProvided < HexLengthMin) { + return EFI_BUFFER_TOO_SMALL; + } +@@ -366,7 +364,6 @@ IScsiBinToHex ( + return EFI_SUCCESS; + } + +- + /** + Convert the hexadecimal string into a binary encoded buffer. + +@@ -385,9 +382,9 @@ IScsiBinToHex ( + **/ + EFI_STATUS + IScsiHexToBin ( +- IN OUT UINT8 *BinBuffer, +- IN OUT UINT32 *BinLength, +- IN CHAR8 *HexStr ++ IN OUT UINT8 *BinBuffer, ++ IN OUT UINT32 *BinLength, ++ IN CHAR8 *HexStr + ) + { + UINTN BinLengthMin; +@@ -411,9 +408,10 @@ IScsiHexToBin ( + // + // Reject an empty hex string; reject a stray nibble. + // +- if (Length == 0 || Length % 2 != 0) { ++ if ((Length == 0) || (Length % 2 != 0)) { + return EFI_INVALID_PARAMETER; + } ++ + // + // Check if the caller provides enough room for the decoded blob. + // +@@ -421,31 +419,33 @@ IScsiHexToBin ( + if (BinLengthMin > MAX_UINT32) { + return EFI_BAD_BUFFER_SIZE; + } ++ + BinLengthProvided = *BinLength; +- *BinLength = (UINT32)BinLengthMin; ++ *BinLength = (UINT32)BinLengthMin; + if (BinLengthProvided < BinLengthMin) { + return EFI_BUFFER_TOO_SMALL; + } + +- for (Index = 0; Index < Length; Index ++) { ++ for (Index = 0; Index < Length; Index++) { + TemStr[0] = HexStr[Index]; +- Digit = (UINT8) AsciiStrHexToUint64 (TemStr); +- if (Digit == 0 && TemStr[0] != '0') { ++ Digit = (UINT8)AsciiStrHexToUint64 (TemStr); ++ if ((Digit == 0) && (TemStr[0] != '0')) { + // + // Invalid Hex Char. + // + return EFI_INVALID_PARAMETER; + } ++ + if ((Index & 1) == 0) { +- BinBuffer [Index/2] = Digit; ++ BinBuffer[Index/2] = Digit; + } else { +- BinBuffer [Index/2] = (UINT8) ((BinBuffer [Index/2] << 4) + Digit); ++ BinBuffer[Index/2] = (UINT8)((BinBuffer[Index/2] << 4) + Digit); + } + } ++ + return EFI_SUCCESS; + } + +- + /** + Convert the decimal-constant string or hex-constant string into a numerical value. + +@@ -468,7 +468,6 @@ IScsiNetNtoi ( + return AsciiStrDecimalToUintn (Str); + } + +- + /** + Generate random numbers. + +@@ -486,12 +485,11 @@ IScsiGenRandom ( + + while (RandLength > 0) { + Random = NET_RANDOM (NetRandomInitSeed ()); +- *Rand++ = (UINT8) (Random); ++ *Rand++ = (UINT8)(Random); + RandLength--; + } + } + +- + /** + Check whether UNDI protocol supports IPv6. + +@@ -505,22 +503,22 @@ IScsiGenRandom ( + **/ + EFI_STATUS + IScsiCheckIpv6Support ( +- IN EFI_HANDLE ControllerHandle, +- IN EFI_HANDLE Image, +- OUT BOOLEAN *Ipv6Support ++ IN EFI_HANDLE ControllerHandle, ++ IN EFI_HANDLE Image, ++ OUT BOOLEAN *Ipv6Support + ) + { +- EFI_HANDLE Handle; +- EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; +- EFI_STATUS Status; +- EFI_GUID *InfoTypesBuffer; +- UINTN InfoTypeBufferCount; +- UINTN TypeIndex; +- BOOLEAN Supported; +- VOID *InfoBlock; +- UINTN InfoBlockSize; +- +- EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii; ++ EFI_HANDLE Handle; ++ EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; ++ EFI_STATUS Status; ++ EFI_GUID *InfoTypesBuffer; ++ UINTN InfoTypeBufferCount; ++ UINTN TypeIndex; ++ BOOLEAN Supported; ++ VOID *InfoBlock; ++ UINTN InfoBlockSize; ++ ++ EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii; + + ASSERT (Ipv6Support != NULL); + +@@ -530,7 +528,7 @@ IScsiCheckIpv6Support ( + Status = gBS->OpenProtocol ( + ControllerHandle, + &gEfiNetworkInterfaceIdentifierProtocolGuid_31, +- (VOID **) &Nii, ++ (VOID **)&Nii, + Image, + ControllerHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -552,16 +550,16 @@ IScsiCheckIpv6Support ( + Status = gBS->HandleProtocol ( + Handle, + &gEfiAdapterInformationProtocolGuid, +- (VOID *) &Aip ++ (VOID *)&Aip + ); +- if (EFI_ERROR (Status) || Aip == NULL) { ++ if (EFI_ERROR (Status) || (Aip == NULL)) { + return EFI_NOT_FOUND; + } + + InfoTypesBuffer = NULL; + InfoTypeBufferCount = 0; +- Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); +- if (EFI_ERROR (Status) || InfoTypesBuffer == NULL) { ++ Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); ++ if (EFI_ERROR (Status) || (InfoTypesBuffer == NULL)) { + FreePool (InfoTypesBuffer); + return EFI_NOT_FOUND; + } +@@ -584,13 +582,13 @@ IScsiCheckIpv6Support ( + // + InfoBlock = NULL; + InfoBlockSize = 0; +- Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize); +- if (EFI_ERROR (Status) || InfoBlock == NULL) { ++ Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize); ++ if (EFI_ERROR (Status) || (InfoBlock == NULL)) { + FreePool (InfoBlock); + return EFI_NOT_FOUND; + } + +- *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *) InfoBlock)->Ipv6Support; ++ *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *)InfoBlock)->Ipv6Support; + FreePool (InfoBlock); + + return EFI_SUCCESS; +@@ -613,12 +611,12 @@ IScsiAddNic ( + IN EFI_HANDLE Image + ) + { +- EFI_STATUS Status; +- ISCSI_NIC_INFO *NicInfo; +- LIST_ENTRY *Entry; +- EFI_MAC_ADDRESS MacAddr; +- UINTN HwAddressSize; +- UINT16 VlanId; ++ EFI_STATUS Status; ++ ISCSI_NIC_INFO *NicInfo; ++ LIST_ENTRY *Entry; ++ EFI_MAC_ADDRESS MacAddr; ++ UINTN HwAddressSize; ++ UINT16 VlanId; + + // + // Get MAC address of this network device. +@@ -638,9 +636,10 @@ IScsiAddNic ( + // + NET_LIST_FOR_EACH (Entry, &mPrivate->NicInfoList) { + NicInfo = NET_LIST_USER_STRUCT (Entry, ISCSI_NIC_INFO, Link); +- if (NicInfo->HwAddressSize == HwAddressSize && +- CompareMem (&NicInfo->PermanentAddress, MacAddr.Addr, HwAddressSize) == 0 && +- NicInfo->VlanId == VlanId) { ++ if ((NicInfo->HwAddressSize == HwAddressSize) && ++ (CompareMem (&NicInfo->PermanentAddress, MacAddr.Addr, HwAddressSize) == 0) && ++ (NicInfo->VlanId == VlanId)) ++ { + mPrivate->CurrentNic = NicInfo->NicIndex; + + // +@@ -672,10 +671,10 @@ IScsiAddNic ( + } + + CopyMem (&NicInfo->PermanentAddress, MacAddr.Addr, HwAddressSize); +- NicInfo->HwAddressSize = (UINT32) HwAddressSize; +- NicInfo->VlanId = VlanId; +- NicInfo->NicIndex = (UINT8) (mPrivate->MaxNic + 1); +- mPrivate->MaxNic = NicInfo->NicIndex; ++ NicInfo->HwAddressSize = (UINT32)HwAddressSize; ++ NicInfo->VlanId = VlanId; ++ NicInfo->NicIndex = (UINT8)(mPrivate->MaxNic + 1); ++ mPrivate->MaxNic = NicInfo->NicIndex; + + // + // Set IPv6 available flag. +@@ -706,7 +705,6 @@ IScsiAddNic ( + return EFI_SUCCESS; + } + +- + /** + Delete the recorded NIC info from global structure. Also delete corresponding + attempts. +@@ -722,15 +720,15 @@ IScsiRemoveNic ( + IN EFI_HANDLE Controller + ) + { +- EFI_STATUS Status; +- ISCSI_NIC_INFO *NicInfo; +- LIST_ENTRY *Entry; +- LIST_ENTRY *NextEntry; +- ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; +- ISCSI_NIC_INFO *ThisNic; +- EFI_MAC_ADDRESS MacAddr; +- UINTN HwAddressSize; +- UINT16 VlanId; ++ EFI_STATUS Status; ++ ISCSI_NIC_INFO *NicInfo; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *NextEntry; ++ ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; ++ ISCSI_NIC_INFO *ThisNic; ++ EFI_MAC_ADDRESS MacAddr; ++ UINTN HwAddressSize; ++ UINT16 VlanId; + + // + // Get MAC address of this network device. +@@ -752,10 +750,10 @@ IScsiRemoveNic ( + + NET_LIST_FOR_EACH (Entry, &mPrivate->NicInfoList) { + NicInfo = NET_LIST_USER_STRUCT (Entry, ISCSI_NIC_INFO, Link); +- if (NicInfo->HwAddressSize == HwAddressSize && +- CompareMem (&NicInfo->PermanentAddress, MacAddr.Addr, HwAddressSize) == 0 && +- NicInfo->VlanId == VlanId) { +- ++ if ((NicInfo->HwAddressSize == HwAddressSize) && ++ (CompareMem (&NicInfo->PermanentAddress, MacAddr.Addr, HwAddressSize) == 0) && ++ (NicInfo->VlanId == VlanId)) ++ { + ThisNic = NicInfo; + break; + } +@@ -780,16 +778,15 @@ IScsiRemoveNic ( + RemoveEntryList (&AttemptConfigData->Link); + mPrivate->AttemptCount--; + +- if (AttemptConfigData->SessionConfigData.Enabled == ISCSI_ENABLED_FOR_MPIO && mPrivate->MpioCount > 0) { ++ if ((AttemptConfigData->SessionConfigData.Enabled == ISCSI_ENABLED_FOR_MPIO) && (mPrivate->MpioCount > 0)) { + if (--mPrivate->MpioCount == 0) { + mPrivate->EnableMpio = FALSE; + } + +- if (AttemptConfigData->AuthenticationType == ISCSI_AUTH_TYPE_KRB && mPrivate->Krb5MpioCount > 0) { ++ if ((AttemptConfigData->AuthenticationType == ISCSI_AUTH_TYPE_KRB) && (mPrivate->Krb5MpioCount > 0)) { + mPrivate->Krb5MpioCount--; + } +- +- } else if (AttemptConfigData->SessionConfigData.Enabled == ISCSI_ENABLED && mPrivate->SinglePathCount > 0) { ++ } else if ((AttemptConfigData->SessionConfigData.Enabled == ISCSI_ENABLED) && (mPrivate->SinglePathCount > 0)) { + mPrivate->SinglePathCount--; + + if (mPrivate->ValidSinglePathCount > 0) { +@@ -815,19 +812,19 @@ IScsiRemoveNic ( + **/ + EFI_STATUS + IScsiCreateAttempts ( +- IN UINTN AttemptNum +-) ++ IN UINTN AttemptNum ++ ) + { +- ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; +- ISCSI_SESSION_CONFIG_NVDATA *ConfigData; +- UINT8 *AttemptConfigOrder; +- UINTN AttemptConfigOrderSize; +- UINT8 *AttemptOrderTmp; +- UINTN TotalNumber; +- UINT8 Index; +- EFI_STATUS Status; ++ ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; ++ ISCSI_SESSION_CONFIG_NVDATA *ConfigData; ++ UINT8 *AttemptConfigOrder; ++ UINTN AttemptConfigOrderSize; ++ UINT8 *AttemptOrderTmp; ++ UINTN TotalNumber; ++ UINT8 Index; ++ EFI_STATUS Status; + +- for (Index = 1; Index <= AttemptNum; Index ++) { ++ for (Index = 1; Index <= AttemptNum; Index++) { + // + // Get the initialized attempt order. This is used to essure creating attempts by order. + // +@@ -841,6 +838,7 @@ IScsiCreateAttempts ( + Status = EFI_SUCCESS; + break; + } ++ + TotalNumber++; + + // +@@ -851,6 +849,7 @@ IScsiCreateAttempts ( + if (AttemptConfigOrder != NULL) { + FreePool (AttemptConfigOrder); + } ++ + return EFI_OUT_OF_RESOURCES; + } + +@@ -872,10 +871,14 @@ IScsiCreateAttempts ( + ); + FreePool (AttemptConfigOrder); + if (EFI_ERROR (Status)) { +- DEBUG ((DEBUG_ERROR, ++ DEBUG (( ++ DEBUG_ERROR, + "%a: Failed to set 'InitialAttemptOrder' with Guid (%g): " + "%r\n", +- __FUNCTION__, &gIScsiConfigGuid, Status)); ++ __FUNCTION__, ++ &gIScsiConfigGuid, ++ Status ++ )); + return Status; + } + +@@ -886,6 +889,7 @@ IScsiCreateAttempts ( + if (AttemptConfigData == NULL) { + return EFI_OUT_OF_RESOURCES; + } ++ + ConfigData = &AttemptConfigData->SessionConfigData; + ConfigData->TargetPort = ISCSI_WELL_KNOWN_PORT; + ConfigData->ConnectTimeout = CONNECT_DEFAULT_TIMEOUT; +@@ -903,9 +907,9 @@ IScsiCreateAttempts ( + // + UnicodeSPrint ( + mPrivate->PortString, +- (UINTN) ISCSI_NAME_IFR_MAX_SIZE, ++ (UINTN)ISCSI_NAME_IFR_MAX_SIZE, + L"Attempt %d", +- (UINTN) AttemptConfigData->AttemptConfigIndex ++ (UINTN)AttemptConfigData->AttemptConfigIndex + ); + UnicodeStrToAsciiStrS (mPrivate->PortString, AttemptConfigData->AttemptName, ATTEMPT_NAME_SIZE); + +@@ -918,10 +922,14 @@ IScsiCreateAttempts ( + ); + FreePool (AttemptConfigData); + if (EFI_ERROR (Status)) { +- DEBUG ((DEBUG_ERROR, +- "%a: Failed to set variable (mPrivate->PortString) with Guid (%g): " +- "%r\n", +- __FUNCTION__, &gEfiIScsiInitiatorNameProtocolGuid, Status)); ++ DEBUG (( ++ DEBUG_ERROR, ++ "%a: Failed to set variable (mPrivate->PortString) with Guid (%g): " ++ "%r\n", ++ __FUNCTION__, ++ &gEfiIScsiInitiatorNameProtocolGuid, ++ Status ++ )); + return Status; + } + } +@@ -941,18 +949,18 @@ IScsiCreateAttempts ( + **/ + EFI_STATUS + IScsiCreateKeywords ( +- IN UINTN KeywordNum +-) ++ IN UINTN KeywordNum ++ ) + { +- VOID *StartOpCodeHandle; +- EFI_IFR_GUID_LABEL *StartLabel; +- VOID *EndOpCodeHandle; +- EFI_IFR_GUID_LABEL *EndLabel; +- UINTN Index; +- EFI_STRING_ID StringToken; +- CHAR16 StringId[64]; +- CHAR16 KeywordId[32]; +- EFI_STATUS Status; ++ VOID *StartOpCodeHandle; ++ EFI_IFR_GUID_LABEL *StartLabel; ++ VOID *EndOpCodeHandle; ++ EFI_IFR_GUID_LABEL *EndLabel; ++ UINTN Index; ++ EFI_STRING_ID StringToken; ++ CHAR16 StringId[64]; ++ CHAR16 KeywordId[32]; ++ EFI_STATUS Status; + + Status = IScsiCreateOpCode ( + KEYWORD_ENTRY_LABEL, +@@ -965,7 +973,7 @@ IScsiCreateKeywords ( + return EFI_OUT_OF_RESOURCES; + } + +- for (Index = 1; Index <= KeywordNum; Index ++) { ++ for (Index = 1; Index <= KeywordNum; Index++) { + // + // Create iSCSIAttemptName Keyword. + // +@@ -980,9 +988,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_ATTEMPT_NAME_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_ATTEMPT_NAME_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_ATTEMPT_NAME_VAR_OFFSET + ATTEMPT_NAME_SIZE * (Index - 1) * sizeof (CHAR16)), ++ (UINT16)(ATTEMPT_ATTEMPT_NAME_VAR_OFFSET + ATTEMPT_NAME_SIZE * (Index - 1) * sizeof (CHAR16)), + StringToken, + StringToken, + EFI_IFR_FLAG_READ_ONLY, +@@ -1006,9 +1014,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateNumericOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_BOOTENABLE_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_BOOTENABLE_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_BOOTENABLE_VAR_OFFSET + (Index - 1)), ++ (UINT16)(ATTEMPT_BOOTENABLE_VAR_OFFSET + (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1033,9 +1041,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateNumericOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_ADDRESS_TYPE_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_ADDRESS_TYPE_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_ADDRESS_TYPE_VAR_OFFSET + (Index - 1)), ++ (UINT16)(ATTEMPT_ADDRESS_TYPE_VAR_OFFSET + (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1060,9 +1068,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateNumericOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_CONNECT_RETRY_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_CONNECT_RETRY_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_CONNECT_RETRY_VAR_OFFSET + (Index - 1)), ++ (UINT16)(ATTEMPT_CONNECT_RETRY_VAR_OFFSET + (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1087,9 +1095,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateNumericOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_CONNECT_TIMEOUT_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_CONNECT_TIMEOUT_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET + 2 * (Index - 1)), ++ (UINT16)(ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET + 2 * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1114,9 +1122,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_ISID_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_ISID_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_ISID_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), ++ (UINT16)(ATTEMPT_ISID_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + StringToken, + STRING_TOKEN (STR_ISCSI_ISID_HELP), + 0, +@@ -1139,19 +1147,19 @@ IScsiCreateKeywords ( + UnicodeSPrint (KeywordId, sizeof (KeywordId), L"iSCSIInitiatorInfoViaDHCP:%d", Index); + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateNumericOpCode ( +- StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_INITIATOR_VIA_DHCP_QUESTION_ID + (Index - 1)), +- CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET + (Index - 1)), +- StringToken, +- StringToken, +- 0, +- 0, +- 0, +- 1, +- 0, +- NULL +- ); ++ StartOpCodeHandle, ++ (EFI_QUESTION_ID)(ATTEMPT_INITIATOR_VIA_DHCP_QUESTION_ID + (Index - 1)), ++ CONFIGURATION_VARSTORE_ID, ++ (UINT16)(ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET + (Index - 1)), ++ StringToken, ++ StringToken, ++ 0, ++ 0, ++ 0, ++ 1, ++ 0, ++ NULL ++ ); + + // + // Create iSCSIInitiatorIpAddress Keyword. +@@ -1167,9 +1175,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_INITIATOR_IP_ADDRESS_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_INITIATOR_IP_ADDRESS_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), ++ (UINT16)(ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1193,9 +1201,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_INITIATOR_NET_MASK_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_INITIATOR_NET_MASK_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), ++ (UINT16)(ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1219,9 +1227,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_INITIATOR_GATE_WAY_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_INITIATOR_GATE_WAY_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_INITIATOR_GATE_WAY_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), ++ (UINT16)(ATTEMPT_INITIATOR_GATE_WAY_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1244,19 +1252,19 @@ IScsiCreateKeywords ( + UnicodeSPrint (KeywordId, sizeof (KeywordId), L"iSCSITargetInfoViaDHCP:%d", Index); + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateNumericOpCode ( +- StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_TARGET_VIA_DHCP_QUESTION_ID + (Index - 1)), +- CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET + (Index - 1)), +- StringToken, +- StringToken, +- 0, +- 0, +- 0, +- 1, +- 0, +- NULL +- ); ++ StartOpCodeHandle, ++ (EFI_QUESTION_ID)(ATTEMPT_TARGET_VIA_DHCP_QUESTION_ID + (Index - 1)), ++ CONFIGURATION_VARSTORE_ID, ++ (UINT16)(ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET + (Index - 1)), ++ StringToken, ++ StringToken, ++ 0, ++ 0, ++ 0, ++ 1, ++ 0, ++ NULL ++ ); + + // + // Create iSCSITargetTcpPort Keyword. +@@ -1272,9 +1280,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateNumericOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_TARGET_TCP_PORT_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_TARGET_TCP_PORT_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET + 2 * (Index - 1)), ++ (UINT16)(ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET + 2 * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1299,9 +1307,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_TARGET_NAME_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_TARGET_NAME_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_TARGET_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), ++ (UINT16)(ATTEMPT_TARGET_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1325,9 +1333,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_TARGET_IP_ADDRESS_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_TARGET_IP_ADDRESS_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_TARGET_IP_ADDRESS_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), ++ (UINT16)(ATTEMPT_TARGET_IP_ADDRESS_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1351,9 +1359,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_LUN_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_LUN_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_LUN_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), ++ (UINT16)(ATTEMPT_LUN_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1376,19 +1384,19 @@ IScsiCreateKeywords ( + UnicodeSPrint (KeywordId, sizeof (KeywordId), L"iSCSIAuthenticationMethod:%d", Index); + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateNumericOpCode ( +- StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_AUTHENTICATION_METHOD_QUESTION_ID + (Index - 1)), +- CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET + (Index - 1)), +- StringToken, +- StringToken, +- 0, +- 0, +- 0, +- 1, +- 0, +- NULL +- ); ++ StartOpCodeHandle, ++ (EFI_QUESTION_ID)(ATTEMPT_AUTHENTICATION_METHOD_QUESTION_ID + (Index - 1)), ++ CONFIGURATION_VARSTORE_ID, ++ (UINT16)(ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET + (Index - 1)), ++ StringToken, ++ StringToken, ++ 0, ++ 0, ++ 0, ++ 1, ++ 0, ++ NULL ++ ); + + // + // Create iSCSIChapType Keyword. +@@ -1403,19 +1411,19 @@ IScsiCreateKeywords ( + UnicodeSPrint (KeywordId, sizeof (KeywordId), L"iSCSIChapType:%d", Index); + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateNumericOpCode ( +- StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_CHARTYPE_QUESTION_ID + (Index - 1)), +- CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_CHARTYPE_VAR_OFFSET + (Index - 1)), +- StringToken, +- StringToken, +- 0, +- 0, +- 0, +- 1, +- 0, +- NULL +- ); ++ StartOpCodeHandle, ++ (EFI_QUESTION_ID)(ATTEMPT_CHARTYPE_QUESTION_ID + (Index - 1)), ++ CONFIGURATION_VARSTORE_ID, ++ (UINT16)(ATTEMPT_CHARTYPE_VAR_OFFSET + (Index - 1)), ++ StringToken, ++ StringToken, ++ 0, ++ 0, ++ 0, ++ 1, ++ 0, ++ NULL ++ ); + + // + // Create iSCSIChapUsername Keyword. +@@ -1431,9 +1439,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_CHAR_USER_NAME_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_CHAR_USER_NAME_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_CHAR_USER_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), ++ (UINT16)(ATTEMPT_CHAR_USER_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1457,9 +1465,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_CHAR_SECRET_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_CHAR_SECRET_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_CHAR_SECRET_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), ++ (UINT16)(ATTEMPT_CHAR_SECRET_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1483,9 +1491,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_CHAR_REVERSE_USER_NAME_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_CHAR_REVERSE_USER_NAME_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_CHAR_REVERSE_USER_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), ++ (UINT16)(ATTEMPT_CHAR_REVERSE_USER_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1509,9 +1517,9 @@ IScsiCreateKeywords ( + HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); + HiiCreateStringOpCode ( + StartOpCodeHandle, +- (EFI_QUESTION_ID) (ATTEMPT_CHAR_REVERSE_SECRET_QUESTION_ID + (Index - 1)), ++ (EFI_QUESTION_ID)(ATTEMPT_CHAR_REVERSE_SECRET_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, +- (UINT16) (ATTEMPT_CHAR_REVERSE_SECRET_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), ++ (UINT16)(ATTEMPT_CHAR_REVERSE_SECRET_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + StringToken, + StringToken, + 0, +@@ -1544,12 +1552,12 @@ IScsiCreateKeywords ( + VOID + IScsiCleanAttemptVariable ( + IN VOID +-) ++ ) + { +- ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; +- UINT8 *AttemptConfigOrder; +- UINTN AttemptConfigOrderSize; +- UINTN Index; ++ ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; ++ UINT8 *AttemptConfigOrder; ++ UINTN AttemptConfigOrderSize; ++ UINTN Index; + + // + // Get the initialized attempt order. +@@ -1559,14 +1567,14 @@ IScsiCleanAttemptVariable ( + &gIScsiConfigGuid, + &AttemptConfigOrderSize + ); +- if (AttemptConfigOrder == NULL || AttemptConfigOrderSize == 0) { ++ if ((AttemptConfigOrder == NULL) || (AttemptConfigOrderSize == 0)) { + return; + } + + for (Index = 1; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { + UnicodeSPrint ( + mPrivate->PortString, +- (UINTN) ISCSI_NAME_IFR_MAX_SIZE, ++ (UINTN)ISCSI_NAME_IFR_MAX_SIZE, + L"Attempt %d", + Index + ); +@@ -1574,7 +1582,7 @@ IScsiCleanAttemptVariable ( + GetVariable2 ( + mPrivate->PortString, + &gEfiIScsiInitiatorNameProtocolGuid, +- (VOID**)&AttemptConfigData, ++ (VOID **)&AttemptConfigData, + NULL + ); + +@@ -1588,6 +1596,7 @@ IScsiCleanAttemptVariable ( + ); + } + } ++ + return; + } + +@@ -1601,11 +1610,11 @@ IScsiCleanAttemptVariable ( + **/ + ISCSI_NIC_INFO * + IScsiGetNicInfoByIndex ( +- IN UINT8 NicIndex ++ IN UINT8 NicIndex + ) + { +- LIST_ENTRY *Entry; +- ISCSI_NIC_INFO *NicInfo; ++ LIST_ENTRY *Entry; ++ ISCSI_NIC_INFO *NicInfo; + + NET_LIST_FOR_EACH (Entry, &mPrivate->NicInfoList) { + NicInfo = NET_LIST_USER_STRUCT (Entry, ISCSI_NIC_INFO, Link); +@@ -1617,7 +1626,6 @@ IScsiGetNicInfoByIndex ( + return NULL; + } + +- + /** + Get the NIC's PCI location and return it according to the composited + format defined in iSCSI Boot Firmware Table. +@@ -1647,7 +1655,7 @@ IScsiGetNICPciLocation ( + Status = gBS->HandleProtocol ( + Controller, + &gEfiDevicePathProtocolGuid, +- (VOID **) &DevicePath ++ (VOID **)&DevicePath + ); + if (EFI_ERROR (Status)) { + return 0; +@@ -1662,7 +1670,7 @@ IScsiGetNICPciLocation ( + return 0; + } + +- Status = gBS->HandleProtocol (PciIoHandle, &gEfiPciIoProtocolGuid, (VOID **) &PciIo); ++ Status = gBS->HandleProtocol (PciIoHandle, &gEfiPciIoProtocolGuid, (VOID **)&PciIo); + if (EFI_ERROR (Status)) { + return 0; + } +@@ -1672,10 +1680,9 @@ IScsiGetNICPciLocation ( + return 0; + } + +- return (UINT16) ((*Bus << 8) | (*Device << 3) | *Function); ++ return (UINT16)((*Bus << 8) | (*Device << 3) | *Function); + } + +- + /** + Read the EFI variable (VendorGuid/Name) and return a dynamically allocated + buffer, and the size of the buffer. If failure, return NULL. +@@ -1691,9 +1698,9 @@ IScsiGetNICPciLocation ( + **/ + VOID * + IScsiGetVariableAndSize ( +- IN CHAR16 *Name, +- IN EFI_GUID *VendorGuid, +- OUT UINTN *VariableSize ++ IN CHAR16 *Name, ++ IN EFI_GUID *VendorGuid, ++ OUT UINTN *VariableSize + ) + { + EFI_STATUS Status; +@@ -1705,8 +1712,8 @@ IScsiGetVariableAndSize ( + // + // Pass in a zero size buffer to find the required buffer size. + // +- BufferSize = 0; +- Status = gRT->GetVariable (Name, VendorGuid, NULL, &BufferSize, Buffer); ++ BufferSize = 0; ++ Status = gRT->GetVariable (Name, VendorGuid, NULL, &BufferSize, Buffer); + if (Status == EFI_BUFFER_TOO_SMALL) { + // + // Allocate the buffer to return +@@ -1715,6 +1722,7 @@ IScsiGetVariableAndSize ( + if (Buffer == NULL) { + return NULL; + } ++ + // + // Read variable into the allocated buffer. + // +@@ -1728,7 +1736,6 @@ IScsiGetVariableAndSize ( + return Buffer; + } + +- + /** + Create the iSCSI driver data. + +@@ -1745,8 +1752,8 @@ IScsiCreateDriverData ( + IN EFI_HANDLE Controller + ) + { +- ISCSI_DRIVER_DATA *Private; +- EFI_STATUS Status; ++ ISCSI_DRIVER_DATA *Private; ++ EFI_STATUS Status; + + Private = AllocateZeroPool (sizeof (ISCSI_DRIVER_DATA)); + if (Private == NULL) { +@@ -1776,7 +1783,7 @@ IScsiCreateDriverData ( + } + + Private->ExtScsiPassThruHandle = NULL; +- CopyMem(&Private->IScsiExtScsiPassThru, &gIScsiExtScsiPassThruProtocolTemplate, sizeof(EFI_EXT_SCSI_PASS_THRU_PROTOCOL)); ++ CopyMem (&Private->IScsiExtScsiPassThru, &gIScsiExtScsiPassThruProtocolTemplate, sizeof (EFI_EXT_SCSI_PASS_THRU_PROTOCOL)); + + // + // 0 is designated to the TargetId, so use another value for the AdapterId. +@@ -1789,7 +1796,6 @@ IScsiCreateDriverData ( + return Private; + } + +- + /** + Clean the iSCSI driver data. + +@@ -1804,7 +1810,7 @@ IScsiCleanDriverData ( + IN ISCSI_DRIVER_DATA *Private + ) + { +- EFI_STATUS Status; ++ EFI_STATUS Status; + + Status = EFI_SUCCESS; + +@@ -1859,24 +1865,24 @@ IScsiDhcpIsConfigured ( + IN UINT8 IpVersion + ) + { +- ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; +- UINT8 *AttemptConfigOrder; +- UINTN AttemptConfigOrderSize; +- UINTN Index; +- EFI_STATUS Status; +- EFI_MAC_ADDRESS MacAddr; +- UINTN HwAddressSize; +- UINT16 VlanId; +- CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; +- CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; +- CHAR16 AttemptName[ISCSI_NAME_IFR_MAX_SIZE]; ++ ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; ++ UINT8 *AttemptConfigOrder; ++ UINTN AttemptConfigOrderSize; ++ UINTN Index; ++ EFI_STATUS Status; ++ EFI_MAC_ADDRESS MacAddr; ++ UINTN HwAddressSize; ++ UINT16 VlanId; ++ CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; ++ CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; ++ CHAR16 AttemptName[ISCSI_NAME_IFR_MAX_SIZE]; + + AttemptConfigOrder = IScsiGetVariableAndSize ( + L"AttemptOrder", + &gIScsiConfigGuid, + &AttemptConfigOrderSize + ); +- if (AttemptConfigOrder == NULL || AttemptConfigOrderSize == 0) { ++ if ((AttemptConfigOrder == NULL) || (AttemptConfigOrderSize == 0)) { + return FALSE; + } + +@@ -1884,29 +1890,30 @@ IScsiDhcpIsConfigured ( + // Get MAC address of this network device. + // + Status = NetLibGetMacAddress (Controller, &MacAddr, &HwAddressSize); +- if(EFI_ERROR (Status)) { ++ if (EFI_ERROR (Status)) { + return FALSE; + } ++ + // + // Get VLAN ID of this network device. + // + VlanId = NetLibGetVlanId (Controller); +- IScsiMacAddrToStr (&MacAddr, (UINT32) HwAddressSize, VlanId, MacString); ++ IScsiMacAddrToStr (&MacAddr, (UINT32)HwAddressSize, VlanId, MacString); + + for (Index = 0; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { + UnicodeSPrint ( + AttemptName, +- (UINTN) 128, ++ (UINTN)128, + L"Attempt %d", +- (UINTN) AttemptConfigOrder[Index] ++ (UINTN)AttemptConfigOrder[Index] + ); + Status = GetVariable2 ( + AttemptName, + &gEfiIScsiInitiatorNameProtocolGuid, +- (VOID**)&AttemptTmp, ++ (VOID **)&AttemptTmp, + NULL + ); +- if(AttemptTmp == NULL || EFI_ERROR (Status)) { ++ if ((AttemptTmp == NULL) || EFI_ERROR (Status)) { + continue; + } + +@@ -1917,21 +1924,23 @@ IScsiDhcpIsConfigured ( + continue; + } + +- if (AttemptTmp->SessionConfigData.IpMode != IP_MODE_AUTOCONFIG && +- AttemptTmp->SessionConfigData.IpMode != ((IpVersion == IP_VERSION_4) ? IP_MODE_IP4 : IP_MODE_IP6)) { ++ if ((AttemptTmp->SessionConfigData.IpMode != IP_MODE_AUTOCONFIG) && ++ (AttemptTmp->SessionConfigData.IpMode != ((IpVersion == IP_VERSION_4) ? IP_MODE_IP4 : IP_MODE_IP6))) ++ { + FreePool (AttemptTmp); + continue; + } + + AsciiStrToUnicodeStrS (AttemptTmp->MacString, AttemptMacString, sizeof (AttemptMacString) / sizeof (AttemptMacString[0])); + +- if (AttemptTmp->Actived == ISCSI_ACTIVE_DISABLED || StrCmp (MacString, AttemptMacString)) { ++ if ((AttemptTmp->Actived == ISCSI_ACTIVE_DISABLED) || StrCmp (MacString, AttemptMacString)) { + continue; + } + +- if(AttemptTmp->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG || +- AttemptTmp->SessionConfigData.InitiatorInfoFromDhcp == TRUE || +- AttemptTmp->SessionConfigData.TargetInfoFromDhcp == TRUE) { ++ if ((AttemptTmp->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG) || ++ (AttemptTmp->SessionConfigData.InitiatorInfoFromDhcp == TRUE) || ++ (AttemptTmp->SessionConfigData.TargetInfoFromDhcp == TRUE)) ++ { + FreePool (AttemptTmp); + FreePool (AttemptConfigOrder); + return TRUE; +@@ -1958,24 +1967,24 @@ IScsiDnsIsConfigured ( + IN EFI_HANDLE Controller + ) + { +- ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; +- UINT8 *AttemptConfigOrder; +- UINTN AttemptConfigOrderSize; +- UINTN Index; +- EFI_STATUS Status; +- EFI_MAC_ADDRESS MacAddr; +- UINTN HwAddressSize; +- UINT16 VlanId; +- CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; +- CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; +- CHAR16 AttemptName[ISCSI_NAME_IFR_MAX_SIZE]; ++ ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; ++ UINT8 *AttemptConfigOrder; ++ UINTN AttemptConfigOrderSize; ++ UINTN Index; ++ EFI_STATUS Status; ++ EFI_MAC_ADDRESS MacAddr; ++ UINTN HwAddressSize; ++ UINT16 VlanId; ++ CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; ++ CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; ++ CHAR16 AttemptName[ISCSI_NAME_IFR_MAX_SIZE]; + + AttemptConfigOrder = IScsiGetVariableAndSize ( + L"AttemptOrder", + &gIScsiConfigGuid, + &AttemptConfigOrderSize + ); +- if (AttemptConfigOrder == NULL || AttemptConfigOrderSize == 0) { ++ if ((AttemptConfigOrder == NULL) || (AttemptConfigOrderSize == 0)) { + return FALSE; + } + +@@ -1983,30 +1992,31 @@ IScsiDnsIsConfigured ( + // Get MAC address of this network device. + // + Status = NetLibGetMacAddress (Controller, &MacAddr, &HwAddressSize); +- if(EFI_ERROR (Status)) { ++ if (EFI_ERROR (Status)) { + return FALSE; + } ++ + // + // Get VLAN ID of this network device. + // + VlanId = NetLibGetVlanId (Controller); +- IScsiMacAddrToStr (&MacAddr, (UINT32) HwAddressSize, VlanId, MacString); ++ IScsiMacAddrToStr (&MacAddr, (UINT32)HwAddressSize, VlanId, MacString); + + for (Index = 0; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { + UnicodeSPrint ( + AttemptName, +- (UINTN) 128, ++ (UINTN)128, + L"Attempt %d", +- (UINTN) AttemptConfigOrder[Index] ++ (UINTN)AttemptConfigOrder[Index] + ); + + Status = GetVariable2 ( + AttemptName, + &gEfiIScsiInitiatorNameProtocolGuid, +- (VOID**)&AttemptTmp, ++ (VOID **)&AttemptTmp, + NULL + ); +- if(AttemptTmp == NULL || EFI_ERROR (Status)) { ++ if ((AttemptTmp == NULL) || EFI_ERROR (Status)) { + continue; + } + +@@ -2014,7 +2024,7 @@ IScsiDnsIsConfigured ( + + AsciiStrToUnicodeStrS (AttemptTmp->MacString, AttemptMacString, sizeof (AttemptMacString) / sizeof (AttemptMacString[0])); + +- if (AttemptTmp->SessionConfigData.Enabled == ISCSI_DISABLED || StrCmp (MacString, AttemptMacString)) { ++ if ((AttemptTmp->SessionConfigData.Enabled == ISCSI_DISABLED) || StrCmp (MacString, AttemptMacString)) { + FreePool (AttemptTmp); + continue; + } +@@ -2027,12 +2037,10 @@ IScsiDnsIsConfigured ( + FreePool (AttemptTmp); + continue; + } +- + } + + FreePool (AttemptConfigOrder); + return FALSE; +- + } + + /** +@@ -2050,17 +2058,17 @@ IScsiGetConfigData ( + IN ISCSI_DRIVER_DATA *Private + ) + { +- EFI_STATUS Status; +- CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; +- CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; +- UINTN Index; +- ISCSI_NIC_INFO *NicInfo; +- ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; +- ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; +- UINT8 *AttemptConfigOrder; +- UINTN AttemptConfigOrderSize; +- CHAR16 IScsiMode[64]; +- CHAR16 IpMode[64]; ++ EFI_STATUS Status; ++ CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; ++ CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; ++ UINTN Index; ++ ISCSI_NIC_INFO *NicInfo; ++ ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; ++ ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; ++ UINT8 *AttemptConfigOrder; ++ UINTN AttemptConfigOrderSize; ++ CHAR16 IScsiMode[64]; ++ CHAR16 IpMode[64]; + + // + // There should be at least one attempt configured. +@@ -2070,19 +2078,19 @@ IScsiGetConfigData ( + &gIScsiConfigGuid, + &AttemptConfigOrderSize + ); +- if (AttemptConfigOrder == NULL || AttemptConfigOrderSize == 0) { ++ if ((AttemptConfigOrder == NULL) || (AttemptConfigOrderSize == 0)) { + return EFI_NOT_FOUND; + } + + // + // Get the iSCSI Initiator Name. + // +- mPrivate->InitiatorNameLength = ISCSI_NAME_MAX_SIZE; +- Status = gIScsiInitiatorName.Get ( +- &gIScsiInitiatorName, +- &mPrivate->InitiatorNameLength, +- mPrivate->InitiatorName +- ); ++ mPrivate->InitiatorNameLength = ISCSI_NAME_MAX_SIZE; ++ Status = gIScsiInitiatorName.Get ( ++ &gIScsiInitiatorName, ++ &mPrivate->InitiatorNameLength, ++ mPrivate->InitiatorName ++ ); + if (EFI_ERROR (Status)) { + return Status; + } +@@ -2091,27 +2099,29 @@ IScsiGetConfigData ( + // Get the normal configuration. + // + for (Index = 0; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { +- + // + // Check whether the attempt exists in AttemptConfig. + // + AttemptTmp = IScsiConfigGetAttemptByConfigIndex (AttemptConfigOrder[Index]); +- if (AttemptTmp != NULL && AttemptTmp->SessionConfigData.Enabled == ISCSI_DISABLED) { ++ if ((AttemptTmp != NULL) && (AttemptTmp->SessionConfigData.Enabled == ISCSI_DISABLED)) { + continue; +- } else if (AttemptTmp != NULL && AttemptTmp->SessionConfigData.Enabled != ISCSI_DISABLED) { ++ } else if ((AttemptTmp != NULL) && (AttemptTmp->SessionConfigData.Enabled != ISCSI_DISABLED)) { + // + // Check the autoconfig path to see whether it should be retried. + // +- if (AttemptTmp->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG && +- !AttemptTmp->AutoConfigureSuccess) { ++ if ((AttemptTmp->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG) && ++ !AttemptTmp->AutoConfigureSuccess) ++ { + if (mPrivate->Ipv6Flag && +- AttemptTmp->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6) { ++ (AttemptTmp->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6)) ++ { + // + // Autoconfigure for IP6 already attempted but failed. Do not try again. + // + continue; + } else if (!mPrivate->Ipv6Flag && +- AttemptTmp->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP4) { ++ (AttemptTmp->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP4)) ++ { + // + // Autoconfigure for IP4 already attempted but failed. Do not try again. + // +@@ -2121,7 +2131,7 @@ IScsiGetConfigData ( + // Try another approach for this autoconfigure path. + // + AttemptTmp->AutoConfigureMode = +- (UINT8) (mPrivate->Ipv6Flag ? IP_MODE_AUTOCONFIG_IP6 : IP_MODE_AUTOCONFIG_IP4); ++ (UINT8)(mPrivate->Ipv6Flag ? IP_MODE_AUTOCONFIG_IP6 : IP_MODE_AUTOCONFIG_IP4); + AttemptTmp->SessionConfigData.InitiatorInfoFromDhcp = TRUE; + AttemptTmp->SessionConfigData.TargetInfoFromDhcp = TRUE; + AttemptTmp->DhcpSuccess = FALSE; +@@ -2146,9 +2156,9 @@ IScsiGetConfigData ( + // + UnicodeSPrint ( + mPrivate->PortString, +- (UINTN) ISCSI_NAME_IFR_MAX_SIZE, ++ (UINTN)ISCSI_NAME_IFR_MAX_SIZE, + L"Attempt %d", +- (UINTN) AttemptTmp->AttemptConfigIndex ++ (UINTN)AttemptTmp->AttemptConfigIndex + ); + + gRT->SetVariable ( +@@ -2163,7 +2173,8 @@ IScsiGetConfigData ( + } + } else if (AttemptTmp->SessionConfigData.InitiatorInfoFromDhcp && + !AttemptTmp->ValidPath && +- AttemptTmp->NicIndex == mPrivate->CurrentNic) { ++ (AttemptTmp->NicIndex == mPrivate->CurrentNic)) ++ { + // + // If the attempt associates with the current NIC, we can + // get DHCP information for already added, but failed, attempt. +@@ -2186,9 +2197,9 @@ IScsiGetConfigData ( + // + UnicodeSPrint ( + mPrivate->PortString, +- (UINTN) ISCSI_NAME_IFR_MAX_SIZE, ++ (UINTN)ISCSI_NAME_IFR_MAX_SIZE, + L"Attempt %d", +- (UINTN) AttemptTmp->AttemptConfigIndex ++ (UINTN)AttemptTmp->AttemptConfigIndex + ); + + gRT->SetVariable ( +@@ -2200,7 +2211,6 @@ IScsiGetConfigData ( + ); + + continue; +- + } else { + continue; + } +@@ -2215,21 +2225,22 @@ IScsiGetConfigData ( + IScsiMacAddrToStr (&NicInfo->PermanentAddress, NicInfo->HwAddressSize, NicInfo->VlanId, MacString); + UnicodeSPrint ( + mPrivate->PortString, +- (UINTN) ISCSI_NAME_IFR_MAX_SIZE, ++ (UINTN)ISCSI_NAME_IFR_MAX_SIZE, + L"Attempt %d", +- (UINTN) AttemptConfigOrder[Index] ++ (UINTN)AttemptConfigOrder[Index] + ); + + GetVariable2 ( + mPrivate->PortString, + &gEfiIScsiInitiatorNameProtocolGuid, +- (VOID**)&AttemptConfigData, ++ (VOID **)&AttemptConfigData, + NULL + ); + AsciiStrToUnicodeStrS (AttemptConfigData->MacString, AttemptMacString, sizeof (AttemptMacString) / sizeof (AttemptMacString[0])); + +- if (AttemptConfigData == NULL || AttemptConfigData->Actived == ISCSI_ACTIVE_DISABLED || +- StrCmp (MacString, AttemptMacString)) { ++ if ((AttemptConfigData == NULL) || (AttemptConfigData->Actived == ISCSI_ACTIVE_DISABLED) || ++ StrCmp (MacString, AttemptMacString)) ++ { + continue; + } + +@@ -2237,7 +2248,7 @@ IScsiGetConfigData ( + + AttemptConfigData->NicIndex = NicInfo->NicIndex; + AttemptConfigData->DhcpSuccess = FALSE; +- AttemptConfigData->ValidiBFTPath = (BOOLEAN) (mPrivate->EnableMpio ? TRUE : FALSE); ++ AttemptConfigData->ValidiBFTPath = (BOOLEAN)(mPrivate->EnableMpio ? TRUE : FALSE); + AttemptConfigData->ValidPath = FALSE; + + if (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG) { +@@ -2245,26 +2256,28 @@ IScsiGetConfigData ( + AttemptConfigData->SessionConfigData.TargetInfoFromDhcp = TRUE; + + AttemptConfigData->AutoConfigureMode = +- (UINT8) (mPrivate->Ipv6Flag ? IP_MODE_AUTOCONFIG_IP6 : IP_MODE_AUTOCONFIG_IP4); ++ (UINT8)(mPrivate->Ipv6Flag ? IP_MODE_AUTOCONFIG_IP6 : IP_MODE_AUTOCONFIG_IP4); + AttemptConfigData->AutoConfigureSuccess = FALSE; + } + + // + // Get some information from dhcp server. + // +- if (AttemptConfigData->SessionConfigData.Enabled != ISCSI_DISABLED && +- AttemptConfigData->SessionConfigData.InitiatorInfoFromDhcp) { +- ++ if ((AttemptConfigData->SessionConfigData.Enabled != ISCSI_DISABLED) && ++ AttemptConfigData->SessionConfigData.InitiatorInfoFromDhcp) ++ { + if (!mPrivate->Ipv6Flag && +- (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_IP4 || +- AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP4)) { ++ ((AttemptConfigData->SessionConfigData.IpMode == IP_MODE_IP4) || ++ (AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP4))) ++ { + Status = IScsiDoDhcp (Private->Image, Private->Controller, AttemptConfigData); + if (!EFI_ERROR (Status)) { + AttemptConfigData->DhcpSuccess = TRUE; + } + } else if (mPrivate->Ipv6Flag && +- (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_IP6 || +- AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6)) { ++ ((AttemptConfigData->SessionConfigData.IpMode == IP_MODE_IP6) || ++ (AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6))) ++ { + Status = IScsiDoDhcp6 (Private->Image, Private->Controller, AttemptConfigData); + if (!EFI_ERROR (Status)) { + AttemptConfigData->DhcpSuccess = TRUE; +@@ -2276,9 +2289,9 @@ IScsiGetConfigData ( + // + UnicodeSPrint ( + mPrivate->PortString, +- (UINTN) ISCSI_NAME_IFR_MAX_SIZE, ++ (UINTN)ISCSI_NAME_IFR_MAX_SIZE, + L"Attempt %d", +- (UINTN) AttemptConfigData->AttemptConfigIndex ++ (UINTN)AttemptConfigData->AttemptConfigIndex + ); + + gRT->SetVariable ( +@@ -2312,7 +2325,7 @@ IScsiGetConfigData ( + + UnicodeSPrint ( + mPrivate->PortString, +- (UINTN) ISCSI_NAME_IFR_MAX_SIZE, ++ (UINTN)ISCSI_NAME_IFR_MAX_SIZE, + L"MAC: %s, PFA: Bus %d | Dev %d | Func %d, iSCSI mode: %s, IP version: %s", + MacString, + NicInfo->BusNumber, +@@ -2377,13 +2390,13 @@ IScsiGetConfigData ( + if (mPrivate->SinglePathCount == 0) { + return EFI_NOT_FOUND; + } ++ + mPrivate->ValidSinglePathCount = mPrivate->SinglePathCount; + } + + return EFI_SUCCESS; + } + +- + /** + Get the device path of the iSCSI tcp connection and update it. + +@@ -2395,7 +2408,7 @@ IScsiGetConfigData ( + **/ + EFI_DEVICE_PATH_PROTOCOL * + IScsiGetTcpConnDevicePath ( +- IN ISCSI_SESSION *Session ++ IN ISCSI_SESSION *Session + ) + { + ISCSI_CONNECTION *Conn; +@@ -2418,28 +2431,29 @@ IScsiGetTcpConnDevicePath ( + Status = gBS->HandleProtocol ( + Conn->TcpIo.Handle, + &gEfiDevicePathProtocolGuid, +- (VOID **) &DevicePath ++ (VOID **)&DevicePath + ); + if (EFI_ERROR (Status)) { + return NULL; + } ++ + // + // Duplicate it. + // +- DevicePath = DuplicateDevicePath (DevicePath); ++ DevicePath = DuplicateDevicePath (DevicePath); + if (DevicePath == NULL) { + return NULL; + } + +- DPathNode = (EFI_DEV_PATH *) DevicePath; ++ DPathNode = (EFI_DEV_PATH *)DevicePath; + + while (!IsDevicePathEnd (&DPathNode->DevPath)) { + if (DevicePathType (&DPathNode->DevPath) == MESSAGING_DEVICE_PATH) { +- if (!Conn->Ipv6Flag && DevicePathSubType (&DPathNode->DevPath) == MSG_IPv4_DP) { +- DPathNode->Ipv4.LocalPort = 0; ++ if (!Conn->Ipv6Flag && (DevicePathSubType (&DPathNode->DevPath) == MSG_IPv4_DP)) { ++ DPathNode->Ipv4.LocalPort = 0; + + DPathNode->Ipv4.StaticIpAddress = +- (BOOLEAN) (!Session->ConfigData->SessionConfigData.InitiatorInfoFromDhcp); ++ (BOOLEAN)(!Session->ConfigData->SessionConfigData.InitiatorInfoFromDhcp); + + // + // Add a judgement here to support previous versions of IPv4_DEVICE_PATH. +@@ -2451,7 +2465,6 @@ IScsiGetTcpConnDevicePath ( + PathLen = DevicePathNodeLength (&DPathNode->Ipv4); + + if (PathLen == IP4_NODE_LEN_NEW_VERSIONS) { +- + IP4_COPY_ADDRESS ( + &DPathNode->Ipv4.GatewayIpAddress, + &Session->ConfigData->SessionConfigData.Gateway +@@ -2464,8 +2477,8 @@ IScsiGetTcpConnDevicePath ( + } + + break; +- } else if (Conn->Ipv6Flag && DevicePathSubType (&DPathNode->DevPath) == MSG_IPv6_DP) { +- DPathNode->Ipv6.LocalPort = 0; ++ } else if (Conn->Ipv6Flag && (DevicePathSubType (&DPathNode->DevPath) == MSG_IPv6_DP)) { ++ DPathNode->Ipv6.LocalPort = 0; + + // + // Add a judgement here to support previous versions of IPv6_DEVICE_PATH. +@@ -2478,32 +2491,28 @@ IScsiGetTcpConnDevicePath ( + PathLen = DevicePathNodeLength (&DPathNode->Ipv6); + + if (PathLen == IP6_NODE_LEN_NEW_VERSIONS ) { +- + DPathNode->Ipv6.IpAddressOrigin = 0; + DPathNode->Ipv6.PrefixLength = IP6_PREFIX_LENGTH; + ZeroMem (&DPathNode->Ipv6.GatewayIpAddress, sizeof (EFI_IPv6_ADDRESS)); +- } +- else if (PathLen == IP6_NODE_LEN_OLD_VERSIONS) { +- ++ } else if (PathLen == IP6_NODE_LEN_OLD_VERSIONS) { + // + // StaticIPAddress is a field in old versions of IPv6_DEVICE_PATH, while ignored in new + // version. Set StaticIPAddress through its' offset in old IPv6_DEVICE_PATH. + // + *((UINT8 *)(&DPathNode->Ipv6) + IP6_OLD_IPADDRESS_OFFSET) = +- (BOOLEAN) (!Session->ConfigData->SessionConfigData.InitiatorInfoFromDhcp); ++ (BOOLEAN)(!Session->ConfigData->SessionConfigData.InitiatorInfoFromDhcp); + } + + break; + } + } + +- DPathNode = (EFI_DEV_PATH *) NextDevicePathNode (&DPathNode->DevPath); ++ DPathNode = (EFI_DEV_PATH *)NextDevicePathNode (&DPathNode->DevPath); + } + + return DevicePath; + } + +- + /** + Abort the session when the transition from BS to RT is initiated. + +@@ -2518,9 +2527,9 @@ IScsiOnExitBootService ( + IN VOID *Context + ) + { +- ISCSI_DRIVER_DATA *Private; ++ ISCSI_DRIVER_DATA *Private; + +- Private = (ISCSI_DRIVER_DATA *) Context; ++ Private = (ISCSI_DRIVER_DATA *)Context; + + gBS->CloseEvent (Private->ExitBootServiceEvent); + Private->ExitBootServiceEvent = NULL; +@@ -2556,14 +2565,14 @@ IScsiOnExitBootService ( + EFI_STATUS + EFIAPI + IScsiTestManagedDevice ( +- IN EFI_HANDLE ControllerHandle, +- IN EFI_HANDLE DriverBindingHandle, +- IN EFI_GUID *ProtocolGuid ++ IN EFI_HANDLE ControllerHandle, ++ IN EFI_HANDLE DriverBindingHandle, ++ IN EFI_GUID *ProtocolGuid + ) + { +- EFI_STATUS Status; +- VOID *ManagedInterface; +- EFI_HANDLE NicControllerHandle; ++ EFI_STATUS Status; ++ VOID *ManagedInterface; ++ EFI_HANDLE NicControllerHandle; + + ASSERT (ProtocolGuid != NULL); + +@@ -2574,7 +2583,7 @@ IScsiTestManagedDevice ( + + Status = gBS->OpenProtocol ( + ControllerHandle, +- (EFI_GUID *) ProtocolGuid, ++ (EFI_GUID *)ProtocolGuid, + &ManagedInterface, + DriverBindingHandle, + NicControllerHandle, +@@ -2583,7 +2592,7 @@ IScsiTestManagedDevice ( + if (!EFI_ERROR (Status)) { + gBS->CloseProtocol ( + ControllerHandle, +- (EFI_GUID *) ProtocolGuid, ++ (EFI_GUID *)ProtocolGuid, + DriverBindingHandle, + NicControllerHandle + ); +diff --git a/NetworkPkg/Include/Library/NetLib.h b/NetworkPkg/Include/Library/NetLib.h +index 6c09248631..53495aa494 100644 +--- a/NetworkPkg/Include/Library/NetLib.h ++++ b/NetworkPkg/Include/Library/NetLib.h +@@ -15,16 +15,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + #include + #include + +-typedef UINT32 IP4_ADDR; +-typedef UINT32 TCP_SEQNO; +-typedef UINT16 TCP_PORTNO; ++typedef UINT32 IP4_ADDR; ++typedef UINT32 TCP_SEQNO; ++typedef UINT16 TCP_PORTNO; + ++#define NET_ETHER_ADDR_LEN 6 ++#define NET_IFTYPE_ETHERNET 0x01 + +-#define NET_ETHER_ADDR_LEN 6 +-#define NET_IFTYPE_ETHERNET 0x01 +- +-#define NET_VLAN_TAG_LEN 4 +-#define ETHER_TYPE_VLAN 0x8100 ++#define NET_VLAN_TAG_LEN 4 ++#define ETHER_TYPE_VLAN 0x8100 + + #define EFI_IP_PROTO_UDP 0x11 + #define EFI_IP_PROTO_TCP 0x06 +@@ -37,73 +36,72 @@ typedef UINT16 TCP_PORTNO; + // + // The address classification + // +-#define IP4_ADDR_CLASSA 1 // Deprecated +-#define IP4_ADDR_CLASSB 2 // Deprecated +-#define IP4_ADDR_CLASSC 3 // Deprecated +-#define IP4_ADDR_CLASSD 4 +-#define IP4_ADDR_CLASSE 5 ++#define IP4_ADDR_CLASSA 1 // Deprecated ++#define IP4_ADDR_CLASSB 2 // Deprecated ++#define IP4_ADDR_CLASSC 3 // Deprecated ++#define IP4_ADDR_CLASSD 4 ++#define IP4_ADDR_CLASSE 5 + +-#define IP4_MASK_NUM 33 +-#define IP6_PREFIX_NUM 129 ++#define IP4_MASK_NUM 33 ++#define IP6_PREFIX_NUM 129 + +-#define IP4_MASK_MAX 32 +-#define IP6_PREFIX_MAX 128 ++#define IP4_MASK_MAX 32 ++#define IP6_PREFIX_MAX 128 + +-#define IP6_HOP_BY_HOP 0 +-#define IP6_DESTINATION 60 +-#define IP6_ROUTING 43 +-#define IP6_FRAGMENT 44 +-#define IP6_AH 51 +-#define IP6_ESP 50 +-#define IP6_NO_NEXT_HEADER 59 ++#define IP6_HOP_BY_HOP 0 ++#define IP6_DESTINATION 60 ++#define IP6_ROUTING 43 ++#define IP6_FRAGMENT 44 ++#define IP6_AH 51 ++#define IP6_ESP 50 ++#define IP6_NO_NEXT_HEADER 59 + +-#define IP_VERSION_4 4 +-#define IP_VERSION_6 6 ++#define IP_VERSION_4 4 ++#define IP_VERSION_6 6 + +-#define IP6_PREFIX_LENGTH 64 ++#define IP6_PREFIX_LENGTH 64 + + // + // DNS QTYPE values + // +-#define DNS_TYPE_A 1 +-#define DNS_TYPE_NS 2 +-#define DNS_TYPE_CNAME 5 +-#define DNS_TYPE_SOA 6 +-#define DNS_TYPE_WKS 11 +-#define DNS_TYPE_PTR 12 +-#define DNS_TYPE_HINFO 13 +-#define DNS_TYPE_MINFO 14 +-#define DNS_TYPE_MX 15 +-#define DNS_TYPE_TXT 16 +-#define DNS_TYPE_AAAA 28 +-#define DNS_TYPE_SRV_RR 33 +-#define DNS_TYPE_AXFR 252 +-#define DNS_TYPE_MAILB 253 +-#define DNS_TYPE_ANY 255 ++#define DNS_TYPE_A 1 ++#define DNS_TYPE_NS 2 ++#define DNS_TYPE_CNAME 5 ++#define DNS_TYPE_SOA 6 ++#define DNS_TYPE_WKS 11 ++#define DNS_TYPE_PTR 12 ++#define DNS_TYPE_HINFO 13 ++#define DNS_TYPE_MINFO 14 ++#define DNS_TYPE_MX 15 ++#define DNS_TYPE_TXT 16 ++#define DNS_TYPE_AAAA 28 ++#define DNS_TYPE_SRV_RR 33 ++#define DNS_TYPE_AXFR 252 ++#define DNS_TYPE_MAILB 253 ++#define DNS_TYPE_ANY 255 + + // + // DNS QCLASS values + // +-#define DNS_CLASS_INET 1 +-#define DNS_CLASS_CH 3 +-#define DNS_CLASS_HS 4 +-#define DNS_CLASS_ANY 255 ++#define DNS_CLASS_INET 1 ++#define DNS_CLASS_CH 3 ++#define DNS_CLASS_HS 4 ++#define DNS_CLASS_ANY 255 + + // + // Number of 100ns units time Interval for network media state detect + // + #define MEDIA_STATE_DETECT_TIME_INTERVAL 1000000U + +- + #pragma pack(1) + + // + // Ethernet head definition + // + typedef struct { +- UINT8 DstMac [NET_ETHER_ADDR_LEN]; +- UINT8 SrcMac [NET_ETHER_ADDR_LEN]; +- UINT16 EtherType; ++ UINT8 DstMac[NET_ETHER_ADDR_LEN]; ++ UINT8 SrcMac[NET_ETHER_ADDR_LEN]; ++ UINT16 EtherType; + } ETHER_HEAD; + + // +@@ -111,11 +109,11 @@ typedef struct { + // + typedef union { + struct { +- UINT16 Vid : 12; // Unique VLAN identifier (0 to 4094) +- UINT16 Cfi : 1; // Canonical Format Indicator +- UINT16 Priority : 3; // 802.1Q priority level (0 to 7) ++ UINT16 Vid : 12; // Unique VLAN identifier (0 to 4094) ++ UINT16 Cfi : 1; // Canonical Format Indicator ++ UINT16 Priority : 3; // 802.1Q priority level (0 to 7) + } Bits; +- UINT16 Uint16; ++ UINT16 Uint16; + } VLAN_TCI; + + #define VLAN_TCI_CFI_CANONICAL_MAC 0 +@@ -128,83 +126,82 @@ typedef union { + // directly. This is why there is an internal representation. + // + typedef struct { +- UINT8 HeadLen : 4; +- UINT8 Ver : 4; +- UINT8 Tos; +- UINT16 TotalLen; +- UINT16 Id; +- UINT16 Fragment; +- UINT8 Ttl; +- UINT8 Protocol; +- UINT16 Checksum; +- IP4_ADDR Src; +- IP4_ADDR Dst; ++ UINT8 HeadLen : 4; ++ UINT8 Ver : 4; ++ UINT8 Tos; ++ UINT16 TotalLen; ++ UINT16 Id; ++ UINT16 Fragment; ++ UINT8 Ttl; ++ UINT8 Protocol; ++ UINT16 Checksum; ++ IP4_ADDR Src; ++ IP4_ADDR Dst; + } IP4_HEAD; + +- + // + // ICMP head definition. Each ICMP message is categorized as either an error + // message or query message. Two message types have their own head format. + // + typedef struct { +- UINT8 Type; +- UINT8 Code; +- UINT16 Checksum; ++ UINT8 Type; ++ UINT8 Code; ++ UINT16 Checksum; + } IP4_ICMP_HEAD; + + typedef struct { +- IP4_ICMP_HEAD Head; +- UINT32 Fourth; // 4th filed of the head, it depends on Type. +- IP4_HEAD IpHead; ++ IP4_ICMP_HEAD Head; ++ UINT32 Fourth; // 4th filed of the head, it depends on Type. ++ IP4_HEAD IpHead; + } IP4_ICMP_ERROR_HEAD; + + typedef struct { +- IP4_ICMP_HEAD Head; +- UINT16 Id; +- UINT16 Seq; ++ IP4_ICMP_HEAD Head; ++ UINT16 Id; ++ UINT16 Seq; + } IP4_ICMP_QUERY_HEAD; + + typedef struct { +- UINT8 Type; +- UINT8 Code; +- UINT16 Checksum; ++ UINT8 Type; ++ UINT8 Code; ++ UINT16 Checksum; + } IP6_ICMP_HEAD; + + typedef struct { +- IP6_ICMP_HEAD Head; +- UINT32 Fourth; +- EFI_IP6_HEADER IpHead; ++ IP6_ICMP_HEAD Head; ++ UINT32 Fourth; ++ EFI_IP6_HEADER IpHead; + } IP6_ICMP_ERROR_HEAD; + + typedef struct { +- IP6_ICMP_HEAD Head; +- UINT32 Fourth; ++ IP6_ICMP_HEAD Head; ++ UINT32 Fourth; + } IP6_ICMP_INFORMATION_HEAD; + + // + // UDP header definition + // + typedef struct { +- UINT16 SrcPort; +- UINT16 DstPort; +- UINT16 Length; +- UINT16 Checksum; ++ UINT16 SrcPort; ++ UINT16 DstPort; ++ UINT16 Length; ++ UINT16 Checksum; + } EFI_UDP_HEADER; + + // + // TCP header definition + // + typedef struct { +- TCP_PORTNO SrcPort; +- TCP_PORTNO DstPort; +- TCP_SEQNO Seq; +- TCP_SEQNO Ack; +- UINT8 Res : 4; +- UINT8 HeadLen : 4; +- UINT8 Flag; +- UINT16 Wnd; +- UINT16 Checksum; +- UINT16 Urg; ++ TCP_PORTNO SrcPort; ++ TCP_PORTNO DstPort; ++ TCP_SEQNO Seq; ++ TCP_SEQNO Ack; ++ UINT8 Res : 4; ++ UINT8 HeadLen : 4; ++ UINT8 Flag; ++ UINT16 Wnd; ++ UINT16 Checksum; ++ UINT16 Urg; + } TCP_HEAD; + + #pragma pack() +@@ -221,11 +218,11 @@ typedef struct { + + #define NTOHS(x) SwapBytes16 (x) + +-#define HTONS(x) NTOHS(x) +-#define NTOHLL(x) SwapBytes64 (x) +-#define HTONLL(x) NTOHLL(x) +-#define NTOHLLL(x) Ip6Swap128 (x) +-#define HTONLLL(x) NTOHLLL(x) ++#define HTONS(x) NTOHS(x) ++#define NTOHLL(x) SwapBytes64 (x) ++#define HTONLL(x) NTOHLL(x) ++#define NTOHLLL(x) Ip6Swap128 (x) ++#define HTONLLL(x) NTOHLLL(x) + + // + // Test the IP's attribute, All the IPs are in host byte order. +@@ -236,7 +233,7 @@ typedef struct { + #define IP4_NET_EQUAL(Ip1, Ip2, NetMask) (((Ip1) & (NetMask)) == ((Ip2) & (NetMask))) + #define IP4_IS_VALID_NETMASK(Ip) (NetGetMaskLength (Ip) != (IP4_MASK_MAX + 1)) + +-#define IP6_IS_MULTICAST(Ip6) (((Ip6)->Addr[0]) == 0xFF) ++#define IP6_IS_MULTICAST(Ip6) (((Ip6)->Addr[0]) == 0xFF) + + // + // Convert the EFI_IP4_ADDRESS to plain UINT32 IP4 address. +@@ -247,17 +244,17 @@ typedef struct { + + #define EFI_IP6_EQUAL(Ip1, Ip2) (CompareMem ((Ip1), (Ip2), sizeof (EFI_IPv6_ADDRESS)) == 0) + +-#define IP4_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv4_ADDRESS))) +-#define IP6_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv6_ADDRESS))) +-#define IP6_COPY_LINK_ADDRESS(Mac1, Mac2) (CopyMem ((Mac1), (Mac2), sizeof (EFI_MAC_ADDRESS))) ++#define IP4_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv4_ADDRESS))) ++#define IP6_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv6_ADDRESS))) ++#define IP6_COPY_LINK_ADDRESS(Mac1, Mac2) (CopyMem ((Mac1), (Mac2), sizeof (EFI_MAC_ADDRESS))) + + // + // The debug level definition. This value is also used as the + // syslog's severity level. Don't change it. + // +-#define NETDEBUG_LEVEL_TRACE 5 +-#define NETDEBUG_LEVEL_WARNING 4 +-#define NETDEBUG_LEVEL_ERROR 3 ++#define NETDEBUG_LEVEL_TRACE 5 ++#define NETDEBUG_LEVEL_WARNING 4 ++#define NETDEBUG_LEVEL_ERROR 3 + + // + // Network debug message is sent out as syslog packet. +@@ -326,7 +323,7 @@ typedef struct { + CHAR8 * + EFIAPI + NetDebugASPrint ( +- IN CHAR8 *Format, ++ IN CHAR8 *Format, + ... + ); + +@@ -350,14 +347,13 @@ NetDebugASPrint ( + EFI_STATUS + EFIAPI + NetDebugOutput ( +- IN UINT32 Level, +- IN UINT8 *Module, +- IN UINT8 *File, +- IN UINT32 Line, +- IN UINT8 *Message ++ IN UINT32 Level, ++ IN UINT8 *Module, ++ IN UINT8 *File, ++ IN UINT32 Line, ++ IN UINT8 *Message + ); + +- + /** + Return the length of the mask. + +@@ -373,7 +369,7 @@ NetDebugOutput ( + INTN + EFIAPI + NetGetMaskLength ( +- IN IP4_ADDR NetMask ++ IN IP4_ADDR NetMask + ); + + /** +@@ -405,7 +401,7 @@ NetGetMaskLength ( + INTN + EFIAPI + NetGetIpClass ( +- IN IP4_ADDR Addr ++ IN IP4_ADDR Addr + ); + + /** +@@ -428,8 +424,8 @@ NetGetIpClass ( + BOOLEAN + EFIAPI + NetIp4IsUnicast ( +- IN IP4_ADDR Ip, +- IN IP4_ADDR NetMask ++ IN IP4_ADDR Ip, ++ IN IP4_ADDR NetMask + ); + + /** +@@ -451,10 +447,9 @@ NetIp4IsUnicast ( + BOOLEAN + EFIAPI + NetIp6IsValidUnicast ( +- IN EFI_IPv6_ADDRESS *Ip6 ++ IN EFI_IPv6_ADDRESS *Ip6 + ); + +- + /** + Check whether the incoming Ipv6 address is the unspecified address or not. + +@@ -469,7 +464,7 @@ NetIp6IsValidUnicast ( + BOOLEAN + EFIAPI + NetIp6IsUnspecifiedAddr ( +- IN EFI_IPv6_ADDRESS *Ip6 ++ IN EFI_IPv6_ADDRESS *Ip6 + ); + + /** +@@ -486,7 +481,7 @@ NetIp6IsUnspecifiedAddr ( + BOOLEAN + EFIAPI + NetIp6IsLinkLocalAddr ( +- IN EFI_IPv6_ADDRESS *Ip6 ++ IN EFI_IPv6_ADDRESS *Ip6 + ); + + /** +@@ -506,9 +501,9 @@ NetIp6IsLinkLocalAddr ( + BOOLEAN + EFIAPI + NetIp6IsNetEqual ( +- EFI_IPv6_ADDRESS *Ip1, +- EFI_IPv6_ADDRESS *Ip2, +- UINT8 PrefixLength ++ EFI_IPv6_ADDRESS *Ip1, ++ EFI_IPv6_ADDRESS *Ip2, ++ UINT8 PrefixLength + ); + + /** +@@ -528,11 +523,10 @@ NetIp6IsNetEqual ( + EFI_IPv6_ADDRESS * + EFIAPI + Ip6Swap128 ( +- EFI_IPv6_ADDRESS *Ip6 ++ EFI_IPv6_ADDRESS *Ip6 + ); + +-extern IP4_ADDR gIp4AllMasks[IP4_MASK_NUM]; +- ++extern IP4_ADDR gIp4AllMasks[IP4_MASK_NUM]; + + extern EFI_IPv4_ADDRESS mZeroIp4Addr; + +@@ -542,10 +536,10 @@ extern EFI_IPv4_ADDRESS mZeroIp4Addr; + #define NET_IS_LOWER_CASE_CHAR(Ch) (('a' <= (Ch)) && ((Ch) <= 'z')) + #define NET_IS_UPPER_CASE_CHAR(Ch) (('A' <= (Ch)) && ((Ch) <= 'Z')) + +-#define TICKS_PER_MS 10000U +-#define TICKS_PER_SECOND 10000000U ++#define TICKS_PER_MS 10000U ++#define TICKS_PER_SECOND 10000000U + +-#define NET_RANDOM(Seed) ((UINT32) ((UINT32) (Seed) * 1103515245UL + 12345) % 4294967295UL) ++#define NET_RANDOM(Seed) ((UINT32) ((UINT32) (Seed) * 1103515245UL + 12345) % 4294967295UL) + + /** + Extract a UINT32 from a byte stream. +@@ -563,7 +557,7 @@ extern EFI_IPv4_ADDRESS mZeroIp4Addr; + UINT32 + EFIAPI + NetGetUint32 ( +- IN UINT8 *Buf ++ IN UINT8 *Buf + ); + + /** +@@ -581,8 +575,8 @@ NetGetUint32 ( + VOID + EFIAPI + NetPutUint32 ( +- IN OUT UINT8 *Buf, +- IN UINT32 Data ++ IN OUT UINT8 *Buf, ++ IN UINT32 Data + ); + + /** +@@ -601,7 +595,6 @@ NetRandomInitSeed ( + VOID + ); + +- + #define NET_LIST_USER_STRUCT(Entry, Type, Field) \ + BASE_CR(Entry, Type, Field) + +@@ -635,7 +628,6 @@ NetRandomInitSeed ( + #define NET_LIST_TAIL(ListHead, Type, Field) \ + NET_LIST_USER_STRUCT((ListHead)->BackLink, Type, Field) + +- + /** + Remove the first node entry on the list, and return the removed node entry. + +@@ -657,7 +649,7 @@ NetRandomInitSeed ( + LIST_ENTRY * + EFIAPI + NetListRemoveHead ( +- IN OUT LIST_ENTRY *Head ++ IN OUT LIST_ENTRY *Head + ); + + /** +@@ -681,7 +673,7 @@ NetListRemoveHead ( + LIST_ENTRY * + EFIAPI + NetListRemoveTail ( +- IN OUT LIST_ENTRY *Head ++ IN OUT LIST_ENTRY *Head + ); + + /** +@@ -699,8 +691,8 @@ NetListRemoveTail ( + VOID + EFIAPI + NetListInsertAfter ( +- IN OUT LIST_ENTRY *PrevEntry, +- IN OUT LIST_ENTRY *NewEntry ++ IN OUT LIST_ENTRY *PrevEntry, ++ IN OUT LIST_ENTRY *NewEntry + ); + + /** +@@ -718,8 +710,8 @@ NetListInsertAfter ( + VOID + EFIAPI + NetListInsertBefore ( +- IN OUT LIST_ENTRY *PostEntry, +- IN OUT LIST_ENTRY *NewEntry ++ IN OUT LIST_ENTRY *PostEntry, ++ IN OUT LIST_ENTRY *NewEntry + ); + + /** +@@ -734,7 +726,7 @@ NetListInsertBefore ( + **/ + typedef + EFI_STATUS +-(EFIAPI *NET_DESTROY_LINK_LIST_CALLBACK) ( ++(EFIAPI *NET_DESTROY_LINK_LIST_CALLBACK)( + IN LIST_ENTRY *Entry, + IN VOID *Context OPTIONAL + ); +@@ -785,9 +777,9 @@ NetDestroyLinkList ( + BOOLEAN + EFIAPI + NetIsInHandleBuffer ( +- IN EFI_HANDLE Handle, +- IN UINTN NumberOfChildren, +- IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ++ IN EFI_HANDLE Handle, ++ IN UINTN NumberOfChildren, ++ IN EFI_HANDLE *ChildHandleBuffer OPTIONAL + ); + + // +@@ -795,15 +787,15 @@ NetIsInHandleBuffer ( + // tokens. The drivers can share code to manage those objects. + // + typedef struct { +- LIST_ENTRY Link; +- VOID *Key; +- VOID *Value; ++ LIST_ENTRY Link; ++ VOID *Key; ++ VOID *Value; + } NET_MAP_ITEM; + + typedef struct { +- LIST_ENTRY Used; +- LIST_ENTRY Recycled; +- UINTN Count; ++ LIST_ENTRY Used; ++ LIST_ENTRY Recycled; ++ UINTN Count; + } NET_MAP; + + #define NET_MAP_INCREAMENT 64 +@@ -825,7 +817,7 @@ typedef struct { + VOID + EFIAPI + NetMapInit ( +- IN OUT NET_MAP *Map ++ IN OUT NET_MAP *Map + ); + + /** +@@ -843,7 +835,7 @@ NetMapInit ( + VOID + EFIAPI + NetMapClean ( +- IN OUT NET_MAP *Map ++ IN OUT NET_MAP *Map + ); + + /** +@@ -861,7 +853,7 @@ NetMapClean ( + BOOLEAN + EFIAPI + NetMapIsEmpty ( +- IN NET_MAP *Map ++ IN NET_MAP *Map + ); + + /** +@@ -877,7 +869,7 @@ NetMapIsEmpty ( + UINTN + EFIAPI + NetMapGetCount ( +- IN NET_MAP *Map ++ IN NET_MAP *Map + ); + + /** +@@ -901,9 +893,9 @@ NetMapGetCount ( + EFI_STATUS + EFIAPI + NetMapInsertHead ( +- IN OUT NET_MAP *Map, +- IN VOID *Key, +- IN VOID *Value OPTIONAL ++ IN OUT NET_MAP *Map, ++ IN VOID *Key, ++ IN VOID *Value OPTIONAL + ); + + /** +@@ -927,9 +919,9 @@ NetMapInsertHead ( + EFI_STATUS + EFIAPI + NetMapInsertTail ( +- IN OUT NET_MAP *Map, +- IN VOID *Key, +- IN VOID *Value OPTIONAL ++ IN OUT NET_MAP *Map, ++ IN VOID *Key, ++ IN VOID *Value OPTIONAL + ); + + /** +@@ -950,8 +942,8 @@ NetMapInsertTail ( + NET_MAP_ITEM * + EFIAPI + NetMapFindKey ( +- IN NET_MAP *Map, +- IN VOID *Key ++ IN NET_MAP *Map, ++ IN VOID *Key + ); + + /** +@@ -976,9 +968,9 @@ NetMapFindKey ( + VOID * + EFIAPI + NetMapRemoveItem ( +- IN OUT NET_MAP *Map, +- IN OUT NET_MAP_ITEM *Item, +- OUT VOID **Value OPTIONAL ++ IN OUT NET_MAP *Map, ++ IN OUT NET_MAP_ITEM *Item, ++ OUT VOID **Value OPTIONAL + ); + + /** +@@ -1001,8 +993,8 @@ NetMapRemoveItem ( + VOID * + EFIAPI + NetMapRemoveHead ( +- IN OUT NET_MAP *Map, +- OUT VOID **Value OPTIONAL ++ IN OUT NET_MAP *Map, ++ OUT VOID **Value OPTIONAL + ); + + /** +@@ -1025,13 +1017,13 @@ NetMapRemoveHead ( + VOID * + EFIAPI + NetMapRemoveTail ( +- IN OUT NET_MAP *Map, +- OUT VOID **Value OPTIONAL ++ IN OUT NET_MAP *Map, ++ OUT VOID **Value OPTIONAL + ); + + typedef + EFI_STATUS +-(EFIAPI *NET_MAP_CALLBACK) ( ++(EFIAPI *NET_MAP_CALLBACK)( + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Arg +@@ -1059,15 +1051,15 @@ EFI_STATUS + EFI_STATUS + EFIAPI + NetMapIterate ( +- IN NET_MAP *Map, +- IN NET_MAP_CALLBACK CallBack, +- IN VOID *Arg OPTIONAL ++ IN NET_MAP *Map, ++ IN NET_MAP_CALLBACK CallBack, ++ IN VOID *Arg OPTIONAL + ); + +- + // + // Helper functions to implement driver binding and service binding protocols. + // ++ + /** + Create a child of the service that is identified by ServiceBindingGuid. + +@@ -1088,10 +1080,10 @@ NetMapIterate ( + EFI_STATUS + EFIAPI + NetLibCreateServiceChild ( +- IN EFI_HANDLE Controller, +- IN EFI_HANDLE Image, +- IN EFI_GUID *ServiceBindingGuid, +- IN OUT EFI_HANDLE *ChildHandle ++ IN EFI_HANDLE Controller, ++ IN EFI_HANDLE Image, ++ IN EFI_GUID *ServiceBindingGuid, ++ IN OUT EFI_HANDLE *ChildHandle + ); + + /** +@@ -1113,10 +1105,10 @@ NetLibCreateServiceChild ( + EFI_STATUS + EFIAPI + NetLibDestroyServiceChild ( +- IN EFI_HANDLE Controller, +- IN EFI_HANDLE Image, +- IN EFI_GUID *ServiceBindingGuid, +- IN EFI_HANDLE ChildHandle ++ IN EFI_HANDLE Controller, ++ IN EFI_HANDLE Image, ++ IN EFI_GUID *ServiceBindingGuid, ++ IN EFI_HANDLE ChildHandle + ); + + /** +@@ -1138,8 +1130,8 @@ NetLibDestroyServiceChild ( + EFI_HANDLE + EFIAPI + NetLibGetSnpHandle ( +- IN EFI_HANDLE ServiceHandle, +- OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL ++ IN EFI_HANDLE ServiceHandle, ++ OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL + ); + + /** +@@ -1158,7 +1150,7 @@ NetLibGetSnpHandle ( + UINT16 + EFIAPI + NetLibGetVlanId ( +- IN EFI_HANDLE ServiceHandle ++ IN EFI_HANDLE ServiceHandle + ); + + /** +@@ -1178,8 +1170,8 @@ NetLibGetVlanId ( + EFI_HANDLE + EFIAPI + NetLibGetVlanHandle ( +- IN EFI_HANDLE ControllerHandle, +- IN UINT16 VlanId ++ IN EFI_HANDLE ControllerHandle, ++ IN UINT16 VlanId + ); + + /** +@@ -1204,9 +1196,9 @@ NetLibGetVlanHandle ( + EFI_STATUS + EFIAPI + NetLibGetMacAddress ( +- IN EFI_HANDLE ServiceHandle, +- OUT EFI_MAC_ADDRESS *MacAddress, +- OUT UINTN *AddressSize ++ IN EFI_HANDLE ServiceHandle, ++ OUT EFI_MAC_ADDRESS *MacAddress, ++ OUT UINTN *AddressSize + ); + + /** +@@ -1274,8 +1266,8 @@ NetLibGetMacString ( + EFI_STATUS + EFIAPI + NetLibDetectMedia ( +- IN EFI_HANDLE ServiceHandle, +- OUT BOOLEAN *MediaPresent ++ IN EFI_HANDLE ServiceHandle, ++ OUT BOOLEAN *MediaPresent + ); + + /** +@@ -1305,12 +1297,11 @@ NetLibDetectMedia ( + EFI_STATUS + EFIAPI + NetLibDetectMediaWaitTimeout ( +- IN EFI_HANDLE ServiceHandle, +- IN UINT64 Timeout, +- OUT EFI_STATUS *MediaState ++ IN EFI_HANDLE ServiceHandle, ++ IN UINT64 Timeout, ++ OUT EFI_STATUS *MediaState + ); + +- + /** + Create an IPv4 device path node. + +@@ -1377,7 +1368,6 @@ NetLibCreateIPv6DPathNode ( + IN UINT16 Protocol + ); + +- + /** + Find the UNDI/SNP handle from controller and protocol GUID. + +@@ -1400,8 +1390,8 @@ NetLibCreateIPv6DPathNode ( + EFI_HANDLE + EFIAPI + NetLibGetNicHandle ( +- IN EFI_HANDLE Controller, +- IN EFI_GUID *ProtocolGuid ++ IN EFI_HANDLE Controller, ++ IN EFI_GUID *ProtocolGuid + ); + + /** +@@ -1419,7 +1409,7 @@ NetLibGetNicHandle ( + EFI_STATUS + EFIAPI + NetLibDefaultUnload ( +- IN EFI_HANDLE ImageHandle ++ IN EFI_HANDLE ImageHandle + ); + + /** +@@ -1435,8 +1425,8 @@ NetLibDefaultUnload ( + EFI_STATUS + EFIAPI + NetLibAsciiStrToIp4 ( +- IN CONST CHAR8 *String, +- OUT EFI_IPv4_ADDRESS *Ip4Address ++ IN CONST CHAR8 *String, ++ OUT EFI_IPv4_ADDRESS *Ip4Address + ); + + /** +@@ -1453,8 +1443,8 @@ NetLibAsciiStrToIp4 ( + EFI_STATUS + EFIAPI + NetLibAsciiStrToIp6 ( +- IN CONST CHAR8 *String, +- OUT EFI_IPv6_ADDRESS *Ip6Address ++ IN CONST CHAR8 *String, ++ OUT EFI_IPv6_ADDRESS *Ip6Address + ); + + /** +@@ -1470,8 +1460,8 @@ NetLibAsciiStrToIp6 ( + EFI_STATUS + EFIAPI + NetLibStrToIp4 ( +- IN CONST CHAR16 *String, +- OUT EFI_IPv4_ADDRESS *Ip4Address ++ IN CONST CHAR16 *String, ++ OUT EFI_IPv4_ADDRESS *Ip4Address + ); + + /** +@@ -1488,8 +1478,8 @@ NetLibStrToIp4 ( + EFI_STATUS + EFIAPI + NetLibStrToIp6 ( +- IN CONST CHAR16 *String, +- OUT EFI_IPv6_ADDRESS *Ip6Address ++ IN CONST CHAR16 *String, ++ OUT EFI_IPv6_ADDRESS *Ip6Address + ); + + /** +@@ -1508,9 +1498,9 @@ NetLibStrToIp6 ( + EFI_STATUS + EFIAPI + NetLibStrToIp6andPrefix ( +- IN CONST CHAR16 *String, +- OUT EFI_IPv6_ADDRESS *Ip6Address, +- OUT UINT8 *PrefixLength ++ IN CONST CHAR16 *String, ++ OUT EFI_IPv6_ADDRESS *Ip6Address, ++ OUT UINT8 *PrefixLength + ); + + /** +@@ -1530,23 +1520,22 @@ NetLibStrToIp6andPrefix ( + EFI_STATUS + EFIAPI + NetLibIp6ToStr ( +- IN EFI_IPv6_ADDRESS *Ip6Address, +- OUT CHAR16 *String, +- IN UINTN StringSize ++ IN EFI_IPv6_ADDRESS *Ip6Address, ++ OUT CHAR16 *String, ++ IN UINTN StringSize + ); + + // + // Various signatures + // +-#define NET_BUF_SIGNATURE SIGNATURE_32 ('n', 'b', 'u', 'f') +-#define NET_VECTOR_SIGNATURE SIGNATURE_32 ('n', 'v', 'e', 'c') +-#define NET_QUE_SIGNATURE SIGNATURE_32 ('n', 'b', 'q', 'u') +- ++#define NET_BUF_SIGNATURE SIGNATURE_32 ('n', 'b', 'u', 'f') ++#define NET_VECTOR_SIGNATURE SIGNATURE_32 ('n', 'v', 'e', 'c') ++#define NET_QUE_SIGNATURE SIGNATURE_32 ('n', 'b', 'q', 'u') + +-#define NET_PROTO_DATA 64 // Opaque buffer for protocols +-#define NET_BUF_HEAD 1 // Trim or allocate space from head +-#define NET_BUF_TAIL 0 // Trim or allocate space from tail +-#define NET_VECTOR_OWN_FIRST 0x01 // We allocated the 1st block in the vector ++#define NET_PROTO_DATA 64 // Opaque buffer for protocols ++#define NET_BUF_HEAD 1 // Trim or allocate space from head ++#define NET_BUF_TAIL 0 // Trim or allocate space from tail ++#define NET_VECTOR_OWN_FIRST 0x01 // We allocated the 1st block in the vector + + #define NET_CHECK_SIGNATURE(PData, SIGNATURE) \ + ASSERT (((PData) != NULL) && ((PData)->Signature == (SIGNATURE))) +@@ -1555,39 +1544,39 @@ NetLibIp6ToStr ( + // Single memory block in the vector. + // + typedef struct { +- UINT32 Len; // The block's length +- UINT8 *Bulk; // The block's Data ++ UINT32 Len; // The block's length ++ UINT8 *Bulk; // The block's Data + } NET_BLOCK; + +-typedef VOID (EFIAPI *NET_VECTOR_EXT_FREE) (VOID *Arg); ++typedef VOID (EFIAPI *NET_VECTOR_EXT_FREE)(VOID *Arg); + + // +-//NET_VECTOR contains several blocks to hold all packet's +-//fragments and other house-keeping stuff for sharing. It +-//doesn't specify the where actual packet fragment begins. ++// NET_VECTOR contains several blocks to hold all packet's ++// fragments and other house-keeping stuff for sharing. It ++// doesn't specify the where actual packet fragment begins. + // + typedef struct { +- UINT32 Signature; +- INTN RefCnt; // Reference count to share NET_VECTOR. +- NET_VECTOR_EXT_FREE Free; // external function to free NET_VECTOR +- VOID *Arg; // opaque argument to Free +- UINT32 Flag; // Flags, NET_VECTOR_OWN_FIRST +- UINT32 Len; // Total length of the associated BLOCKs +- +- UINT32 BlockNum; +- NET_BLOCK Block[1]; ++ UINT32 Signature; ++ INTN RefCnt; // Reference count to share NET_VECTOR. ++ NET_VECTOR_EXT_FREE Free; // external function to free NET_VECTOR ++ VOID *Arg; // opaque argument to Free ++ UINT32 Flag; // Flags, NET_VECTOR_OWN_FIRST ++ UINT32 Len; // Total length of the associated BLOCKs ++ ++ UINT32 BlockNum; ++ NET_BLOCK Block[1]; + } NET_VECTOR; + + // +-//NET_BLOCK_OP operates on the NET_BLOCK. It specifies +-//where the actual fragment begins and ends ++// NET_BLOCK_OP operates on the NET_BLOCK. It specifies ++// where the actual fragment begins and ends + // + typedef struct { +- UINT8 *BlockHead; // Block's head, or the smallest valid Head +- UINT8 *BlockTail; // Block's tail. BlockTail-BlockHead=block length +- UINT8 *Head; // 1st byte of the data in the block +- UINT8 *Tail; // Tail of the data in the block, Tail-Head=Size +- UINT32 Size; // The size of the data ++ UINT8 *BlockHead; // Block's head, or the smallest valid Head ++ UINT8 *BlockTail; // Block's tail. BlockTail-BlockHead=block length ++ UINT8 *Head; // 1st byte of the data in the block ++ UINT8 *Tail; // Tail of the data in the block, Tail-Head=Size ++ UINT32 Size; // The size of the data + } NET_BLOCK_OP; + + typedef union { +@@ -1596,44 +1585,44 @@ typedef union { + } NET_IP_HEAD; + + // +-//NET_BUF is the buffer manage structure used by the +-//network stack. Every network packet may be fragmented. The Vector points to +-//memory blocks used by each fragment, and BlockOp +-//specifies where each fragment begins and ends. ++// NET_BUF is the buffer manage structure used by the ++// network stack. Every network packet may be fragmented. The Vector points to ++// memory blocks used by each fragment, and BlockOp ++// specifies where each fragment begins and ends. + // +-//It also contains an opaque area for the protocol to store +-//per-packet information. Protocol must be careful not +-//to overwrite the members after that. ++// It also contains an opaque area for the protocol to store ++// per-packet information. Protocol must be careful not ++// to overwrite the members after that. + // + typedef struct { +- UINT32 Signature; +- INTN RefCnt; +- LIST_ENTRY List; // The List this NET_BUF is on ++ UINT32 Signature; ++ INTN RefCnt; ++ LIST_ENTRY List; // The List this NET_BUF is on + +- NET_IP_HEAD Ip; // Network layer header, for fast access +- TCP_HEAD *Tcp; // Transport layer header, for fast access +- EFI_UDP_HEADER *Udp; // User Datagram Protocol header +- UINT8 ProtoData [NET_PROTO_DATA]; //Protocol specific data ++ NET_IP_HEAD Ip; // Network layer header, for fast access ++ TCP_HEAD *Tcp; // Transport layer header, for fast access ++ EFI_UDP_HEADER *Udp; // User Datagram Protocol header ++ UINT8 ProtoData[NET_PROTO_DATA]; // Protocol specific data + +- NET_VECTOR *Vector; // The vector containing the packet ++ NET_VECTOR *Vector; // The vector containing the packet + +- UINT32 BlockOpNum; // Total number of BlockOp in the buffer +- UINT32 TotalSize; // Total size of the actual packet +- NET_BLOCK_OP BlockOp[1]; // Specify the position of actual packet ++ UINT32 BlockOpNum; // Total number of BlockOp in the buffer ++ UINT32 TotalSize; // Total size of the actual packet ++ NET_BLOCK_OP BlockOp[1]; // Specify the position of actual packet + } NET_BUF; + + // +-//A queue of NET_BUFs. It is a thin extension of +-//NET_BUF functions. ++// A queue of NET_BUFs. It is a thin extension of ++// NET_BUF functions. + // + typedef struct { +- UINT32 Signature; +- INTN RefCnt; +- LIST_ENTRY List; // The List this buffer queue is on ++ UINT32 Signature; ++ INTN RefCnt; ++ LIST_ENTRY List; // The List this buffer queue is on + +- LIST_ENTRY BufList; // list of queued buffers +- UINT32 BufSize; // total length of DATA in the buffers +- UINT32 BufNum; // total number of buffers on the chain ++ LIST_ENTRY BufList; // list of queued buffers ++ UINT32 BufSize; // total length of DATA in the buffers ++ UINT32 BufNum; // total number of buffers on the chain + } NET_BUF_QUEUE; + + // +@@ -1641,19 +1630,19 @@ typedef struct { + // + #pragma pack(1) + typedef struct { +- IP4_ADDR SrcIp; +- IP4_ADDR DstIp; +- UINT8 Reserved; +- UINT8 Protocol; +- UINT16 Len; ++ IP4_ADDR SrcIp; ++ IP4_ADDR DstIp; ++ UINT8 Reserved; ++ UINT8 Protocol; ++ UINT16 Len; + } NET_PSEUDO_HDR; + + typedef struct { + EFI_IPv6_ADDRESS SrcIp; + EFI_IPv6_ADDRESS DstIp; + UINT32 Len; +- UINT32 Reserved:24; +- UINT32 NextHeader:8; ++ UINT32 Reserved : 24; ++ UINT32 NextHeader : 8; + } NET_IP6_PSEUDO_HDR; + #pragma pack() + +@@ -1663,13 +1652,13 @@ typedef struct { + // the two in case that NET_BLOCK be enhanced later. + // + typedef struct { +- UINT32 Len; +- UINT8 *Bulk; ++ UINT32 Len; ++ UINT8 *Bulk; + } NET_FRAGMENT; + +-#define NET_GET_REF(PData) ((PData)->RefCnt++) +-#define NET_PUT_REF(PData) ((PData)->RefCnt--) +-#define NETBUF_FROM_PROTODATA(Info) BASE_CR((Info), NET_BUF, ProtoData) ++#define NET_GET_REF(PData) ((PData)->RefCnt++) ++#define NET_PUT_REF(PData) ((PData)->RefCnt--) ++#define NETBUF_FROM_PROTODATA(Info) BASE_CR((Info), NET_BUF, ProtoData) + + #define NET_BUF_SHARED(Buf) \ + (((Buf)->RefCnt > 1) || ((Buf)->Vector->RefCnt > 1)) +@@ -1699,7 +1688,7 @@ typedef struct { + NET_BUF * + EFIAPI + NetbufAlloc ( +- IN UINT32 Len ++ IN UINT32 Len + ); + + /** +@@ -1717,7 +1706,7 @@ NetbufAlloc ( + VOID + EFIAPI + NetbufFree ( +- IN NET_BUF *Nbuf ++ IN NET_BUF *Nbuf + ); + + /** +@@ -1740,9 +1729,9 @@ NetbufFree ( + UINT8 * + EFIAPI + NetbufGetByte ( +- IN NET_BUF *Nbuf, +- IN UINT32 Offset, +- OUT UINT32 *Index OPTIONAL ++ IN NET_BUF *Nbuf, ++ IN UINT32 Offset, ++ OUT UINT32 *Index OPTIONAL + ); + + /** +@@ -1760,7 +1749,7 @@ NetbufGetByte ( + NET_BUF * + EFIAPI + NetbufClone ( +- IN NET_BUF *Nbuf ++ IN NET_BUF *Nbuf + ); + + /** +@@ -1782,9 +1771,9 @@ NetbufClone ( + NET_BUF * + EFIAPI + NetbufDuplicate ( +- IN NET_BUF *Nbuf, +- IN OUT NET_BUF *Duplicate OPTIONAL, +- IN UINT32 HeadSpace ++ IN NET_BUF *Nbuf, ++ IN OUT NET_BUF *Duplicate OPTIONAL, ++ IN UINT32 HeadSpace + ); + + /** +@@ -1807,10 +1796,10 @@ NetbufDuplicate ( + NET_BUF * + EFIAPI + NetbufGetFragment ( +- IN NET_BUF *Nbuf, +- IN UINT32 Offset, +- IN UINT32 Len, +- IN UINT32 HeadSpace ++ IN NET_BUF *Nbuf, ++ IN UINT32 Offset, ++ IN UINT32 Len, ++ IN UINT32 HeadSpace + ); + + /** +@@ -1828,8 +1817,8 @@ NetbufGetFragment ( + VOID + EFIAPI + NetbufReserve ( +- IN OUT NET_BUF *Nbuf, +- IN UINT32 Len ++ IN OUT NET_BUF *Nbuf, ++ IN UINT32 Len + ); + + /** +@@ -1844,12 +1833,12 @@ NetbufReserve ( + or NULL, if there is no sufficient space. + + **/ +-UINT8* ++UINT8 * + EFIAPI + NetbufAllocSpace ( +- IN OUT NET_BUF *Nbuf, +- IN UINT32 Len, +- IN BOOLEAN FromHead ++ IN OUT NET_BUF *Nbuf, ++ IN UINT32 Len, ++ IN BOOLEAN FromHead + ); + + /** +@@ -1867,9 +1856,9 @@ NetbufAllocSpace ( + UINT32 + EFIAPI + NetbufTrim ( +- IN OUT NET_BUF *Nbuf, +- IN UINT32 Len, +- IN BOOLEAN FromHead ++ IN OUT NET_BUF *Nbuf, ++ IN UINT32 Len, ++ IN BOOLEAN FromHead + ); + + /** +@@ -1890,10 +1879,10 @@ NetbufTrim ( + UINT32 + EFIAPI + NetbufCopy ( +- IN NET_BUF *Nbuf, +- IN UINT32 Offset, +- IN UINT32 Len, +- IN UINT8 *Dest ++ IN NET_BUF *Nbuf, ++ IN UINT32 Offset, ++ IN UINT32 Len, ++ IN UINT8 *Dest + ); + + /** +@@ -1921,12 +1910,12 @@ NetbufCopy ( + NET_BUF * + EFIAPI + NetbufFromExt ( +- IN NET_FRAGMENT *ExtFragment, +- IN UINT32 ExtNum, +- IN UINT32 HeadSpace, +- IN UINT32 HeadLen, +- IN NET_VECTOR_EXT_FREE ExtFree, +- IN VOID *Arg OPTIONAL ++ IN NET_FRAGMENT *ExtFragment, ++ IN UINT32 ExtNum, ++ IN UINT32 HeadSpace, ++ IN UINT32 HeadLen, ++ IN NET_VECTOR_EXT_FREE ExtFree, ++ IN VOID *Arg OPTIONAL + ); + + /** +@@ -1945,9 +1934,9 @@ NetbufFromExt ( + EFI_STATUS + EFIAPI + NetbufBuildExt ( +- IN NET_BUF *Nbuf, +- IN OUT NET_FRAGMENT *ExtFragment, +- IN OUT UINT32 *ExtNum ++ IN NET_BUF *Nbuf, ++ IN OUT NET_FRAGMENT *ExtFragment, ++ IN OUT UINT32 *ExtNum + ); + + /** +@@ -1970,11 +1959,11 @@ NetbufBuildExt ( + NET_BUF * + EFIAPI + NetbufFromBufList ( +- IN LIST_ENTRY *BufList, +- IN UINT32 HeadSpace, +- IN UINT32 HeaderLen, +- IN NET_VECTOR_EXT_FREE ExtFree, +- IN VOID *Arg OPTIONAL ++ IN LIST_ENTRY *BufList, ++ IN UINT32 HeadSpace, ++ IN UINT32 HeaderLen, ++ IN NET_VECTOR_EXT_FREE ExtFree, ++ IN VOID *Arg OPTIONAL + ); + + /** +@@ -1986,7 +1975,7 @@ NetbufFromBufList ( + VOID + EFIAPI + NetbufFreeList ( +- IN OUT LIST_ENTRY *Head ++ IN OUT LIST_ENTRY *Head + ); + + /** +@@ -1998,7 +1987,7 @@ NetbufFreeList ( + VOID + EFIAPI + NetbufQueInit ( +- IN OUT NET_BUF_QUEUE *NbufQue ++ IN OUT NET_BUF_QUEUE *NbufQue + ); + + /** +@@ -2027,7 +2016,7 @@ NetbufQueAlloc ( + VOID + EFIAPI + NetbufQueFree ( +- IN NET_BUF_QUEUE *NbufQue ++ IN NET_BUF_QUEUE *NbufQue + ); + + /** +@@ -2042,7 +2031,7 @@ NetbufQueFree ( + NET_BUF * + EFIAPI + NetbufQueRemove ( +- IN OUT NET_BUF_QUEUE *NbufQue ++ IN OUT NET_BUF_QUEUE *NbufQue + ); + + /** +@@ -2055,8 +2044,8 @@ NetbufQueRemove ( + VOID + EFIAPI + NetbufQueAppend ( +- IN OUT NET_BUF_QUEUE *NbufQue, +- IN OUT NET_BUF *Nbuf ++ IN OUT NET_BUF_QUEUE *NbufQue, ++ IN OUT NET_BUF *Nbuf + ); + + /** +@@ -2078,10 +2067,10 @@ NetbufQueAppend ( + UINT32 + EFIAPI + NetbufQueCopy ( +- IN NET_BUF_QUEUE *NbufQue, +- IN UINT32 Offset, +- IN UINT32 Len, +- OUT UINT8 *Dest ++ IN NET_BUF_QUEUE *NbufQue, ++ IN UINT32 Offset, ++ IN UINT32 Len, ++ OUT UINT8 *Dest + ); + + /** +@@ -2100,11 +2089,10 @@ NetbufQueCopy ( + UINT32 + EFIAPI + NetbufQueTrim ( +- IN OUT NET_BUF_QUEUE *NbufQue, +- IN UINT32 Len ++ IN OUT NET_BUF_QUEUE *NbufQue, ++ IN UINT32 Len + ); + +- + /** + Flush the net buffer queue. + +@@ -2114,7 +2102,7 @@ NetbufQueTrim ( + VOID + EFIAPI + NetbufQueFlush ( +- IN OUT NET_BUF_QUEUE *NbufQue ++ IN OUT NET_BUF_QUEUE *NbufQue + ); + + /** +@@ -2129,8 +2117,8 @@ NetbufQueFlush ( + UINT16 + EFIAPI + NetblockChecksum ( +- IN UINT8 *Bulk, +- IN UINT32 Len ++ IN UINT8 *Bulk, ++ IN UINT32 Len + ); + + /** +@@ -2145,8 +2133,8 @@ NetblockChecksum ( + UINT16 + EFIAPI + NetAddChecksum ( +- IN UINT16 Checksum1, +- IN UINT16 Checksum2 ++ IN UINT16 Checksum1, ++ IN UINT16 Checksum2 + ); + + /** +@@ -2160,7 +2148,7 @@ NetAddChecksum ( + UINT16 + EFIAPI + NetbufChecksum ( +- IN NET_BUF *Nbuf ++ IN NET_BUF *Nbuf + ); + + /** +@@ -2179,10 +2167,10 @@ NetbufChecksum ( + UINT16 + EFIAPI + NetPseudoHeadChecksum ( +- IN IP4_ADDR Src, +- IN IP4_ADDR Dst, +- IN UINT8 Proto, +- IN UINT16 Len ++ IN IP4_ADDR Src, ++ IN IP4_ADDR Dst, ++ IN UINT8 Proto, ++ IN UINT16 Len + ); + + /** +@@ -2201,10 +2189,10 @@ NetPseudoHeadChecksum ( + UINT16 + EFIAPI + NetIp6PseudoHeadChecksum ( +- IN EFI_IPv6_ADDRESS *Src, +- IN EFI_IPv6_ADDRESS *Dst, +- IN UINT8 NextHeader, +- IN UINT32 Len ++ IN EFI_IPv6_ADDRESS *Src, ++ IN EFI_IPv6_ADDRESS *Dst, ++ IN UINT8 NextHeader, ++ IN UINT32 Len + ); + + /** +@@ -2220,7 +2208,7 @@ NetIp6PseudoHeadChecksum ( + **/ + VOID + NetIpSecNetbufFree ( +- NET_BUF *Nbuf ++ NET_BUF *Nbuf + ); + + /** +@@ -2237,7 +2225,7 @@ NetIpSecNetbufFree ( + EFI_STATUS + EFIAPI + NetLibGetSystemGuid ( +- OUT EFI_GUID *SystemGuid ++ OUT EFI_GUID *SystemGuid + ); + + /** +@@ -2260,7 +2248,7 @@ NetLibGetSystemGuid ( + CHAR8 * + EFIAPI + NetLibCreateDnsQName ( +- IN CHAR16 *DomainName ++ IN CHAR16 *DomainName + ); + + #endif +diff --git a/NetworkPkg/Ip4Dxe/Ip4Driver.c b/NetworkPkg/Ip4Dxe/Ip4Driver.c +index 7fed659ca1..ec483ff01f 100644 +--- a/NetworkPkg/Ip4Dxe/Ip4Driver.c ++++ b/NetworkPkg/Ip4Dxe/Ip4Driver.c +@@ -10,7 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + + #include "Ip4Impl.h" + +-EFI_DRIVER_BINDING_PROTOCOL gIp4DriverBinding = { ++EFI_DRIVER_BINDING_PROTOCOL gIp4DriverBinding = { + Ip4DriverBindingSupported, + Ip4DriverBindingStart, + Ip4DriverBindingStop, +@@ -35,13 +35,14 @@ IpSec2InstalledCallback ( + IN VOID *Context + ) + { +- EFI_STATUS Status; ++ EFI_STATUS Status; ++ + // + // Test if protocol was even found. + // Notification function will be called at least once. + // + Status = gBS->LocateProtocol (&gEfiIpSec2ProtocolGuid, NULL, (VOID **)&mIpSec); +- if (Status == EFI_SUCCESS && mIpSec != NULL) { ++ if ((Status == EFI_SUCCESS) && (mIpSec != NULL)) { + // + // Close the event so it does not get called again. + // +@@ -69,11 +70,11 @@ IpSec2InstalledCallback ( + EFI_STATUS + EFIAPI + Ip4DriverEntryPoint ( +- IN EFI_HANDLE ImageHandle, +- IN EFI_SYSTEM_TABLE *SystemTable ++ IN EFI_HANDLE ImageHandle, ++ IN EFI_SYSTEM_TABLE *SystemTable + ) + { +- VOID *Registration; ++ VOID *Registration; + + EfiCreateProtocolNotifyEvent ( + &gEfiIpSec2ProtocolGuid, +@@ -114,12 +115,12 @@ Ip4DriverEntryPoint ( + EFI_STATUS + EFIAPI + Ip4DriverBindingSupported ( +- IN EFI_DRIVER_BINDING_PROTOCOL * This, ++ IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, +- IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL ++ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ) + { +- EFI_STATUS Status; ++ EFI_STATUS Status; + + // + // Test for the MNP service binding Protocol +@@ -167,10 +168,9 @@ Ip4DriverBindingSupported ( + **/ + EFI_STATUS + Ip4CleanService ( +- IN IP4_SERVICE *IpSb ++ IN IP4_SERVICE *IpSb + ); + +- + /** + Create a new IP4 driver service binding private instance. + +@@ -187,13 +187,13 @@ Ip4CleanService ( + **/ + EFI_STATUS + Ip4CreateService ( +- IN EFI_HANDLE Controller, +- IN EFI_HANDLE ImageHandle, +- OUT IP4_SERVICE **Service ++ IN EFI_HANDLE Controller, ++ IN EFI_HANDLE ImageHandle, ++ OUT IP4_SERVICE **Service + ) + { +- IP4_SERVICE *IpSb; +- EFI_STATUS Status; ++ IP4_SERVICE *IpSb; ++ EFI_STATUS Status; + + ASSERT (Service != NULL); + +@@ -215,23 +215,23 @@ Ip4CreateService ( + IpSb->ServiceBinding.DestroyChild = Ip4ServiceBindingDestroyChild; + IpSb->State = IP4_SERVICE_UNSTARTED; + +- IpSb->NumChildren = 0; ++ IpSb->NumChildren = 0; + InitializeListHead (&IpSb->Children); + + InitializeListHead (&IpSb->Interfaces); +- IpSb->DefaultInterface = NULL; +- IpSb->DefaultRouteTable = NULL; ++ IpSb->DefaultInterface = NULL; ++ IpSb->DefaultRouteTable = NULL; + + Ip4InitAssembleTable (&IpSb->Assemble); + +- IpSb->IgmpCtrl.Igmpv1QuerySeen = 0; ++ IpSb->IgmpCtrl.Igmpv1QuerySeen = 0; + InitializeListHead (&IpSb->IgmpCtrl.Groups); + +- IpSb->Image = ImageHandle; +- IpSb->Controller = Controller; ++ IpSb->Image = ImageHandle; ++ IpSb->Controller = Controller; + +- IpSb->MnpChildHandle = NULL; +- IpSb->Mnp = NULL; ++ IpSb->MnpChildHandle = NULL; ++ IpSb->Mnp = NULL; + + IpSb->MnpConfigData.ReceivedQueueTimeoutValue = 0; + IpSb->MnpConfigData.TransmitQueueTimeoutValue = 0; +@@ -246,7 +246,7 @@ Ip4CreateService ( + + ZeroMem (&IpSb->SnpMode, sizeof (EFI_SIMPLE_NETWORK_MODE)); + +- IpSb->Timer = NULL; ++ IpSb->Timer = NULL; + IpSb->ReconfigCheckTimer = NULL; + + IpSb->ReconfigEvent = NULL; +@@ -316,7 +316,7 @@ Ip4CreateService ( + Status = gBS->OpenProtocol ( + IpSb->MnpChildHandle, + &gEfiManagedNetworkProtocolGuid, +- (VOID **) &IpSb->Mnp, ++ (VOID **)&IpSb->Mnp, + ImageHandle, + Controller, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -345,7 +345,7 @@ Ip4CreateService ( + } + + IpSb->MacString = NULL; +- Status = NetLibGetMacString (IpSb->Controller, IpSb->Image, &IpSb->MacString); ++ Status = NetLibGetMacString (IpSb->Controller, IpSb->Image, &IpSb->MacString); + + if (EFI_ERROR (Status)) { + goto ON_ERROR; +@@ -375,8 +375,9 @@ Ip4CreateService ( + // + IpSb->MaxPacketSize -= NET_VLAN_TAG_LEN; + } ++ + IpSb->OldMaxPacketSize = IpSb->MaxPacketSize; +- *Service = IpSb; ++ *Service = IpSb; + + return EFI_SUCCESS; + +@@ -387,7 +388,6 @@ ON_ERROR: + return Status; + } + +- + /** + Clean up a IP4 service binding instance. It will release all + the resource allocated by the instance. The instance may be +@@ -403,12 +403,12 @@ ON_ERROR: + **/ + EFI_STATUS + Ip4CleanService ( +- IN IP4_SERVICE *IpSb ++ IN IP4_SERVICE *IpSb + ) + { +- EFI_STATUS Status; ++ EFI_STATUS Status; + +- IpSb->State = IP4_SERVICE_DESTROY; ++ IpSb->State = IP4_SERVICE_DESTROY; + + if (IpSb->Timer != NULL) { + gBS->SetTimer (IpSb->Timer, TimerCancel, 0); +@@ -493,8 +493,8 @@ Ip4CleanService ( + EFI_STATUS + EFIAPI + Ip4DestroyChildEntryInHandleBuffer ( +- IN LIST_ENTRY *Entry, +- IN VOID *Context ++ IN LIST_ENTRY *Entry, ++ IN VOID *Context + ) + { + IP4_PROTOCOL *IpInstance; +@@ -502,14 +502,14 @@ Ip4DestroyChildEntryInHandleBuffer ( + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; + +- if (Entry == NULL || Context == NULL) { ++ if ((Entry == NULL) || (Context == NULL)) { + return EFI_INVALID_PARAMETER; + } + +- IpInstance = NET_LIST_USER_STRUCT_S (Entry, IP4_PROTOCOL, Link, IP4_PROTOCOL_SIGNATURE); +- ServiceBinding = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; +- NumberOfChildren = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; +- ChildHandleBuffer = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; ++ IpInstance = NET_LIST_USER_STRUCT_S (Entry, IP4_PROTOCOL, Link, IP4_PROTOCOL_SIGNATURE); ++ ServiceBinding = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; ++ NumberOfChildren = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; ++ ChildHandleBuffer = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; + + if (!NetIsInHandleBuffer (IpInstance->Handle, NumberOfChildren, ChildHandleBuffer)) { + return EFI_SUCCESS; +@@ -544,11 +544,11 @@ Ip4DriverBindingStart ( + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ) + { +- EFI_STATUS Status; +- IP4_SERVICE *IpSb; +- EFI_IP4_CONFIG2_PROTOCOL *Ip4Cfg2; +- UINTN Index; +- IP4_CONFIG2_DATA_ITEM *DataItem; ++ EFI_STATUS Status; ++ IP4_SERVICE *IpSb; ++ EFI_IP4_CONFIG2_PROTOCOL *Ip4Cfg2; ++ UINTN Index; ++ IP4_CONFIG2_DATA_ITEM *DataItem; + + IpSb = NULL; + Ip4Cfg2 = NULL; +@@ -578,7 +578,7 @@ Ip4DriverBindingStart ( + + ASSERT (IpSb != NULL); + +- Ip4Cfg2 = &IpSb->Ip4Config2Instance.Ip4Config2; ++ Ip4Cfg2 = &IpSb->Ip4Config2Instance.Ip4Config2; + + // + // Install the Ip4ServiceBinding Protocol onto ControllerHandle +@@ -617,11 +617,11 @@ Ip4DriverBindingStart ( + DataItem->DataSize, + DataItem->Data.Ptr + ); +- if (EFI_ERROR(Status)) { ++ if (EFI_ERROR (Status)) { + goto UNINSTALL_PROTOCOL; + } + +- if (Index == Ip4Config2DataTypePolicy && (*(DataItem->Data.Policy) == Ip4Config2PolicyDhcp)) { ++ if ((Index == Ip4Config2DataTypePolicy) && (*(DataItem->Data.Policy) == Ip4Config2PolicyDhcp)) { + break; + } + } +@@ -634,7 +634,7 @@ Ip4DriverBindingStart ( + // + Status = Ip4ReceiveFrame (IpSb->DefaultInterface, NULL, Ip4AccpetFrame, IpSb); + +- if (EFI_ERROR (Status) && Status != EFI_ALREADY_STARTED) { ++ if (EFI_ERROR (Status) && (Status != EFI_ALREADY_STARTED)) { + goto UNINSTALL_PROTOCOL; + } + +@@ -673,7 +673,6 @@ FREE_SERVICE: + return Status; + } + +- + /** + Stop this driver on ControllerHandle. This service is called by the + EFI boot service DisconnectController(). In order to +@@ -711,9 +710,9 @@ Ip4DriverBindingStop ( + IP4_INTERFACE *IpIf; + IP4_ROUTE_TABLE *RouteTable; + +- BOOLEAN IsDhcp4; ++ BOOLEAN IsDhcp4; + +- IsDhcp4 = FALSE; ++ IsDhcp4 = FALSE; + + NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiManagedNetworkProtocolGuid); + if (NicHandle == NULL) { +@@ -731,7 +730,7 @@ Ip4DriverBindingStop ( + Status = gBS->OpenProtocol ( + NicHandle, + &gEfiIp4ServiceBindingProtocolGuid, +- (VOID **) &ServiceBinding, ++ (VOID **)&ServiceBinding, + This->DriverBindingHandle, + NicHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -747,18 +746,17 @@ Ip4DriverBindingStop ( + gBS->CloseEvent (IpSb->Ip4Config2Instance.Dhcp4Event); + IpSb->Ip4Config2Instance.Dhcp4Event = NULL; + } else if (NumberOfChildren != 0) { +- List = &IpSb->Children; ++ List = &IpSb->Children; + Context.ServiceBinding = ServiceBinding; + Context.NumberOfChildren = NumberOfChildren; + Context.ChildHandleBuffer = ChildHandleBuffer; +- Status = NetDestroyLinkList ( +- List, +- Ip4DestroyChildEntryInHandleBuffer, +- &Context, +- NULL +- ); ++ Status = NetDestroyLinkList ( ++ List, ++ Ip4DestroyChildEntryInHandleBuffer, ++ &Context, ++ NULL ++ ); + } else if (IpSb->DefaultInterface->ArpHandle == ControllerHandle) { +- + // + // The ARP protocol for the default interface is being uninstalled and all + // its IP child handles should have been destroyed before. So, release the +@@ -772,21 +770,21 @@ Ip4DriverBindingStop ( + if (IpIf == NULL) { + goto ON_ERROR; + } ++ + RouteTable = Ip4CreateRouteTable (); + if (RouteTable == NULL) { + Ip4FreeInterface (IpIf, NULL); +- goto ON_ERROR;; ++ goto ON_ERROR; + } + +- IpSb->DefaultInterface = IpIf; ++ IpSb->DefaultInterface = IpIf; + InsertHeadList (&IpSb->Interfaces, &IpIf->Link); + IpSb->DefaultRouteTable = RouteTable; + Ip4ReceiveFrame (IpIf, NULL, Ip4AccpetFrame, IpSb); + + IpSb->State = IP4_SERVICE_UNSTARTED; +- + } else if (IsListEmpty (&IpSb->Children)) { +- State = IpSb->State; ++ State = IpSb->State; + // + // OK, clean other resources then uninstall the service binding protocol. + // +@@ -809,6 +807,7 @@ Ip4DriverBindingStop ( + FreeUnicodeStringTable (gIp4ControllerNameTable); + gIp4ControllerNameTable = NULL; + } ++ + FreePool (IpSb); + } + +@@ -816,7 +815,6 @@ ON_ERROR: + return Status; + } + +- + /** + Creates a child handle and installs a protocol. + +@@ -843,11 +841,11 @@ Ip4ServiceBindingCreateChild ( + IN OUT EFI_HANDLE *ChildHandle + ) + { +- IP4_SERVICE *IpSb; +- IP4_PROTOCOL *IpInstance; +- EFI_TPL OldTpl; +- EFI_STATUS Status; +- VOID *Mnp; ++ IP4_SERVICE *IpSb; ++ IP4_PROTOCOL *IpInstance; ++ EFI_TPL OldTpl; ++ EFI_STATUS Status; ++ VOID *Mnp; + + if ((This == NULL) || (ChildHandle == NULL)) { + return EFI_INVALID_PARAMETER; +@@ -884,7 +882,7 @@ Ip4ServiceBindingCreateChild ( + Status = gBS->OpenProtocol ( + IpSb->MnpChildHandle, + &gEfiManagedNetworkProtocolGuid, +- (VOID **) &Mnp, ++ (VOID **)&Mnp, + gIp4DriverBinding.DriverBindingHandle, + IpInstance->Handle, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER +@@ -913,7 +911,6 @@ Ip4ServiceBindingCreateChild ( + ON_ERROR: + + if (EFI_ERROR (Status)) { +- + Ip4CleanProtocol (IpInstance); + + FreePool (IpInstance); +@@ -922,7 +919,6 @@ ON_ERROR: + return Status; + } + +- + /** + Destroys a child handle with a protocol installed on it. + +@@ -948,11 +944,11 @@ Ip4ServiceBindingDestroyChild ( + IN EFI_HANDLE ChildHandle + ) + { +- EFI_STATUS Status; +- IP4_SERVICE *IpSb; +- IP4_PROTOCOL *IpInstance; +- EFI_IP4_PROTOCOL *Ip4; +- EFI_TPL OldTpl; ++ EFI_STATUS Status; ++ IP4_SERVICE *IpSb; ++ IP4_PROTOCOL *IpInstance; ++ EFI_IP4_PROTOCOL *Ip4; ++ EFI_TPL OldTpl; + + if ((This == NULL) || (ChildHandle == NULL)) { + return EFI_INVALID_PARAMETER; +@@ -961,12 +957,12 @@ Ip4ServiceBindingDestroyChild ( + // + // Retrieve the private context data structures + // +- IpSb = IP4_SERVICE_FROM_PROTOCOL (This); ++ IpSb = IP4_SERVICE_FROM_PROTOCOL (This); + + Status = gBS->OpenProtocol ( + ChildHandle, + &gEfiIp4ProtocolGuid, +- (VOID **) &Ip4, ++ (VOID **)&Ip4, + gIp4DriverBinding.DriverBindingHandle, + ChildHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -1007,7 +1003,7 @@ Ip4ServiceBindingDestroyChild ( + ChildHandle + ); + +- if (IpInstance->Interface != NULL && IpInstance->Interface->Arp != NULL) { ++ if ((IpInstance->Interface != NULL) && (IpInstance->Interface->Arp != NULL)) { + gBS->CloseProtocol ( + IpInstance->Interface->ArpHandle, + &gEfiArpProtocolGuid, +diff --git a/NetworkPkg/Ip6Dxe/Ip6If.c b/NetworkPkg/Ip6Dxe/Ip6If.c +index 5b46971057..4629c05f25 100644 +--- a/NetworkPkg/Ip6Dxe/Ip6If.c ++++ b/NetworkPkg/Ip6Dxe/Ip6If.c +@@ -19,8 +19,8 @@ + VOID + EFIAPI + Ip6OnFrameSent ( +- IN EFI_EVENT Event, +- IN VOID *Context ++ IN EFI_EVENT Event, ++ IN VOID *Context + ); + + /** +@@ -37,11 +37,11 @@ Ip6OnFrameSent ( + **/ + BOOLEAN + Ip6CancelInstanceFrame ( +- IN IP6_LINK_TX_TOKEN *Frame, +- IN VOID *Context ++ IN IP6_LINK_TX_TOKEN *Frame, ++ IN VOID *Context + ) + { +- if (Frame->IpInstance == (IP6_PROTOCOL *) Context) { ++ if (Frame->IpInstance == (IP6_PROTOCOL *)Context) { + return TRUE; + } + +@@ -73,14 +73,14 @@ Ip6CancelInstanceFrame ( + **/ + EFI_STATUS + Ip6SetAddress ( +- IN IP6_INTERFACE *Interface, +- IN EFI_IPv6_ADDRESS *Ip6Addr, +- IN BOOLEAN IsAnycast, +- IN UINT8 PrefixLength, +- IN UINT32 ValidLifetime, +- IN UINT32 PreferredLifetime, +- IN IP6_DAD_CALLBACK DadCallback OPTIONAL, +- IN VOID *Context OPTIONAL ++ IN IP6_INTERFACE *Interface, ++ IN EFI_IPv6_ADDRESS *Ip6Addr, ++ IN BOOLEAN IsAnycast, ++ IN UINT8 PrefixLength, ++ IN UINT32 ValidLifetime, ++ IN UINT32 PreferredLifetime, ++ IN IP6_DAD_CALLBACK DadCallback OPTIONAL, ++ IN VOID *Context OPTIONAL + ) + { + IP6_SERVICE *IpSb; +@@ -109,12 +109,12 @@ Ip6SetAddress ( + return EFI_SUCCESS; + } + +- AddressInfo = (IP6_ADDRESS_INFO *) AllocatePool (sizeof (IP6_ADDRESS_INFO)); ++ AddressInfo = (IP6_ADDRESS_INFO *)AllocatePool (sizeof (IP6_ADDRESS_INFO)); + if (AddressInfo == NULL) { + return EFI_OUT_OF_RESOURCES; + } + +- AddressInfo->Signature = IP6_ADDR_INFO_SIGNATURE; ++ AddressInfo->Signature = IP6_ADDR_INFO_SIGNATURE; + IP6_COPY_ADDRESS (&AddressInfo->Address, Ip6Addr); + AddressInfo->IsAnycast = IsAnycast; + AddressInfo->PrefixLength = PrefixLength; +@@ -158,24 +158,23 @@ Ip6SetAddress ( + AddressInfo->PrefixLength = IP6_LINK_LOCAL_PREFIX_LENGTH; + } + +- + // + // Node should delay joining the solicited-node multicast address by a random delay + // between 0 and MAX_RTR_SOLICITATION_DELAY (1 second). + // Thus queue the address to be processed in Duplicate Address Detection module + // after the delay time (in milliseconds). + // +- Delay = (UINT64) NET_RANDOM (NetRandomInitSeed ()); ++ Delay = (UINT64)NET_RANDOM (NetRandomInitSeed ()); + Delay = MultU64x32 (Delay, IP6_ONE_SECOND_IN_MS); + Delay = RShiftU64 (Delay, 32); + +- DelayNode = (IP6_DELAY_JOIN_LIST *) AllocatePool (sizeof (IP6_DELAY_JOIN_LIST)); ++ DelayNode = (IP6_DELAY_JOIN_LIST *)AllocatePool (sizeof (IP6_DELAY_JOIN_LIST)); + if (DelayNode == NULL) { + FreePool (AddressInfo); + return EFI_OUT_OF_RESOURCES; + } + +- DelayNode->DelayTime = (UINT32) (DivU64x32 (Delay, IP6_TIMER_INTERVAL_IN_MS)); ++ DelayNode->DelayTime = (UINT32)(DivU64x32 (Delay, IP6_TIMER_INTERVAL_IN_MS)); + DelayNode->Interface = Interface; + DelayNode->AddressInfo = AddressInfo; + DelayNode->DadCallback = DadCallback; +@@ -197,13 +196,13 @@ Ip6SetAddress ( + **/ + IP6_INTERFACE * + Ip6CreateInterface ( +- IN IP6_SERVICE *IpSb, +- IN BOOLEAN LinkLocal ++ IN IP6_SERVICE *IpSb, ++ IN BOOLEAN LinkLocal + ) + { +- EFI_STATUS Status; +- IP6_INTERFACE *Interface; +- EFI_IPv6_ADDRESS *Ip6Addr; ++ EFI_STATUS Status; ++ IP6_INTERFACE *Interface; ++ EFI_IPv6_ADDRESS *Ip6Addr; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + +@@ -212,27 +211,27 @@ Ip6CreateInterface ( + return NULL; + } + +- Interface->Signature = IP6_INTERFACE_SIGNATURE; +- Interface->RefCnt = 1; ++ Interface->Signature = IP6_INTERFACE_SIGNATURE; ++ Interface->RefCnt = 1; + + InitializeListHead (&Interface->AddressList); +- Interface->AddressCount = 0; +- Interface->Configured = FALSE; ++ Interface->AddressCount = 0; ++ Interface->Configured = FALSE; + +- Interface->Service = IpSb; +- Interface->Controller = IpSb->Controller; +- Interface->Image = IpSb->Image; ++ Interface->Service = IpSb; ++ Interface->Controller = IpSb->Controller; ++ Interface->Image = IpSb->Image; + + InitializeListHead (&Interface->ArpQues); + InitializeListHead (&Interface->SentFrames); + +- Interface->DupAddrDetect = IpSb->Ip6ConfigInstance.DadXmits.DupAddrDetectTransmits; ++ Interface->DupAddrDetect = IpSb->Ip6ConfigInstance.DadXmits.DupAddrDetectTransmits; + InitializeListHead (&Interface->DupAddrDetectList); + + InitializeListHead (&Interface->DelayJoinList); + + InitializeListHead (&Interface->IpInstances); +- Interface->PromiscRecv = FALSE; ++ Interface->PromiscRecv = FALSE; + + if (!LinkLocal) { + return Interface; +@@ -254,8 +253,8 @@ Ip6CreateInterface ( + Ip6Addr, + FALSE, + IP6_LINK_LOCAL_PREFIX_LENGTH, +- (UINT32) IP6_INFINIT_LIFETIME, +- (UINT32) IP6_INFINIT_LIFETIME, ++ (UINT32)IP6_INFINIT_LIFETIME, ++ (UINT32)IP6_INFINIT_LIFETIME, + NULL, + NULL + ); +@@ -288,12 +287,12 @@ ON_ERROR: + **/ + VOID + Ip6CleanInterface ( +- IN IP6_INTERFACE *Interface, +- IN IP6_PROTOCOL *IpInstance OPTIONAL ++ IN IP6_INTERFACE *Interface, ++ IN IP6_PROTOCOL *IpInstance OPTIONAL + ) + { +- IP6_DAD_ENTRY *Duplicate; +- IP6_DELAY_JOIN_LIST *Delay; ++ IP6_DAD_ENTRY *Duplicate; ++ IP6_DELAY_JOIN_LIST *Delay; + + NET_CHECK_SIGNATURE (Interface, IP6_INTERFACE_SIGNATURE); + ASSERT (Interface->RefCnt > 0); +@@ -352,11 +351,11 @@ Ip6CleanInterface ( + **/ + IP6_LINK_TX_TOKEN * + Ip6CreateLinkTxToken ( +- IN IP6_INTERFACE *Interface, +- IN IP6_PROTOCOL *IpInstance OPTIONAL, +- IN NET_BUF *Packet, +- IN IP6_FRAME_CALLBACK CallBack, +- IN VOID *Context ++ IN IP6_INTERFACE *Interface, ++ IN IP6_PROTOCOL *IpInstance OPTIONAL, ++ IN NET_BUF *Packet, ++ IN IP6_FRAME_CALLBACK CallBack, ++ IN VOID *Context + ) + { + EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken; +@@ -381,8 +380,8 @@ Ip6CreateLinkTxToken ( + ZeroMem (&Token->DstMac, sizeof (EFI_MAC_ADDRESS)); + IP6_COPY_LINK_ADDRESS (&Token->SrcMac, &Interface->Service->SnpMode.CurrentAddress); + +- MnpToken = &(Token->MnpToken); +- MnpToken->Status = EFI_NOT_READY; ++ MnpToken = &(Token->MnpToken); ++ MnpToken->Status = EFI_NOT_READY; + + Status = gBS->CreateEvent ( + EVT_NOTIFY_SIGNAL, +@@ -397,8 +396,8 @@ Ip6CreateLinkTxToken ( + return NULL; + } + +- MnpTxData = &Token->MnpTxData; +- MnpToken->Packet.TxData = MnpTxData; ++ MnpTxData = &Token->MnpTxData; ++ MnpToken->Packet.TxData = MnpTxData; + + MnpTxData->DestinationAddress = &Token->DstMac; + MnpTxData->SourceAddress = &Token->SrcMac; +@@ -406,10 +405,10 @@ Ip6CreateLinkTxToken ( + MnpTxData->DataLength = Packet->TotalSize; + MnpTxData->HeaderLength = 0; + +- Count = Packet->BlockOpNum; ++ Count = Packet->BlockOpNum; + +- NetbufBuildExt (Packet, (NET_FRAGMENT *) MnpTxData->FragmentTable, &Count); +- MnpTxData->FragmentCount = (UINT16)Count; ++ NetbufBuildExt (Packet, (NET_FRAGMENT *)MnpTxData->FragmentTable, &Count); ++ MnpTxData->FragmentCount = (UINT16)Count; + + return Token; + } +@@ -423,7 +422,7 @@ Ip6CreateLinkTxToken ( + **/ + VOID + Ip6FreeLinkTxToken ( +- IN IP6_LINK_TX_TOKEN *Token ++ IN IP6_LINK_TX_TOKEN *Token + ) + { + NET_CHECK_SIGNATURE (Token, IP6_LINK_TX_SIGNATURE); +@@ -442,12 +441,12 @@ Ip6FreeLinkTxToken ( + VOID + EFIAPI + Ip6RecycleFrame ( +- IN VOID *Context ++ IN VOID *Context + ) + { + EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData; + +- RxData = (EFI_MANAGED_NETWORK_RECEIVE_DATA *) Context; ++ RxData = (EFI_MANAGED_NETWORK_RECEIVE_DATA *)Context; + + gBS->SignalEvent (RxData->RecycleEvent); + } +@@ -466,7 +465,7 @@ Ip6RecycleFrame ( + VOID + EFIAPI + Ip6OnFrameReceivedDpc ( +- IN VOID *Context ++ IN VOID *Context + ) + { + EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken; +@@ -477,23 +476,22 @@ Ip6OnFrameReceivedDpc ( + UINT32 Flag; + IP6_SERVICE *IpSb; + +- Token = (IP6_LINK_RX_TOKEN *) Context; ++ Token = (IP6_LINK_RX_TOKEN *)Context; + NET_CHECK_SIGNATURE (Token, IP6_LINK_RX_SIGNATURE); + + // + // First clear the interface's receive request in case the + // caller wants to call Ip6ReceiveFrame in the callback. + // +- IpSb = (IP6_SERVICE *) Token->Context; ++ IpSb = (IP6_SERVICE *)Token->Context; + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + +- + MnpToken = &Token->MnpToken; + MnpRxData = MnpToken->Packet.RxData; + + if (EFI_ERROR (MnpToken->Status) || (MnpRxData == NULL)) { + Token->CallBack (NULL, MnpToken->Status, 0, Token->Context); +- return ; ++ return; + } + + // +@@ -510,7 +508,7 @@ Ip6OnFrameReceivedDpc ( + + Token->CallBack (NULL, EFI_OUT_OF_RESOURCES, 0, Token->Context); + +- return ; ++ return; + } + + Flag = (MnpRxData->BroadcastFlag ? IP6_LINK_BROADCAST : 0); +@@ -530,8 +528,8 @@ Ip6OnFrameReceivedDpc ( + VOID + EFIAPI + Ip6OnFrameReceived ( +- IN EFI_EVENT Event, +- IN VOID *Context ++ IN EFI_EVENT Event, ++ IN VOID *Context + ) + { + // +@@ -553,18 +551,18 @@ Ip6OnFrameReceived ( + **/ + EFI_STATUS + Ip6ReceiveFrame ( +- IN IP6_FRAME_CALLBACK CallBack, +- IN IP6_SERVICE *IpSb ++ IN IP6_FRAME_CALLBACK CallBack, ++ IN IP6_SERVICE *IpSb + ) + { +- EFI_STATUS Status; +- IP6_LINK_RX_TOKEN *Token; ++ EFI_STATUS Status; ++ IP6_LINK_RX_TOKEN *Token; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + + Token = &IpSb->RecvRequest; + Token->CallBack = CallBack; +- Token->Context = (VOID *) IpSb; ++ Token->Context = (VOID *)IpSb; + + Status = IpSb->Mnp->Receive (IpSb->Mnp, &Token->MnpToken); + if (EFI_ERROR (Status)) { +@@ -584,22 +582,22 @@ Ip6ReceiveFrame ( + VOID + EFIAPI + Ip6OnFrameSentDpc ( +- IN VOID *Context ++ IN VOID *Context + ) + { +- IP6_LINK_TX_TOKEN *Token; ++ IP6_LINK_TX_TOKEN *Token; + +- Token = (IP6_LINK_TX_TOKEN *) Context; ++ Token = (IP6_LINK_TX_TOKEN *)Context; + NET_CHECK_SIGNATURE (Token, IP6_LINK_TX_SIGNATURE); + + RemoveEntryList (&Token->Link); + + Token->CallBack ( +- Token->Packet, +- Token->MnpToken.Status, +- 0, +- Token->Context +- ); ++ Token->Packet, ++ Token->MnpToken.Status, ++ 0, ++ Token->Context ++ ); + + Ip6FreeLinkTxToken (Token); + } +@@ -614,8 +612,8 @@ Ip6OnFrameSentDpc ( + VOID + EFIAPI + Ip6OnFrameSent ( +- IN EFI_EVENT Event, +- IN VOID *Context ++ IN EFI_EVENT Event, ++ IN VOID *Context + ) + { + // +@@ -646,20 +644,20 @@ Ip6OnFrameSent ( + **/ + EFI_STATUS + Ip6SendFrame ( +- IN IP6_INTERFACE *Interface, +- IN IP6_PROTOCOL *IpInstance OPTIONAL, +- IN NET_BUF *Packet, +- IN EFI_IPv6_ADDRESS *NextHop, +- IN IP6_FRAME_CALLBACK CallBack, +- IN VOID *Context ++ IN IP6_INTERFACE *Interface, ++ IN IP6_PROTOCOL *IpInstance OPTIONAL, ++ IN NET_BUF *Packet, ++ IN EFI_IPv6_ADDRESS *NextHop, ++ IN IP6_FRAME_CALLBACK CallBack, ++ IN VOID *Context + ) + { +- IP6_SERVICE *IpSb; +- IP6_LINK_TX_TOKEN *Token; +- EFI_STATUS Status; +- IP6_NEIGHBOR_ENTRY *NeighborCache; +- LIST_ENTRY *Entry; +- IP6_NEIGHBOR_ENTRY *ArpQue; ++ IP6_SERVICE *IpSb; ++ IP6_LINK_TX_TOKEN *Token; ++ EFI_STATUS Status; ++ IP6_NEIGHBOR_ENTRY *NeighborCache; ++ LIST_ENTRY *Entry; ++ IP6_NEIGHBOR_ENTRY *ArpQue; + + IpSb = Interface->Service; + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); +@@ -706,21 +704,21 @@ Ip6SendFrame ( + } + + switch (NeighborCache->State) { +- case EfiNeighborStale: +- NeighborCache->State = EfiNeighborDelay; +- NeighborCache->Ticks = (UINT32) IP6_GET_TICKS (IP6_DELAY_FIRST_PROBE_TIME); ++ case EfiNeighborStale: ++ NeighborCache->State = EfiNeighborDelay; ++ NeighborCache->Ticks = (UINT32)IP6_GET_TICKS (IP6_DELAY_FIRST_PROBE_TIME); + // + // Fall through + // +- case EfiNeighborReachable: +- case EfiNeighborDelay: +- case EfiNeighborProbe: +- IP6_COPY_LINK_ADDRESS (&Token->DstMac, &NeighborCache->LinkAddress); +- goto SendNow; +- break; +- +- default: +- break; ++ case EfiNeighborReachable: ++ case EfiNeighborDelay: ++ case EfiNeighborProbe: ++ IP6_COPY_LINK_ADDRESS (&Token->DstMac, &NeighborCache->LinkAddress); ++ goto SendNow; ++ break; ++ ++ default: ++ break; + } + + // +@@ -747,7 +745,7 @@ Ip6SendFrame ( + return EFI_SUCCESS; + + SendNow: +- // ++ // + // Insert the tx token into the SentFrames list before calling Mnp->Transmit. + // Remove it if the returned status is not EFI_SUCCESS. + // +@@ -777,13 +775,13 @@ Error: + VOID + EFIAPI + Ip6TimerTicking ( +- IN EFI_EVENT Event, +- IN VOID *Context ++ IN EFI_EVENT Event, ++ IN VOID *Context + ) + { +- IP6_SERVICE *IpSb; ++ IP6_SERVICE *IpSb; + +- IpSb = (IP6_SERVICE *) Context; ++ IpSb = (IP6_SERVICE *)Context; + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + + Ip6PacketTimerTicking (IpSb); +diff --git a/NetworkPkg/Ip6Dxe/Ip6Mld.c b/NetworkPkg/Ip6Dxe/Ip6Mld.c +index ba12089dee..e6b2b653e2 100644 +--- a/NetworkPkg/Ip6Dxe/Ip6Mld.c ++++ b/NetworkPkg/Ip6Dxe/Ip6Mld.c +@@ -21,12 +21,12 @@ + **/ + IP6_MLD_GROUP * + Ip6CreateMldEntry ( +- IN OUT IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *MulticastAddr, +- IN UINT32 DelayTimer ++ IN OUT IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *MulticastAddr, ++ IN UINT32 DelayTimer + ) + { +- IP6_MLD_GROUP *Entry; ++ IP6_MLD_GROUP *Entry; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + ASSERT (MulticastAddr != NULL && IP6_IS_MULTICAST (MulticastAddr)); +@@ -54,12 +54,12 @@ Ip6CreateMldEntry ( + **/ + IP6_MLD_GROUP * + Ip6FindMldEntry ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *MulticastAddr ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *MulticastAddr + ) + { +- LIST_ENTRY *Entry; +- IP6_MLD_GROUP *Group; ++ LIST_ENTRY *Entry; ++ IP6_MLD_GROUP *Group; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + ASSERT (MulticastAddr != NULL && IP6_IS_MULTICAST (MulticastAddr)); +@@ -88,13 +88,13 @@ Ip6FindMldEntry ( + **/ + INTN + Ip6FindMac ( +- IN IP6_MLD_SERVICE_DATA *MldCtrl, +- IN EFI_MAC_ADDRESS *Mac ++ IN IP6_MLD_SERVICE_DATA *MldCtrl, ++ IN EFI_MAC_ADDRESS *Mac + ) + { +- LIST_ENTRY *Entry; +- IP6_MLD_GROUP *Group; +- INTN Count; ++ LIST_ENTRY *Entry; ++ IP6_MLD_GROUP *Group; ++ INTN Count; + + Count = 0; + +@@ -125,20 +125,20 @@ Ip6FindMac ( + **/ + EFI_STATUS + Ip6SendMldReport ( +- IN IP6_SERVICE *IpSb, +- IN IP6_INTERFACE *Interface OPTIONAL, +- IN EFI_IPv6_ADDRESS *MulticastAddr ++ IN IP6_SERVICE *IpSb, ++ IN IP6_INTERFACE *Interface OPTIONAL, ++ IN EFI_IPv6_ADDRESS *MulticastAddr + ) + { +- IP6_MLD_HEAD *MldHead; +- NET_BUF *Packet; +- EFI_IP6_HEADER Head; +- UINT16 PayloadLen; +- UINTN OptionLen; +- UINT8 *Options; +- EFI_STATUS Status; +- UINT16 HeadChecksum; +- UINT16 PseudoChecksum; ++ IP6_MLD_HEAD *MldHead; ++ NET_BUF *Packet; ++ EFI_IP6_HEADER Head; ++ UINT16 PayloadLen; ++ UINTN OptionLen; ++ UINT8 *Options; ++ EFI_STATUS Status; ++ UINT16 HeadChecksum; ++ UINT16 PseudoChecksum; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + ASSERT (MulticastAddr != NULL && IP6_IS_MULTICAST (MulticastAddr)); +@@ -149,11 +149,11 @@ Ip6SendMldReport ( + // + + OptionLen = 0; +- Status = Ip6FillHopByHop (NULL, &OptionLen, IP6_ICMP); ++ Status = Ip6FillHopByHop (NULL, &OptionLen, IP6_ICMP); + ASSERT (Status == EFI_BUFFER_TOO_SMALL); + +- PayloadLen = (UINT16) (OptionLen + sizeof (IP6_MLD_HEAD)); +- Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32) PayloadLen); ++ PayloadLen = (UINT16)(OptionLen + sizeof (IP6_MLD_HEAD)); ++ Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32)PayloadLen); + if (Packet == NULL) { + return EFI_OUT_OF_RESOURCES; + } +@@ -163,11 +163,11 @@ Ip6SendMldReport ( + // RFC3590: Use link-local address as source address if it is available, + // otherwise use the unspecified address. + // +- Head.FlowLabelL = 0; +- Head.FlowLabelH = 0; +- Head.PayloadLength = HTONS (PayloadLen); +- Head.NextHeader = IP6_HOP_BY_HOP; +- Head.HopLimit = 1; ++ Head.FlowLabelL = 0; ++ Head.FlowLabelH = 0; ++ Head.PayloadLength = HTONS (PayloadLen); ++ Head.NextHeader = IP6_HOP_BY_HOP; ++ Head.HopLimit = 1; + IP6_COPY_ADDRESS (&Head.DestinationAddress, MulticastAddr); + + // +@@ -180,7 +180,7 @@ Ip6SendMldReport ( + // + // Fill a IPv6 Router Alert option in a Hop-by-Hop Options Header + // +- Options = NetbufAllocSpace (Packet, (UINT32) OptionLen, FALSE); ++ Options = NetbufAllocSpace (Packet, (UINT32)OptionLen, FALSE); + ASSERT (Options != NULL); + Status = Ip6FillHopByHop (Options, &OptionLen, IP6_ICMP); + if (EFI_ERROR (Status)) { +@@ -192,14 +192,14 @@ Ip6SendMldReport ( + // + // Fill in MLD message - Report + // +- MldHead = (IP6_MLD_HEAD *) NetbufAllocSpace (Packet, sizeof (IP6_MLD_HEAD), FALSE); ++ MldHead = (IP6_MLD_HEAD *)NetbufAllocSpace (Packet, sizeof (IP6_MLD_HEAD), FALSE); + ASSERT (MldHead != NULL); + ZeroMem (MldHead, sizeof (IP6_MLD_HEAD)); + MldHead->Head.Type = ICMP_V6_LISTENER_REPORT; + MldHead->Head.Code = 0; + IP6_COPY_ADDRESS (&MldHead->Group, MulticastAddr); + +- HeadChecksum = NetblockChecksum ((UINT8 *) MldHead, sizeof (IP6_MLD_HEAD)); ++ HeadChecksum = NetblockChecksum ((UINT8 *)MldHead, sizeof (IP6_MLD_HEAD)); + PseudoChecksum = NetIp6PseudoHeadChecksum ( + &Head.SourceAddress, + &Head.DestinationAddress, +@@ -229,20 +229,20 @@ Ip6SendMldReport ( + **/ + EFI_STATUS + Ip6SendMldDone ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *MulticastAddr ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *MulticastAddr + ) + { +- IP6_MLD_HEAD *MldHead; +- NET_BUF *Packet; +- EFI_IP6_HEADER Head; +- UINT16 PayloadLen; +- UINTN OptionLen; +- UINT8 *Options; +- EFI_STATUS Status; +- EFI_IPv6_ADDRESS Destination; +- UINT16 HeadChecksum; +- UINT16 PseudoChecksum; ++ IP6_MLD_HEAD *MldHead; ++ NET_BUF *Packet; ++ EFI_IP6_HEADER Head; ++ UINT16 PayloadLen; ++ UINTN OptionLen; ++ UINT8 *Options; ++ EFI_STATUS Status; ++ EFI_IPv6_ADDRESS Destination; ++ UINT16 HeadChecksum; ++ UINT16 PseudoChecksum; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + ASSERT (MulticastAddr != NULL && IP6_IS_MULTICAST (MulticastAddr)); +@@ -253,11 +253,11 @@ Ip6SendMldDone ( + // + + OptionLen = 0; +- Status = Ip6FillHopByHop (NULL, &OptionLen, IP6_ICMP); ++ Status = Ip6FillHopByHop (NULL, &OptionLen, IP6_ICMP); + ASSERT (Status == EFI_BUFFER_TOO_SMALL); + +- PayloadLen = (UINT16) (OptionLen + sizeof (IP6_MLD_HEAD)); +- Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32) PayloadLen); ++ PayloadLen = (UINT16)(OptionLen + sizeof (IP6_MLD_HEAD)); ++ Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32)PayloadLen); + if (Packet == NULL) { + return EFI_OUT_OF_RESOURCES; + } +@@ -265,11 +265,11 @@ Ip6SendMldDone ( + // + // Create the basic IPv6 header. + // +- Head.FlowLabelL = 0; +- Head.FlowLabelH = 0; +- Head.PayloadLength = HTONS (PayloadLen); +- Head.NextHeader = IP6_HOP_BY_HOP; +- Head.HopLimit = 1; ++ Head.FlowLabelL = 0; ++ Head.FlowLabelH = 0; ++ Head.PayloadLength = HTONS (PayloadLen); ++ Head.NextHeader = IP6_HOP_BY_HOP; ++ Head.HopLimit = 1; + + // + // If Link-Local address is not ready, we use unspecified address. +@@ -284,7 +284,7 @@ Ip6SendMldDone ( + // + // Fill a IPv6 Router Alert option in a Hop-by-Hop Options Header + // +- Options = NetbufAllocSpace (Packet, (UINT32) OptionLen, FALSE); ++ Options = NetbufAllocSpace (Packet, (UINT32)OptionLen, FALSE); + ASSERT (Options != NULL); + Status = Ip6FillHopByHop (Options, &OptionLen, IP6_ICMP); + if (EFI_ERROR (Status)) { +@@ -296,14 +296,14 @@ Ip6SendMldDone ( + // + // Fill in MLD message - Done + // +- MldHead = (IP6_MLD_HEAD *) NetbufAllocSpace (Packet, sizeof (IP6_MLD_HEAD), FALSE); ++ MldHead = (IP6_MLD_HEAD *)NetbufAllocSpace (Packet, sizeof (IP6_MLD_HEAD), FALSE); + ASSERT (MldHead != NULL); + ZeroMem (MldHead, sizeof (IP6_MLD_HEAD)); + MldHead->Head.Type = ICMP_V6_LISTENER_DONE; + MldHead->Head.Code = 0; + IP6_COPY_ADDRESS (&MldHead->Group, MulticastAddr); + +- HeadChecksum = NetblockChecksum ((UINT8 *) MldHead, sizeof (IP6_MLD_HEAD)); ++ HeadChecksum = NetblockChecksum ((UINT8 *)MldHead, sizeof (IP6_MLD_HEAD)); + PseudoChecksum = NetIp6PseudoHeadChecksum ( + &Head.SourceAddress, + &Head.DestinationAddress, +@@ -332,12 +332,12 @@ Ip6SendMldDone ( + **/ + EFI_STATUS + Ip6InitMld ( +- IN IP6_SERVICE *IpSb ++ IN IP6_SERVICE *IpSb + ) + { +- EFI_IPv6_ADDRESS AllNodes; +- IP6_MLD_GROUP *Group; +- EFI_STATUS Status; ++ EFI_IPv6_ADDRESS AllNodes; ++ IP6_MLD_GROUP *Group; ++ EFI_STATUS Status; + + // + // Join the link-scope all-nodes multicast address (FF02::1). +@@ -347,7 +347,7 @@ Ip6InitMld ( + + Ip6SetToAllNodeMulticast (FALSE, IP6_LINK_LOCAL_SCOPE, &AllNodes); + +- Group = Ip6CreateMldEntry (IpSb, &AllNodes, (UINT32) IP6_INFINIT_LIFETIME); ++ Group = Ip6CreateMldEntry (IpSb, &AllNodes, (UINT32)IP6_INFINIT_LIFETIME); + if (Group == NULL) { + return EFI_OUT_OF_RESOURCES; + } +@@ -388,11 +388,11 @@ ERROR: + **/ + EFI_STATUS + Ip6CombineGroups ( +- IN OUT IP6_PROTOCOL *IpInstance, +- IN EFI_IPv6_ADDRESS *Group ++ IN OUT IP6_PROTOCOL *IpInstance, ++ IN EFI_IPv6_ADDRESS *Group + ) + { +- EFI_IPv6_ADDRESS *GroupList; ++ EFI_IPv6_ADDRESS *GroupList; + + NET_CHECK_SIGNATURE (IpInstance, IP6_PROTOCOL_SIGNATURE); + ASSERT (Group != NULL && IP6_IS_MULTICAST (Group)); +@@ -437,12 +437,12 @@ Ip6CombineGroups ( + **/ + EFI_STATUS + Ip6RemoveGroup ( +- IN OUT IP6_PROTOCOL *IpInstance, +- IN EFI_IPv6_ADDRESS *Group ++ IN OUT IP6_PROTOCOL *IpInstance, ++ IN EFI_IPv6_ADDRESS *Group + ) + { +- UINT32 Index; +- UINT32 Count; ++ UINT32 Index; ++ UINT32 Count; + + Count = IpInstance->GroupCount; + +@@ -481,13 +481,13 @@ Ip6RemoveGroup ( + **/ + EFI_STATUS + Ip6JoinGroup ( +- IN IP6_SERVICE *IpSb, +- IN IP6_INTERFACE *Interface, +- IN EFI_IPv6_ADDRESS *Address ++ IN IP6_SERVICE *IpSb, ++ IN IP6_INTERFACE *Interface, ++ IN EFI_IPv6_ADDRESS *Address + ) + { +- IP6_MLD_GROUP *Group; +- EFI_STATUS Status; ++ IP6_MLD_GROUP *Group; ++ EFI_STATUS Status; + + Group = Ip6FindMldEntry (IpSb, Address); + if (Group != NULL) { +@@ -545,12 +545,12 @@ ERROR: + **/ + EFI_STATUS + Ip6LeaveGroup ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *Address ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *Address + ) + { +- IP6_MLD_GROUP *Group; +- EFI_STATUS Status; ++ IP6_MLD_GROUP *Group; ++ EFI_STATUS Status; + + Group = Ip6FindMldEntry (IpSb, Address); + if (Group == NULL) { +@@ -611,15 +611,15 @@ Ip6LeaveGroup ( + **/ + EFI_STATUS + Ip6Groups ( +- IN IP6_PROTOCOL *IpInstance, +- IN BOOLEAN JoinFlag, +- IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL ++ IN IP6_PROTOCOL *IpInstance, ++ IN BOOLEAN JoinFlag, ++ IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL + ) + { +- EFI_STATUS Status; +- IP6_SERVICE *IpSb; +- UINT32 Index; +- EFI_IPv6_ADDRESS *Group; ++ EFI_STATUS Status; ++ IP6_SERVICE *IpSb; ++ UINT32 Index; ++ EFI_IPv6_ADDRESS *Group; + + IpSb = IpInstance->Service; + +@@ -690,13 +690,13 @@ Ip6Groups ( + **/ + EFI_STATUS + Ip6UpdateDelayTimer ( +- IN IP6_SERVICE *IpSb, +- IN UINT16 MaxRespDelay, +- IN EFI_IPv6_ADDRESS *MulticastAddr, +- IN OUT IP6_MLD_GROUP *Group ++ IN IP6_SERVICE *IpSb, ++ IN UINT16 MaxRespDelay, ++ IN EFI_IPv6_ADDRESS *MulticastAddr, ++ IN OUT IP6_MLD_GROUP *Group + ) + { +- UINT32 Delay; ++ UINT32 Delay; + + // + // If the Query packet specifies a Maximum Response Delay of zero, perform timer +@@ -707,14 +707,14 @@ Ip6UpdateDelayTimer ( + return Ip6SendMldReport (IpSb, NULL, MulticastAddr); + } + +- Delay = (UINT32) (MaxRespDelay / 1000); ++ Delay = (UINT32)(MaxRespDelay / 1000); + + // + // Sets a delay timer to a random value selected from the range [0, Maximum Response Delay] + // If a timer is already running, resets it if the request Maximum Response Delay + // is less than the remaining value of the running timer. + // +- if (Group->DelayTimer == 0 || Delay < Group->DelayTimer) { ++ if ((Group->DelayTimer == 0) || (Delay < Group->DelayTimer)) { + Group->DelayTimer = Delay / 4294967295UL * NET_RANDOM (NetRandomInitSeed ()); + } + +@@ -736,16 +736,16 @@ Ip6UpdateDelayTimer ( + **/ + EFI_STATUS + Ip6ProcessMldQuery ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IP6_HEADER *Head, +- IN NET_BUF *Packet ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IP6_HEADER *Head, ++ IN NET_BUF *Packet + ) + { +- EFI_IPv6_ADDRESS AllNodes; +- IP6_MLD_GROUP *Group; +- IP6_MLD_HEAD MldPacket; +- LIST_ENTRY *Entry; +- EFI_STATUS Status; ++ EFI_IPv6_ADDRESS AllNodes; ++ IP6_MLD_GROUP *Group; ++ IP6_MLD_HEAD MldPacket; ++ LIST_ENTRY *Entry; ++ EFI_STATUS Status; + + Status = EFI_INVALID_PARAMETER; + +@@ -756,14 +756,14 @@ Ip6ProcessMldQuery ( + goto Exit; + } + +- if (Head->HopLimit != 1 || !IP6_IS_MULTICAST (&Head->DestinationAddress)) { ++ if ((Head->HopLimit != 1) || !IP6_IS_MULTICAST (&Head->DestinationAddress)) { + goto Exit; + } + + // + // The Packet points to MLD report raw data without Hop-By-Hop option. + // +- NetbufCopy (Packet, 0, sizeof (IP6_MLD_HEAD), (UINT8 *) &MldPacket); ++ NetbufCopy (Packet, 0, sizeof (IP6_MLD_HEAD), (UINT8 *)&MldPacket); + MldPacket.MaxRespDelay = NTOHS (MldPacket.MaxRespDelay); + + Ip6SetToAllNodeMulticast (FALSE, IP6_LINK_LOCAL_SCOPE, &AllNodes); +@@ -774,6 +774,7 @@ Ip6ProcessMldQuery ( + if (!EFI_IP6_EQUAL (&Head->DestinationAddress, &MldPacket.Group)) { + goto Exit; + } ++ + // + // The node is not listening but it receives the specific query. Just return. + // +@@ -824,14 +825,14 @@ Exit: + **/ + EFI_STATUS + Ip6ProcessMldReport ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IP6_HEADER *Head, +- IN NET_BUF *Packet ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IP6_HEADER *Head, ++ IN NET_BUF *Packet + ) + { +- IP6_MLD_HEAD MldPacket; +- IP6_MLD_GROUP *Group; +- EFI_STATUS Status; ++ IP6_MLD_HEAD MldPacket; ++ IP6_MLD_GROUP *Group; ++ EFI_STATUS Status; + + Status = EFI_INVALID_PARAMETER; + +@@ -842,14 +843,14 @@ Ip6ProcessMldReport ( + goto Exit; + } + +- if (Head->HopLimit != 1 || !IP6_IS_MULTICAST (&Head->DestinationAddress)) { ++ if ((Head->HopLimit != 1) || !IP6_IS_MULTICAST (&Head->DestinationAddress)) { + goto Exit; + } + + // + // The Packet points to MLD report raw data without Hop-By-Hop option. + // +- NetbufCopy (Packet, 0, sizeof (IP6_MLD_HEAD), (UINT8 *) &MldPacket); ++ NetbufCopy (Packet, 0, sizeof (IP6_MLD_HEAD), (UINT8 *)&MldPacket); + if (!EFI_IP6_EQUAL (&Head->DestinationAddress, &MldPacket.Group)) { + goto Exit; + } +@@ -883,11 +884,11 @@ Exit: + **/ + VOID + Ip6MldTimerTicking ( +- IN IP6_SERVICE *IpSb ++ IN IP6_SERVICE *IpSb + ) + { +- IP6_MLD_GROUP *Group; +- LIST_ENTRY *Entry; ++ IP6_MLD_GROUP *Group; ++ LIST_ENTRY *Entry; + + // + // Send solicited report when timer expires +@@ -899,4 +900,3 @@ Ip6MldTimerTicking ( + } + } + } +- +diff --git a/NetworkPkg/Ip6Dxe/Ip6Nd.c b/NetworkPkg/Ip6Dxe/Ip6Nd.c +index 0780a98cb3..c10c7017f8 100644 +--- a/NetworkPkg/Ip6Dxe/Ip6Nd.c ++++ b/NetworkPkg/Ip6Dxe/Ip6Nd.c +@@ -9,7 +9,7 @@ + + #include "Ip6Impl.h" + +-EFI_MAC_ADDRESS mZeroMacAddress; ++EFI_MAC_ADDRESS mZeroMacAddress; + + /** + Update the ReachableTime in IP6 service binding instance data, in milliseconds. +@@ -22,10 +22,10 @@ Ip6UpdateReachableTime ( + IN OUT IP6_SERVICE *IpSb + ) + { +- UINT32 Random; ++ UINT32 Random; + +- Random = (NetRandomInitSeed () / 4294967295UL) * IP6_RANDOM_FACTOR_SCALE; +- Random = Random + IP6_MIN_RANDOM_FACTOR_SCALED; ++ Random = (NetRandomInitSeed () / 4294967295UL) * IP6_RANDOM_FACTOR_SCALE; ++ Random = Random + IP6_MIN_RANDOM_FACTOR_SCALED; + IpSb->ReachableTime = (IpSb->BaseReachableTime * Random) / IP6_RANDOM_FACTOR_SCALE; + } + +@@ -43,17 +43,17 @@ Ip6UpdateReachableTime ( + **/ + EFI_STATUS + Ip6BuildEfiNeighborCache ( +- IN IP6_PROTOCOL *IpInstance, +- OUT UINT32 *NeighborCount, +- OUT EFI_IP6_NEIGHBOR_CACHE **NeighborCache ++ IN IP6_PROTOCOL *IpInstance, ++ OUT UINT32 *NeighborCount, ++ OUT EFI_IP6_NEIGHBOR_CACHE **NeighborCache + ) + { +- IP6_NEIGHBOR_ENTRY *Neighbor; +- LIST_ENTRY *Entry; +- IP6_SERVICE *IpSb; +- UINT32 Count; +- EFI_IP6_NEIGHBOR_CACHE *EfiNeighborCache; +- EFI_IP6_NEIGHBOR_CACHE *NeighborCacheTmp; ++ IP6_NEIGHBOR_ENTRY *Neighbor; ++ LIST_ENTRY *Entry; ++ IP6_SERVICE *IpSb; ++ UINT32 Count; ++ EFI_IP6_NEIGHBOR_CACHE *EfiNeighborCache; ++ EFI_IP6_NEIGHBOR_CACHE *NeighborCacheTmp; + + NET_CHECK_SIGNATURE (IpInstance, IP6_PROTOCOL_SIGNATURE); + ASSERT (NeighborCount != NULL && NeighborCache != NULL); +@@ -82,7 +82,7 @@ Ip6BuildEfiNeighborCache ( + + EfiNeighborCache = NeighborCacheTmp + Count; + +- EfiNeighborCache->State = Neighbor->State; ++ EfiNeighborCache->State = Neighbor->State; + IP6_COPY_ADDRESS (&EfiNeighborCache->Neighbor, &Neighbor->Neighbor); + IP6_COPY_LINK_ADDRESS (&EfiNeighborCache->LinkAddress, &Neighbor->LinkAddress); + +@@ -114,12 +114,12 @@ Ip6BuildPrefixTable ( + OUT EFI_IP6_ADDRESS_INFO **PrefixTable + ) + { +- LIST_ENTRY *Entry; +- IP6_SERVICE *IpSb; +- UINT32 Count; +- IP6_PREFIX_LIST_ENTRY *PrefixList; +- EFI_IP6_ADDRESS_INFO *EfiPrefix; +- EFI_IP6_ADDRESS_INFO *PrefixTableTmp; ++ LIST_ENTRY *Entry; ++ IP6_SERVICE *IpSb; ++ UINT32 Count; ++ IP6_PREFIX_LIST_ENTRY *PrefixList; ++ EFI_IP6_ADDRESS_INFO *EfiPrefix; ++ EFI_IP6_ADDRESS_INFO *PrefixTableTmp; + + NET_CHECK_SIGNATURE (IpInstance, IP6_PROTOCOL_SIGNATURE); + ASSERT (PrefixCount != NULL && PrefixTable != NULL); +@@ -178,21 +178,21 @@ Ip6BuildPrefixTable ( + **/ + IP6_PREFIX_LIST_ENTRY * + Ip6CreatePrefixListEntry ( +- IN IP6_SERVICE *IpSb, +- IN BOOLEAN OnLinkOrAuto, +- IN UINT32 ValidLifetime, +- IN UINT32 PreferredLifetime, +- IN UINT8 PrefixLength, +- IN EFI_IPv6_ADDRESS *Prefix ++ IN IP6_SERVICE *IpSb, ++ IN BOOLEAN OnLinkOrAuto, ++ IN UINT32 ValidLifetime, ++ IN UINT32 PreferredLifetime, ++ IN UINT8 PrefixLength, ++ IN EFI_IPv6_ADDRESS *Prefix + ) + { +- IP6_PREFIX_LIST_ENTRY *PrefixEntry; +- IP6_ROUTE_ENTRY *RtEntry; +- LIST_ENTRY *ListHead; +- LIST_ENTRY *Entry; +- IP6_PREFIX_LIST_ENTRY *TmpPrefixEntry; ++ IP6_PREFIX_LIST_ENTRY *PrefixEntry; ++ IP6_ROUTE_ENTRY *RtEntry; ++ LIST_ENTRY *ListHead; ++ LIST_ENTRY *Entry; ++ IP6_PREFIX_LIST_ENTRY *TmpPrefixEntry; + +- if (Prefix == NULL || PreferredLifetime > ValidLifetime || PrefixLength > IP6_PREFIX_MAX) { ++ if ((Prefix == NULL) || (PreferredLifetime > ValidLifetime) || (PrefixLength > IP6_PREFIX_MAX)) { + return NULL; + } + +@@ -205,7 +205,7 @@ Ip6CreatePrefixListEntry ( + Prefix + ); + if (PrefixEntry != NULL) { +- PrefixEntry->RefCnt ++; ++ PrefixEntry->RefCnt++; + return PrefixEntry; + } + +@@ -242,7 +242,7 @@ Ip6CreatePrefixListEntry ( + // is put ahead in the list. + // + NET_LIST_FOR_EACH (Entry, ListHead) { +- TmpPrefixEntry = NET_LIST_USER_STRUCT(Entry, IP6_PREFIX_LIST_ENTRY, Link); ++ TmpPrefixEntry = NET_LIST_USER_STRUCT (Entry, IP6_PREFIX_LIST_ENTRY, Link); + + if (TmpPrefixEntry->PrefixLength < PrefixEntry->PrefixLength) { + break; +@@ -274,26 +274,26 @@ Ip6DestroyPrefixListEntry ( + IN BOOLEAN ImmediateDelete + ) + { +- LIST_ENTRY *Entry; +- IP6_INTERFACE *IpIf; +- EFI_STATUS Status; ++ LIST_ENTRY *Entry; ++ IP6_INTERFACE *IpIf; ++ EFI_STATUS Status; + + if ((!ImmediateDelete) && (PrefixEntry->RefCnt > 0) && ((--PrefixEntry->RefCnt) > 0)) { +- return ; ++ return; + } + + if (OnLinkOrAuto) { +- // +- // Remove the direct route for onlink prefix from route table. +- // +- do { +- Status = Ip6DelRoute ( +- IpSb->RouteTable, +- &PrefixEntry->Prefix, +- PrefixEntry->PrefixLength, +- NULL +- ); +- } while (Status != EFI_NOT_FOUND); ++ // ++ // Remove the direct route for onlink prefix from route table. ++ // ++ do { ++ Status = Ip6DelRoute ( ++ IpSb->RouteTable, ++ &PrefixEntry->Prefix, ++ PrefixEntry->PrefixLength, ++ NULL ++ ); ++ } while (Status != EFI_NOT_FOUND); + } else { + // + // Remove the corresponding addresses generated from this autonomous prefix. +@@ -324,15 +324,15 @@ Ip6DestroyPrefixListEntry ( + **/ + IP6_PREFIX_LIST_ENTRY * + Ip6FindPrefixListEntry ( +- IN IP6_SERVICE *IpSb, +- IN BOOLEAN OnLinkOrAuto, +- IN UINT8 PrefixLength, +- IN EFI_IPv6_ADDRESS *Prefix ++ IN IP6_SERVICE *IpSb, ++ IN BOOLEAN OnLinkOrAuto, ++ IN UINT8 PrefixLength, ++ IN EFI_IPv6_ADDRESS *Prefix + ) + { +- IP6_PREFIX_LIST_ENTRY *PrefixList; +- LIST_ENTRY *Entry; +- LIST_ENTRY *ListHead; ++ IP6_PREFIX_LIST_ENTRY *PrefixList; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *ListHead; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + ASSERT (Prefix != NULL); +@@ -349,8 +349,9 @@ Ip6FindPrefixListEntry ( + // + // Perform exactly prefix match. + // +- if (PrefixList->PrefixLength == PrefixLength && +- NetIp6IsNetEqual (&PrefixList->Prefix, Prefix, PrefixLength)) { ++ if ((PrefixList->PrefixLength == PrefixLength) && ++ NetIp6IsNetEqual (&PrefixList->Prefix, Prefix, PrefixLength)) ++ { + return PrefixList; + } + } else { +@@ -377,14 +378,14 @@ Ip6FindPrefixListEntry ( + **/ + VOID + Ip6CleanPrefixListTable ( +- IN IP6_SERVICE *IpSb, +- IN LIST_ENTRY *ListHead ++ IN IP6_SERVICE *IpSb, ++ IN LIST_ENTRY *ListHead + ) + { +- IP6_PREFIX_LIST_ENTRY *PrefixList; +- BOOLEAN OnLink; ++ IP6_PREFIX_LIST_ENTRY *PrefixList; ++ BOOLEAN OnLink; + +- OnLink = (BOOLEAN) (ListHead == &IpSb->OnlinkPrefix); ++ OnLink = (BOOLEAN)(ListHead == &IpSb->OnlinkPrefix); + + while (!IsListEmpty (ListHead)) { + PrefixList = NET_LIST_HEAD (ListHead, IP6_PREFIX_LIST_ENTRY, Link); +@@ -402,25 +403,25 @@ Ip6CleanPrefixListTable ( + **/ + VOID + Ip6OnArpResolved ( +- IN VOID *Context ++ IN VOID *Context + ) + { +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; +- IP6_NEIGHBOR_ENTRY *ArpQue; +- IP6_SERVICE *IpSb; +- IP6_LINK_TX_TOKEN *Token; +- EFI_STATUS Status; +- BOOLEAN Sent; +- +- ArpQue = (IP6_NEIGHBOR_ENTRY *) Context; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; ++ IP6_NEIGHBOR_ENTRY *ArpQue; ++ IP6_SERVICE *IpSb; ++ IP6_LINK_TX_TOKEN *Token; ++ EFI_STATUS Status; ++ BOOLEAN Sent; ++ ++ ArpQue = (IP6_NEIGHBOR_ENTRY *)Context; + if ((ArpQue == NULL) || (ArpQue->Interface == NULL)) { +- return ; ++ return; + } + +- IpSb = ArpQue->Interface->Service; ++ IpSb = ArpQue->Interface->Service; + if ((IpSb == NULL) || (IpSb->Signature != IP6_SERVICE_SIGNATURE)) { +- return ; ++ return; + } + + // +@@ -430,7 +431,7 @@ Ip6OnArpResolved ( + // + if (NET_MAC_EQUAL (&ArpQue->LinkAddress, &mZeroMacAddress, IpSb->SnpMode.HwAddressSize)) { + Ip6FreeNeighborEntry (IpSb, ArpQue, FALSE, TRUE, EFI_NO_MAPPING, NULL, NULL); +- return ; ++ return; + } + + // +@@ -471,7 +472,7 @@ Ip6OnArpResolved ( + + if (Sent && (ArpQue->State == EfiNeighborStale)) { + ArpQue->State = EfiNeighborDelay; +- ArpQue->Ticks = (UINT32) IP6_GET_TICKS (IP6_DELAY_FIRST_PROBE_TIME); ++ ArpQue->Ticks = (UINT32)IP6_GET_TICKS (IP6_DELAY_FIRST_PROBE_TIME); + } + } + +@@ -491,17 +492,17 @@ Ip6OnArpResolved ( + **/ + IP6_NEIGHBOR_ENTRY * + Ip6CreateNeighborEntry ( +- IN IP6_SERVICE *IpSb, +- IN IP6_ARP_CALLBACK CallBack, +- IN EFI_IPv6_ADDRESS *Ip6Address, +- IN EFI_MAC_ADDRESS *LinkAddress OPTIONAL ++ IN IP6_SERVICE *IpSb, ++ IN IP6_ARP_CALLBACK CallBack, ++ IN EFI_IPv6_ADDRESS *Ip6Address, ++ IN EFI_MAC_ADDRESS *LinkAddress OPTIONAL + ) + { +- IP6_NEIGHBOR_ENTRY *Entry; +- IP6_DEFAULT_ROUTER *DefaultRouter; ++ IP6_NEIGHBOR_ENTRY *Entry; ++ IP6_DEFAULT_ROUTER *DefaultRouter; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); +- ASSERT (Ip6Address!= NULL); ++ ASSERT (Ip6Address != NULL); + + Entry = AllocateZeroPool (sizeof (IP6_NEIGHBOR_ENTRY)); + if (Entry == NULL) { +@@ -552,13 +553,13 @@ Ip6CreateNeighborEntry ( + **/ + IP6_NEIGHBOR_ENTRY * + Ip6FindNeighborEntry ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *Ip6Address ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *Ip6Address + ) + { +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; +- IP6_NEIGHBOR_ENTRY *Neighbor; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; ++ IP6_NEIGHBOR_ENTRY *Neighbor; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + ASSERT (Ip6Address != NULL); +@@ -599,25 +600,25 @@ Ip6FindNeighborEntry ( + **/ + EFI_STATUS + Ip6FreeNeighborEntry ( +- IN IP6_SERVICE *IpSb, +- IN IP6_NEIGHBOR_ENTRY *NeighborCache, +- IN BOOLEAN SendIcmpError, +- IN BOOLEAN FullFree, +- IN EFI_STATUS IoStatus, +- IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, +- IN VOID *Context OPTIONAL ++ IN IP6_SERVICE *IpSb, ++ IN IP6_NEIGHBOR_ENTRY *NeighborCache, ++ IN BOOLEAN SendIcmpError, ++ IN BOOLEAN FullFree, ++ IN EFI_STATUS IoStatus, ++ IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, ++ IN VOID *Context OPTIONAL + ) + { +- IP6_LINK_TX_TOKEN *TxToken; +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; +- IP6_DEFAULT_ROUTER *DefaultRouter; ++ IP6_LINK_TX_TOKEN *TxToken; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; ++ IP6_DEFAULT_ROUTER *DefaultRouter; + + // + // If FrameToCancel fails, the token will not be released. + // To avoid the memory leak, stop this usage model. + // +- if (FullFree && FrameToCancel != NULL) { ++ if (FullFree && (FrameToCancel != NULL)) { + return EFI_INVALID_PARAMETER; + } + +@@ -677,13 +678,13 @@ Ip6FreeNeighborEntry ( + **/ + IP6_DEFAULT_ROUTER * + Ip6CreateDefaultRouter ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *Ip6Address, +- IN UINT16 RouterLifetime ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *Ip6Address, ++ IN UINT16 RouterLifetime + ) + { +- IP6_DEFAULT_ROUTER *Entry; +- IP6_ROUTE_ENTRY *RtEntry; ++ IP6_DEFAULT_ROUTER *Entry; ++ IP6_ROUTE_ENTRY *RtEntry; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + ASSERT (Ip6Address != NULL); +@@ -724,11 +725,11 @@ Ip6CreateDefaultRouter ( + **/ + VOID + Ip6DestroyDefaultRouter ( +- IN IP6_SERVICE *IpSb, +- IN IP6_DEFAULT_ROUTER *DefaultRouter ++ IN IP6_SERVICE *IpSb, ++ IN IP6_DEFAULT_ROUTER *DefaultRouter + ) + { +- EFI_STATUS Status; ++ EFI_STATUS Status; + + RemoveEntryList (&DefaultRouter->Link); + +@@ -751,10 +752,10 @@ Ip6DestroyDefaultRouter ( + **/ + VOID + Ip6CleanDefaultRouterList ( +- IN IP6_SERVICE *IpSb ++ IN IP6_SERVICE *IpSb + ) + { +- IP6_DEFAULT_ROUTER *DefaultRouter; ++ IP6_DEFAULT_ROUTER *DefaultRouter; + + while (!IsListEmpty (&IpSb->DefaultRouterList)) { + DefaultRouter = NET_LIST_HEAD (&IpSb->DefaultRouterList, IP6_DEFAULT_ROUTER, Link); +@@ -774,12 +775,12 @@ Ip6CleanDefaultRouterList ( + **/ + IP6_DEFAULT_ROUTER * + Ip6FindDefaultRouter ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *Ip6Address ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *Ip6Address + ) + { +- LIST_ENTRY *Entry; +- IP6_DEFAULT_ROUTER *DefaultRouter; ++ LIST_ENTRY *Entry; ++ IP6_DEFAULT_ROUTER *DefaultRouter; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + ASSERT (Ip6Address != NULL); +@@ -846,10 +847,10 @@ Ip6OnDADFinished ( + // Set the exta options to send. Here we only want the option request option + // with DNS SERVERS. + // +- Oro = (EFI_DHCP6_PACKET_OPTION *) OptBuf; +- Oro->OpCode = HTONS (DHCP6_OPT_ORO); +- Oro->OpLen = HTONS (2); +- *((UINT16 *) &Oro->Data[0]) = HTONS (DHCP6_OPT_DNS_SERVERS); ++ Oro = (EFI_DHCP6_PACKET_OPTION *)OptBuf; ++ Oro->OpCode = HTONS (DHCP6_OPT_ORO); ++ Oro->OpLen = HTONS (2); ++ *((UINT16 *)&Oro->Data[0]) = HTONS (DHCP6_OPT_DNS_SERVERS); + + InfoReqReXmit.Irt = 4; + InfoReqReXmit.Mrc = 64; +@@ -875,12 +876,11 @@ Ip6OnDADFinished ( + Ip6CreatePrefixListEntry ( + IpSb, + TRUE, +- (UINT32) IP6_INFINIT_LIFETIME, +- (UINT32) IP6_INFINIT_LIFETIME, ++ (UINT32)IP6_INFINIT_LIFETIME, ++ (UINT32)IP6_INFINIT_LIFETIME, + IP6_LINK_LOCAL_PREFIX_LENGTH, + &IpSb->LinkLocalAddr + ); +- + } else { + // + // Global scope unicast address. +@@ -928,7 +928,7 @@ Ip6OnDADFinished ( + IpSb->Mnp->Configure (IpSb->Mnp, NULL); + gBS->SetTimer (IpSb->Timer, TimerCancel, 0); + gBS->SetTimer (IpSb->FasterTimer, TimerCancel, 0); +- return ; ++ return; + } + + if (!IsDadPassed || NetIp6IsLinkLocalAddr (&AddrInfo->Address)) { +@@ -961,10 +961,10 @@ Ip6OnDADFinished ( + **/ + EFI_STATUS + Ip6InitDADProcess ( +- IN IP6_INTERFACE *IpIf, +- IN IP6_ADDRESS_INFO *AddressInfo, +- IN IP6_DAD_CALLBACK Callback OPTIONAL, +- IN VOID *Context OPTIONAL ++ IN IP6_INTERFACE *IpIf, ++ IN IP6_ADDRESS_INFO *AddressInfo, ++ IN IP6_DAD_CALLBACK Callback OPTIONAL, ++ IN VOID *Context OPTIONAL + ) + { + IP6_DAD_ENTRY *Entry; +@@ -1009,15 +1009,15 @@ Ip6InitDADProcess ( + return Status; + } + +- Entry->Signature = IP6_DAD_ENTRY_SIGNATURE; +- Entry->MaxTransmit = DadXmits->DupAddrDetectTransmits; +- Entry->Transmit = 0; +- Entry->Receive = 0; +- MaxDelayTick = IP6_MAX_RTR_SOLICITATION_DELAY / IP6_TIMER_INTERVAL_IN_MS; +- Entry->RetransTick = (MaxDelayTick * ((NET_RANDOM (NetRandomInitSeed ()) % 5) + 1)) / 5; +- Entry->AddressInfo = AddressInfo; +- Entry->Callback = Callback; +- Entry->Context = Context; ++ Entry->Signature = IP6_DAD_ENTRY_SIGNATURE; ++ Entry->MaxTransmit = DadXmits->DupAddrDetectTransmits; ++ Entry->Transmit = 0; ++ Entry->Receive = 0; ++ MaxDelayTick = IP6_MAX_RTR_SOLICITATION_DELAY / IP6_TIMER_INTERVAL_IN_MS; ++ Entry->RetransTick = (MaxDelayTick * ((NET_RANDOM (NetRandomInitSeed ()) % 5) + 1)) / 5; ++ Entry->AddressInfo = AddressInfo; ++ Entry->Callback = Callback; ++ Entry->Context = Context; + InsertTailList (&IpIf->DupAddrDetectList, &Entry->Link); + + if (Entry->MaxTransmit == 0) { +@@ -1044,16 +1044,16 @@ Ip6InitDADProcess ( + **/ + IP6_DAD_ENTRY * + Ip6FindDADEntry ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *Target, +- OUT IP6_INTERFACE **Interface OPTIONAL ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *Target, ++ OUT IP6_INTERFACE **Interface OPTIONAL + ) + { +- LIST_ENTRY *Entry; +- LIST_ENTRY *Entry2; +- IP6_INTERFACE *IpIf; +- IP6_DAD_ENTRY *DupAddrDetect; +- IP6_ADDRESS_INFO *AddrInfo; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Entry2; ++ IP6_INTERFACE *IpIf; ++ IP6_DAD_ENTRY *DupAddrDetect; ++ IP6_ADDRESS_INFO *AddrInfo; + + NET_LIST_FOR_EACH (Entry, &IpSb->Interfaces) { + IpIf = NET_LIST_USER_STRUCT (Entry, IP6_INTERFACE, Link); +@@ -1065,6 +1065,7 @@ Ip6FindDADEntry ( + if (Interface != NULL) { + *Interface = IpIf; + } ++ + return DupAddrDetect; + } + } +@@ -1093,24 +1094,24 @@ Ip6FindDADEntry ( + **/ + EFI_STATUS + Ip6SendRouterSolicit ( +- IN IP6_SERVICE *IpSb, +- IN IP6_INTERFACE *Interface OPTIONAL, +- IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, +- IN EFI_IPv6_ADDRESS *DestinationAddress OPTIONAL, +- IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL ++ IN IP6_SERVICE *IpSb, ++ IN IP6_INTERFACE *Interface OPTIONAL, ++ IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, ++ IN EFI_IPv6_ADDRESS *DestinationAddress OPTIONAL, ++ IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL + ) + { +- NET_BUF *Packet; +- EFI_IP6_HEADER Head; +- IP6_ICMP_INFORMATION_HEAD *IcmpHead; +- IP6_ETHER_ADDR_OPTION *LinkLayerOption; +- UINT16 PayloadLen; +- IP6_INTERFACE *IpIf; ++ NET_BUF *Packet; ++ EFI_IP6_HEADER Head; ++ IP6_ICMP_INFORMATION_HEAD *IcmpHead; ++ IP6_ETHER_ADDR_OPTION *LinkLayerOption; ++ UINT16 PayloadLen; ++ IP6_INTERFACE *IpIf; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + + IpIf = Interface; +- if (IpIf == NULL && IpSb->DefaultInterface != NULL) { ++ if ((IpIf == NULL) && (IpSb->DefaultInterface != NULL)) { + IpIf = IpSb->DefaultInterface; + } + +@@ -1118,12 +1119,12 @@ Ip6SendRouterSolicit ( + // Generate the packet to be sent + // + +- PayloadLen = (UINT16) sizeof (IP6_ICMP_INFORMATION_HEAD); ++ PayloadLen = (UINT16)sizeof (IP6_ICMP_INFORMATION_HEAD); + if (SourceLinkAddress != NULL) { + PayloadLen += sizeof (IP6_ETHER_ADDR_OPTION); + } + +- Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32) PayloadLen); ++ Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32)PayloadLen); + if (Packet == NULL) { + return EFI_OUT_OF_RESOURCES; + } +@@ -1131,11 +1132,11 @@ Ip6SendRouterSolicit ( + // + // Create the basic IPv6 header. + // +- Head.FlowLabelL = 0; +- Head.FlowLabelH = 0; +- Head.PayloadLength = HTONS (PayloadLen); +- Head.NextHeader = IP6_ICMP; +- Head.HopLimit = IP6_HOP_LIMIT; ++ Head.FlowLabelL = 0; ++ Head.FlowLabelH = 0; ++ Head.PayloadLength = HTONS (PayloadLen); ++ Head.NextHeader = IP6_ICMP; ++ Head.HopLimit = IP6_HOP_LIMIT; + + if (SourceAddress != NULL) { + IP6_COPY_ADDRESS (&Head.SourceAddress, SourceAddress); +@@ -1143,7 +1144,6 @@ Ip6SendRouterSolicit ( + ZeroMem (&Head.SourceAddress, sizeof (EFI_IPv6_ADDRESS)); + } + +- + if (DestinationAddress != NULL) { + IP6_COPY_ADDRESS (&Head.DestinationAddress, DestinationAddress); + } else { +@@ -1156,7 +1156,7 @@ Ip6SendRouterSolicit ( + // Fill in the ICMP header, and Source link-layer address if contained. + // + +- IcmpHead = (IP6_ICMP_INFORMATION_HEAD *) NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); ++ IcmpHead = (IP6_ICMP_INFORMATION_HEAD *)NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); + ASSERT (IcmpHead != NULL); + ZeroMem (IcmpHead, sizeof (IP6_ICMP_INFORMATION_HEAD)); + IcmpHead->Head.Type = ICMP_V6_ROUTER_SOLICIT; +@@ -1164,14 +1164,14 @@ Ip6SendRouterSolicit ( + + LinkLayerOption = NULL; + if (SourceLinkAddress != NULL) { +- LinkLayerOption = (IP6_ETHER_ADDR_OPTION *) NetbufAllocSpace ( +- Packet, +- sizeof (IP6_ETHER_ADDR_OPTION), +- FALSE +- ); ++ LinkLayerOption = (IP6_ETHER_ADDR_OPTION *)NetbufAllocSpace ( ++ Packet, ++ sizeof (IP6_ETHER_ADDR_OPTION), ++ FALSE ++ ); + ASSERT (LinkLayerOption != NULL); + LinkLayerOption->Type = Ip6OptionEtherSource; +- LinkLayerOption->Length = (UINT8) sizeof (IP6_ETHER_ADDR_OPTION); ++ LinkLayerOption->Length = (UINT8)sizeof (IP6_ETHER_ADDR_OPTION); + CopyMem (LinkLayerOption->EtherAddr, SourceLinkAddress, 6); + } + +@@ -1205,22 +1205,22 @@ Ip6SendRouterSolicit ( + **/ + EFI_STATUS + Ip6SendNeighborAdvertise ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *SourceAddress, +- IN EFI_IPv6_ADDRESS *DestinationAddress, +- IN EFI_IPv6_ADDRESS *TargetIp6Address, +- IN EFI_MAC_ADDRESS *TargetLinkAddress, +- IN BOOLEAN IsRouter, +- IN BOOLEAN Override, +- IN BOOLEAN Solicited ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *SourceAddress, ++ IN EFI_IPv6_ADDRESS *DestinationAddress, ++ IN EFI_IPv6_ADDRESS *TargetIp6Address, ++ IN EFI_MAC_ADDRESS *TargetLinkAddress, ++ IN BOOLEAN IsRouter, ++ IN BOOLEAN Override, ++ IN BOOLEAN Solicited + ) + { +- NET_BUF *Packet; +- EFI_IP6_HEADER Head; +- IP6_ICMP_INFORMATION_HEAD *IcmpHead; +- IP6_ETHER_ADDR_OPTION *LinkLayerOption; +- EFI_IPv6_ADDRESS *Target; +- UINT16 PayloadLen; ++ NET_BUF *Packet; ++ EFI_IP6_HEADER Head; ++ IP6_ICMP_INFORMATION_HEAD *IcmpHead; ++ IP6_ETHER_ADDR_OPTION *LinkLayerOption; ++ EFI_IPv6_ADDRESS *Target; ++ UINT16 PayloadLen; + + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + +@@ -1232,13 +1232,13 @@ Ip6SendNeighborAdvertise ( + // + ASSERT (DestinationAddress != NULL && TargetIp6Address != NULL && TargetLinkAddress != NULL); + +- PayloadLen = (UINT16) (sizeof (IP6_ICMP_INFORMATION_HEAD) + sizeof (EFI_IPv6_ADDRESS) + sizeof (IP6_ETHER_ADDR_OPTION)); ++ PayloadLen = (UINT16)(sizeof (IP6_ICMP_INFORMATION_HEAD) + sizeof (EFI_IPv6_ADDRESS) + sizeof (IP6_ETHER_ADDR_OPTION)); + + // + // Generate the packet to be sent + // + +- Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32) PayloadLen); ++ Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32)PayloadLen); + if (Packet == NULL) { + return EFI_OUT_OF_RESOURCES; + } +@@ -1246,11 +1246,11 @@ Ip6SendNeighborAdvertise ( + // + // Create the basic IPv6 header. + // +- Head.FlowLabelL = 0; +- Head.FlowLabelH = 0; +- Head.PayloadLength = HTONS (PayloadLen); +- Head.NextHeader = IP6_ICMP; +- Head.HopLimit = IP6_HOP_LIMIT; ++ Head.FlowLabelL = 0; ++ Head.FlowLabelH = 0; ++ Head.PayloadLength = HTONS (PayloadLen); ++ Head.NextHeader = IP6_ICMP; ++ Head.HopLimit = IP6_HOP_LIMIT; + + IP6_COPY_ADDRESS (&Head.SourceAddress, SourceAddress); + IP6_COPY_ADDRESS (&Head.DestinationAddress, DestinationAddress); +@@ -1262,7 +1262,7 @@ Ip6SendNeighborAdvertise ( + // Set the Router flag, Solicited flag and Override flag. + // + +- IcmpHead = (IP6_ICMP_INFORMATION_HEAD *) NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); ++ IcmpHead = (IP6_ICMP_INFORMATION_HEAD *)NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); + ASSERT (IcmpHead != NULL); + ZeroMem (IcmpHead, sizeof (IP6_ICMP_INFORMATION_HEAD)); + IcmpHead->Head.Type = ICMP_V6_NEIGHBOR_ADVERTISE; +@@ -1280,15 +1280,15 @@ Ip6SendNeighborAdvertise ( + IcmpHead->Fourth |= IP6_OVERRIDE_FLAG; + } + +- Target = (EFI_IPv6_ADDRESS *) NetbufAllocSpace (Packet, sizeof (EFI_IPv6_ADDRESS), FALSE); ++ Target = (EFI_IPv6_ADDRESS *)NetbufAllocSpace (Packet, sizeof (EFI_IPv6_ADDRESS), FALSE); + ASSERT (Target != NULL); + IP6_COPY_ADDRESS (Target, TargetIp6Address); + +- LinkLayerOption = (IP6_ETHER_ADDR_OPTION *) NetbufAllocSpace ( +- Packet, +- sizeof (IP6_ETHER_ADDR_OPTION), +- FALSE +- ); ++ LinkLayerOption = (IP6_ETHER_ADDR_OPTION *)NetbufAllocSpace ( ++ Packet, ++ sizeof (IP6_ETHER_ADDR_OPTION), ++ FALSE ++ ); + ASSERT (LinkLayerOption != NULL); + LinkLayerOption->Type = Ip6OptionEtherTarget; + LinkLayerOption->Length = 1; +@@ -1320,33 +1320,33 @@ Ip6SendNeighborAdvertise ( + **/ + EFI_STATUS + Ip6SendNeighborSolicit ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *SourceAddress, +- IN EFI_IPv6_ADDRESS *DestinationAddress, +- IN EFI_IPv6_ADDRESS *TargetIp6Address, +- IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *SourceAddress, ++ IN EFI_IPv6_ADDRESS *DestinationAddress, ++ IN EFI_IPv6_ADDRESS *TargetIp6Address, ++ IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL + ) + { +- NET_BUF *Packet; +- EFI_IP6_HEADER Head; +- IP6_ICMP_INFORMATION_HEAD *IcmpHead; +- IP6_ETHER_ADDR_OPTION *LinkLayerOption; +- EFI_IPv6_ADDRESS *Target; +- BOOLEAN IsDAD; +- UINT16 PayloadLen; +- IP6_NEIGHBOR_ENTRY *Neighbor; ++ NET_BUF *Packet; ++ EFI_IP6_HEADER Head; ++ IP6_ICMP_INFORMATION_HEAD *IcmpHead; ++ IP6_ETHER_ADDR_OPTION *LinkLayerOption; ++ EFI_IPv6_ADDRESS *Target; ++ BOOLEAN IsDAD; ++ UINT16 PayloadLen; ++ IP6_NEIGHBOR_ENTRY *Neighbor; + + // + // Check input parameters + // + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); +- if (DestinationAddress == NULL || TargetIp6Address == NULL) { ++ if ((DestinationAddress == NULL) || (TargetIp6Address == NULL)) { + return EFI_INVALID_PARAMETER; + } + + IsDAD = FALSE; + +- if (SourceAddress == NULL || (SourceAddress != NULL && NetIp6IsUnspecifiedAddr (SourceAddress))) { ++ if ((SourceAddress == NULL) || ((SourceAddress != NULL) && NetIp6IsUnspecifiedAddr (SourceAddress))) { + IsDAD = TRUE; + } + +@@ -1355,21 +1355,21 @@ Ip6SendNeighborSolicit ( + // if the solicitation is not sent by performing DAD - Duplicate Address Detection. + // Otherwise must not include it. + // +- PayloadLen = (UINT16) (sizeof (IP6_ICMP_INFORMATION_HEAD) + sizeof (EFI_IPv6_ADDRESS)); ++ PayloadLen = (UINT16)(sizeof (IP6_ICMP_INFORMATION_HEAD) + sizeof (EFI_IPv6_ADDRESS)); + + if (!IsDAD) { + if (SourceLinkAddress == NULL) { + return EFI_INVALID_PARAMETER; + } + +- PayloadLen = (UINT16) (PayloadLen + sizeof (IP6_ETHER_ADDR_OPTION)); ++ PayloadLen = (UINT16)(PayloadLen + sizeof (IP6_ETHER_ADDR_OPTION)); + } + + // + // Generate the packet to be sent + // + +- Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32) PayloadLen); ++ Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32)PayloadLen); + if (Packet == NULL) { + return EFI_OUT_OF_RESOURCES; + } +@@ -1377,11 +1377,11 @@ Ip6SendNeighborSolicit ( + // + // Create the basic IPv6 header + // +- Head.FlowLabelL = 0; +- Head.FlowLabelH = 0; +- Head.PayloadLength = HTONS (PayloadLen); +- Head.NextHeader = IP6_ICMP; +- Head.HopLimit = IP6_HOP_LIMIT; ++ Head.FlowLabelL = 0; ++ Head.FlowLabelH = 0; ++ Head.PayloadLength = HTONS (PayloadLen); ++ Head.NextHeader = IP6_ICMP; ++ Head.HopLimit = IP6_HOP_LIMIT; + + if (SourceAddress != NULL) { + IP6_COPY_ADDRESS (&Head.SourceAddress, SourceAddress); +@@ -1396,27 +1396,26 @@ Ip6SendNeighborSolicit ( + // + // Fill in the ICMP header, Target address, and Source link-layer address. + // +- IcmpHead = (IP6_ICMP_INFORMATION_HEAD *) NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); ++ IcmpHead = (IP6_ICMP_INFORMATION_HEAD *)NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); + ASSERT (IcmpHead != NULL); + ZeroMem (IcmpHead, sizeof (IP6_ICMP_INFORMATION_HEAD)); + IcmpHead->Head.Type = ICMP_V6_NEIGHBOR_SOLICIT; + IcmpHead->Head.Code = 0; + +- Target = (EFI_IPv6_ADDRESS *) NetbufAllocSpace (Packet, sizeof (EFI_IPv6_ADDRESS), FALSE); ++ Target = (EFI_IPv6_ADDRESS *)NetbufAllocSpace (Packet, sizeof (EFI_IPv6_ADDRESS), FALSE); + ASSERT (Target != NULL); + IP6_COPY_ADDRESS (Target, TargetIp6Address); + + LinkLayerOption = NULL; + if (!IsDAD) { +- + // + // Fill in the source link-layer address option + // +- LinkLayerOption = (IP6_ETHER_ADDR_OPTION *) NetbufAllocSpace ( +- Packet, +- sizeof (IP6_ETHER_ADDR_OPTION), +- FALSE +- ); ++ LinkLayerOption = (IP6_ETHER_ADDR_OPTION *)NetbufAllocSpace ( ++ Packet, ++ sizeof (IP6_ETHER_ADDR_OPTION), ++ FALSE ++ ); + ASSERT (LinkLayerOption != NULL); + LinkLayerOption->Type = Ip6OptionEtherSource; + LinkLayerOption->Length = 1; +@@ -1457,30 +1456,30 @@ Ip6SendNeighborSolicit ( + **/ + EFI_STATUS + Ip6ProcessNeighborSolicit ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IP6_HEADER *Head, +- IN NET_BUF *Packet ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IP6_HEADER *Head, ++ IN NET_BUF *Packet + ) + { +- IP6_ICMP_INFORMATION_HEAD Icmp; +- EFI_IPv6_ADDRESS Target; +- IP6_ETHER_ADDR_OPTION LinkLayerOption; +- BOOLEAN IsDAD; +- BOOLEAN IsUnicast; +- BOOLEAN IsMaintained; +- IP6_DAD_ENTRY *DupAddrDetect; +- IP6_INTERFACE *IpIf; +- IP6_NEIGHBOR_ENTRY *Neighbor; +- BOOLEAN Solicited; +- BOOLEAN UpdateCache; +- EFI_IPv6_ADDRESS Dest; +- UINT16 OptionLen; +- UINT8 *Option; +- BOOLEAN Provided; +- EFI_STATUS Status; +- VOID *MacAddress; +- +- NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); ++ IP6_ICMP_INFORMATION_HEAD Icmp; ++ EFI_IPv6_ADDRESS Target; ++ IP6_ETHER_ADDR_OPTION LinkLayerOption; ++ BOOLEAN IsDAD; ++ BOOLEAN IsUnicast; ++ BOOLEAN IsMaintained; ++ IP6_DAD_ENTRY *DupAddrDetect; ++ IP6_INTERFACE *IpIf; ++ IP6_NEIGHBOR_ENTRY *Neighbor; ++ BOOLEAN Solicited; ++ BOOLEAN UpdateCache; ++ EFI_IPv6_ADDRESS Dest; ++ UINT16 OptionLen; ++ UINT8 *Option; ++ BOOLEAN Provided; ++ EFI_STATUS Status; ++ VOID *MacAddress; ++ ++ NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); + NetbufCopy (Packet, sizeof (Icmp), sizeof (Target), Target.Addr); + + // +@@ -1492,7 +1491,7 @@ Ip6ProcessNeighborSolicit ( + // + Status = EFI_INVALID_PARAMETER; + +- if (Head->HopLimit != IP6_HOP_LIMIT || Icmp.Head.Code != 0 || !NetIp6IsValidUnicast (&Target)) { ++ if ((Head->HopLimit != IP6_HOP_LIMIT) || (Icmp.Head.Code != 0) || !NetIp6IsValidUnicast (&Target)) { + goto Exit; + } + +@@ -1503,9 +1502,9 @@ Ip6ProcessNeighborSolicit ( + if (Head->PayloadLength < IP6_ND_LENGTH) { + goto Exit; + } else { +- OptionLen = (UINT16) (Head->PayloadLength - IP6_ND_LENGTH); ++ OptionLen = (UINT16)(Head->PayloadLength - IP6_ND_LENGTH); + if (OptionLen != 0) { +- Option = NetbufGetByte (Packet, IP6_ND_LENGTH, NULL); ++ Option = NetbufGetByte (Packet, IP6_ND_LENGTH, NULL); + ASSERT (Option != NULL); + + // +@@ -1527,7 +1526,7 @@ Ip6ProcessNeighborSolicit ( + Packet, + IP6_ND_LENGTH, + sizeof (IP6_ETHER_ADDR_OPTION), +- (UINT8 *) &LinkLayerOption ++ (UINT8 *)&LinkLayerOption + ); + // + // The solicitation for neighbor discovery should include a source link-layer +@@ -1591,7 +1590,8 @@ Ip6ProcessNeighborSolicit ( + MacAddress, + &IpSb->SnpMode.CurrentAddress, + IpSb->SnpMode.HwAddressSize +- ) != 0) { ++ ) != 0) ++ { + // + // The NS is from another node to performing DAD on the same address. + // Fail DAD for the tentative address. +@@ -1607,6 +1607,7 @@ Ip6ProcessNeighborSolicit ( + } + } + } ++ + goto Exit; + } + +@@ -1624,6 +1625,7 @@ Ip6ProcessNeighborSolicit ( + Status = EFI_OUT_OF_RESOURCES; + goto Exit; + } ++ + UpdateCache = TRUE; + } else { + if (CompareMem (Neighbor->LinkAddress.Addr, LinkLayerOption.EtherAddr, 6) != 0) { +@@ -1633,12 +1635,12 @@ Ip6ProcessNeighborSolicit ( + + if (UpdateCache) { + Neighbor->State = EfiNeighborStale; +- Neighbor->Ticks = (UINT32) IP6_INFINIT_LIFETIME; ++ Neighbor->Ticks = (UINT32)IP6_INFINIT_LIFETIME; + CopyMem (Neighbor->LinkAddress.Addr, LinkLayerOption.EtherAddr, 6); + // + // Send queued packets if exist. + // +- Neighbor->CallBack ((VOID *) Neighbor); ++ Neighbor->CallBack ((VOID *)Neighbor); + } + } + +@@ -1686,28 +1688,28 @@ Exit: + **/ + EFI_STATUS + Ip6ProcessNeighborAdvertise ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IP6_HEADER *Head, +- IN NET_BUF *Packet ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IP6_HEADER *Head, ++ IN NET_BUF *Packet + ) + { +- IP6_ICMP_INFORMATION_HEAD Icmp; +- EFI_IPv6_ADDRESS Target; +- IP6_ETHER_ADDR_OPTION LinkLayerOption; +- BOOLEAN Provided; +- INTN Compare; +- IP6_NEIGHBOR_ENTRY *Neighbor; +- IP6_DEFAULT_ROUTER *DefaultRouter; +- BOOLEAN Solicited; +- BOOLEAN IsRouter; +- BOOLEAN Override; +- IP6_DAD_ENTRY *DupAddrDetect; +- IP6_INTERFACE *IpIf; +- UINT16 OptionLen; +- UINT8 *Option; +- EFI_STATUS Status; +- +- NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); ++ IP6_ICMP_INFORMATION_HEAD Icmp; ++ EFI_IPv6_ADDRESS Target; ++ IP6_ETHER_ADDR_OPTION LinkLayerOption; ++ BOOLEAN Provided; ++ INTN Compare; ++ IP6_NEIGHBOR_ENTRY *Neighbor; ++ IP6_DEFAULT_ROUTER *DefaultRouter; ++ BOOLEAN Solicited; ++ BOOLEAN IsRouter; ++ BOOLEAN Override; ++ IP6_DAD_ENTRY *DupAddrDetect; ++ IP6_INTERFACE *IpIf; ++ UINT16 OptionLen; ++ UINT8 *Option; ++ EFI_STATUS Status; ++ ++ NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); + NetbufCopy (Packet, sizeof (Icmp), sizeof (Target), Target.Addr); + + // +@@ -1720,7 +1722,7 @@ Ip6ProcessNeighborAdvertise ( + // ICMP Code is 0. + // Target Address is not a multicast address. + // +- if (Head->HopLimit != IP6_HOP_LIMIT || Icmp.Head.Code != 0 || !NetIp6IsValidUnicast (&Target)) { ++ if ((Head->HopLimit != IP6_HOP_LIMIT) || (Icmp.Head.Code != 0) || !NetIp6IsValidUnicast (&Target)) { + goto Exit; + } + +@@ -1732,9 +1734,9 @@ Ip6ProcessNeighborAdvertise ( + if (Head->PayloadLength < IP6_ND_LENGTH) { + goto Exit; + } else { +- OptionLen = (UINT16) (Head->PayloadLength - IP6_ND_LENGTH); ++ OptionLen = (UINT16)(Head->PayloadLength - IP6_ND_LENGTH); + if (OptionLen != 0) { +- Option = NetbufGetByte (Packet, IP6_ND_LENGTH, NULL); ++ Option = NetbufGetByte (Packet, IP6_ND_LENGTH, NULL); + ASSERT (Option != NULL); + + // +@@ -1753,6 +1755,7 @@ Ip6ProcessNeighborAdvertise ( + if ((Icmp.Fourth & IP6_SOLICITED_FLAG) == IP6_SOLICITED_FLAG) { + Solicited = TRUE; + } ++ + if (IP6_IS_MULTICAST (&Head->DestinationAddress) && Solicited) { + goto Exit; + } +@@ -1787,6 +1790,7 @@ Ip6ProcessNeighborAdvertise ( + if ((Icmp.Fourth & IP6_IS_ROUTER_FLAG) == IP6_IS_ROUTER_FLAG) { + IsRouter = TRUE; + } ++ + if ((Icmp.Fourth & IP6_OVERRIDE_FLAG) == IP6_OVERRIDE_FLAG) { + Override = TRUE; + } +@@ -1799,7 +1803,7 @@ Ip6ProcessNeighborAdvertise ( + Packet, + IP6_ND_LENGTH, + sizeof (IP6_ETHER_ADDR_OPTION), +- (UINT8 *) &LinkLayerOption ++ (UINT8 *)&LinkLayerOption + ); + + if (LinkLayerOption.Type == Ip6OptionEtherTarget) { +@@ -1828,6 +1832,7 @@ Ip6ProcessNeighborAdvertise ( + if (!Provided) { + goto Exit; + } ++ + // + // Update the Neighbor Cache + // +@@ -1837,17 +1842,16 @@ Ip6ProcessNeighborAdvertise ( + Neighbor->Ticks = IP6_GET_TICKS (IpSb->ReachableTime); + } else { + Neighbor->State = EfiNeighborStale; +- Neighbor->Ticks = (UINT32) IP6_INFINIT_LIFETIME; ++ Neighbor->Ticks = (UINT32)IP6_INFINIT_LIFETIME; + // + // Send any packets queued for the neighbor awaiting address resolution. + // +- Neighbor->CallBack ((VOID *) Neighbor); ++ Neighbor->CallBack ((VOID *)Neighbor); + } + + Neighbor->IsRouter = IsRouter; +- + } else { +- if (!Override && Compare != 0) { ++ if (!Override && (Compare != 0)) { + // + // When the Override Flag is clear and supplied link-layer address differs from + // that in the cache, if the state of the entry is not REACHABLE, ignore the +@@ -1856,12 +1860,13 @@ Ip6ProcessNeighborAdvertise ( + // + if (Neighbor->State == EfiNeighborReachable) { + Neighbor->State = EfiNeighborStale; +- Neighbor->Ticks = (UINT32) IP6_INFINIT_LIFETIME; ++ Neighbor->Ticks = (UINT32)IP6_INFINIT_LIFETIME; + } + } else { + if (Compare != 0) { + CopyMem (Neighbor->LinkAddress.Addr, LinkLayerOption.EtherAddr, 6); + } ++ + // + // Update the entry's state + // +@@ -1871,7 +1876,7 @@ Ip6ProcessNeighborAdvertise ( + } else { + if (Compare != 0) { + Neighbor->State = EfiNeighborStale; +- Neighbor->Ticks = (UINT32) IP6_INFINIT_LIFETIME; ++ Neighbor->Ticks = (UINT32)IP6_INFINIT_LIFETIME; + } + } + +@@ -1892,7 +1897,7 @@ Ip6ProcessNeighborAdvertise ( + } + + if (Neighbor->State == EfiNeighborReachable) { +- Neighbor->CallBack ((VOID *) Neighbor); ++ Neighbor->CallBack ((VOID *)Neighbor); + } + + Status = EFI_SUCCESS; +@@ -1918,36 +1923,36 @@ Exit: + **/ + EFI_STATUS + Ip6ProcessRouterAdvertise ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IP6_HEADER *Head, +- IN NET_BUF *Packet ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IP6_HEADER *Head, ++ IN NET_BUF *Packet + ) + { +- IP6_ICMP_INFORMATION_HEAD Icmp; +- UINT32 ReachableTime; +- UINT32 RetransTimer; +- UINT16 RouterLifetime; +- UINT32 Offset; +- UINT8 Type; +- UINT8 Length; +- IP6_ETHER_ADDR_OPTION LinkLayerOption; +- UINT32 Fourth; +- UINT8 CurHopLimit; +- BOOLEAN Mflag; +- BOOLEAN Oflag; +- IP6_DEFAULT_ROUTER *DefaultRouter; +- IP6_NEIGHBOR_ENTRY *NeighborCache; +- EFI_MAC_ADDRESS LinkLayerAddress; +- IP6_MTU_OPTION MTUOption; +- IP6_PREFIX_INFO_OPTION PrefixOption; +- IP6_PREFIX_LIST_ENTRY *PrefixList; +- BOOLEAN OnLink; +- BOOLEAN Autonomous; +- EFI_IPv6_ADDRESS StatelessAddress; +- EFI_STATUS Status; +- UINT16 OptionLen; +- UINT8 *Option; +- INTN Result; ++ IP6_ICMP_INFORMATION_HEAD Icmp; ++ UINT32 ReachableTime; ++ UINT32 RetransTimer; ++ UINT16 RouterLifetime; ++ UINT32 Offset; ++ UINT8 Type; ++ UINT8 Length; ++ IP6_ETHER_ADDR_OPTION LinkLayerOption; ++ UINT32 Fourth; ++ UINT8 CurHopLimit; ++ BOOLEAN Mflag; ++ BOOLEAN Oflag; ++ IP6_DEFAULT_ROUTER *DefaultRouter; ++ IP6_NEIGHBOR_ENTRY *NeighborCache; ++ EFI_MAC_ADDRESS LinkLayerAddress; ++ IP6_MTU_OPTION MTUOption; ++ IP6_PREFIX_INFO_OPTION PrefixOption; ++ IP6_PREFIX_LIST_ENTRY *PrefixList; ++ BOOLEAN OnLink; ++ BOOLEAN Autonomous; ++ EFI_IPv6_ADDRESS StatelessAddress; ++ EFI_STATUS Status; ++ UINT16 OptionLen; ++ UINT8 *Option; ++ INTN Result; + + Status = EFI_INVALID_PARAMETER; + +@@ -1958,7 +1963,7 @@ Ip6ProcessRouterAdvertise ( + goto Exit; + } + +- NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); ++ NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); + + // + // Validate the incoming Router Advertisement +@@ -1970,23 +1975,25 @@ Ip6ProcessRouterAdvertise ( + if (!NetIp6IsLinkLocalAddr (&Head->SourceAddress)) { + goto Exit; + } ++ + // + // The IP Hop Limit field has a value of 255, i.e. the packet + // could not possibly have been forwarded by a router. + // ICMP Code is 0. + // ICMP length (derived from the IP length) is 16 or more octets. + // +- if (Head->HopLimit != IP6_HOP_LIMIT || Icmp.Head.Code != 0 || +- Head->PayloadLength < IP6_RA_LENGTH) { ++ if ((Head->HopLimit != IP6_HOP_LIMIT) || (Icmp.Head.Code != 0) || ++ (Head->PayloadLength < IP6_RA_LENGTH)) ++ { + goto Exit; + } + + // + // All included options have a length that is greater than zero. + // +- OptionLen = (UINT16) (Head->PayloadLength - IP6_RA_LENGTH); ++ OptionLen = (UINT16)(Head->PayloadLength - IP6_RA_LENGTH); + if (OptionLen != 0) { +- Option = NetbufGetByte (Packet, IP6_RA_LENGTH, NULL); ++ Option = NetbufGetByte (Packet, IP6_RA_LENGTH, NULL); + ASSERT (Option != NULL); + + if (!Ip6IsNDOptionValid (Option, OptionLen)) { +@@ -2035,17 +2042,17 @@ Ip6ProcessRouterAdvertise ( + } + } + +- CurHopLimit = *((UINT8 *) &Fourth + 3); ++ CurHopLimit = *((UINT8 *)&Fourth + 3); + if (CurHopLimit != 0) { + IpSb->CurHopLimit = CurHopLimit; + } + + Mflag = FALSE; + Oflag = FALSE; +- if ((*((UINT8 *) &Fourth + 2) & IP6_M_ADDR_CONFIG_FLAG) == IP6_M_ADDR_CONFIG_FLAG) { ++ if ((*((UINT8 *)&Fourth + 2) & IP6_M_ADDR_CONFIG_FLAG) == IP6_M_ADDR_CONFIG_FLAG) { + Mflag = TRUE; + } else { +- if ((*((UINT8 *) &Fourth + 2) & IP6_O_CONFIG_FLAG) == IP6_O_CONFIG_FLAG) { ++ if ((*((UINT8 *)&Fourth + 2) & IP6_O_CONFIG_FLAG) == IP6_O_CONFIG_FLAG) { + Oflag = TRUE; + } + } +@@ -2060,12 +2067,12 @@ Ip6ProcessRouterAdvertise ( + // + // Process Reachable Time and Retrans Timer fields. + // +- NetbufCopy (Packet, sizeof (Icmp), sizeof (UINT32), (UINT8 *) &ReachableTime); +- NetbufCopy (Packet, sizeof (Icmp) + sizeof (UINT32), sizeof (UINT32), (UINT8 *) &RetransTimer); ++ NetbufCopy (Packet, sizeof (Icmp), sizeof (UINT32), (UINT8 *)&ReachableTime); ++ NetbufCopy (Packet, sizeof (Icmp) + sizeof (UINT32), sizeof (UINT32), (UINT8 *)&RetransTimer); + ReachableTime = NTOHL (ReachableTime); + RetransTimer = NTOHL (RetransTimer); + +- if (ReachableTime != 0 && ReachableTime != IpSb->BaseReachableTime) { ++ if ((ReachableTime != 0) && (ReachableTime != IpSb->BaseReachableTime)) { + // + // If new value is not unspecified and differs from the previous one, record it + // in BaseReachableTime and recompute a ReachableTime. +@@ -2098,262 +2105,266 @@ Ip6ProcessRouterAdvertise ( + // fit within the input packet. + // + Offset = 16; +- while (Offset < (UINT32) Head->PayloadLength) { ++ while (Offset < (UINT32)Head->PayloadLength) { + NetbufCopy (Packet, Offset, sizeof (UINT8), &Type); + switch (Type) { +- case Ip6OptionEtherSource: +- // +- // Update the neighbor cache +- // +- NetbufCopy (Packet, Offset, sizeof (IP6_ETHER_ADDR_OPTION), (UINT8 *) &LinkLayerOption); ++ case Ip6OptionEtherSource: ++ // ++ // Update the neighbor cache ++ // ++ NetbufCopy (Packet, Offset, sizeof (IP6_ETHER_ADDR_OPTION), (UINT8 *)&LinkLayerOption); + +- // +- // Option size validity ensured by Ip6IsNDOptionValid(). +- // +- ASSERT (LinkLayerOption.Length != 0); +- ASSERT (Offset + (UINT32) LinkLayerOption.Length * 8 <= (UINT32) Head->PayloadLength); ++ // ++ // Option size validity ensured by Ip6IsNDOptionValid(). ++ // ++ ASSERT (LinkLayerOption.Length != 0); ++ ASSERT (Offset + (UINT32)LinkLayerOption.Length * 8 <= (UINT32)Head->PayloadLength); + +- ZeroMem (&LinkLayerAddress, sizeof (EFI_MAC_ADDRESS)); +- CopyMem (&LinkLayerAddress, LinkLayerOption.EtherAddr, 6); ++ ZeroMem (&LinkLayerAddress, sizeof (EFI_MAC_ADDRESS)); ++ CopyMem (&LinkLayerAddress, LinkLayerOption.EtherAddr, 6); + +- if (NeighborCache == NULL) { +- NeighborCache = Ip6CreateNeighborEntry ( +- IpSb, +- Ip6OnArpResolved, +- &Head->SourceAddress, +- &LinkLayerAddress +- ); + if (NeighborCache == NULL) { +- Status = EFI_OUT_OF_RESOURCES; +- goto Exit; ++ NeighborCache = Ip6CreateNeighborEntry ( ++ IpSb, ++ Ip6OnArpResolved, ++ &Head->SourceAddress, ++ &LinkLayerAddress ++ ); ++ if (NeighborCache == NULL) { ++ Status = EFI_OUT_OF_RESOURCES; ++ goto Exit; ++ } ++ ++ NeighborCache->IsRouter = TRUE; ++ NeighborCache->State = EfiNeighborStale; ++ NeighborCache->Ticks = (UINT32)IP6_INFINIT_LIFETIME; ++ } else { ++ Result = CompareMem (&LinkLayerAddress, &NeighborCache->LinkAddress, 6); ++ ++ // ++ // If the link-local address is the same as that already in the cache, ++ // the cache entry's state remains unchanged. Otherwise update the ++ // reachability state to STALE. ++ // ++ if ((NeighborCache->State == EfiNeighborInComplete) || (Result != 0)) { ++ CopyMem (&NeighborCache->LinkAddress, &LinkLayerAddress, 6); ++ ++ NeighborCache->Ticks = (UINT32)IP6_INFINIT_LIFETIME; ++ ++ if (NeighborCache->State == EfiNeighborInComplete) { ++ // ++ // Send queued packets if exist. ++ // ++ NeighborCache->State = EfiNeighborStale; ++ NeighborCache->CallBack ((VOID *)NeighborCache); ++ } else { ++ NeighborCache->State = EfiNeighborStale; ++ } ++ } + } +- NeighborCache->IsRouter = TRUE; +- NeighborCache->State = EfiNeighborStale; +- NeighborCache->Ticks = (UINT32) IP6_INFINIT_LIFETIME; +- } else { +- Result = CompareMem (&LinkLayerAddress, &NeighborCache->LinkAddress, 6); ++ ++ Offset += (UINT32)LinkLayerOption.Length * 8; ++ break; ++ case Ip6OptionPrefixInfo: ++ NetbufCopy (Packet, Offset, sizeof (IP6_PREFIX_INFO_OPTION), (UINT8 *)&PrefixOption); + + // +- // If the link-local address is the same as that already in the cache, +- // the cache entry's state remains unchanged. Otherwise update the +- // reachability state to STALE. ++ // Option size validity ensured by Ip6IsNDOptionValid(). + // +- if ((NeighborCache->State == EfiNeighborInComplete) || (Result != 0)) { +- CopyMem (&NeighborCache->LinkAddress, &LinkLayerAddress, 6); ++ ASSERT (PrefixOption.Length == 4); ++ ASSERT (Offset + (UINT32)PrefixOption.Length * 8 <= (UINT32)Head->PayloadLength); + +- NeighborCache->Ticks = (UINT32) IP6_INFINIT_LIFETIME; ++ PrefixOption.ValidLifetime = NTOHL (PrefixOption.ValidLifetime); ++ PrefixOption.PreferredLifetime = NTOHL (PrefixOption.PreferredLifetime); + +- if (NeighborCache->State == EfiNeighborInComplete) { +- // +- // Send queued packets if exist. +- // +- NeighborCache->State = EfiNeighborStale; +- NeighborCache->CallBack ((VOID *) NeighborCache); +- } else { +- NeighborCache->State = EfiNeighborStale; +- } ++ // ++ // Get L and A flag, recorded in the lower 2 bits of Reserved1 ++ // ++ OnLink = FALSE; ++ if ((PrefixOption.Reserved1 & IP6_ON_LINK_FLAG) == IP6_ON_LINK_FLAG) { ++ OnLink = TRUE; + } +- } +- +- Offset += (UINT32) LinkLayerOption.Length * 8; +- break; +- case Ip6OptionPrefixInfo: +- NetbufCopy (Packet, Offset, sizeof (IP6_PREFIX_INFO_OPTION), (UINT8 *) &PrefixOption); + +- // +- // Option size validity ensured by Ip6IsNDOptionValid(). +- // +- ASSERT (PrefixOption.Length == 4); +- ASSERT (Offset + (UINT32) PrefixOption.Length * 8 <= (UINT32) Head->PayloadLength); +- +- PrefixOption.ValidLifetime = NTOHL (PrefixOption.ValidLifetime); +- PrefixOption.PreferredLifetime = NTOHL (PrefixOption.PreferredLifetime); ++ Autonomous = FALSE; ++ if ((PrefixOption.Reserved1 & IP6_AUTO_CONFIG_FLAG) == IP6_AUTO_CONFIG_FLAG) { ++ Autonomous = TRUE; ++ } + +- // +- // Get L and A flag, recorded in the lower 2 bits of Reserved1 +- // +- OnLink = FALSE; +- if ((PrefixOption.Reserved1 & IP6_ON_LINK_FLAG) == IP6_ON_LINK_FLAG) { +- OnLink = TRUE; +- } +- Autonomous = FALSE; +- if ((PrefixOption.Reserved1 & IP6_AUTO_CONFIG_FLAG) == IP6_AUTO_CONFIG_FLAG) { +- Autonomous = TRUE; +- } ++ // ++ // If the prefix is the link-local prefix, silently ignore the prefix option. ++ // ++ if ((PrefixOption.PrefixLength == IP6_LINK_LOCAL_PREFIX_LENGTH) && ++ NetIp6IsLinkLocalAddr (&PrefixOption.Prefix) ++ ) ++ { ++ Offset += sizeof (IP6_PREFIX_INFO_OPTION); ++ break; ++ } + +- // +- // If the prefix is the link-local prefix, silently ignore the prefix option. +- // +- if (PrefixOption.PrefixLength == IP6_LINK_LOCAL_PREFIX_LENGTH && +- NetIp6IsLinkLocalAddr (&PrefixOption.Prefix) +- ) { +- Offset += sizeof (IP6_PREFIX_INFO_OPTION); +- break; +- } +- // +- // Do following if on-link flag is set according to RFC4861. +- // +- if (OnLink) { +- PrefixList = Ip6FindPrefixListEntry ( +- IpSb, +- TRUE, +- PrefixOption.PrefixLength, +- &PrefixOption.Prefix +- ); + // +- // Create a new entry for the prefix, if the ValidLifetime is zero, +- // silently ignore the prefix option. ++ // Do following if on-link flag is set according to RFC4861. + // +- if (PrefixList == NULL && PrefixOption.ValidLifetime != 0) { +- PrefixList = Ip6CreatePrefixListEntry ( ++ if (OnLink) { ++ PrefixList = Ip6FindPrefixListEntry ( + IpSb, + TRUE, +- PrefixOption.ValidLifetime, +- PrefixOption.PreferredLifetime, + PrefixOption.PrefixLength, + &PrefixOption.Prefix + ); +- if (PrefixList == NULL) { +- Status = EFI_OUT_OF_RESOURCES; +- goto Exit; +- } +- } else if (PrefixList != NULL) { +- if (PrefixOption.ValidLifetime != 0) { +- PrefixList->ValidLifetime = PrefixOption.ValidLifetime; +- } else { +- // +- // If the prefix exists and incoming ValidLifetime is zero, immediately +- // remove the prefix. +- Ip6DestroyPrefixListEntry (IpSb, PrefixList, OnLink, TRUE); +- } +- } +- } +- +- // +- // Do following if Autonomous flag is set according to RFC4862. +- // +- if (Autonomous && PrefixOption.PreferredLifetime <= PrefixOption.ValidLifetime) { +- PrefixList = Ip6FindPrefixListEntry ( +- IpSb, +- FALSE, +- PrefixOption.PrefixLength, +- &PrefixOption.Prefix +- ); +- // +- // Create a new entry for the prefix, and form an address by prefix + interface id +- // If the sum of the prefix length and interface identifier length +- // does not equal 128 bits, the Prefix Information option MUST be ignored. +- // +- if (PrefixList == NULL && +- PrefixOption.ValidLifetime != 0 && +- PrefixOption.PrefixLength + IpSb->InterfaceIdLen * 8 == 128 +- ) { + // +- // Form the address in network order. ++ // Create a new entry for the prefix, if the ValidLifetime is zero, ++ // silently ignore the prefix option. + // +- CopyMem (&StatelessAddress, &PrefixOption.Prefix, sizeof (UINT64)); +- CopyMem (&StatelessAddress.Addr[8], IpSb->InterfaceId, sizeof (UINT64)); +- +- // +- // If the address is not yet in the assigned address list, adds it into. +- // +- if (!Ip6IsOneOfSetAddress (IpSb, &StatelessAddress, NULL, NULL)) { +- // +- // And also not in the DAD process, check its uniqueness firstly. +- // +- if (Ip6FindDADEntry (IpSb, &StatelessAddress, NULL) == NULL) { +- Status = Ip6SetAddress ( +- IpSb->DefaultInterface, +- &StatelessAddress, +- FALSE, +- PrefixOption.PrefixLength, +- PrefixOption.ValidLifetime, +- PrefixOption.PreferredLifetime, +- NULL, +- NULL +- ); +- if (EFI_ERROR (Status)) { +- goto Exit; +- } ++ if ((PrefixList == NULL) && (PrefixOption.ValidLifetime != 0)) { ++ PrefixList = Ip6CreatePrefixListEntry ( ++ IpSb, ++ TRUE, ++ PrefixOption.ValidLifetime, ++ PrefixOption.PreferredLifetime, ++ PrefixOption.PrefixLength, ++ &PrefixOption.Prefix ++ ); ++ if (PrefixList == NULL) { ++ Status = EFI_OUT_OF_RESOURCES; ++ goto Exit; ++ } ++ } else if (PrefixList != NULL) { ++ if (PrefixOption.ValidLifetime != 0) { ++ PrefixList->ValidLifetime = PrefixOption.ValidLifetime; ++ } else { ++ // ++ // If the prefix exists and incoming ValidLifetime is zero, immediately ++ // remove the prefix. ++ Ip6DestroyPrefixListEntry (IpSb, PrefixList, OnLink, TRUE); + } + } ++ } + +- // +- // Adds the prefix option to stateless prefix option list. +- // +- PrefixList = Ip6CreatePrefixListEntry ( ++ // ++ // Do following if Autonomous flag is set according to RFC4862. ++ // ++ if (Autonomous && (PrefixOption.PreferredLifetime <= PrefixOption.ValidLifetime)) { ++ PrefixList = Ip6FindPrefixListEntry ( + IpSb, + FALSE, +- PrefixOption.ValidLifetime, +- PrefixOption.PreferredLifetime, + PrefixOption.PrefixLength, + &PrefixOption.Prefix + ); +- if (PrefixList == NULL) { +- Status = EFI_OUT_OF_RESOURCES; +- goto Exit; +- } +- } else if (PrefixList != NULL) { +- + // +- // Reset the preferred lifetime of the address if the advertised prefix exists. +- // Perform specific action to valid lifetime together. ++ // Create a new entry for the prefix, and form an address by prefix + interface id ++ // If the sum of the prefix length and interface identifier length ++ // does not equal 128 bits, the Prefix Information option MUST be ignored. + // +- PrefixList->PreferredLifetime = PrefixOption.PreferredLifetime; +- if ((PrefixOption.ValidLifetime > 7200) || +- (PrefixOption.ValidLifetime > PrefixList->ValidLifetime)) { ++ if ((PrefixList == NULL) && ++ (PrefixOption.ValidLifetime != 0) && ++ (PrefixOption.PrefixLength + IpSb->InterfaceIdLen * 8 == 128) ++ ) ++ { + // +- // If the received Valid Lifetime is greater than 2 hours or +- // greater than RemainingLifetime, set the valid lifetime of the +- // corresponding address to the advertised Valid Lifetime. ++ // Form the address in network order. + // +- PrefixList->ValidLifetime = PrefixOption.ValidLifetime; ++ CopyMem (&StatelessAddress, &PrefixOption.Prefix, sizeof (UINT64)); ++ CopyMem (&StatelessAddress.Addr[8], IpSb->InterfaceId, sizeof (UINT64)); + +- } else if (PrefixList->ValidLifetime <= 7200) { + // +- // If RemainingLifetime is less than or equals to 2 hours, ignore the +- // Prefix Information option with regards to the valid lifetime. +- // TODO: If this option has been authenticated, set the valid lifetime. ++ // If the address is not yet in the assigned address list, adds it into. + // +- } else { ++ if (!Ip6IsOneOfSetAddress (IpSb, &StatelessAddress, NULL, NULL)) { ++ // ++ // And also not in the DAD process, check its uniqueness firstly. ++ // ++ if (Ip6FindDADEntry (IpSb, &StatelessAddress, NULL) == NULL) { ++ Status = Ip6SetAddress ( ++ IpSb->DefaultInterface, ++ &StatelessAddress, ++ FALSE, ++ PrefixOption.PrefixLength, ++ PrefixOption.ValidLifetime, ++ PrefixOption.PreferredLifetime, ++ NULL, ++ NULL ++ ); ++ if (EFI_ERROR (Status)) { ++ goto Exit; ++ } ++ } ++ } ++ + // +- // Otherwise, reset the valid lifetime of the corresponding +- // address to 2 hours. ++ // Adds the prefix option to stateless prefix option list. ++ // ++ PrefixList = Ip6CreatePrefixListEntry ( ++ IpSb, ++ FALSE, ++ PrefixOption.ValidLifetime, ++ PrefixOption.PreferredLifetime, ++ PrefixOption.PrefixLength, ++ &PrefixOption.Prefix ++ ); ++ if (PrefixList == NULL) { ++ Status = EFI_OUT_OF_RESOURCES; ++ goto Exit; ++ } ++ } else if (PrefixList != NULL) { + // +- PrefixList->ValidLifetime = 7200; ++ // Reset the preferred lifetime of the address if the advertised prefix exists. ++ // Perform specific action to valid lifetime together. ++ // ++ PrefixList->PreferredLifetime = PrefixOption.PreferredLifetime; ++ if ((PrefixOption.ValidLifetime > 7200) || ++ (PrefixOption.ValidLifetime > PrefixList->ValidLifetime)) ++ { ++ // ++ // If the received Valid Lifetime is greater than 2 hours or ++ // greater than RemainingLifetime, set the valid lifetime of the ++ // corresponding address to the advertised Valid Lifetime. ++ // ++ PrefixList->ValidLifetime = PrefixOption.ValidLifetime; ++ } else if (PrefixList->ValidLifetime <= 7200) { ++ // ++ // If RemainingLifetime is less than or equals to 2 hours, ignore the ++ // Prefix Information option with regards to the valid lifetime. ++ // TODO: If this option has been authenticated, set the valid lifetime. ++ // ++ } else { ++ // ++ // Otherwise, reset the valid lifetime of the corresponding ++ // address to 2 hours. ++ // ++ PrefixList->ValidLifetime = 7200; ++ } + } + } +- } + +- Offset += sizeof (IP6_PREFIX_INFO_OPTION); +- break; +- case Ip6OptionMtu: +- NetbufCopy (Packet, Offset, sizeof (IP6_MTU_OPTION), (UINT8 *) &MTUOption); ++ Offset += sizeof (IP6_PREFIX_INFO_OPTION); ++ break; ++ case Ip6OptionMtu: ++ NetbufCopy (Packet, Offset, sizeof (IP6_MTU_OPTION), (UINT8 *)&MTUOption); + +- // +- // Option size validity ensured by Ip6IsNDOptionValid(). +- // +- ASSERT (MTUOption.Length == 1); +- ASSERT (Offset + (UINT32) MTUOption.Length * 8 <= (UINT32) Head->PayloadLength); ++ // ++ // Option size validity ensured by Ip6IsNDOptionValid(). ++ // ++ ASSERT (MTUOption.Length == 1); ++ ASSERT (Offset + (UINT32)MTUOption.Length * 8 <= (UINT32)Head->PayloadLength); + +- // +- // Use IPv6 minimum link MTU 1280 bytes as the maximum packet size in order +- // to omit implementation of Path MTU Discovery. Thus ignore the MTU option +- // in Router Advertisement. +- // ++ // ++ // Use IPv6 minimum link MTU 1280 bytes as the maximum packet size in order ++ // to omit implementation of Path MTU Discovery. Thus ignore the MTU option ++ // in Router Advertisement. ++ // + +- Offset += sizeof (IP6_MTU_OPTION); +- break; +- default: +- // +- // Silently ignore unrecognized options +- // +- NetbufCopy (Packet, Offset + sizeof (UINT8), sizeof (UINT8), &Length); ++ Offset += sizeof (IP6_MTU_OPTION); ++ break; ++ default: ++ // ++ // Silently ignore unrecognized options ++ // ++ NetbufCopy (Packet, Offset + sizeof (UINT8), sizeof (UINT8), &Length); + +- ASSERT (Length != 0); ++ ASSERT (Length != 0); + +- Offset += (UINT32) Length * 8; +- break; ++ Offset += (UINT32)Length * 8; ++ break; + } + } + +@@ -2382,31 +2393,31 @@ Exit: + **/ + EFI_STATUS + Ip6ProcessRedirect ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IP6_HEADER *Head, +- IN NET_BUF *Packet ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IP6_HEADER *Head, ++ IN NET_BUF *Packet + ) + { +- IP6_ICMP_INFORMATION_HEAD *Icmp; +- EFI_IPv6_ADDRESS *Target; +- EFI_IPv6_ADDRESS *IcmpDest; +- UINT8 *Option; +- UINT16 OptionLen; +- IP6_ROUTE_ENTRY *RouteEntry; +- IP6_ROUTE_CACHE_ENTRY *RouteCache; +- IP6_NEIGHBOR_ENTRY *NeighborCache; +- INT32 Length; +- UINT8 OptLen; +- IP6_ETHER_ADDR_OPTION *LinkLayerOption; +- EFI_MAC_ADDRESS Mac; +- UINT32 Index; +- BOOLEAN IsRouter; +- EFI_STATUS Status; +- INTN Result; ++ IP6_ICMP_INFORMATION_HEAD *Icmp; ++ EFI_IPv6_ADDRESS *Target; ++ EFI_IPv6_ADDRESS *IcmpDest; ++ UINT8 *Option; ++ UINT16 OptionLen; ++ IP6_ROUTE_ENTRY *RouteEntry; ++ IP6_ROUTE_CACHE_ENTRY *RouteCache; ++ IP6_NEIGHBOR_ENTRY *NeighborCache; ++ INT32 Length; ++ UINT8 OptLen; ++ IP6_ETHER_ADDR_OPTION *LinkLayerOption; ++ EFI_MAC_ADDRESS Mac; ++ UINT32 Index; ++ BOOLEAN IsRouter; ++ EFI_STATUS Status; ++ INTN Result; + + Status = EFI_INVALID_PARAMETER; + +- Icmp = (IP6_ICMP_INFORMATION_HEAD *) NetbufGetByte (Packet, 0, NULL); ++ Icmp = (IP6_ICMP_INFORMATION_HEAD *)NetbufGetByte (Packet, 0, NULL); + if (Icmp == NULL) { + goto Exit; + } +@@ -2421,8 +2432,9 @@ Ip6ProcessRedirect ( + // ICMP Code is 0. + // ICMP length (derived from the IP length) is 40 or more octets. + // +- if (Head->HopLimit != IP6_HOP_LIMIT || Icmp->Head.Code != 0 || +- Head->PayloadLength < IP6_REDITECT_LENGTH) { ++ if ((Head->HopLimit != IP6_HOP_LIMIT) || (Icmp->Head.Code != 0) || ++ (Head->PayloadLength < IP6_REDITECT_LENGTH)) ++ { + goto Exit; + } + +@@ -2443,9 +2455,9 @@ Ip6ProcessRedirect ( + // + // All included options have a length that is greater than zero. + // +- OptionLen = (UINT16) (Head->PayloadLength - IP6_REDITECT_LENGTH); ++ OptionLen = (UINT16)(Head->PayloadLength - IP6_REDITECT_LENGTH); + if (OptionLen != 0) { +- Option = NetbufGetByte (Packet, IP6_REDITECT_LENGTH, NULL); ++ Option = NetbufGetByte (Packet, IP6_REDITECT_LENGTH, NULL); + ASSERT (Option != NULL); + + if (!Ip6IsNDOptionValid (Option, OptionLen)) { +@@ -2453,7 +2465,7 @@ Ip6ProcessRedirect ( + } + } + +- Target = (EFI_IPv6_ADDRESS *) (Icmp + 1); ++ Target = (EFI_IPv6_ADDRESS *)(Icmp + 1); + IcmpDest = Target + 1; + + // +@@ -2479,32 +2491,34 @@ Ip6ProcessRedirect ( + // address option. + // + Length = Packet->TotalSize - 40; +- Option = (UINT8 *) (IcmpDest + 1); ++ Option = (UINT8 *)(IcmpDest + 1); + LinkLayerOption = NULL; + while (Length > 0) { + switch (*Option) { +- case Ip6OptionEtherTarget: ++ case Ip6OptionEtherTarget: + +- LinkLayerOption = (IP6_ETHER_ADDR_OPTION *) Option; +- OptLen = LinkLayerOption->Length; +- if (OptLen != 1) { +- // +- // For ethernet, the length must be 1. +- // +- goto Exit; +- } +- break; ++ LinkLayerOption = (IP6_ETHER_ADDR_OPTION *)Option; ++ OptLen = LinkLayerOption->Length; ++ if (OptLen != 1) { ++ // ++ // For ethernet, the length must be 1. ++ // ++ goto Exit; ++ } + +- default: ++ break; + +- OptLen = *(Option + 1); +- if (OptLen == 0) { +- // +- // A length of 0 is invalid. +- // +- goto Exit; +- } +- break; ++ default: ++ ++ OptLen = *(Option + 1); ++ if (OptLen == 0) { ++ // ++ // A length of 0 is invalid. ++ // ++ goto Exit; ++ } ++ ++ break; + } + + Length -= 8 * OptLen; +@@ -2535,10 +2549,9 @@ Ip6ProcessRedirect ( + IP6_COPY_ADDRESS (&RouteCache->NextHop, Target); + + if (!IsRouter) { +- RouteEntry = (IP6_ROUTE_ENTRY *) RouteCache->Tag; ++ RouteEntry = (IP6_ROUTE_ENTRY *)RouteCache->Tag; + RouteEntry->Flag = RouteEntry->Flag | IP6_DIRECT_ROUTE; + } +- + } else { + // + // Get the Route Entry. +@@ -2563,7 +2576,7 @@ Ip6ProcessRedirect ( + IcmpDest, + &Head->DestinationAddress, + Target, +- (UINTN) RouteEntry ++ (UINTN)RouteEntry + ); + if (RouteCache == NULL) { + Status = EFI_OUT_OF_RESOURCES; +@@ -2600,7 +2613,7 @@ Ip6ProcessRedirect ( + } + + NeighborCache->State = EfiNeighborStale; +- NeighborCache->Ticks = (UINT32) IP6_INFINIT_LIFETIME; ++ NeighborCache->Ticks = (UINT32)IP6_INFINIT_LIFETIME; + } else { + Result = CompareMem (LinkLayerOption->EtherAddr, &NeighborCache->LinkAddress, 6); + +@@ -2612,14 +2625,14 @@ Ip6ProcessRedirect ( + if ((NeighborCache->State == EfiNeighborInComplete) || (Result != 0)) { + CopyMem (&NeighborCache->LinkAddress, LinkLayerOption->EtherAddr, 6); + +- NeighborCache->Ticks = (UINT32) IP6_INFINIT_LIFETIME; ++ NeighborCache->Ticks = (UINT32)IP6_INFINIT_LIFETIME; + + if (NeighborCache->State == EfiNeighborInComplete) { + // + // Send queued packets if exist. + // + NeighborCache->State = EfiNeighborStale; +- NeighborCache->CallBack ((VOID *) NeighborCache); ++ NeighborCache->CallBack ((VOID *)NeighborCache); + } else { + NeighborCache->State = EfiNeighborStale; + } +@@ -2627,7 +2640,7 @@ Ip6ProcessRedirect ( + } + } + +- if (NeighborCache != NULL && IsRouter) { ++ if ((NeighborCache != NULL) && IsRouter) { + // + // The Target is a router, set IsRouter to TRUE. + // +@@ -2667,14 +2680,14 @@ Exit: + **/ + EFI_STATUS + Ip6AddNeighbor ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *TargetIp6Address, +- IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, +- IN UINT32 Timeout, +- IN BOOLEAN Override ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *TargetIp6Address, ++ IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, ++ IN UINT32 Timeout, ++ IN BOOLEAN Override + ) + { +- IP6_NEIGHBOR_ENTRY *Neighbor; ++ IP6_NEIGHBOR_ENTRY *Neighbor; + + Neighbor = Ip6FindNeighborEntry (IpSb, TargetIp6Address); + if (Neighbor != NULL) { +@@ -2702,7 +2715,7 @@ Ip6AddNeighbor ( + Neighbor->Ticks = IP6_GET_TICKS (Timeout / TICKS_PER_MS); + Neighbor->Dynamic = TRUE; + } else { +- Neighbor->Ticks = (UINT32) IP6_INFINIT_LIFETIME; ++ Neighbor->Ticks = (UINT32)IP6_INFINIT_LIFETIME; + } + + return EFI_SUCCESS; +@@ -2729,14 +2742,14 @@ Ip6AddNeighbor ( + **/ + EFI_STATUS + Ip6DelNeighbor ( +- IN IP6_SERVICE *IpSb, +- IN EFI_IPv6_ADDRESS *TargetIp6Address, +- IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, +- IN UINT32 Timeout, +- IN BOOLEAN Override ++ IN IP6_SERVICE *IpSb, ++ IN EFI_IPv6_ADDRESS *TargetIp6Address, ++ IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, ++ IN UINT32 Timeout, ++ IN BOOLEAN Override + ) + { +- IP6_NEIGHBOR_ENTRY *Neighbor; ++ IP6_NEIGHBOR_ENTRY *Neighbor; + + Neighbor = Ip6FindNeighborEntry (IpSb, TargetIp6Address); + if (Neighbor == NULL) { +@@ -2761,24 +2774,24 @@ Ip6DelNeighbor ( + VOID + EFIAPI + Ip6NdFasterTimerTicking ( +- IN EFI_EVENT Event, +- IN VOID *Context ++ IN EFI_EVENT Event, ++ IN VOID *Context + ) + { +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; +- LIST_ENTRY *Entry2; +- IP6_INTERFACE *IpIf; +- IP6_DELAY_JOIN_LIST *DelayNode; +- EFI_IPv6_ADDRESS Source; +- IP6_DAD_ENTRY *DupAddrDetect; +- EFI_STATUS Status; +- IP6_NEIGHBOR_ENTRY *NeighborCache; +- EFI_IPv6_ADDRESS Destination; +- IP6_SERVICE *IpSb; +- BOOLEAN Flag; +- +- IpSb = (IP6_SERVICE *) Context; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; ++ LIST_ENTRY *Entry2; ++ IP6_INTERFACE *IpIf; ++ IP6_DELAY_JOIN_LIST *DelayNode; ++ EFI_IPv6_ADDRESS Source; ++ IP6_DAD_ENTRY *DupAddrDetect; ++ EFI_STATUS Status; ++ IP6_NEIGHBOR_ENTRY *NeighborCache; ++ EFI_IPv6_ADDRESS Destination; ++ IP6_SERVICE *IpSb; ++ BOOLEAN Flag; ++ ++ IpSb = (IP6_SERVICE *)Context; + NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); + + ZeroMem (&Source, sizeof (EFI_IPv6_ADDRESS)); +@@ -2790,13 +2803,14 @@ Ip6NdFasterTimerTicking ( + // + if ((IpSb->Ip6ConfigInstance.Policy == Ip6ConfigPolicyAutomatic) && + !IpSb->RouterAdvertiseReceived && +- IpSb->SolicitTimer > 0 +- ) { ++ (IpSb->SolicitTimer > 0) ++ ) ++ { + if ((IpSb->Ticks == 0) || (--IpSb->Ticks == 0)) { + Status = Ip6SendRouterSolicit (IpSb, NULL, NULL, NULL, NULL); + if (!EFI_ERROR (Status)) { + IpSb->SolicitTimer--; +- IpSb->Ticks = (UINT32) IP6_GET_TICKS (IP6_RTR_SOLICITATION_INTERVAL); ++ IpSb->Ticks = (UINT32)IP6_GET_TICKS (IP6_RTR_SOLICITATION_INTERVAL); + } + } + } +@@ -2864,7 +2878,8 @@ Ip6NdFasterTimerTicking ( + // + Flag = FALSE; + if ((DupAddrDetect->Receive == 0) || +- (DupAddrDetect->Transmit <= DupAddrDetect->Receive)) { ++ (DupAddrDetect->Transmit <= DupAddrDetect->Receive)) ++ { + Flag = TRUE; + } + +@@ -2881,149 +2896,111 @@ Ip6NdFasterTimerTicking ( + NeighborCache = NET_LIST_USER_STRUCT (Entry, IP6_NEIGHBOR_ENTRY, Link); + + switch (NeighborCache->State) { +- case EfiNeighborInComplete: +- if (NeighborCache->Ticks > 0) { +- --NeighborCache->Ticks; +- } +- +- // +- // Retransmit Neighbor Solicitation messages approximately every +- // RetransTimer milliseconds while awaiting a response. +- // +- if (NeighborCache->Ticks == 0) { +- if (NeighborCache->Transmit > 1) { +- // +- // Send out multicast neighbor solicitation for address resolution. +- // After last neighbor solicitation message has been sent out, wait +- // for RetransTimer and then remove entry if no response is received. +- // +- Ip6CreateSNMulticastAddr (&NeighborCache->Neighbor, &Destination); +- Status = Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor, &Source); +- if (EFI_ERROR (Status)) { +- return; +- } +- +- Status = Ip6SendNeighborSolicit ( +- IpSb, +- &Source, +- &Destination, +- &NeighborCache->Neighbor, +- &IpSb->SnpMode.CurrentAddress +- ); +- if (EFI_ERROR (Status)) { +- return; +- } ++ case EfiNeighborInComplete: ++ if (NeighborCache->Ticks > 0) { ++ --NeighborCache->Ticks; + } + + // +- // Update the retransmit times. ++ // Retransmit Neighbor Solicitation messages approximately every ++ // RetransTimer milliseconds while awaiting a response. + // +- if (NeighborCache->Transmit > 0) { +- --NeighborCache->Transmit; +- NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); +- } +- } +- +- if (NeighborCache->Transmit == 0) { +- // +- // Timeout, send ICMP destination unreachable packet and then remove entry +- // +- Status = Ip6FreeNeighborEntry ( +- IpSb, +- NeighborCache, +- TRUE, +- TRUE, +- EFI_ICMP_ERROR, +- NULL, +- NULL +- ); +- if (EFI_ERROR (Status)) { +- return; +- } +- } ++ if (NeighborCache->Ticks == 0) { ++ if (NeighborCache->Transmit > 1) { ++ // ++ // Send out multicast neighbor solicitation for address resolution. ++ // After last neighbor solicitation message has been sent out, wait ++ // for RetransTimer and then remove entry if no response is received. ++ // ++ Ip6CreateSNMulticastAddr (&NeighborCache->Neighbor, &Destination); ++ Status = Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor, &Source); ++ if (EFI_ERROR (Status)) { ++ return; ++ } + +- break; ++ Status = Ip6SendNeighborSolicit ( ++ IpSb, ++ &Source, ++ &Destination, ++ &NeighborCache->Neighbor, ++ &IpSb->SnpMode.CurrentAddress ++ ); ++ if (EFI_ERROR (Status)) { ++ return; ++ } ++ } + +- case EfiNeighborReachable: +- // +- // This entry is inserted by EfiIp6Neighbors() as static entry +- // and will not timeout. +- // +- if (!NeighborCache->Dynamic && (NeighborCache->Ticks == IP6_INFINIT_LIFETIME)) { +- break; +- } ++ // ++ // Update the retransmit times. ++ // ++ if (NeighborCache->Transmit > 0) { ++ --NeighborCache->Transmit; ++ NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); ++ } ++ } + +- if ((NeighborCache->Ticks == 0) || (--NeighborCache->Ticks == 0)) { +- if (NeighborCache->Dynamic) { ++ if (NeighborCache->Transmit == 0) { + // +- // This entry is inserted by EfiIp6Neighbors() as dynamic entry +- // and will be deleted after timeout. ++ // Timeout, send ICMP destination unreachable packet and then remove entry + // + Status = Ip6FreeNeighborEntry ( + IpSb, + NeighborCache, +- FALSE, + TRUE, +- EFI_TIMEOUT, ++ TRUE, ++ EFI_ICMP_ERROR, + NULL, + NULL + ); + if (EFI_ERROR (Status)) { + return; + } +- } else { +- NeighborCache->State = EfiNeighborStale; +- NeighborCache->Ticks = (UINT32) IP6_INFINIT_LIFETIME; + } +- } + +- break; +- +- case EfiNeighborDelay: +- if ((NeighborCache->Ticks == 0) || (--NeighborCache->Ticks == 0)) { ++ break; + +- NeighborCache->State = EfiNeighborProbe; +- NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); +- NeighborCache->Transmit = IP6_MAX_UNICAST_SOLICIT + 1; ++ case EfiNeighborReachable: + // +- // Send out unicast neighbor solicitation for Neighbor Unreachability Detection ++ // This entry is inserted by EfiIp6Neighbors() as static entry ++ // and will not timeout. + // +- Status = Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor, &Source); +- if (EFI_ERROR (Status)) { +- return; ++ if (!NeighborCache->Dynamic && (NeighborCache->Ticks == IP6_INFINIT_LIFETIME)) { ++ break; + } + +- Status = Ip6SendNeighborSolicit ( +- IpSb, +- &Source, +- &NeighborCache->Neighbor, +- &NeighborCache->Neighbor, +- &IpSb->SnpMode.CurrentAddress +- ); +- if (EFI_ERROR (Status)) { +- return; ++ if ((NeighborCache->Ticks == 0) || (--NeighborCache->Ticks == 0)) { ++ if (NeighborCache->Dynamic) { ++ // ++ // This entry is inserted by EfiIp6Neighbors() as dynamic entry ++ // and will be deleted after timeout. ++ // ++ Status = Ip6FreeNeighborEntry ( ++ IpSb, ++ NeighborCache, ++ FALSE, ++ TRUE, ++ EFI_TIMEOUT, ++ NULL, ++ NULL ++ ); ++ if (EFI_ERROR (Status)) { ++ return; ++ } ++ } else { ++ NeighborCache->State = EfiNeighborStale; ++ NeighborCache->Ticks = (UINT32)IP6_INFINIT_LIFETIME; ++ } + } + +- NeighborCache->Transmit--; +- } +- +- break; +- +- case EfiNeighborProbe: +- if (NeighborCache->Ticks > 0) { +- --NeighborCache->Ticks; +- } ++ break; + +- // +- // Retransmit Neighbor Solicitation messages approximately every +- // RetransTimer milliseconds while awaiting a response. +- // +- if (NeighborCache->Ticks == 0) { +- if (NeighborCache->Transmit > 1) { ++ case EfiNeighborDelay: ++ if ((NeighborCache->Ticks == 0) || (--NeighborCache->Ticks == 0)) { ++ NeighborCache->State = EfiNeighborProbe; ++ NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); ++ NeighborCache->Transmit = IP6_MAX_UNICAST_SOLICIT + 1; + // +- // Send out unicast neighbor solicitation for Neighbor Unreachability +- // Detection. After last neighbor solicitation message has been sent out, +- // wait for RetransTimer and then remove entry if no response is received. ++ // Send out unicast neighbor solicitation for Neighbor Unreachability Detection + // + Status = Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor, &Source); + if (EFI_ERROR (Status)) { +@@ -3040,39 +3017,76 @@ Ip6NdFasterTimerTicking ( + if (EFI_ERROR (Status)) { + return; + } ++ ++ NeighborCache->Transmit--; + } + +- // +- // Update the retransmit times. +- // +- if (NeighborCache->Transmit > 0) { +- --NeighborCache->Transmit; +- NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); ++ break; ++ ++ case EfiNeighborProbe: ++ if (NeighborCache->Ticks > 0) { ++ --NeighborCache->Ticks; + } +- } + +- if (NeighborCache->Transmit == 0) { + // +- // Delete the neighbor entry. ++ // Retransmit Neighbor Solicitation messages approximately every ++ // RetransTimer milliseconds while awaiting a response. + // +- Status = Ip6FreeNeighborEntry ( +- IpSb, +- NeighborCache, +- FALSE, +- TRUE, +- EFI_TIMEOUT, +- NULL, +- NULL +- ); +- if (EFI_ERROR (Status)) { +- return; ++ if (NeighborCache->Ticks == 0) { ++ if (NeighborCache->Transmit > 1) { ++ // ++ // Send out unicast neighbor solicitation for Neighbor Unreachability ++ // Detection. After last neighbor solicitation message has been sent out, ++ // wait for RetransTimer and then remove entry if no response is received. ++ // ++ Status = Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor, &Source); ++ if (EFI_ERROR (Status)) { ++ return; ++ } ++ ++ Status = Ip6SendNeighborSolicit ( ++ IpSb, ++ &Source, ++ &NeighborCache->Neighbor, ++ &NeighborCache->Neighbor, ++ &IpSb->SnpMode.CurrentAddress ++ ); ++ if (EFI_ERROR (Status)) { ++ return; ++ } ++ } ++ ++ // ++ // Update the retransmit times. ++ // ++ if (NeighborCache->Transmit > 0) { ++ --NeighborCache->Transmit; ++ NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); ++ } + } +- } + +- break; ++ if (NeighborCache->Transmit == 0) { ++ // ++ // Delete the neighbor entry. ++ // ++ Status = Ip6FreeNeighborEntry ( ++ IpSb, ++ NeighborCache, ++ FALSE, ++ TRUE, ++ EFI_TIMEOUT, ++ NULL, ++ NULL ++ ); ++ if (EFI_ERROR (Status)) { ++ return; ++ } ++ } + +- default: +- break; ++ break; ++ ++ default: ++ break; + } + } + } +@@ -3087,15 +3101,15 @@ Ip6NdFasterTimerTicking ( + **/ + VOID + Ip6NdTimerTicking ( +- IN IP6_SERVICE *IpSb ++ IN IP6_SERVICE *IpSb + ) + { +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; +- IP6_DEFAULT_ROUTER *DefaultRouter; +- IP6_PREFIX_LIST_ENTRY *PrefixOption; +- UINT8 Index; +- IP6_ROUTE_CACHE_ENTRY *RouteCache; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; ++ IP6_DEFAULT_ROUTER *DefaultRouter; ++ IP6_PREFIX_LIST_ENTRY *PrefixOption; ++ UINT8 Index; ++ IP6_ROUTE_CACHE_ENTRY *RouteCache; + + // + // Decrease the lifetime of default router, if expires remove it from default router list. +@@ -3114,11 +3128,12 @@ Ip6NdTimerTicking ( + // + NET_LIST_FOR_EACH_SAFE (Entry, Next, &IpSb->AutonomousPrefix) { + PrefixOption = NET_LIST_USER_STRUCT (Entry, IP6_PREFIX_LIST_ENTRY, Link); +- if (PrefixOption->ValidLifetime != (UINT32) IP6_INFINIT_LIFETIME) { ++ if (PrefixOption->ValidLifetime != (UINT32)IP6_INFINIT_LIFETIME) { + if ((PrefixOption->ValidLifetime > 0) && (--PrefixOption->ValidLifetime > 0)) { +- if ((PrefixOption->PreferredLifetime != (UINT32) IP6_INFINIT_LIFETIME) && ++ if ((PrefixOption->PreferredLifetime != (UINT32)IP6_INFINIT_LIFETIME) && + (PrefixOption->PreferredLifetime > 0) +- ) { ++ ) ++ { + --PrefixOption->PreferredLifetime; + } + } else { +@@ -3129,7 +3144,7 @@ Ip6NdTimerTicking ( + + NET_LIST_FOR_EACH_SAFE (Entry, Next, &IpSb->OnlinkPrefix) { + PrefixOption = NET_LIST_USER_STRUCT (Entry, IP6_PREFIX_LIST_ENTRY, Link); +- if (PrefixOption->ValidLifetime != (UINT32) IP6_INFINIT_LIFETIME) { ++ if (PrefixOption->ValidLifetime != (UINT32)IP6_INFINIT_LIFETIME) { + if ((PrefixOption->ValidLifetime == 0) || (--PrefixOption->ValidLifetime == 0)) { + Ip6DestroyPrefixListEntry (IpSb, PrefixOption, TRUE, TRUE); + } +@@ -3156,4 +3171,3 @@ Ip6NdTimerTicking ( + } + } + } +- +diff --git a/NetworkPkg/Library/DxeNetLib/DxeNetLib.c b/NetworkPkg/Library/DxeNetLib/DxeNetLib.c +index 0f95ce4b71..0428abdda0 100644 +--- a/NetworkPkg/Library/DxeNetLib/DxeNetLib.c ++++ b/NetworkPkg/Library/DxeNetLib/DxeNetLib.c +@@ -32,8 +32,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + #include + #include + +-#define NIC_ITEM_CONFIG_SIZE (sizeof (NIC_IP4_CONFIG_INFO) + sizeof (EFI_IP4_ROUTE_TABLE) * MAX_IP4_CONFIG_IN_VARIABLE) +-#define DEFAULT_ZERO_START ((UINTN) ~0) ++#define NIC_ITEM_CONFIG_SIZE (sizeof (NIC_IP4_CONFIG_INFO) + sizeof (EFI_IP4_ROUTE_TABLE) * MAX_IP4_CONFIG_IN_VARIABLE) ++#define DEFAULT_ZERO_START ((UINTN) ~0) + + // + // All the supported IP4 masks in host byte order. +@@ -77,25 +77,27 @@ GLOBAL_REMOVE_IF_UNREFERENCED IP4_ADDR gIp4AllMasks[IP4_MASK_NUM] = { + 0xFFFFFFFF, + }; + +-GLOBAL_REMOVE_IF_UNREFERENCED EFI_IPv4_ADDRESS mZeroIp4Addr = {{0, 0, 0, 0}}; ++GLOBAL_REMOVE_IF_UNREFERENCED EFI_IPv4_ADDRESS mZeroIp4Addr = { ++ { 0, 0, 0, 0 } ++}; + + // + // Any error level digitally larger than mNetDebugLevelMax + // will be silently discarded. + // +-GLOBAL_REMOVE_IF_UNREFERENCED UINTN mNetDebugLevelMax = NETDEBUG_LEVEL_ERROR; +-GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogPacketSeq = 0xDEADBEEF; ++GLOBAL_REMOVE_IF_UNREFERENCED UINTN mNetDebugLevelMax = NETDEBUG_LEVEL_ERROR; ++GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogPacketSeq = 0xDEADBEEF; + + // + // You can change mSyslogDstMac mSyslogDstIp and mSyslogSrcIp + // here to direct the syslog packets to the syslog deamon. The + // default is broadcast to both the ethernet and IP. + // +-GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mSyslogDstMac[NET_ETHER_ADDR_LEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; +-GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogDstIp = 0xffffffff; +-GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogSrcIp = 0; ++GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mSyslogDstMac[NET_ETHER_ADDR_LEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; ++GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogDstIp = 0xffffffff; ++GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogSrcIp = 0; + +-GLOBAL_REMOVE_IF_UNREFERENCED CHAR8 *mMonthName[] = { ++GLOBAL_REMOVE_IF_UNREFERENCED CHAR8 *mMonthName[] = { + "Jan", + "Feb", + "Mar", +@@ -113,13 +115,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED CHAR8 *mMonthName[] = { + // + // VLAN device path node template + // +-GLOBAL_REMOVE_IF_UNREFERENCED VLAN_DEVICE_PATH mNetVlanDevicePathTemplate = { ++GLOBAL_REMOVE_IF_UNREFERENCED VLAN_DEVICE_PATH mNetVlanDevicePathTemplate = { + { + MESSAGING_DEVICE_PATH, + MSG_VLAN_DP, + { +- (UINT8) (sizeof (VLAN_DEVICE_PATH)), +- (UINT8) ((sizeof (VLAN_DEVICE_PATH)) >> 8) ++ (UINT8)(sizeof (VLAN_DEVICE_PATH)), ++ (UINT8)((sizeof (VLAN_DEVICE_PATH)) >> 8) + } + }, + 0 +@@ -138,11 +140,11 @@ SyslogLocateSnp ( + VOID + ) + { +- EFI_SIMPLE_NETWORK_PROTOCOL *Snp; +- EFI_STATUS Status; +- EFI_HANDLE *Handles; +- UINTN HandleCount; +- UINTN Index; ++ EFI_SIMPLE_NETWORK_PROTOCOL *Snp; ++ EFI_STATUS Status; ++ EFI_HANDLE *Handles; ++ UINTN HandleCount; ++ UINTN Index; + + // + // Locate the handles which has SNP installed. +@@ -169,13 +171,13 @@ SyslogLocateSnp ( + Status = gBS->HandleProtocol ( + Handles[Index], + &gEfiSimpleNetworkProtocolGuid, +- (VOID **) &Snp ++ (VOID **)&Snp + ); + + if ((Status == EFI_SUCCESS) && (Snp != NULL) && + (Snp->Mode->IfType == NET_IFTYPE_ETHERNET) && +- (Snp->Mode->MaxPacketSize >= NET_SYSLOG_PACKET_LEN)) { +- ++ (Snp->Mode->MaxPacketSize >= NET_SYSLOG_PACKET_LEN)) ++ { + break; + } + +@@ -204,15 +206,15 @@ SyslogLocateSnp ( + **/ + EFI_STATUS + SyslogSendPacket ( +- IN CHAR8 *Packet, +- IN UINT32 Length ++ IN CHAR8 *Packet, ++ IN UINT32 Length + ) + { +- EFI_SIMPLE_NETWORK_PROTOCOL *Snp; +- ETHER_HEAD *Ether; +- EFI_STATUS Status; +- EFI_EVENT TimeoutEvent; +- UINT8 *TxBuf; ++ EFI_SIMPLE_NETWORK_PROTOCOL *Snp; ++ ETHER_HEAD *Ether; ++ EFI_STATUS Status; ++ EFI_EVENT TimeoutEvent; ++ UINT8 *TxBuf; + + ASSERT (Packet != NULL); + +@@ -222,7 +224,7 @@ SyslogSendPacket ( + return EFI_DEVICE_ERROR; + } + +- Ether = (ETHER_HEAD *) Packet; ++ Ether = (ETHER_HEAD *)Packet; + CopyMem (Ether->SrcMac, Snp->Mode->CurrentAddress.Addr, NET_ETHER_ADDR_LEN); + + // +@@ -246,7 +248,7 @@ SyslogSendPacket ( + goto ON_EXIT; + } + +- for (;;) { ++ for ( ; ;) { + // + // Transmit the packet through SNP. + // +@@ -268,13 +270,12 @@ SyslogSendPacket ( + // + // Get the recycled transmit buffer status. + // +- Snp->GetStatus (Snp, NULL, (VOID **) &TxBuf); ++ Snp->GetStatus (Snp, NULL, (VOID **)&TxBuf); + + if (!EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) { + Status = EFI_TIMEOUT; + break; + } +- + } while (TxBuf == NULL); + + if ((Status == EFI_SUCCESS) || (Status == EFI_TIMEOUT)) { +@@ -312,71 +313,71 @@ ON_EXIT: + **/ + UINT32 + SyslogBuildPacket ( +- IN UINT32 Level, +- IN UINT8 *Module, +- IN UINT8 *File, +- IN UINT32 Line, +- IN UINT8 *Message, +- IN UINT32 BufLen, +- OUT CHAR8 *Buf ++ IN UINT32 Level, ++ IN UINT8 *Module, ++ IN UINT8 *File, ++ IN UINT32 Line, ++ IN UINT8 *Message, ++ IN UINT32 BufLen, ++ OUT CHAR8 *Buf + ) + { +- EFI_STATUS Status; +- ETHER_HEAD *Ether; +- IP4_HEAD *Ip4; +- EFI_UDP_HEADER *Udp4; +- EFI_TIME Time; +- UINT32 Pri; +- UINT32 Len; ++ EFI_STATUS Status; ++ ETHER_HEAD *Ether; ++ IP4_HEAD *Ip4; ++ EFI_UDP_HEADER *Udp4; ++ EFI_TIME Time; ++ UINT32 Pri; ++ UINT32 Len; + + // + // Fill in the Ethernet header. Leave alone the source MAC. + // SyslogSendPacket will fill in the address for us. + // +- Ether = (ETHER_HEAD *) Buf; ++ Ether = (ETHER_HEAD *)Buf; + CopyMem (Ether->DstMac, mSyslogDstMac, NET_ETHER_ADDR_LEN); + ZeroMem (Ether->SrcMac, NET_ETHER_ADDR_LEN); + + Ether->EtherType = HTONS (0x0800); // IPv4 protocol + +- Buf += sizeof (ETHER_HEAD); +- BufLen -= sizeof (ETHER_HEAD); ++ Buf += sizeof (ETHER_HEAD); ++ BufLen -= sizeof (ETHER_HEAD); + + // + // Fill in the IP header + // +- Ip4 = (IP4_HEAD *) Buf; +- Ip4->HeadLen = 5; +- Ip4->Ver = 4; +- Ip4->Tos = 0; +- Ip4->TotalLen = 0; +- Ip4->Id = (UINT16) mSyslogPacketSeq; +- Ip4->Fragment = 0; +- Ip4->Ttl = 16; +- Ip4->Protocol = 0x11; +- Ip4->Checksum = 0; +- Ip4->Src = mSyslogSrcIp; +- Ip4->Dst = mSyslogDstIp; ++ Ip4 = (IP4_HEAD *)Buf; ++ Ip4->HeadLen = 5; ++ Ip4->Ver = 4; ++ Ip4->Tos = 0; ++ Ip4->TotalLen = 0; ++ Ip4->Id = (UINT16)mSyslogPacketSeq; ++ Ip4->Fragment = 0; ++ Ip4->Ttl = 16; ++ Ip4->Protocol = 0x11; ++ Ip4->Checksum = 0; ++ Ip4->Src = mSyslogSrcIp; ++ Ip4->Dst = mSyslogDstIp; + +- Buf += sizeof (IP4_HEAD); +- BufLen -= sizeof (IP4_HEAD); ++ Buf += sizeof (IP4_HEAD); ++ BufLen -= sizeof (IP4_HEAD); + + // + // Fill in the UDP header, Udp checksum is optional. Leave it zero. + // +- Udp4 = (EFI_UDP_HEADER *) Buf; +- Udp4->SrcPort = HTONS (514); +- Udp4->DstPort = HTONS (514); +- Udp4->Length = 0; +- Udp4->Checksum = 0; ++ Udp4 = (EFI_UDP_HEADER *)Buf; ++ Udp4->SrcPort = HTONS (514); ++ Udp4->DstPort = HTONS (514); ++ Udp4->Length = 0; ++ Udp4->Checksum = 0; + +- Buf += sizeof (EFI_UDP_HEADER); +- BufLen -= sizeof (EFI_UDP_HEADER); ++ Buf += sizeof (EFI_UDP_HEADER); ++ BufLen -= sizeof (EFI_UDP_HEADER); + + // + // Build the syslog message body with Timestamp machine module Message + // +- Pri = ((NET_SYSLOG_FACILITY & 31) << 3) | (Level & 7); ++ Pri = ((NET_SYSLOG_FACILITY & 31) << 3) | (Level & 7); + Status = gRT->GetTime (&Time, NULL); + if (EFI_ERROR (Status)) { + return 0; +@@ -386,38 +387,38 @@ SyslogBuildPacket ( + // Use %a to format the ASCII strings, %s to format UNICODE strings + // + Len = 0; +- Len += (UINT32) AsciiSPrint ( +- Buf, +- BufLen, +- "<%d> %a %d %d:%d:%d ", +- Pri, +- mMonthName [Time.Month-1], +- Time.Day, +- Time.Hour, +- Time.Minute, +- Time.Second +- ); ++ Len += (UINT32)AsciiSPrint ( ++ Buf, ++ BufLen, ++ "<%d> %a %d %d:%d:%d ", ++ Pri, ++ mMonthName[Time.Month-1], ++ Time.Day, ++ Time.Hour, ++ Time.Minute, ++ Time.Second ++ ); + +- Len += (UINT32) AsciiSPrint ( +- Buf + Len, +- BufLen - Len, +- "Tiano %a: %a (Line: %d File: %a)", +- Module, +- Message, +- Line, +- File +- ); +- Len ++; ++ Len += (UINT32)AsciiSPrint ( ++ Buf + Len, ++ BufLen - Len, ++ "Tiano %a: %a (Line: %d File: %a)", ++ Module, ++ Message, ++ Line, ++ File ++ ); ++ Len++; + + // + // OK, patch the IP length/checksum and UDP length fields. + // +- Len += sizeof (EFI_UDP_HEADER); +- Udp4->Length = HTONS ((UINT16) Len); ++ Len += sizeof (EFI_UDP_HEADER); ++ Udp4->Length = HTONS ((UINT16)Len); + +- Len += sizeof (IP4_HEAD); +- Ip4->TotalLen = HTONS ((UINT16) Len); +- Ip4->Checksum = (UINT16) (~NetblockChecksum ((UINT8 *) Ip4, sizeof (IP4_HEAD))); ++ Len += sizeof (IP4_HEAD); ++ Ip4->TotalLen = HTONS ((UINT16)Len); ++ Ip4->Checksum = (UINT16)(~NetblockChecksum ((UINT8 *)Ip4, sizeof (IP4_HEAD))); + + return Len + sizeof (ETHER_HEAD); + } +@@ -451,16 +452,16 @@ SyslogBuildPacket ( + CHAR8 * + EFIAPI + NetDebugASPrint ( +- IN CHAR8 *Format, ++ IN CHAR8 *Format, + ... + ) + { +- VA_LIST Marker; +- CHAR8 *Buf; ++ VA_LIST Marker; ++ CHAR8 *Buf; + + ASSERT (Format != NULL); + +- Buf = (CHAR8 *) AllocatePool (NET_DEBUG_MSG_LEN); ++ Buf = (CHAR8 *)AllocatePool (NET_DEBUG_MSG_LEN); + + if (Buf == NULL) { + return NULL; +@@ -494,21 +495,21 @@ NetDebugASPrint ( + EFI_STATUS + EFIAPI + NetDebugOutput ( +- IN UINT32 Level, +- IN UINT8 *Module, +- IN UINT8 *File, +- IN UINT32 Line, +- IN UINT8 *Message ++ IN UINT32 Level, ++ IN UINT8 *Module, ++ IN UINT8 *File, ++ IN UINT32 Line, ++ IN UINT8 *Message + ) + { +- CHAR8 *Packet; +- UINT32 Len; +- EFI_STATUS Status; ++ CHAR8 *Packet; ++ UINT32 Len; ++ EFI_STATUS Status; + + // + // Check whether the message should be sent out + // +- if (Message == NULL || File == NULL || Module == NULL) { ++ if ((Message == NULL) || (File == NULL) || (Module == NULL)) { + return EFI_INVALID_PARAMETER; + } + +@@ -522,7 +523,7 @@ NetDebugOutput ( + // that the message plus the ethernet/ip/udp header is shorter + // than this + // +- Packet = (CHAR8 *) AllocatePool (NET_SYSLOG_PACKET_LEN); ++ Packet = (CHAR8 *)AllocatePool (NET_SYSLOG_PACKET_LEN); + + if (Packet == NULL) { + Status = EFI_OUT_OF_RESOURCES; +@@ -554,6 +555,7 @@ ON_EXIT: + FreePool (Message); + return Status; + } ++ + /** + Return the length of the mask. + +@@ -569,10 +571,10 @@ ON_EXIT: + INTN + EFIAPI + NetGetMaskLength ( +- IN IP4_ADDR NetMask ++ IN IP4_ADDR NetMask + ) + { +- INTN Index; ++ INTN Index; + + for (Index = 0; Index <= IP4_MASK_MAX; Index++) { + if (NetMask == gIp4AllMasks[Index]) { +@@ -583,8 +585,6 @@ NetGetMaskLength ( + return Index; + } + +- +- + /** + Return the class of the IP address, such as class A, B, C. + Addr is in host byte order. +@@ -614,32 +614,26 @@ NetGetMaskLength ( + INTN + EFIAPI + NetGetIpClass ( +- IN IP4_ADDR Addr ++ IN IP4_ADDR Addr + ) + { +- UINT8 ByteOne; ++ UINT8 ByteOne; + +- ByteOne = (UINT8) (Addr >> 24); ++ ByteOne = (UINT8)(Addr >> 24); + + if ((ByteOne & 0x80) == 0) { + return IP4_ADDR_CLASSA; +- + } else if ((ByteOne & 0xC0) == 0x80) { + return IP4_ADDR_CLASSB; +- + } else if ((ByteOne & 0xE0) == 0xC0) { + return IP4_ADDR_CLASSC; +- + } else if ((ByteOne & 0xF0) == 0xE0) { + return IP4_ADDR_CLASSD; +- + } else { + return IP4_ADDR_CLASSE; +- + } + } + +- + /** + Check whether the IP is a valid unicast address according to + the netmask. +@@ -660,15 +654,15 @@ NetGetIpClass ( + BOOLEAN + EFIAPI + NetIp4IsUnicast ( +- IN IP4_ADDR Ip, +- IN IP4_ADDR NetMask ++ IN IP4_ADDR Ip, ++ IN IP4_ADDR NetMask + ) + { +- INTN MaskLength; ++ INTN MaskLength; + + ASSERT (NetMask != 0); + +- if (Ip == 0 || IP4_IS_LOCAL_BROADCAST (Ip)) { ++ if ((Ip == 0) || IP4_IS_LOCAL_BROADCAST (Ip)) { + return FALSE; + } + +@@ -702,11 +696,11 @@ NetIp4IsUnicast ( + BOOLEAN + EFIAPI + NetIp6IsValidUnicast ( +- IN EFI_IPv6_ADDRESS *Ip6 ++ IN EFI_IPv6_ADDRESS *Ip6 + ) + { +- UINT8 Byte; +- UINT8 Index; ++ UINT8 Byte; ++ UINT8 Index; + + ASSERT (Ip6 != NULL); + +@@ -722,7 +716,7 @@ NetIp6IsValidUnicast ( + + Byte = Ip6->Addr[Index]; + +- if (Byte == 0x0 || Byte == 0x1) { ++ if ((Byte == 0x0) || (Byte == 0x1)) { + return FALSE; + } + +@@ -743,10 +737,10 @@ NetIp6IsValidUnicast ( + BOOLEAN + EFIAPI + NetIp6IsUnspecifiedAddr ( +- IN EFI_IPv6_ADDRESS *Ip6 ++ IN EFI_IPv6_ADDRESS *Ip6 + ) + { +- UINT8 Index; ++ UINT8 Index; + + ASSERT (Ip6 != NULL); + +@@ -773,10 +767,10 @@ NetIp6IsUnspecifiedAddr ( + BOOLEAN + EFIAPI + NetIp6IsLinkLocalAddr ( +- IN EFI_IPv6_ADDRESS *Ip6 ++ IN EFI_IPv6_ADDRESS *Ip6 + ) + { +- UINT8 Index; ++ UINT8 Index; + + ASSERT (Ip6 != NULL); + +@@ -814,14 +808,14 @@ NetIp6IsLinkLocalAddr ( + BOOLEAN + EFIAPI + NetIp6IsNetEqual ( +- EFI_IPv6_ADDRESS *Ip1, +- EFI_IPv6_ADDRESS *Ip2, +- UINT8 PrefixLength ++ EFI_IPv6_ADDRESS *Ip1, ++ EFI_IPv6_ADDRESS *Ip2, ++ UINT8 PrefixLength + ) + { +- UINT8 Byte; +- UINT8 Bit; +- UINT8 Mask; ++ UINT8 Byte; ++ UINT8 Bit; ++ UINT8 Mask; + + ASSERT ((Ip1 != NULL) && (Ip2 != NULL) && (PrefixLength < IP6_PREFIX_MAX)); + +@@ -829,20 +823,21 @@ NetIp6IsNetEqual ( + return TRUE; + } + +- Byte = (UINT8) (PrefixLength / 8); +- Bit = (UINT8) (PrefixLength % 8); ++ Byte = (UINT8)(PrefixLength / 8); ++ Bit = (UINT8)(PrefixLength % 8); + + if (CompareMem (Ip1, Ip2, Byte) != 0) { + return FALSE; + } + + if (Bit > 0) { +- Mask = (UINT8) (0xFF << (8 - Bit)); ++ Mask = (UINT8)(0xFF << (8 - Bit)); + + ASSERT (Byte < 16); + if (Byte >= 16) { + return FALSE; + } ++ + if ((Ip1->Addr[Byte] & Mask) != (Ip2->Addr[Byte] & Mask)) { + return FALSE; + } +@@ -851,7 +846,6 @@ NetIp6IsNetEqual ( + return TRUE; + } + +- + /** + Switches the endianess of an IPv6 address + +@@ -869,11 +863,11 @@ NetIp6IsNetEqual ( + EFI_IPv6_ADDRESS * + EFIAPI + Ip6Swap128 ( +- EFI_IPv6_ADDRESS *Ip6 ++ EFI_IPv6_ADDRESS *Ip6 + ) + { +- UINT64 High; +- UINT64 Low; ++ UINT64 High; ++ UINT64 Low; + + ASSERT (Ip6 != NULL); + +@@ -905,22 +899,21 @@ NetRandomInitSeed ( + VOID + ) + { +- EFI_TIME Time; +- UINT32 Seed; +- UINT64 MonotonicCount; ++ EFI_TIME Time; ++ UINT32 Seed; ++ UINT64 MonotonicCount; + + gRT->GetTime (&Time, NULL); +- Seed = (Time.Hour << 24 | Time.Day << 16 | Time.Minute << 8 | Time.Second); ++ Seed = (Time.Hour << 24 | Time.Day << 16 | Time.Minute << 8 | Time.Second); + Seed ^= Time.Nanosecond; + Seed ^= Time.Year << 7; + + gBS->GetNextMonotonicCount (&MonotonicCount); +- Seed += (UINT32) MonotonicCount; ++ Seed += (UINT32)MonotonicCount; + + return Seed; + } + +- + /** + Extract a UINT32 from a byte stream. + +@@ -937,10 +930,10 @@ NetRandomInitSeed ( + UINT32 + EFIAPI + NetGetUint32 ( +- IN UINT8 *Buf ++ IN UINT8 *Buf + ) + { +- UINT32 Value; ++ UINT32 Value; + + ASSERT (Buf != NULL); + +@@ -948,7 +941,6 @@ NetGetUint32 ( + return NTOHL (Value); + } + +- + /** + Put a UINT32 to the byte stream in network byte order. + +@@ -964,8 +956,8 @@ NetGetUint32 ( + VOID + EFIAPI + NetPutUint32 ( +- IN OUT UINT8 *Buf, +- IN UINT32 Data ++ IN OUT UINT8 *Buf, ++ IN UINT32 Data + ) + { + ASSERT (Buf != NULL); +@@ -974,7 +966,6 @@ NetPutUint32 ( + CopyMem (Buf, &Data, sizeof (UINT32)); + } + +- + /** + Remove the first node entry on the list, and return the removed node entry. + +@@ -996,10 +987,10 @@ NetPutUint32 ( + LIST_ENTRY * + EFIAPI + NetListRemoveHead ( +- IN OUT LIST_ENTRY *Head ++ IN OUT LIST_ENTRY *Head + ) + { +- LIST_ENTRY *First; ++ LIST_ENTRY *First; + + ASSERT (Head != NULL); + +@@ -1007,19 +998,18 @@ NetListRemoveHead ( + return NULL; + } + +- First = Head->ForwardLink; +- Head->ForwardLink = First->ForwardLink; +- First->ForwardLink->BackLink = Head; ++ First = Head->ForwardLink; ++ Head->ForwardLink = First->ForwardLink; ++ First->ForwardLink->BackLink = Head; + + DEBUG_CODE ( +- First->ForwardLink = (LIST_ENTRY *) NULL; +- First->BackLink = (LIST_ENTRY *) NULL; +- ); ++ First->ForwardLink = (LIST_ENTRY *)NULL; ++ First->BackLink = (LIST_ENTRY *)NULL; ++ ); + + return First; + } + +- + /** + Remove the last node entry on the list and and return the removed node entry. + +@@ -1041,10 +1031,10 @@ NetListRemoveHead ( + LIST_ENTRY * + EFIAPI + NetListRemoveTail ( +- IN OUT LIST_ENTRY *Head ++ IN OUT LIST_ENTRY *Head + ) + { +- LIST_ENTRY *Last; ++ LIST_ENTRY *Last; + + ASSERT (Head != NULL); + +@@ -1057,14 +1047,13 @@ NetListRemoveTail ( + Last->BackLink->ForwardLink = Head; + + DEBUG_CODE ( +- Last->ForwardLink = (LIST_ENTRY *) NULL; +- Last->BackLink = (LIST_ENTRY *) NULL; +- ); ++ Last->ForwardLink = (LIST_ENTRY *)NULL; ++ Last->BackLink = (LIST_ENTRY *)NULL; ++ ); + + return Last; + } + +- + /** + Insert a new node entry after a designated node entry of a doubly linked list. + +@@ -1080,19 +1069,18 @@ NetListRemoveTail ( + VOID + EFIAPI + NetListInsertAfter ( +- IN OUT LIST_ENTRY *PrevEntry, +- IN OUT LIST_ENTRY *NewEntry ++ IN OUT LIST_ENTRY *PrevEntry, ++ IN OUT LIST_ENTRY *NewEntry + ) + { + ASSERT (PrevEntry != NULL && NewEntry != NULL); + +- NewEntry->BackLink = PrevEntry; +- NewEntry->ForwardLink = PrevEntry->ForwardLink; +- PrevEntry->ForwardLink->BackLink = NewEntry; +- PrevEntry->ForwardLink = NewEntry; ++ NewEntry->BackLink = PrevEntry; ++ NewEntry->ForwardLink = PrevEntry->ForwardLink; ++ PrevEntry->ForwardLink->BackLink = NewEntry; ++ PrevEntry->ForwardLink = NewEntry; + } + +- + /** + Insert a new node entry before a designated node entry of a doubly linked list. + +@@ -1108,16 +1096,16 @@ NetListInsertAfter ( + VOID + EFIAPI + NetListInsertBefore ( +- IN OUT LIST_ENTRY *PostEntry, +- IN OUT LIST_ENTRY *NewEntry ++ IN OUT LIST_ENTRY *PostEntry, ++ IN OUT LIST_ENTRY *NewEntry + ) + { + ASSERT (PostEntry != NULL && NewEntry != NULL); + +- NewEntry->ForwardLink = PostEntry; +- NewEntry->BackLink = PostEntry->BackLink; +- PostEntry->BackLink->ForwardLink = NewEntry; +- PostEntry->BackLink = NewEntry; ++ NewEntry->ForwardLink = PostEntry; ++ NewEntry->BackLink = PostEntry->BackLink; ++ PostEntry->BackLink->ForwardLink = NewEntry; ++ PostEntry->BackLink = NewEntry; + } + + /** +@@ -1151,25 +1139,26 @@ NetDestroyLinkList ( + OUT UINTN *ListLength OPTIONAL + ) + { +- UINTN PreviousLength; +- LIST_ENTRY *Entry; +- LIST_ENTRY *Ptr; +- UINTN Length; +- EFI_STATUS Status; ++ UINTN PreviousLength; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Ptr; ++ UINTN Length; ++ EFI_STATUS Status; + +- if (List == NULL || CallBack == NULL) { ++ if ((List == NULL) || (CallBack == NULL)) { + return EFI_INVALID_PARAMETER; + } + + Length = 0; + do { + PreviousLength = Length; +- Entry = GetFirstNode (List); ++ Entry = GetFirstNode (List); + while (!IsNull (List, Entry)) { + Status = CallBack (Entry, Context); + if (EFI_ERROR (Status)) { + return Status; + } ++ + // + // Walk through the list to see whether the Entry has been removed or not. + // If the Entry still exists, just try to destroy the next one. +@@ -1180,18 +1169,22 @@ NetDestroyLinkList ( + break; + } + } ++ + if (Ptr == Entry) { + Entry = GetNextNode (List, Entry); + } else { + Entry = GetFirstNode (List); + } + } +- for (Length = 0, Ptr = List->ForwardLink; Ptr != List; Length++, Ptr = Ptr->ForwardLink); ++ ++ for (Length = 0, Ptr = List->ForwardLink; Ptr != List; Length++, Ptr = Ptr->ForwardLink) { ++ } + } while (Length != PreviousLength); + + if (ListLength != NULL) { + *ListLength = Length; + } ++ + return EFI_SUCCESS; + } + +@@ -1210,14 +1203,14 @@ NetDestroyLinkList ( + BOOLEAN + EFIAPI + NetIsInHandleBuffer ( +- IN EFI_HANDLE Handle, +- IN UINTN NumberOfChildren, +- IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ++ IN EFI_HANDLE Handle, ++ IN UINTN NumberOfChildren, ++ IN EFI_HANDLE *ChildHandleBuffer OPTIONAL + ) + { +- UINTN Index; ++ UINTN Index; + +- if (NumberOfChildren == 0 || ChildHandleBuffer == NULL) { ++ if ((NumberOfChildren == 0) || (ChildHandleBuffer == NULL)) { + return FALSE; + } + +@@ -1230,7 +1223,6 @@ NetIsInHandleBuffer ( + return FALSE; + } + +- + /** + Initialize the netmap. Netmap is a reposity to keep the pairs. + +@@ -1248,7 +1240,7 @@ NetIsInHandleBuffer ( + VOID + EFIAPI + NetMapInit ( +- IN OUT NET_MAP *Map ++ IN OUT NET_MAP *Map + ) + { + ASSERT (Map != NULL); +@@ -1258,7 +1250,6 @@ NetMapInit ( + Map->Count = 0; + } + +- + /** + To clean up the netmap, that is, release allocated memories. + +@@ -1274,12 +1265,12 @@ NetMapInit ( + VOID + EFIAPI + NetMapClean ( +- IN OUT NET_MAP *Map ++ IN OUT NET_MAP *Map + ) + { +- NET_MAP_ITEM *Item; +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; ++ NET_MAP_ITEM *Item; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; + + ASSERT (Map != NULL); + +@@ -1304,7 +1295,6 @@ NetMapClean ( + ASSERT (IsListEmpty (&Map->Recycled)); + } + +- + /** + Test whether the netmap is empty and return true if it is. + +@@ -1320,14 +1310,13 @@ NetMapClean ( + BOOLEAN + EFIAPI + NetMapIsEmpty ( +- IN NET_MAP *Map ++ IN NET_MAP *Map + ) + { + ASSERT (Map != NULL); +- return (BOOLEAN) (Map->Count == 0); ++ return (BOOLEAN)(Map->Count == 0); + } + +- + /** + Return the number of the pairs in the netmap. + +@@ -1341,14 +1330,13 @@ NetMapIsEmpty ( + UINTN + EFIAPI + NetMapGetCount ( +- IN NET_MAP *Map ++ IN NET_MAP *Map + ) + { + ASSERT (Map != NULL); + return Map->Count; + } + +- + /** + Return one allocated item. + +@@ -1367,12 +1355,12 @@ NetMapGetCount ( + **/ + NET_MAP_ITEM * + NetMapAllocItem ( +- IN OUT NET_MAP *Map ++ IN OUT NET_MAP *Map + ) + { +- NET_MAP_ITEM *Item; +- LIST_ENTRY *Head; +- UINTN Index; ++ NET_MAP_ITEM *Item; ++ LIST_ENTRY *Head; ++ UINTN Index; + + ASSERT (Map != NULL); + +@@ -1400,7 +1388,6 @@ NetMapAllocItem ( + return Item; + } + +- + /** + Allocate an item to save the pair to the head of the netmap. + +@@ -1422,12 +1409,12 @@ NetMapAllocItem ( + EFI_STATUS + EFIAPI + NetMapInsertHead ( +- IN OUT NET_MAP *Map, +- IN VOID *Key, +- IN VOID *Value OPTIONAL ++ IN OUT NET_MAP *Map, ++ IN VOID *Key, ++ IN VOID *Value OPTIONAL + ) + { +- NET_MAP_ITEM *Item; ++ NET_MAP_ITEM *Item; + + ASSERT (Map != NULL && Key != NULL); + +@@ -1445,7 +1432,6 @@ NetMapInsertHead ( + return EFI_SUCCESS; + } + +- + /** + Allocate an item to save the pair to the tail of the netmap. + +@@ -1467,12 +1453,12 @@ NetMapInsertHead ( + EFI_STATUS + EFIAPI + NetMapInsertTail ( +- IN OUT NET_MAP *Map, +- IN VOID *Key, +- IN VOID *Value OPTIONAL ++ IN OUT NET_MAP *Map, ++ IN VOID *Key, ++ IN VOID *Value OPTIONAL + ) + { +- NET_MAP_ITEM *Item; ++ NET_MAP_ITEM *Item; + + ASSERT (Map != NULL && Key != NULL); + +@@ -1491,7 +1477,6 @@ NetMapInsertTail ( + return EFI_SUCCESS; + } + +- + /** + Check whether the item is in the Map and return TRUE if it is. + +@@ -1506,11 +1491,11 @@ NetMapInsertTail ( + **/ + BOOLEAN + NetItemInMap ( +- IN NET_MAP *Map, +- IN NET_MAP_ITEM *Item ++ IN NET_MAP *Map, ++ IN NET_MAP_ITEM *Item + ) + { +- LIST_ENTRY *ListEntry; ++ LIST_ENTRY *ListEntry; + + ASSERT (Map != NULL && Item != NULL); + +@@ -1523,7 +1508,6 @@ NetItemInMap ( + return FALSE; + } + +- + /** + Find the key in the netmap and returns the point to the item contains the Key. + +@@ -1542,12 +1526,12 @@ NetItemInMap ( + NET_MAP_ITEM * + EFIAPI + NetMapFindKey ( +- IN NET_MAP *Map, +- IN VOID *Key ++ IN NET_MAP *Map, ++ IN VOID *Key + ) + { +- LIST_ENTRY *Entry; +- NET_MAP_ITEM *Item; ++ LIST_ENTRY *Entry; ++ NET_MAP_ITEM *Item; + + ASSERT (Map != NULL && Key != NULL); + +@@ -1562,7 +1546,6 @@ NetMapFindKey ( + return NULL; + } + +- + /** + Remove the node entry of the item from the netmap and return the key of the removed item. + +@@ -1585,9 +1568,9 @@ NetMapFindKey ( + VOID * + EFIAPI + NetMapRemoveItem ( +- IN OUT NET_MAP *Map, +- IN OUT NET_MAP_ITEM *Item, +- OUT VOID **Value OPTIONAL ++ IN OUT NET_MAP *Map, ++ IN OUT NET_MAP_ITEM *Item, ++ OUT VOID **Value OPTIONAL + ) + { + ASSERT ((Map != NULL) && (Item != NULL)); +@@ -1604,7 +1587,6 @@ NetMapRemoveItem ( + return Item->Key; + } + +- + /** + Remove the first node entry on the netmap and return the key of the removed item. + +@@ -1625,8 +1607,8 @@ NetMapRemoveItem ( + VOID * + EFIAPI + NetMapRemoveHead ( +- IN OUT NET_MAP *Map, +- OUT VOID **Value OPTIONAL ++ IN OUT NET_MAP *Map, ++ OUT VOID **Value OPTIONAL + ) + { + NET_MAP_ITEM *Item; +@@ -1649,7 +1631,6 @@ NetMapRemoveHead ( + return Item->Key; + } + +- + /** + Remove the last node entry on the netmap and return the key of the removed item. + +@@ -1670,11 +1651,11 @@ NetMapRemoveHead ( + VOID * + EFIAPI + NetMapRemoveTail ( +- IN OUT NET_MAP *Map, +- OUT VOID **Value OPTIONAL ++ IN OUT NET_MAP *Map, ++ OUT VOID **Value OPTIONAL + ) + { +- NET_MAP_ITEM *Item; ++ NET_MAP_ITEM *Item; + + // + // Often, it indicates a programming error to remove +@@ -1694,7 +1675,6 @@ NetMapRemoveTail ( + return Item->Key; + } + +- + /** + Iterate through the netmap and call CallBack for each item. + +@@ -1717,17 +1697,16 @@ NetMapRemoveTail ( + EFI_STATUS + EFIAPI + NetMapIterate ( +- IN NET_MAP *Map, +- IN NET_MAP_CALLBACK CallBack, +- IN VOID *Arg OPTIONAL ++ IN NET_MAP *Map, ++ IN NET_MAP_CALLBACK CallBack, ++ IN VOID *Arg OPTIONAL + ) + { +- +- LIST_ENTRY *Entry; +- LIST_ENTRY *Next; +- LIST_ENTRY *Head; +- NET_MAP_ITEM *Item; +- EFI_STATUS Result; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Next; ++ LIST_ENTRY *Head; ++ NET_MAP_ITEM *Item; ++ EFI_STATUS Result; + + ASSERT ((Map != NULL) && (CallBack != NULL)); + +@@ -1749,7 +1728,6 @@ NetMapIterate ( + return EFI_SUCCESS; + } + +- + /** + This is the default unload handle for all the network drivers. + +@@ -1765,17 +1743,17 @@ NetMapIterate ( + EFI_STATUS + EFIAPI + NetLibDefaultUnload ( +- IN EFI_HANDLE ImageHandle ++ IN EFI_HANDLE ImageHandle + ) + { +- EFI_STATUS Status; +- EFI_HANDLE *DeviceHandleBuffer; +- UINTN DeviceHandleCount; +- UINTN Index; +- UINTN Index2; +- EFI_DRIVER_BINDING_PROTOCOL *DriverBinding; +- EFI_COMPONENT_NAME_PROTOCOL *ComponentName; +- EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2; ++ EFI_STATUS Status; ++ EFI_HANDLE *DeviceHandleBuffer; ++ UINTN DeviceHandleCount; ++ UINTN Index; ++ UINTN Index2; ++ EFI_DRIVER_BINDING_PROTOCOL *DriverBinding; ++ EFI_COMPONENT_NAME_PROTOCOL *ComponentName; ++ EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2; + + // + // Get the list of all the handles in the handle database. +@@ -1798,7 +1776,7 @@ NetLibDefaultUnload ( + Status = gBS->HandleProtocol ( + DeviceHandleBuffer[Index], + &gEfiDriverBindingProtocolGuid, +- (VOID **) &DriverBinding ++ (VOID **)&DriverBinding + ); + if (EFI_ERROR (Status)) { + continue; +@@ -1824,15 +1802,15 @@ NetLibDefaultUnload ( + // Uninstall all the protocols installed in the driver entry point + // + gBS->UninstallProtocolInterface ( +- DriverBinding->DriverBindingHandle, +- &gEfiDriverBindingProtocolGuid, +- DriverBinding +- ); ++ DriverBinding->DriverBindingHandle, ++ &gEfiDriverBindingProtocolGuid, ++ DriverBinding ++ ); + + Status = gBS->HandleProtocol ( + DeviceHandleBuffer[Index], + &gEfiComponentNameProtocolGuid, +- (VOID **) &ComponentName ++ (VOID **)&ComponentName + ); + if (!EFI_ERROR (Status)) { + gBS->UninstallProtocolInterface ( +@@ -1845,7 +1823,7 @@ NetLibDefaultUnload ( + Status = gBS->HandleProtocol ( + DeviceHandleBuffer[Index], + &gEfiComponentName2ProtocolGuid, +- (VOID **) &ComponentName2 ++ (VOID **)&ComponentName2 + ); + if (!EFI_ERROR (Status)) { + gBS->UninstallProtocolInterface ( +@@ -1866,8 +1844,6 @@ NetLibDefaultUnload ( + return EFI_SUCCESS; + } + +- +- + /** + Create a child of the service that is identified by ServiceBindingGuid. + +@@ -1888,16 +1864,15 @@ NetLibDefaultUnload ( + EFI_STATUS + EFIAPI + NetLibCreateServiceChild ( +- IN EFI_HANDLE Controller, +- IN EFI_HANDLE Image, +- IN EFI_GUID *ServiceBindingGuid, +- IN OUT EFI_HANDLE *ChildHandle ++ IN EFI_HANDLE Controller, ++ IN EFI_HANDLE Image, ++ IN EFI_GUID *ServiceBindingGuid, ++ IN OUT EFI_HANDLE *ChildHandle + ) + { + EFI_STATUS Status; + EFI_SERVICE_BINDING_PROTOCOL *Service; + +- + ASSERT ((ServiceBindingGuid != NULL) && (ChildHandle != NULL)); + + // +@@ -1906,7 +1881,7 @@ NetLibCreateServiceChild ( + Status = gBS->OpenProtocol ( + Controller, + ServiceBindingGuid, +- (VOID **) &Service, ++ (VOID **)&Service, + Image, + Controller, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -1923,7 +1898,6 @@ NetLibCreateServiceChild ( + return Status; + } + +- + /** + Destroy a child of the service that is identified by ServiceBindingGuid. + +@@ -1943,10 +1917,10 @@ NetLibCreateServiceChild ( + EFI_STATUS + EFIAPI + NetLibDestroyServiceChild ( +- IN EFI_HANDLE Controller, +- IN EFI_HANDLE Image, +- IN EFI_GUID *ServiceBindingGuid, +- IN EFI_HANDLE ChildHandle ++ IN EFI_HANDLE Controller, ++ IN EFI_HANDLE Image, ++ IN EFI_GUID *ServiceBindingGuid, ++ IN EFI_HANDLE ChildHandle + ) + { + EFI_STATUS Status; +@@ -1960,7 +1934,7 @@ NetLibDestroyServiceChild ( + Status = gBS->OpenProtocol ( + Controller, + ServiceBindingGuid, +- (VOID **) &Service, ++ (VOID **)&Service, + Image, + Controller, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -1996,8 +1970,8 @@ NetLibDestroyServiceChild ( + EFI_HANDLE + EFIAPI + NetLibGetSnpHandle ( +- IN EFI_HANDLE ServiceHandle, +- OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL ++ IN EFI_HANDLE ServiceHandle, ++ OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL + ) + { + EFI_STATUS Status; +@@ -2009,11 +1983,12 @@ NetLibGetSnpHandle ( + // Try to open SNP from ServiceHandle + // + SnpInstance = NULL; +- Status = gBS->HandleProtocol (ServiceHandle, &gEfiSimpleNetworkProtocolGuid, (VOID **) &SnpInstance); ++ Status = gBS->HandleProtocol (ServiceHandle, &gEfiSimpleNetworkProtocolGuid, (VOID **)&SnpInstance); + if (!EFI_ERROR (Status)) { + if (Snp != NULL) { + *Snp = SnpInstance; + } ++ + return ServiceHandle; + } + +@@ -2026,7 +2001,7 @@ NetLibGetSnpHandle ( + } + + SnpHandle = NULL; +- Status = gBS->LocateDevicePath (&gEfiSimpleNetworkProtocolGuid, &DevicePath, &SnpHandle); ++ Status = gBS->LocateDevicePath (&gEfiSimpleNetworkProtocolGuid, &DevicePath, &SnpHandle); + if (EFI_ERROR (Status)) { + // + // Failed to find SNP handle +@@ -2034,11 +2009,12 @@ NetLibGetSnpHandle ( + return NULL; + } + +- Status = gBS->HandleProtocol (SnpHandle, &gEfiSimpleNetworkProtocolGuid, (VOID **) &SnpInstance); ++ Status = gBS->HandleProtocol (SnpHandle, &gEfiSimpleNetworkProtocolGuid, (VOID **)&SnpInstance); + if (!EFI_ERROR (Status)) { + if (Snp != NULL) { + *Snp = SnpInstance; + } ++ + return SnpHandle; + } + +@@ -2061,7 +2037,7 @@ NetLibGetSnpHandle ( + UINT16 + EFIAPI + NetLibGetVlanId ( +- IN EFI_HANDLE ServiceHandle ++ IN EFI_HANDLE ServiceHandle + ) + { + EFI_DEVICE_PATH_PROTOCOL *DevicePath; +@@ -2074,9 +2050,10 @@ NetLibGetVlanId ( + + Node = DevicePath; + while (!IsDevicePathEnd (Node)) { +- if (Node->Type == MESSAGING_DEVICE_PATH && Node->SubType == MSG_VLAN_DP) { +- return ((VLAN_DEVICE_PATH *) Node)->VlanId; ++ if ((Node->Type == MESSAGING_DEVICE_PATH) && (Node->SubType == MSG_VLAN_DP)) { ++ return ((VLAN_DEVICE_PATH *)Node)->VlanId; + } ++ + Node = NextDevicePathNode (Node); + } + +@@ -2100,8 +2077,8 @@ NetLibGetVlanId ( + EFI_HANDLE + EFIAPI + NetLibGetVlanHandle ( +- IN EFI_HANDLE ControllerHandle, +- IN UINT16 VlanId ++ IN EFI_HANDLE ControllerHandle, ++ IN UINT16 VlanId + ) + { + EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; +@@ -2120,10 +2097,10 @@ NetLibGetVlanHandle ( + // + CopyMem (&VlanNode, &mNetVlanDevicePathTemplate, sizeof (VLAN_DEVICE_PATH)); + VlanNode.VlanId = VlanId; +- VlanDevicePath = AppendDevicePathNode ( +- ParentDevicePath, +- (EFI_DEVICE_PATH_PROTOCOL *) &VlanNode +- ); ++ VlanDevicePath = AppendDevicePathNode ( ++ ParentDevicePath, ++ (EFI_DEVICE_PATH_PROTOCOL *)&VlanNode ++ ); + if (VlanDevicePath == NULL) { + return NULL; + } +@@ -2131,7 +2108,7 @@ NetLibGetVlanHandle ( + // + // Find VLAN device handle + // +- Handle = NULL; ++ Handle = NULL; + DevicePath = VlanDevicePath; + gBS->LocateDevicePath ( + &gEfiDevicePathProtocolGuid, +@@ -2171,19 +2148,19 @@ NetLibGetVlanHandle ( + EFI_STATUS + EFIAPI + NetLibGetMacAddress ( +- IN EFI_HANDLE ServiceHandle, +- OUT EFI_MAC_ADDRESS *MacAddress, +- OUT UINTN *AddressSize ++ IN EFI_HANDLE ServiceHandle, ++ OUT EFI_MAC_ADDRESS *MacAddress, ++ OUT UINTN *AddressSize + ) + { +- EFI_STATUS Status; +- EFI_SIMPLE_NETWORK_PROTOCOL *Snp; +- EFI_SIMPLE_NETWORK_MODE *SnpMode; +- EFI_SIMPLE_NETWORK_MODE SnpModeData; +- EFI_MANAGED_NETWORK_PROTOCOL *Mnp; +- EFI_SERVICE_BINDING_PROTOCOL *MnpSb; +- EFI_HANDLE SnpHandle; +- EFI_HANDLE MnpChildHandle; ++ EFI_STATUS Status; ++ EFI_SIMPLE_NETWORK_PROTOCOL *Snp; ++ EFI_SIMPLE_NETWORK_MODE *SnpMode; ++ EFI_SIMPLE_NETWORK_MODE SnpModeData; ++ EFI_MANAGED_NETWORK_PROTOCOL *Mnp; ++ EFI_SERVICE_BINDING_PROTOCOL *MnpSb; ++ EFI_HANDLE SnpHandle; ++ EFI_HANDLE MnpChildHandle; + + ASSERT (MacAddress != NULL); + ASSERT (AddressSize != NULL); +@@ -2191,7 +2168,7 @@ NetLibGetMacAddress ( + // + // Try to get SNP handle + // +- Snp = NULL; ++ Snp = NULL; + SnpHandle = NetLibGetSnpHandle (ServiceHandle, &Snp); + if (SnpHandle != NULL) { + // +@@ -2203,11 +2180,11 @@ NetLibGetMacAddress ( + // Failed to get SNP handle, try to get MAC address from MNP + // + MnpChildHandle = NULL; +- Status = gBS->HandleProtocol ( +- ServiceHandle, +- &gEfiManagedNetworkServiceBindingProtocolGuid, +- (VOID **) &MnpSb +- ); ++ Status = gBS->HandleProtocol ( ++ ServiceHandle, ++ &gEfiManagedNetworkServiceBindingProtocolGuid, ++ (VOID **)&MnpSb ++ ); + if (EFI_ERROR (Status)) { + return Status; + } +@@ -2226,7 +2203,7 @@ NetLibGetMacAddress ( + Status = gBS->HandleProtocol ( + MnpChildHandle, + &gEfiManagedNetworkProtocolGuid, +- (VOID **) &Mnp ++ (VOID **)&Mnp + ); + if (EFI_ERROR (Status)) { + MnpSb->DestroyChild (MnpSb, MnpChildHandle); +@@ -2241,6 +2218,7 @@ NetLibGetMacAddress ( + MnpSb->DestroyChild (MnpSb, MnpChildHandle); + return Status; + } ++ + SnpMode = &SnpModeData; + + // +@@ -2287,14 +2265,14 @@ NetLibGetMacString ( + OUT CHAR16 **MacString + ) + { +- EFI_STATUS Status; +- EFI_MAC_ADDRESS MacAddress; +- UINT8 *HwAddress; +- UINTN HwAddressSize; +- UINT16 VlanId; +- CHAR16 *String; +- UINTN Index; +- UINTN BufferSize; ++ EFI_STATUS Status; ++ EFI_MAC_ADDRESS MacAddress; ++ UINT8 *HwAddress; ++ UINTN HwAddressSize; ++ UINT16 VlanId; ++ CHAR16 *String; ++ UINTN Index; ++ UINTN BufferSize; + + ASSERT (MacString != NULL); + +@@ -2312,10 +2290,11 @@ NetLibGetMacString ( + // Plus one unicode character for the null-terminator. + // + BufferSize = (2 * HwAddressSize + 5 + 1) * sizeof (CHAR16); +- String = AllocateZeroPool (BufferSize); ++ String = AllocateZeroPool (BufferSize); + if (String == NULL) { + return EFI_OUT_OF_RESOURCES; + } ++ + *MacString = String; + + // +@@ -2390,8 +2369,8 @@ NetLibGetMacString ( + EFI_STATUS + EFIAPI + NetLibDetectMedia ( +- IN EFI_HANDLE ServiceHandle, +- OUT BOOLEAN *MediaPresent ++ IN EFI_HANDLE ServiceHandle, ++ OUT BOOLEAN *MediaPresent + ) + { + EFI_STATUS Status; +@@ -2410,7 +2389,7 @@ NetLibDetectMedia ( + // + // Get SNP handle + // +- Snp = NULL; ++ Snp = NULL; + SnpHandle = NetLibGetSnpHandle (ServiceHandle, &Snp); + if (SnpHandle == NULL) { + return EFI_INVALID_PARAMETER; +@@ -2485,6 +2464,7 @@ NetLibDetectMedia ( + if (!EFI_ERROR (Status)) { + Status = Snp->Stop (Snp); + } ++ + if (EFI_ERROR (Status)) { + goto Exit; + } +@@ -2496,6 +2476,7 @@ NetLibDetectMedia ( + if (!EFI_ERROR (Status)) { + Status = Snp->Initialize (Snp, 0, 0); + } ++ + if (EFI_ERROR (Status)) { + goto Exit; + } +@@ -2599,9 +2580,9 @@ Exit: + EFI_STATUS + EFIAPI + NetLibDetectMediaWaitTimeout ( +- IN EFI_HANDLE ServiceHandle, +- IN UINT64 Timeout, +- OUT EFI_STATUS *MediaState ++ IN EFI_HANDLE ServiceHandle, ++ IN UINT64 Timeout, ++ OUT EFI_STATUS *MediaState + ) + { + EFI_STATUS Status; +@@ -2618,13 +2599,14 @@ NetLibDetectMediaWaitTimeout ( + if (MediaState == NULL) { + return EFI_INVALID_PARAMETER; + } ++ + *MediaState = EFI_SUCCESS; + MediaInfo = NULL; + + // + // Get SNP handle + // +- Snp = NULL; ++ Snp = NULL; + SnpHandle = NetLibGetSnpHandle (ServiceHandle, &Snp); + if (SnpHandle == NULL) { + return EFI_INVALID_PARAMETER; +@@ -2633,12 +2615,11 @@ NetLibDetectMediaWaitTimeout ( + Status = gBS->HandleProtocol ( + SnpHandle, + &gEfiAdapterInformationProtocolGuid, +- (VOID *) &Aip ++ (VOID *)&Aip + ); + if (EFI_ERROR (Status)) { +- + MediaPresent = TRUE; +- Status = NetLibDetectMedia (ServiceHandle, &MediaPresent); ++ Status = NetLibDetectMedia (ServiceHandle, &MediaPresent); + if (!EFI_ERROR (Status)) { + if (MediaPresent) { + *MediaState = EFI_SUCCESS; +@@ -2656,30 +2637,26 @@ NetLibDetectMediaWaitTimeout ( + Status = Aip->GetInformation ( + Aip, + &gEfiAdapterInfoMediaStateGuid, +- (VOID **) &MediaInfo, ++ (VOID **)&MediaInfo, + &DataSize + ); + if (!EFI_ERROR (Status)) { +- + *MediaState = MediaInfo->MediaState; + FreePool (MediaInfo); +- if (*MediaState != EFI_NOT_READY || Timeout < MEDIA_STATE_DETECT_TIME_INTERVAL) { +- ++ if ((*MediaState != EFI_NOT_READY) || (Timeout < MEDIA_STATE_DETECT_TIME_INTERVAL)) { + return EFI_SUCCESS; + } + } else { +- + if (MediaInfo != NULL) { + FreePool (MediaInfo); + } + + if (Status == EFI_UNSUPPORTED) { +- + // + // If gEfiAdapterInfoMediaStateGuid is not supported, call NetLibDetectMedia to get media state! + // + MediaPresent = TRUE; +- Status = NetLibDetectMedia (ServiceHandle, &MediaPresent); ++ Status = NetLibDetectMedia (ServiceHandle, &MediaPresent); + if (!EFI_ERROR (Status)) { + if (MediaPresent) { + *MediaState = EFI_SUCCESS; +@@ -2687,6 +2664,7 @@ NetLibDetectMediaWaitTimeout ( + *MediaState = EFI_NO_MEDIA; + } + } ++ + return Status; + } + +@@ -2699,7 +2677,7 @@ NetLibDetectMediaWaitTimeout ( + + Timer = NULL; + TimeRemained = Timeout; +- Status = gBS->CreateEvent (EVT_TIMER, TPL_CALLBACK, NULL, NULL, &Timer); ++ Status = gBS->CreateEvent (EVT_TIMER, TPL_CALLBACK, NULL, NULL, &Timer); + if (EFI_ERROR (Status)) { + return EFI_DEVICE_ERROR; + } +@@ -2711,39 +2689,37 @@ NetLibDetectMediaWaitTimeout ( + MEDIA_STATE_DETECT_TIME_INTERVAL + ); + if (EFI_ERROR (Status)) { +- gBS->CloseEvent(Timer); ++ gBS->CloseEvent (Timer); + return EFI_DEVICE_ERROR; + } + + do { + TimerStatus = gBS->CheckEvent (Timer); + if (!EFI_ERROR (TimerStatus)) { +- + TimeRemained -= MEDIA_STATE_DETECT_TIME_INTERVAL; +- Status = Aip->GetInformation ( +- Aip, +- &gEfiAdapterInfoMediaStateGuid, +- (VOID **) &MediaInfo, +- &DataSize +- ); ++ Status = Aip->GetInformation ( ++ Aip, ++ &gEfiAdapterInfoMediaStateGuid, ++ (VOID **)&MediaInfo, ++ &DataSize ++ ); + if (!EFI_ERROR (Status)) { +- + *MediaState = MediaInfo->MediaState; + FreePool (MediaInfo); + } else { +- + if (MediaInfo != NULL) { + FreePool (MediaInfo); + } +- gBS->CloseEvent(Timer); ++ ++ gBS->CloseEvent (Timer); + return Status; + } + } + } while (TimerStatus == EFI_NOT_READY); + } while (*MediaState == EFI_NOT_READY && TimeRemained >= MEDIA_STATE_DETECT_TIME_INTERVAL); + +- gBS->CloseEvent(Timer); +- if (*MediaState == EFI_NOT_READY && TimeRemained < MEDIA_STATE_DETECT_TIME_INTERVAL) { ++ gBS->CloseEvent (Timer); ++ if ((*MediaState == EFI_NOT_READY) && (TimeRemained < MEDIA_STATE_DETECT_TIME_INTERVAL)) { + return EFI_TIMEOUT; + } else { + return EFI_SUCCESS; +@@ -2770,22 +2746,22 @@ NetLibDefaultAddressIsStatic ( + IN EFI_HANDLE Controller + ) + { +- EFI_STATUS Status; +- EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; +- UINTN DataSize; +- EFI_IP4_CONFIG2_POLICY Policy; +- BOOLEAN IsStatic; ++ EFI_STATUS Status; ++ EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; ++ UINTN DataSize; ++ EFI_IP4_CONFIG2_POLICY Policy; ++ BOOLEAN IsStatic; + + Ip4Config2 = NULL; + + DataSize = sizeof (EFI_IP4_CONFIG2_POLICY); + +- IsStatic = TRUE; ++ IsStatic = TRUE; + + // + // Get Ip4Config2 policy. + // +- Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **) &Ip4Config2); ++ Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **)&Ip4Config2); + if (EFI_ERROR (Status)) { + goto ON_EXIT; + } +@@ -2795,7 +2771,7 @@ NetLibDefaultAddressIsStatic ( + goto ON_EXIT; + } + +- IsStatic = (BOOLEAN) (Policy == Ip4Config2PolicyStatic); ++ IsStatic = (BOOLEAN)(Policy == Ip4Config2PolicyStatic); + + ON_EXIT: + +@@ -2907,7 +2883,7 @@ NetLibCreateIPv6DPathNode ( + Node->LocalPort = LocalPort; + Node->RemotePort = RemotePort; + +- Node->Protocol = Protocol; ++ Node->Protocol = Protocol; + + // + // Set default value to IPAddressOrigin, PrefixLength. +@@ -2940,15 +2916,15 @@ NetLibCreateIPv6DPathNode ( + EFI_HANDLE + EFIAPI + NetLibGetNicHandle ( +- IN EFI_HANDLE Controller, +- IN EFI_GUID *ProtocolGuid ++ IN EFI_HANDLE Controller, ++ IN EFI_GUID *ProtocolGuid + ) + { +- EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *OpenBuffer; +- EFI_HANDLE Handle; +- EFI_STATUS Status; +- UINTN OpenCount; +- UINTN Index; ++ EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *OpenBuffer; ++ EFI_HANDLE Handle; ++ EFI_STATUS Status; ++ UINTN OpenCount; ++ UINTN Index; + + ASSERT (ProtocolGuid != NULL); + +@@ -2989,12 +2965,12 @@ NetLibGetNicHandle ( + EFI_STATUS + EFIAPI + NetLibAsciiStrToIp4 ( +- IN CONST CHAR8 *String, +- OUT EFI_IPv4_ADDRESS *Ip4Address ++ IN CONST CHAR8 *String, ++ OUT EFI_IPv4_ADDRESS *Ip4Address + ) + { +- RETURN_STATUS Status; +- CHAR8 *EndPointer; ++ RETURN_STATUS Status; ++ CHAR8 *EndPointer; + + Status = AsciiStrToIpv4Address (String, &EndPointer, Ip4Address, NULL); + if (RETURN_ERROR (Status) || (*EndPointer != '\0')) { +@@ -3004,7 +2980,6 @@ NetLibAsciiStrToIp4 ( + } + } + +- + /** + Convert one Null-terminated ASCII string to EFI_IPv6_ADDRESS. The format of the + string is defined in RFC 4291 - Text Representation of Addresses. +@@ -3019,12 +2994,12 @@ NetLibAsciiStrToIp4 ( + EFI_STATUS + EFIAPI + NetLibAsciiStrToIp6 ( +- IN CONST CHAR8 *String, +- OUT EFI_IPv6_ADDRESS *Ip6Address ++ IN CONST CHAR8 *String, ++ OUT EFI_IPv6_ADDRESS *Ip6Address + ) + { +- RETURN_STATUS Status; +- CHAR8 *EndPointer; ++ RETURN_STATUS Status; ++ CHAR8 *EndPointer; + + Status = AsciiStrToIpv6Address (String, &EndPointer, Ip6Address, NULL); + if (RETURN_ERROR (Status) || (*EndPointer != '\0')) { +@@ -3034,7 +3009,6 @@ NetLibAsciiStrToIp6 ( + } + } + +- + /** + Convert one Null-terminated Unicode string (decimal dotted) to EFI_IPv4_ADDRESS. + +@@ -3048,12 +3022,12 @@ NetLibAsciiStrToIp6 ( + EFI_STATUS + EFIAPI + NetLibStrToIp4 ( +- IN CONST CHAR16 *String, +- OUT EFI_IPv4_ADDRESS *Ip4Address ++ IN CONST CHAR16 *String, ++ OUT EFI_IPv4_ADDRESS *Ip4Address + ) + { +- RETURN_STATUS Status; +- CHAR16 *EndPointer; ++ RETURN_STATUS Status; ++ CHAR16 *EndPointer; + + Status = StrToIpv4Address (String, &EndPointer, Ip4Address, NULL); + if (RETURN_ERROR (Status) || (*EndPointer != L'\0')) { +@@ -3063,7 +3037,6 @@ NetLibStrToIp4 ( + } + } + +- + /** + Convert one Null-terminated Unicode string to EFI_IPv6_ADDRESS. The format of + the string is defined in RFC 4291 - Text Representation of Addresses. +@@ -3078,12 +3051,12 @@ NetLibStrToIp4 ( + EFI_STATUS + EFIAPI + NetLibStrToIp6 ( +- IN CONST CHAR16 *String, +- OUT EFI_IPv6_ADDRESS *Ip6Address ++ IN CONST CHAR16 *String, ++ OUT EFI_IPv6_ADDRESS *Ip6Address + ) + { +- RETURN_STATUS Status; +- CHAR16 *EndPointer; ++ RETURN_STATUS Status; ++ CHAR16 *EndPointer; + + Status = StrToIpv6Address (String, &EndPointer, Ip6Address, NULL); + if (RETURN_ERROR (Status) || (*EndPointer != L'\0')) { +@@ -3109,13 +3082,13 @@ NetLibStrToIp6 ( + EFI_STATUS + EFIAPI + NetLibStrToIp6andPrefix ( +- IN CONST CHAR16 *String, +- OUT EFI_IPv6_ADDRESS *Ip6Address, +- OUT UINT8 *PrefixLength ++ IN CONST CHAR16 *String, ++ OUT EFI_IPv6_ADDRESS *Ip6Address, ++ OUT UINT8 *PrefixLength + ) + { +- RETURN_STATUS Status; +- CHAR16 *EndPointer; ++ RETURN_STATUS Status; ++ CHAR16 *EndPointer; + + Status = StrToIpv6Address (String, &EndPointer, Ip6Address, PrefixLength); + if (RETURN_ERROR (Status) || (*EndPointer != L'\0')) { +@@ -3142,21 +3115,21 @@ NetLibStrToIp6andPrefix ( + EFI_STATUS + EFIAPI + NetLibIp6ToStr ( +- IN EFI_IPv6_ADDRESS *Ip6Address, +- OUT CHAR16 *String, +- IN UINTN StringSize ++ IN EFI_IPv6_ADDRESS *Ip6Address, ++ OUT CHAR16 *String, ++ IN UINTN StringSize + ) + { +- UINT16 Ip6Addr[8]; +- UINTN Index; +- UINTN LongestZerosStart; +- UINTN LongestZerosLength; +- UINTN CurrentZerosStart; +- UINTN CurrentZerosLength; +- CHAR16 Buffer[sizeof"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"]; +- CHAR16 *Ptr; +- +- if (Ip6Address == NULL || String == NULL || StringSize == 0) { ++ UINT16 Ip6Addr[8]; ++ UINTN Index; ++ UINTN LongestZerosStart; ++ UINTN LongestZerosLength; ++ UINTN CurrentZerosStart; ++ UINTN CurrentZerosLength; ++ CHAR16 Buffer[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"]; ++ CHAR16 *Ptr; ++ ++ if ((Ip6Address == NULL) || (String == NULL) || (StringSize == 0)) { + return EFI_INVALID_PARAMETER; + } + +@@ -3178,25 +3151,26 @@ NetLibIp6ToStr ( + for (Index = 0; Index < 8; Index++) { + if (Ip6Addr[Index] == 0) { + if (CurrentZerosStart == DEFAULT_ZERO_START) { +- CurrentZerosStart = Index; ++ CurrentZerosStart = Index; + CurrentZerosLength = 1; + } else { + CurrentZerosLength++; + } + } else { + if (CurrentZerosStart != DEFAULT_ZERO_START) { +- if (CurrentZerosLength > 2 && (LongestZerosStart == (DEFAULT_ZERO_START) || CurrentZerosLength > LongestZerosLength)) { ++ if ((CurrentZerosLength > 2) && ((LongestZerosStart == (DEFAULT_ZERO_START)) || (CurrentZerosLength > LongestZerosLength))) { + LongestZerosStart = CurrentZerosStart; + LongestZerosLength = CurrentZerosLength; + } ++ + CurrentZerosStart = DEFAULT_ZERO_START; + CurrentZerosLength = 0; + } + } + } + +- if (CurrentZerosStart != DEFAULT_ZERO_START && CurrentZerosLength > 2) { +- if (LongestZerosStart == DEFAULT_ZERO_START || LongestZerosLength < CurrentZerosLength) { ++ if ((CurrentZerosStart != DEFAULT_ZERO_START) && (CurrentZerosLength > 2)) { ++ if ((LongestZerosStart == DEFAULT_ZERO_START) || (LongestZerosLength < CurrentZerosLength)) { + LongestZerosStart = CurrentZerosStart; + LongestZerosLength = CurrentZerosLength; + } +@@ -3204,21 +3178,25 @@ NetLibIp6ToStr ( + + Ptr = Buffer; + for (Index = 0; Index < 8; Index++) { +- if (LongestZerosStart != DEFAULT_ZERO_START && Index >= LongestZerosStart && Index < LongestZerosStart + LongestZerosLength) { ++ if ((LongestZerosStart != DEFAULT_ZERO_START) && (Index >= LongestZerosStart) && (Index < LongestZerosStart + LongestZerosLength)) { + if (Index == LongestZerosStart) { + *Ptr++ = L':'; + } ++ + continue; + } ++ + if (Index != 0) { + *Ptr++ = L':'; + } +- Ptr += UnicodeSPrint(Ptr, 10, L"%x", Ip6Addr[Index]); ++ ++ Ptr += UnicodeSPrint (Ptr, 10, L"%x", Ip6Addr[Index]); + } + +- if (LongestZerosStart != DEFAULT_ZERO_START && LongestZerosStart + LongestZerosLength == 8) { ++ if ((LongestZerosStart != DEFAULT_ZERO_START) && (LongestZerosStart + LongestZerosLength == 8)) { + *Ptr++ = L':'; + } ++ + *Ptr = L'\0'; + + if ((UINTN)Ptr - (UINTN)Buffer > StringSize) { +@@ -3244,7 +3222,7 @@ NetLibIp6ToStr ( + EFI_STATUS + EFIAPI + NetLibGetSystemGuid ( +- OUT EFI_GUID *SystemGuid ++ OUT EFI_GUID *SystemGuid + ) + { + EFI_STATUS Status; +@@ -3257,17 +3235,18 @@ NetLibGetSystemGuid ( + ASSERT (SystemGuid != NULL); + + SmbiosTable = NULL; +- Status = EfiGetSystemConfigurationTable (&gEfiSmbios3TableGuid, (VOID **) &Smbios30Table); +- if (!(EFI_ERROR (Status) || Smbios30Table == NULL)) { +- Smbios.Hdr = (SMBIOS_STRUCTURE *) (UINTN) Smbios30Table->TableAddress; +- SmbiosEnd.Raw = (UINT8 *) (UINTN) (Smbios30Table->TableAddress + Smbios30Table->TableMaximumSize); ++ Status = EfiGetSystemConfigurationTable (&gEfiSmbios3TableGuid, (VOID **)&Smbios30Table); ++ if (!(EFI_ERROR (Status) || (Smbios30Table == NULL))) { ++ Smbios.Hdr = (SMBIOS_STRUCTURE *)(UINTN)Smbios30Table->TableAddress; ++ SmbiosEnd.Raw = (UINT8 *)(UINTN)(Smbios30Table->TableAddress + Smbios30Table->TableMaximumSize); + } else { +- Status = EfiGetSystemConfigurationTable (&gEfiSmbiosTableGuid, (VOID **) &SmbiosTable); +- if (EFI_ERROR (Status) || SmbiosTable == NULL) { ++ Status = EfiGetSystemConfigurationTable (&gEfiSmbiosTableGuid, (VOID **)&SmbiosTable); ++ if (EFI_ERROR (Status) || (SmbiosTable == NULL)) { + return EFI_NOT_FOUND; + } +- Smbios.Hdr = (SMBIOS_STRUCTURE *) (UINTN) SmbiosTable->TableAddress; +- SmbiosEnd.Raw = (UINT8 *) ((UINTN) SmbiosTable->TableAddress + SmbiosTable->TableLength); ++ ++ Smbios.Hdr = (SMBIOS_STRUCTURE *)(UINTN)SmbiosTable->TableAddress; ++ SmbiosEnd.Raw = (UINT8 *)((UINTN)SmbiosTable->TableAddress + SmbiosTable->TableLength); + } + + do { +@@ -3296,7 +3275,7 @@ NetLibGetSystemGuid ( + // + // Step 1: Skip over formatted section. + // +- String = (CHAR8 *) (Smbios.Raw + Smbios.Hdr->Length); ++ String = (CHAR8 *)(Smbios.Raw + Smbios.Hdr->Length); + + // + // Step 2: Skip over unformatted string section. +@@ -3309,7 +3288,7 @@ NetLibGetSystemGuid ( + for ( ; *String != 0; String++) { + } + +- if (*(UINT8*)++String == 0) { ++ if (*(UINT8 *)++String == 0) { + // + // Pointer to the next SMBIOS structure. + // +@@ -3318,6 +3297,7 @@ NetLibGetSystemGuid ( + } + } while (TRUE); + } while (Smbios.Raw < SmbiosEnd.Raw); ++ + return EFI_NOT_FOUND; + } + +@@ -3341,15 +3321,15 @@ NetLibGetSystemGuid ( + CHAR8 * + EFIAPI + NetLibCreateDnsQName ( +- IN CHAR16 *DomainName ++ IN CHAR16 *DomainName + ) + { +- CHAR8 *QueryName; +- UINTN QueryNameSize; +- CHAR8 *Header; +- CHAR8 *Tail; +- UINTN Len; +- UINTN Index; ++ CHAR8 *QueryName; ++ UINTN QueryNameSize; ++ CHAR8 *Header; ++ CHAR8 *Tail; ++ UINTN Len; ++ UINTN Index; + + ASSERT (DomainName != NULL); + +@@ -3373,22 +3353,23 @@ NetLibCreateDnsQName ( + } + + Header = QueryName; +- Tail = Header + 1; +- Len = 0; ++ Tail = Header + 1; ++ Len = 0; + for (Index = 0; DomainName[Index] != 0; Index++) { +- *Tail = (CHAR8) DomainName[Index]; ++ *Tail = (CHAR8)DomainName[Index]; + if (*Tail == '.') { +- *Header = (CHAR8) Len; +- Header = Tail; +- Tail ++; ++ *Header = (CHAR8)Len; ++ Header = Tail; ++ Tail++; + Len = 0; + } else { + Tail++; + Len++; + } + } +- *Header = (CHAR8) Len; +- *Tail = 0; ++ ++ *Header = (CHAR8)Len; ++ *Tail = 0; + + return QueryName; + } +diff --git a/NetworkPkg/TcpDxe/TcpDriver.c b/NetworkPkg/TcpDxe/TcpDriver.c +index c4dcb5e193..8a75b4b55b 100644 +--- a/NetworkPkg/TcpDxe/TcpDriver.c ++++ b/NetworkPkg/TcpDxe/TcpDriver.c +@@ -9,15 +9,15 @@ + + #include "TcpMain.h" + +-UINT16 mTcp4RandomPort; +-UINT16 mTcp6RandomPort; ++UINT16 mTcp4RandomPort; ++UINT16 mTcp6RandomPort; + +-TCP_HEARTBEAT_TIMER mTcpTimer = { ++TCP_HEARTBEAT_TIMER mTcpTimer = { + NULL, + 0 + }; + +-EFI_TCP4_PROTOCOL gTcp4ProtocolTemplate = { ++EFI_TCP4_PROTOCOL gTcp4ProtocolTemplate = { + Tcp4GetModeData, + Tcp4Configure, + Tcp4Routes, +@@ -30,7 +30,7 @@ EFI_TCP4_PROTOCOL gTcp4ProtocolTemplate = { + Tcp4Poll + }; + +-EFI_TCP6_PROTOCOL gTcp6ProtocolTemplate = { ++EFI_TCP6_PROTOCOL gTcp6ProtocolTemplate = { + Tcp6GetModeData, + Tcp6Configure, + Tcp6Connect, +@@ -42,7 +42,7 @@ EFI_TCP6_PROTOCOL gTcp6ProtocolTemplate = { + Tcp6Poll + }; + +-SOCK_INIT_DATA mTcpDefaultSockData = { ++SOCK_INIT_DATA mTcpDefaultSockData = { + SockStream, + SO_CLOSED, + NULL, +@@ -60,7 +60,7 @@ SOCK_INIT_DATA mTcpDefaultSockData = { + NULL, + }; + +-EFI_DRIVER_BINDING_PROTOCOL gTcp4DriverBinding = { ++EFI_DRIVER_BINDING_PROTOCOL gTcp4DriverBinding = { + Tcp4DriverBindingSupported, + Tcp4DriverBindingStart, + Tcp4DriverBindingStop, +@@ -69,7 +69,7 @@ EFI_DRIVER_BINDING_PROTOCOL gTcp4DriverBinding = { + NULL + }; + +-EFI_DRIVER_BINDING_PROTOCOL gTcp6DriverBinding = { ++EFI_DRIVER_BINDING_PROTOCOL gTcp6DriverBinding = { + Tcp6DriverBindingSupported, + Tcp6DriverBindingStart, + Tcp6DriverBindingStop, +@@ -83,7 +83,6 @@ EFI_SERVICE_BINDING_PROTOCOL gTcpServiceBinding = { + TcpServiceBindingDestroyChild + }; + +- + /** + Create and start the heartbeat timer for the TCP driver. + +@@ -101,7 +100,6 @@ TcpCreateTimer ( + Status = EFI_SUCCESS; + + if (mTcpTimer.RefCnt == 0) { +- + Status = gBS->CreateEvent ( + EVT_TIMER | EVT_NOTIFY_SIGNAL, + TPL_NOTIFY, +@@ -110,17 +108,15 @@ TcpCreateTimer ( + &mTcpTimer.TimerEvent + ); + if (!EFI_ERROR (Status)) { +- + Status = gBS->SetTimer ( + mTcpTimer.TimerEvent, + TimerPeriodic, +- (UINT64) (TICKS_PER_SECOND / TCP_TICK_HZ) ++ (UINT64)(TICKS_PER_SECOND / TCP_TICK_HZ) + ); + } + } + + if (!EFI_ERROR (Status)) { +- + mTcpTimer.RefCnt++; + } + +@@ -209,7 +205,7 @@ TcpDriverEntryPoint ( + // + Seed = NetRandomInitSeed (); + mTcpGlobalIss = NET_RANDOM (Seed) % mTcpGlobalIss; +- mTcp4RandomPort = (UINT16) (TCP_PORT_KNOWN + (NET_RANDOM (Seed) % TCP_PORT_KNOWN)); ++ mTcp4RandomPort = (UINT16)(TCP_PORT_KNOWN + (NET_RANDOM (Seed) % TCP_PORT_KNOWN)); + mTcp6RandomPort = mTcp4RandomPort; + + return EFI_SUCCESS; +@@ -233,11 +229,11 @@ TcpCreateService ( + IN UINT8 IpVersion + ) + { +- EFI_STATUS Status; +- EFI_GUID *IpServiceBindingGuid; +- EFI_GUID *TcpServiceBindingGuid; +- TCP_SERVICE_DATA *TcpServiceData; +- IP_IO_OPEN_DATA OpenData; ++ EFI_STATUS Status; ++ EFI_GUID *IpServiceBindingGuid; ++ EFI_GUID *TcpServiceBindingGuid; ++ TCP_SERVICE_DATA *TcpServiceData; ++ IP_IO_OPEN_DATA OpenData; + + if (IpVersion == IP_VERSION_4) { + IpServiceBindingGuid = &gEfiIp4ServiceBindingProtocolGuid; +@@ -279,10 +275,10 @@ TcpCreateService ( + return EFI_OUT_OF_RESOURCES; + } + +- TcpServiceData->Signature = TCP_DRIVER_SIGNATURE; +- TcpServiceData->ControllerHandle = Controller; +- TcpServiceData->DriverBindingHandle = Image; +- TcpServiceData->IpVersion = IpVersion; ++ TcpServiceData->Signature = TCP_DRIVER_SIGNATURE; ++ TcpServiceData->ControllerHandle = Controller; ++ TcpServiceData->DriverBindingHandle = Image; ++ TcpServiceData->IpVersion = IpVersion; + CopyMem ( + &TcpServiceData->ServiceBinding, + &gTcpServiceBinding, +@@ -295,7 +291,6 @@ TcpCreateService ( + goto ON_ERROR; + } + +- + InitializeListHead (&TcpServiceData->SocketList); + ZeroMem (&OpenData, sizeof (IP_IO_OPEN_DATA)); + +@@ -315,8 +310,8 @@ TcpCreateService ( + OpenData.IpConfigData.Ip6CfgData.DefaultProtocol = EFI_IP_PROTO_TCP; + } + +- OpenData.PktRcvdNotify = TcpRxCallback; +- Status = IpIoOpen (TcpServiceData->IpIo, &OpenData); ++ OpenData.PktRcvdNotify = TcpRxCallback; ++ Status = IpIoOpen (TcpServiceData->IpIo, &OpenData); + if (EFI_ERROR (Status)) { + goto ON_ERROR; + } +@@ -365,8 +360,8 @@ ON_ERROR: + EFI_STATUS + EFIAPI + TcpDestroyChildEntryInHandleBuffer ( +- IN LIST_ENTRY *Entry, +- IN VOID *Context ++ IN LIST_ENTRY *Entry, ++ IN VOID *Context + ) + { + SOCKET *Sock; +@@ -374,14 +369,14 @@ TcpDestroyChildEntryInHandleBuffer ( + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; + +- if (Entry == NULL || Context == NULL) { ++ if ((Entry == NULL) || (Context == NULL)) { + return EFI_INVALID_PARAMETER; + } + +- Sock = NET_LIST_USER_STRUCT_S (Entry, SOCKET, Link, SOCK_SIGNATURE); +- ServiceBinding = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; +- NumberOfChildren = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; +- ChildHandleBuffer = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; ++ Sock = NET_LIST_USER_STRUCT_S (Entry, SOCKET, Link, SOCK_SIGNATURE); ++ ServiceBinding = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; ++ NumberOfChildren = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; ++ ChildHandleBuffer = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; + + if (!NetIsInHandleBuffer (Sock->SockHandle, NumberOfChildren, ChildHandleBuffer)) { + return EFI_SUCCESS; +@@ -415,13 +410,13 @@ TcpDestroyService ( + IN UINT8 IpVersion + ) + { +- EFI_HANDLE NicHandle; +- EFI_GUID *IpProtocolGuid; +- EFI_GUID *ServiceBindingGuid; +- EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; +- TCP_SERVICE_DATA *TcpServiceData; +- EFI_STATUS Status; +- LIST_ENTRY *List; ++ EFI_HANDLE NicHandle; ++ EFI_GUID *IpProtocolGuid; ++ EFI_GUID *ServiceBindingGuid; ++ EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; ++ TCP_SERVICE_DATA *TcpServiceData; ++ EFI_STATUS Status; ++ LIST_ENTRY *List; + TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; + + ASSERT ((IpVersion == IP_VERSION_4) || (IpVersion == IP_VERSION_6)); +@@ -442,7 +437,7 @@ TcpDestroyService ( + Status = gBS->OpenProtocol ( + NicHandle, + ServiceBindingGuid, +- (VOID **) &ServiceBinding, ++ (VOID **)&ServiceBinding, + ImageHandle, + Controller, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -454,16 +449,16 @@ TcpDestroyService ( + TcpServiceData = TCP_SERVICE_FROM_THIS (ServiceBinding); + + if (NumberOfChildren != 0) { +- List = &TcpServiceData->SocketList; +- Context.ServiceBinding = ServiceBinding; +- Context.NumberOfChildren = NumberOfChildren; ++ List = &TcpServiceData->SocketList; ++ Context.ServiceBinding = ServiceBinding; ++ Context.NumberOfChildren = NumberOfChildren; + Context.ChildHandleBuffer = ChildHandleBuffer; +- Status = NetDestroyLinkList ( +- List, +- TcpDestroyChildEntryInHandleBuffer, +- &Context, +- NULL +- ); ++ Status = NetDestroyLinkList ( ++ List, ++ TcpDestroyChildEntryInHandleBuffer, ++ &Context, ++ NULL ++ ); + } else if (IsListEmpty (&TcpServiceData->SocketList)) { + // + // Uninstall TCP servicebinding protocol +@@ -758,7 +753,7 @@ TcpCreateSocketCallback ( + IpProtocolGuid = &gEfiIp6ProtocolGuid; + } + +- TcpServiceData = ((TCP_PROTO_DATA *) This->ProtoReserved)->TcpService; ++ TcpServiceData = ((TCP_PROTO_DATA *)This->ProtoReserved)->TcpService; + + // + // Open the default IP protocol of IP_IO BY_DRIVER. +@@ -781,7 +776,7 @@ TcpCreateSocketCallback ( + Status = gBS->OpenProtocol ( + TcpServiceData->ControllerHandle, + &gEfiDevicePathProtocolGuid, +- (VOID **) &This->ParentDevicePath, ++ (VOID **)&This->ParentDevicePath, + TcpServiceData->DriverBindingHandle, + This->SockHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -825,7 +820,7 @@ TcpDestroySocketCallback ( + IpProtocolGuid = &gEfiIp6ProtocolGuid; + } + +- TcpServiceData = ((TCP_PROTO_DATA *) This->ProtoReserved)->TcpService; ++ TcpServiceData = ((TCP_PROTO_DATA *)This->ProtoReserved)->TcpService; + + // + // Remove this node from the list. +@@ -876,7 +871,7 @@ TcpServiceBindingCreateChild ( + EFI_STATUS Status; + EFI_TPL OldTpl; + +- if (NULL == This || NULL == ChildHandle) { ++ if ((NULL == This) || (NULL == ChildHandle)) { + return EFI_INVALID_PARAMETER; + } + +@@ -914,7 +909,7 @@ TcpServiceBindingCreateChild ( + *ChildHandle = Sock->SockHandle; + } + +- mTcpDefaultSockData.ProtoData = NULL; ++ mTcpDefaultSockData.ProtoData = NULL; + + gBS->RestoreTPL (OldTpl); + return Status; +@@ -949,7 +944,7 @@ TcpServiceBindingDestroyChild ( + VOID *Tcp; + SOCKET *Sock; + +- if (NULL == This || NULL == ChildHandle) { ++ if ((NULL == This) || (NULL == ChildHandle)) { + return EFI_INVALID_PARAMETER; + } + +diff --git a/NetworkPkg/TcpDxe/TcpMain.h b/NetworkPkg/TcpDxe/TcpMain.h +index 35f12a16a8..0709298bbf 100644 +--- a/NetworkPkg/TcpDxe/TcpMain.h ++++ b/NetworkPkg/TcpDxe/TcpMain.h +@@ -3,7 +3,6 @@ + It is the common head file for all Tcp*.c in TCP driver. + + Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
+- + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -29,19 +28,19 @@ extern EFI_COMPONENT_NAME_PROTOCOL gTcpComponentName; + extern EFI_COMPONENT_NAME2_PROTOCOL gTcpComponentName2; + extern EFI_UNICODE_STRING_TABLE *gTcpControllerNameTable; + +-extern LIST_ENTRY mTcpRunQue; +-extern LIST_ENTRY mTcpListenQue; +-extern TCP_SEQNO mTcpGlobalIss; +-extern UINT32 mTcpTick; ++extern LIST_ENTRY mTcpRunQue; ++extern LIST_ENTRY mTcpListenQue; ++extern TCP_SEQNO mTcpGlobalIss; ++extern UINT32 mTcpTick; + + /// + /// 30 seconds. + /// +-#define TCP6_KEEP_NEIGHBOR_TIME 30 ++#define TCP6_KEEP_NEIGHBOR_TIME 30 + /// + /// 5 seconds, since 1 tick equals 200ms. + /// +-#define TCP6_REFRESH_NEIGHBOR_TICK 25 ++#define TCP6_REFRESH_NEIGHBOR_TICK 25 + + #define TCP_EXPIRE_TIME 65535 + +@@ -53,43 +52,44 @@ extern UINT32 mTcpTick; + #define TCP_ISS_INCREMENT_1 2048 + #define TCP_ISS_INCREMENT_2 100 + ++ + typedef union { +- EFI_TCP4_CONFIG_DATA Tcp4CfgData; +- EFI_TCP6_CONFIG_DATA Tcp6CfgData; ++ EFI_TCP4_CONFIG_DATA Tcp4CfgData; ++ EFI_TCP6_CONFIG_DATA Tcp6CfgData; + } TCP_CONFIG_DATA; + + typedef union { +- EFI_TCP4_ACCESS_POINT Tcp4Ap; +- EFI_TCP6_ACCESS_POINT Tcp6Ap; ++ EFI_TCP4_ACCESS_POINT Tcp4Ap; ++ EFI_TCP6_ACCESS_POINT Tcp6Ap; + } TCP_ACCESS_POINT; + + typedef struct _TCP4_MODE_DATA { +- EFI_TCP4_CONNECTION_STATE *Tcp4State; +- EFI_TCP4_CONFIG_DATA *Tcp4ConfigData; +- EFI_IP4_MODE_DATA *Ip4ModeData; +- EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData; +- EFI_SIMPLE_NETWORK_MODE *SnpModeData; ++ EFI_TCP4_CONNECTION_STATE *Tcp4State; ++ EFI_TCP4_CONFIG_DATA *Tcp4ConfigData; ++ EFI_IP4_MODE_DATA *Ip4ModeData; ++ EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData; ++ EFI_SIMPLE_NETWORK_MODE *SnpModeData; + } TCP4_MODE_DATA; + + typedef struct _TCP6_MODE_DATA { +- EFI_TCP6_CONNECTION_STATE *Tcp6State; +- EFI_TCP6_CONFIG_DATA *Tcp6ConfigData; +- EFI_IP6_MODE_DATA *Ip6ModeData; +- EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData; +- EFI_SIMPLE_NETWORK_MODE *SnpModeData; ++ EFI_TCP6_CONNECTION_STATE *Tcp6State; ++ EFI_TCP6_CONFIG_DATA *Tcp6ConfigData; ++ EFI_IP6_MODE_DATA *Ip6ModeData; ++ EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData; ++ EFI_SIMPLE_NETWORK_MODE *SnpModeData; + } TCP6_MODE_DATA; + + typedef struct _TCP4_ROUTE_INFO { +- BOOLEAN DeleteRoute; +- EFI_IPv4_ADDRESS *SubnetAddress; +- EFI_IPv4_ADDRESS *SubnetMask; +- EFI_IPv4_ADDRESS *GatewayAddress; ++ BOOLEAN DeleteRoute; ++ EFI_IPv4_ADDRESS *SubnetAddress; ++ EFI_IPv4_ADDRESS *SubnetMask; ++ EFI_IPv4_ADDRESS *GatewayAddress; + } TCP4_ROUTE_INFO; + + typedef struct { +- EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; +- UINTN NumberOfChildren; +- EFI_HANDLE *ChildHandleBuffer; ++ EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; ++ UINTN NumberOfChildren; ++ EFI_HANDLE *ChildHandleBuffer; + } TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT; + + // +@@ -122,12 +122,12 @@ typedef struct { + EFI_STATUS + EFIAPI + Tcp4GetModeData ( +- IN EFI_TCP4_PROTOCOL *This, +- OUT EFI_TCP4_CONNECTION_STATE *Tcp4State OPTIONAL, +- OUT EFI_TCP4_CONFIG_DATA *Tcp4ConfigData OPTIONAL, +- OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, +- OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, +- OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL ++ IN EFI_TCP4_PROTOCOL *This, ++ OUT EFI_TCP4_CONNECTION_STATE *Tcp4State OPTIONAL, ++ OUT EFI_TCP4_CONFIG_DATA *Tcp4ConfigData OPTIONAL, ++ OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, ++ OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, ++ OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL + ); + + /** +@@ -155,8 +155,8 @@ Tcp4GetModeData ( + EFI_STATUS + EFIAPI + Tcp4Configure ( +- IN EFI_TCP4_PROTOCOL * This, +- IN EFI_TCP4_CONFIG_DATA * TcpConfigData OPTIONAL ++ IN EFI_TCP4_PROTOCOL *This, ++ IN EFI_TCP4_CONFIG_DATA *TcpConfigData OPTIONAL + ); + + /** +@@ -187,11 +187,11 @@ Tcp4Configure ( + EFI_STATUS + EFIAPI + Tcp4Routes ( +- IN EFI_TCP4_PROTOCOL *This, +- IN BOOLEAN DeleteRoute, +- IN EFI_IPv4_ADDRESS *SubnetAddress, +- IN EFI_IPv4_ADDRESS *SubnetMask, +- IN EFI_IPv4_ADDRESS *GatewayAddress ++ IN EFI_TCP4_PROTOCOL *This, ++ IN BOOLEAN DeleteRoute, ++ IN EFI_IPv4_ADDRESS *SubnetAddress, ++ IN EFI_IPv4_ADDRESS *SubnetMask, ++ IN EFI_IPv4_ADDRESS *GatewayAddress + ); + + /** +@@ -216,8 +216,8 @@ Tcp4Routes ( + EFI_STATUS + EFIAPI + Tcp4Connect ( +- IN EFI_TCP4_PROTOCOL *This, +- IN EFI_TCP4_CONNECTION_TOKEN *ConnectionToken ++ IN EFI_TCP4_PROTOCOL *This, ++ IN EFI_TCP4_CONNECTION_TOKEN *ConnectionToken + ); + + /** +@@ -243,8 +243,8 @@ Tcp4Connect ( + EFI_STATUS + EFIAPI + Tcp4Accept ( +- IN EFI_TCP4_PROTOCOL *This, +- IN EFI_TCP4_LISTEN_TOKEN *ListenToken ++ IN EFI_TCP4_PROTOCOL *This, ++ IN EFI_TCP4_LISTEN_TOKEN *ListenToken + ); + + /** +@@ -279,8 +279,8 @@ Tcp4Accept ( + EFI_STATUS + EFIAPI + Tcp4Transmit ( +- IN EFI_TCP4_PROTOCOL *This, +- IN EFI_TCP4_IO_TOKEN *Token ++ IN EFI_TCP4_PROTOCOL *This, ++ IN EFI_TCP4_IO_TOKEN *Token + ); + + /** +@@ -317,8 +317,8 @@ Tcp4Transmit ( + EFI_STATUS + EFIAPI + Tcp4Receive ( +- IN EFI_TCP4_PROTOCOL *This, +- IN EFI_TCP4_IO_TOKEN *Token ++ IN EFI_TCP4_PROTOCOL *This, ++ IN EFI_TCP4_IO_TOKEN *Token + ); + + /** +@@ -346,8 +346,8 @@ Tcp4Receive ( + EFI_STATUS + EFIAPI + Tcp4Close ( +- IN EFI_TCP4_PROTOCOL *This, +- IN EFI_TCP4_CLOSE_TOKEN *CloseToken ++ IN EFI_TCP4_PROTOCOL *This, ++ IN EFI_TCP4_CLOSE_TOKEN *CloseToken + ); + + /** +@@ -377,8 +377,8 @@ Tcp4Close ( + EFI_STATUS + EFIAPI + Tcp4Cancel ( +- IN EFI_TCP4_PROTOCOL *This, +- IN EFI_TCP4_COMPLETION_TOKEN *Token OPTIONAL ++ IN EFI_TCP4_PROTOCOL *This, ++ IN EFI_TCP4_COMPLETION_TOKEN *Token OPTIONAL + ); + + /** +@@ -398,7 +398,7 @@ Tcp4Cancel ( + EFI_STATUS + EFIAPI + Tcp4Poll ( +- IN EFI_TCP4_PROTOCOL *This ++ IN EFI_TCP4_PROTOCOL *This + ); + + // +@@ -436,12 +436,12 @@ Tcp4Poll ( + EFI_STATUS + EFIAPI + Tcp6GetModeData ( +- IN EFI_TCP6_PROTOCOL *This, +- OUT EFI_TCP6_CONNECTION_STATE *Tcp6State OPTIONAL, +- OUT EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL, +- OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, +- OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, +- OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL ++ IN EFI_TCP6_PROTOCOL *This, ++ OUT EFI_TCP6_CONNECTION_STATE *Tcp6State OPTIONAL, ++ OUT EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL, ++ OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, ++ OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, ++ OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL + ); + + /** +@@ -494,8 +494,8 @@ Tcp6GetModeData ( + EFI_STATUS + EFIAPI + Tcp6Configure ( +- IN EFI_TCP6_PROTOCOL *This, +- IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL ++ IN EFI_TCP6_PROTOCOL *This, ++ IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL + ); + + /** +@@ -531,8 +531,8 @@ Tcp6Configure ( + EFI_STATUS + EFIAPI + Tcp6Connect ( +- IN EFI_TCP6_PROTOCOL *This, +- IN EFI_TCP6_CONNECTION_TOKEN *ConnectionToken ++ IN EFI_TCP6_PROTOCOL *This, ++ IN EFI_TCP6_CONNECTION_TOKEN *ConnectionToken + ); + + /** +@@ -574,8 +574,8 @@ Tcp6Connect ( + EFI_STATUS + EFIAPI + Tcp6Accept ( +- IN EFI_TCP6_PROTOCOL *This, +- IN EFI_TCP6_LISTEN_TOKEN *ListenToken ++ IN EFI_TCP6_PROTOCOL *This, ++ IN EFI_TCP6_LISTEN_TOKEN *ListenToken + ); + + /** +@@ -618,8 +618,8 @@ Tcp6Accept ( + EFI_STATUS + EFIAPI + Tcp6Transmit ( +- IN EFI_TCP6_PROTOCOL *This, +- IN EFI_TCP6_IO_TOKEN *Token ++ IN EFI_TCP6_PROTOCOL *This, ++ IN EFI_TCP6_IO_TOKEN *Token + ); + + /** +@@ -671,8 +671,8 @@ Tcp6Transmit ( + EFI_STATUS + EFIAPI + Tcp6Receive ( +- IN EFI_TCP6_PROTOCOL *This, +- IN EFI_TCP6_IO_TOKEN *Token ++ IN EFI_TCP6_PROTOCOL *This, ++ IN EFI_TCP6_IO_TOKEN *Token + ); + + /** +@@ -705,8 +705,8 @@ Tcp6Receive ( + EFI_STATUS + EFIAPI + Tcp6Close ( +- IN EFI_TCP6_PROTOCOL *This, +- IN EFI_TCP6_CLOSE_TOKEN *CloseToken ++ IN EFI_TCP6_PROTOCOL *This, ++ IN EFI_TCP6_CLOSE_TOKEN *CloseToken + ); + + /** +@@ -747,8 +747,8 @@ Tcp6Close ( + EFI_STATUS + EFIAPI + Tcp6Cancel ( +- IN EFI_TCP6_PROTOCOL *This, +- IN EFI_TCP6_COMPLETION_TOKEN *Token OPTIONAL ++ IN EFI_TCP6_PROTOCOL *This, ++ IN EFI_TCP6_COMPLETION_TOKEN *Token OPTIONAL + ); + + /** +@@ -771,7 +771,7 @@ Tcp6Cancel ( + EFI_STATUS + EFIAPI + Tcp6Poll ( +- IN EFI_TCP6_PROTOCOL *This ++ IN EFI_TCP6_PROTOCOL *This + ); + + #endif +diff --git a/NetworkPkg/TcpDxe/TcpMisc.c b/NetworkPkg/TcpDxe/TcpMisc.c +index 73ed33de85..3fa9d90d9f 100644 +--- a/NetworkPkg/TcpDxe/TcpMisc.c ++++ b/NetworkPkg/TcpDxe/TcpMisc.c +@@ -3,26 +3,25 @@ + + (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
+ Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
+- + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ + + #include "TcpMain.h" + +-LIST_ENTRY mTcpRunQue = { ++LIST_ENTRY mTcpRunQue = { + &mTcpRunQue, + &mTcpRunQue + }; + +-LIST_ENTRY mTcpListenQue = { ++LIST_ENTRY mTcpListenQue = { + &mTcpListenQue, + &mTcpListenQue + }; + + TCP_SEQNO mTcpGlobalIss = TCP_BASE_ISS; + +-CHAR16 *mTcpStateName[] = { ++CHAR16 *mTcpStateName[] = { + L"TCP_CLOSED", + L"TCP_LISTEN", + L"TCP_SYN_SENT", +@@ -36,7 +35,6 @@ CHAR16 *mTcpStateName[] = { + L"TCP_LAST_ACK" + }; + +- + /** + Initialize the Tcb local related members. + +@@ -53,18 +51,18 @@ TcpInitTcbLocal ( + // + if (Tcb->Sk->IpVersion == IP_VERSION_4) { + Tcb->HeadSum = NetPseudoHeadChecksum ( +- Tcb->LocalEnd.Ip.Addr[0], +- Tcb->RemoteEnd.Ip.Addr[0], +- 0x06, +- 0 +- ); ++ Tcb->LocalEnd.Ip.Addr[0], ++ Tcb->RemoteEnd.Ip.Addr[0], ++ 0x06, ++ 0 ++ ); + } else { + Tcb->HeadSum = NetIp6PseudoHeadChecksum ( +- &Tcb->LocalEnd.Ip.v6, +- &Tcb->RemoteEnd.Ip.v6, +- 0x06, +- 0 +- ); ++ &Tcb->LocalEnd.Ip.v6, ++ &Tcb->RemoteEnd.Ip.v6, ++ 0x06, ++ 0 ++ ); + } + + Tcb->Iss = TcpGetIss (); +@@ -79,7 +77,7 @@ TcpInitTcbLocal ( + // + // First window size is never scaled + // +- Tcb->RcvWndScale = 0; ++ Tcb->RcvWndScale = 0; + Tcb->RetxmitSeqMax = 0; + + Tcb->ProbeTimerOn = FALSE; +@@ -95,9 +93,9 @@ TcpInitTcbLocal ( + **/ + VOID + TcpInitTcbPeer ( +- IN OUT TCP_CB *Tcb, +- IN TCP_SEG *Seg, +- IN TCP_OPTION *Opt ++ IN OUT TCP_CB *Tcb, ++ IN TCP_SEG *Seg, ++ IN TCP_OPTION *Opt + ) + { + UINT16 RcvMss; +@@ -105,9 +103,9 @@ TcpInitTcbPeer ( + ASSERT ((Tcb != NULL) && (Seg != NULL) && (Opt != NULL)); + ASSERT (TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN)); + +- Tcb->SndWnd = Seg->Wnd; +- Tcb->SndWndMax = Tcb->SndWnd; +- Tcb->SndWl1 = Seg->Seq; ++ Tcb->SndWnd = Seg->Wnd; ++ Tcb->SndWndMax = Tcb->SndWnd; ++ Tcb->SndWl1 = Seg->Seq; + + if (TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK)) { + Tcb->SndWl2 = Seg->Ack; +@@ -116,13 +114,12 @@ TcpInitTcbPeer ( + } + + if (TCP_FLG_ON (Opt->Flag, TCP_OPTION_RCVD_MSS)) { +- Tcb->SndMss = (UINT16) MAX (64, Opt->Mss); ++ Tcb->SndMss = (UINT16)MAX (64, Opt->Mss); + +- RcvMss = TcpGetRcvMss (Tcb->Sk); ++ RcvMss = TcpGetRcvMss (Tcb->Sk); + if (Tcb->SndMss > RcvMss) { + Tcb->SndMss = RcvMss; + } +- + } else { + // + // One end doesn't support MSS option, use default. +@@ -130,7 +127,7 @@ TcpInitTcbPeer ( + Tcb->RcvMss = 536; + } + +- Tcb->CWnd = Tcb->SndMss; ++ Tcb->CWnd = Tcb->SndMss; + + Tcb->Irs = Seg->Seq; + Tcb->RcvNxt = Tcb->Irs + 1; +@@ -138,12 +135,10 @@ TcpInitTcbPeer ( + Tcb->RcvWl2 = Tcb->RcvNxt; + + if (TCP_FLG_ON (Opt->Flag, TCP_OPTION_RCVD_WS) && !TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_WS)) { ++ Tcb->SndWndScale = Opt->WndScale; + +- Tcb->SndWndScale = Opt->WndScale; +- +- Tcb->RcvWndScale = TcpComputeScale (Tcb); ++ Tcb->RcvWndScale = TcpComputeScale (Tcb); + TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RCVD_WS); +- + } else { + // + // One end doesn't support window scale option. use zero. +@@ -152,7 +147,6 @@ TcpInitTcbPeer ( + } + + if (TCP_FLG_ON (Opt->Flag, TCP_OPTION_RCVD_TS) && !TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_TS)) { +- + TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_TS); + TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RCVD_TS); + +@@ -189,9 +183,9 @@ TcpIsIpEqual ( + ASSERT ((Version == IP_VERSION_4) || (Version == IP_VERSION_6)); + + if (Version == IP_VERSION_4) { +- return (BOOLEAN) (Ip1->Addr[0] == Ip2->Addr[0]); ++ return (BOOLEAN)(Ip1->Addr[0] == Ip2->Addr[0]); + } else { +- return (BOOLEAN) EFI_IP6_EQUAL (&Ip1->v6, &Ip2->v6); ++ return (BOOLEAN)EFI_IP6_EQUAL (&Ip1->v6, &Ip2->v6); + } + } + +@@ -208,17 +202,17 @@ TcpIsIpEqual ( + **/ + BOOLEAN + TcpIsIpZero ( +- IN EFI_IP_ADDRESS *Ip, +- IN UINT8 Version ++ IN EFI_IP_ADDRESS *Ip, ++ IN UINT8 Version + ) + { + ASSERT ((Version == IP_VERSION_4) || (Version == IP_VERSION_6)); + + if (Version == IP_VERSION_4) { +- return (BOOLEAN) (Ip->Addr[0] == 0); ++ return (BOOLEAN)(Ip->Addr[0] == 0); + } else { +- return (BOOLEAN) ((Ip->Addr[0] == 0) && (Ip->Addr[1] == 0) && +- (Ip->Addr[2] == 0) && (Ip->Addr[3] == 0)); ++ return (BOOLEAN)((Ip->Addr[0] == 0) && (Ip->Addr[1] == 0) && ++ (Ip->Addr[2] == 0) && (Ip->Addr[3] == 0)); + } + } + +@@ -236,16 +230,16 @@ TcpIsIpZero ( + **/ + TCP_CB * + TcpLocateListenTcb ( +- IN TCP_PEER *Local, +- IN TCP_PEER *Remote, +- IN UINT8 Version ++ IN TCP_PEER *Local, ++ IN TCP_PEER *Remote, ++ IN UINT8 Version + ) + { +- LIST_ENTRY *Entry; +- TCP_CB *Node; +- TCP_CB *Match; +- INTN Last; +- INTN Cur; ++ LIST_ENTRY *Entry; ++ TCP_CB *Node; ++ TCP_CB *Match; ++ INTN Last; ++ INTN Cur; + + Last = 4; + Match = NULL; +@@ -257,8 +251,8 @@ TcpLocateListenTcb ( + (Local->Port != Node->LocalEnd.Port) || + !TCP_PEER_MATCH (Remote, &Node->RemoteEnd, Version) || + !TCP_PEER_MATCH (Local, &Node->LocalEnd, Version) +- ) { +- ++ ) ++ { + continue; + } + +@@ -311,9 +305,9 @@ TcpFindTcbByPeer ( + IN UINT8 Version + ) + { +- TCP_PORTNO LocalPort; +- LIST_ENTRY *Entry; +- TCP_CB *Tcb; ++ TCP_PORTNO LocalPort; ++ LIST_ENTRY *Entry; ++ TCP_CB *Tcb; + + ASSERT ((Addr != NULL) && (Port != 0)); + +@@ -323,10 +317,10 @@ TcpFindTcbByPeer ( + Tcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List); + + if ((Version == Tcb->Sk->IpVersion) && +- TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) && ++ TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) && + (LocalPort == Tcb->LocalEnd.Port) +- ) { +- ++ ) ++ { + return TRUE; + } + } +@@ -335,10 +329,10 @@ TcpFindTcbByPeer ( + Tcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List); + + if ((Version == Tcb->Sk->IpVersion) && +- TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) && ++ TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) && + (LocalPort == Tcb->LocalEnd.Port) +- ) { +- ++ ) ++ { + return TRUE; + } + } +@@ -370,10 +364,10 @@ TcpLocateTcb ( + IN BOOLEAN Syn + ) + { +- TCP_PEER Local; +- TCP_PEER Remote; +- LIST_ENTRY *Entry; +- TCP_CB *Tcb; ++ TCP_PEER Local; ++ TCP_PEER Remote; ++ LIST_ENTRY *Entry; ++ TCP_CB *Tcb; + + Local.Port = LocalPort; + Remote.Port = RemotePort; +@@ -390,8 +384,8 @@ TcpLocateTcb ( + if ((Version == Tcb->Sk->IpVersion) && + TCP_PEER_EQUAL (&Remote, &Tcb->RemoteEnd, Version) && + TCP_PEER_EQUAL (&Local, &Tcb->LocalEnd, Version) +- ) { +- ++ ) ++ { + RemoveEntryList (&Tcb->List); + InsertHeadList (&mTcpRunQue, &Tcb->List); + +@@ -420,20 +414,20 @@ TcpLocateTcb ( + **/ + INTN + TcpInsertTcb ( +- IN TCP_CB *Tcb ++ IN TCP_CB *Tcb + ) + { +- LIST_ENTRY *Entry; +- LIST_ENTRY *Head; +- TCP_CB *Node; ++ LIST_ENTRY *Entry; ++ LIST_ENTRY *Head; ++ TCP_CB *Node; + + ASSERT ( + (Tcb != NULL) && + ( +- (Tcb->State == TCP_LISTEN) || +- (Tcb->State == TCP_SYN_SENT) || +- (Tcb->State == TCP_SYN_RCVD) || +- (Tcb->State == TCP_CLOSED) ++ (Tcb->State == TCP_LISTEN) || ++ (Tcb->State == TCP_SYN_SENT) || ++ (Tcb->State == TCP_SYN_RCVD) || ++ (Tcb->State == TCP_CLOSED) + ) + ); + +@@ -455,15 +449,14 @@ TcpInsertTcb ( + + if (TCP_PEER_EQUAL (&Tcb->LocalEnd, &Node->LocalEnd, Tcb->Sk->IpVersion) && + TCP_PEER_EQUAL (&Tcb->RemoteEnd, &Node->RemoteEnd, Tcb->Sk->IpVersion) +- ) { +- ++ ) ++ { + return -1; + } + } + + InsertHeadList (Head, &Tcb->List); + +- + return 0; + } + +@@ -477,10 +470,10 @@ TcpInsertTcb ( + **/ + TCP_CB * + TcpCloneTcb ( +- IN TCP_CB *Tcb ++ IN TCP_CB *Tcb + ) + { +- TCP_CB *Clone; ++ TCP_CB *Clone; + + Clone = AllocateZeroPool (sizeof (TCP_CB)); + +@@ -506,7 +499,7 @@ TcpCloneTcb ( + return NULL; + } + +- ((TCP_PROTO_DATA *) (Clone->Sk->ProtoReserved))->TcpPcb = Clone; ++ ((TCP_PROTO_DATA *)(Clone->Sk->ProtoReserved))->TcpPcb = Clone; + + return Clone; + } +@@ -539,25 +532,25 @@ TcpGetRcvMss ( + IN SOCKET *Sock + ) + { +- EFI_IP4_MODE_DATA Ip4Mode; +- EFI_IP6_MODE_DATA Ip6Mode; +- EFI_IP4_PROTOCOL *Ip4; +- EFI_IP6_PROTOCOL *Ip6; +- TCP_PROTO_DATA *TcpProto; ++ EFI_IP4_MODE_DATA Ip4Mode; ++ EFI_IP6_MODE_DATA Ip6Mode; ++ EFI_IP4_PROTOCOL *Ip4; ++ EFI_IP6_PROTOCOL *Ip6; ++ TCP_PROTO_DATA *TcpProto; + + ASSERT (Sock != NULL); + + ZeroMem (&Ip4Mode, sizeof (EFI_IP4_MODE_DATA)); + ZeroMem (&Ip6Mode, sizeof (EFI_IP6_MODE_DATA)); + +- TcpProto = (TCP_PROTO_DATA *) Sock->ProtoReserved; ++ TcpProto = (TCP_PROTO_DATA *)Sock->ProtoReserved; + + if (Sock->IpVersion == IP_VERSION_4) { + Ip4 = TcpProto->TcpService->IpIo->Ip.Ip4; + ASSERT (Ip4 != NULL); + Ip4->GetModeData (Ip4, &Ip4Mode, NULL, NULL); + +- return (UINT16) (Ip4Mode.MaxPacketSize - sizeof (TCP_HEAD)); ++ return (UINT16)(Ip4Mode.MaxPacketSize - sizeof (TCP_HEAD)); + } else { + Ip6 = TcpProto->TcpService->IpIo->Ip.Ip6; + ASSERT (Ip6 != NULL); +@@ -587,7 +580,7 @@ TcpGetRcvMss ( + } + } + +- return (UINT16) (Ip6Mode.MaxPacketSize - sizeof (TCP_HEAD)); ++ return (UINT16)(Ip6Mode.MaxPacketSize - sizeof (TCP_HEAD)); + } + } + +@@ -600,8 +593,8 @@ TcpGetRcvMss ( + **/ + VOID + TcpSetState ( +- IN TCP_CB *Tcb, +- IN UINT8 State ++ IN TCP_CB *Tcb, ++ IN UINT8 State + ) + { + ASSERT (Tcb->State < (sizeof (mTcpStateName) / sizeof (CHAR16 *))); +@@ -609,36 +602,36 @@ TcpSetState ( + + DEBUG ( + (EFI_D_NET, +- "Tcb (%p) state %s --> %s\n", +- Tcb, +- mTcpStateName[Tcb->State], +- mTcpStateName[State]) ++ "Tcb (%p) state %s --> %s\n", ++ Tcb, ++ mTcpStateName[Tcb->State], ++ mTcpStateName[State]) + ); + + Tcb->State = State; + + switch (State) { +- case TCP_ESTABLISHED: ++ case TCP_ESTABLISHED: + +- SockConnEstablished (Tcb->Sk); ++ SockConnEstablished (Tcb->Sk); + +- if (Tcb->Parent != NULL) { +- // +- // A new connection is accepted by a listening socket. Install +- // the device path. +- // +- TcpInstallDevicePath (Tcb->Sk); +- } ++ if (Tcb->Parent != NULL) { ++ // ++ // A new connection is accepted by a listening socket. Install ++ // the device path. ++ // ++ TcpInstallDevicePath (Tcb->Sk); ++ } + +- break; ++ break; + +- case TCP_CLOSED: ++ case TCP_CLOSED: + +- SockConnClosed (Tcb->Sk); ++ SockConnClosed (Tcb->Sk); + +- break; +- default: +- break; ++ break; ++ default: ++ break; + } + } + +@@ -653,21 +646,21 @@ TcpSetState ( + **/ + UINT16 + TcpChecksum ( +- IN NET_BUF *Nbuf, +- IN UINT16 HeadSum ++ IN NET_BUF *Nbuf, ++ IN UINT16 HeadSum + ) + { + UINT16 Checksum; + +- Checksum = NetbufChecksum (Nbuf); +- Checksum = NetAddChecksum (Checksum, HeadSum); ++ Checksum = NetbufChecksum (Nbuf); ++ Checksum = NetAddChecksum (Checksum, HeadSum); + + Checksum = NetAddChecksum ( +- Checksum, +- HTONS ((UINT16) Nbuf->TotalSize) +- ); ++ Checksum, ++ HTONS ((UINT16)Nbuf->TotalSize) ++ ); + +- return (UINT16) (~Checksum); ++ return (UINT16)(~Checksum); + } + + /** +@@ -682,22 +675,22 @@ TcpChecksum ( + **/ + TCP_SEG * + TcpFormatNetbuf ( +- IN TCP_CB *Tcb, +- IN OUT NET_BUF *Nbuf ++ IN TCP_CB *Tcb, ++ IN OUT NET_BUF *Nbuf + ) + { + TCP_SEG *Seg; + TCP_HEAD *Head; + +- Seg = TCPSEG_NETBUF (Nbuf); +- Head = (TCP_HEAD *) NetbufGetByte (Nbuf, 0, NULL); ++ Seg = TCPSEG_NETBUF (Nbuf); ++ Head = (TCP_HEAD *)NetbufGetByte (Nbuf, 0, NULL); + ASSERT (Head != NULL); + + Nbuf->Tcp = Head; + +- Seg->Seq = NTOHL (Head->Seq); +- Seg->Ack = NTOHL (Head->Ack); +- Seg->End = Seg->Seq + (Nbuf->TotalSize - (Head->HeadLen << 2)); ++ Seg->Seq = NTOHL (Head->Seq); ++ Seg->Ack = NTOHL (Head->Ack); ++ Seg->End = Seg->Seq + (Nbuf->TotalSize - (Head->HeadLen << 2)); + + Seg->Urg = NTOHS (Head->Urg); + Seg->Wnd = (NTOHS (Head->Wnd) << Tcb->SndWndScale); +@@ -726,7 +719,6 @@ TcpFormatNetbuf ( + + @param[in, out] Tcb Pointer to the TCP_CB that wants to initiate a + connection. +- + **/ + VOID + TcpOnAppConnect ( +@@ -749,17 +741,16 @@ TcpOnAppConnect ( + **/ + VOID + TcpOnAppClose ( +- IN OUT TCP_CB *Tcb ++ IN OUT TCP_CB *Tcb + ) + { + ASSERT (Tcb != NULL); + +- if (!IsListEmpty (&Tcb->RcvQue) || GET_RCV_DATASIZE (Tcb->Sk) != 0) { +- ++ if (!IsListEmpty (&Tcb->RcvQue) || (GET_RCV_DATASIZE (Tcb->Sk) != 0)) { + DEBUG ( + (EFI_D_WARN, +- "TcpOnAppClose: connection reset because data is lost for TCB %p\n", +- Tcb) ++ "TcpOnAppClose: connection reset because data is lost for TCB %p\n", ++ Tcb) + ); + + TcpResetConnection (Tcb); +@@ -768,22 +759,22 @@ TcpOnAppClose ( + } + + switch (Tcb->State) { +- case TCP_CLOSED: +- case TCP_LISTEN: +- case TCP_SYN_SENT: +- TcpSetState (Tcb, TCP_CLOSED); +- break; +- +- case TCP_SYN_RCVD: +- case TCP_ESTABLISHED: +- TcpSetState (Tcb, TCP_FIN_WAIT_1); +- break; +- +- case TCP_CLOSE_WAIT: +- TcpSetState (Tcb, TCP_LAST_ACK); +- break; +- default: +- break; ++ case TCP_CLOSED: ++ case TCP_LISTEN: ++ case TCP_SYN_SENT: ++ TcpSetState (Tcb, TCP_CLOSED); ++ break; ++ ++ case TCP_SYN_RCVD: ++ case TCP_ESTABLISHED: ++ TcpSetState (Tcb, TCP_FIN_WAIT_1); ++ break; ++ ++ case TCP_CLOSE_WAIT: ++ TcpSetState (Tcb, TCP_LAST_ACK); ++ break; ++ default: ++ break; + } + + TcpToSendData (Tcb, 1); +@@ -801,35 +792,34 @@ TcpOnAppClose ( + **/ + INTN + TcpOnAppSend ( +- IN OUT TCP_CB *Tcb ++ IN OUT TCP_CB *Tcb + ) + { +- + switch (Tcb->State) { +- case TCP_CLOSED: +- return -1; ++ case TCP_CLOSED: ++ return -1; + +- case TCP_LISTEN: +- return -1; ++ case TCP_LISTEN: ++ return -1; + +- case TCP_SYN_SENT: +- case TCP_SYN_RCVD: +- return 0; ++ case TCP_SYN_SENT: ++ case TCP_SYN_RCVD: ++ return 0; + +- case TCP_ESTABLISHED: +- case TCP_CLOSE_WAIT: +- TcpToSendData (Tcb, 0); +- return 0; ++ case TCP_ESTABLISHED: ++ case TCP_CLOSE_WAIT: ++ TcpToSendData (Tcb, 0); ++ return 0; + +- case TCP_FIN_WAIT_1: +- case TCP_FIN_WAIT_2: +- case TCP_CLOSING: +- case TCP_LAST_ACK: +- case TCP_TIME_WAIT: +- return -1; ++ case TCP_FIN_WAIT_1: ++ case TCP_FIN_WAIT_2: ++ case TCP_CLOSING: ++ case TCP_LAST_ACK: ++ case TCP_TIME_WAIT: ++ return -1; + +- default: +- break; ++ default: ++ break; + } + + return 0; +@@ -844,41 +834,38 @@ TcpOnAppSend ( + **/ + VOID + TcpOnAppConsume ( +- IN TCP_CB *Tcb ++ IN TCP_CB *Tcb + ) + { +- UINT32 TcpOld; ++ UINT32 TcpOld; + + switch (Tcb->State) { +- case TCP_ESTABLISHED: +- TcpOld = TcpRcvWinOld (Tcb); +- if (TcpRcvWinNow (Tcb) > TcpOld) { +- +- if (TcpOld < Tcb->RcvMss) { +- +- DEBUG ( +- (EFI_D_NET, +- "TcpOnAppConsume: send a window update for a window closed Tcb %p\n", +- Tcb) +- ); +- +- TcpSendAck (Tcb); +- } else if (Tcb->DelayedAck == 0) { +- +- DEBUG ( +- (EFI_D_NET, +- "TcpOnAppConsume: scheduled a delayed ACK to update window for Tcb %p\n", +- Tcb) +- ); +- +- Tcb->DelayedAck = 1; ++ case TCP_ESTABLISHED: ++ TcpOld = TcpRcvWinOld (Tcb); ++ if (TcpRcvWinNow (Tcb) > TcpOld) { ++ if (TcpOld < Tcb->RcvMss) { ++ DEBUG ( ++ (EFI_D_NET, ++ "TcpOnAppConsume: send a window update for a window closed Tcb %p\n", ++ Tcb) ++ ); ++ ++ TcpSendAck (Tcb); ++ } else if (Tcb->DelayedAck == 0) { ++ DEBUG ( ++ (EFI_D_NET, ++ "TcpOnAppConsume: scheduled a delayed ACK to update window for Tcb %p\n", ++ Tcb) ++ ); ++ ++ Tcb->DelayedAck = 1; ++ } + } +- } + +- break; ++ break; + +- default: +- break; ++ default: ++ break; + } + } + +@@ -891,25 +878,25 @@ TcpOnAppConsume ( + **/ + VOID + TcpOnAppAbort ( +- IN TCP_CB *Tcb ++ IN TCP_CB *Tcb + ) + { + DEBUG ( + (EFI_D_WARN, +- "TcpOnAppAbort: connection reset issued by application for TCB %p\n", +- Tcb) ++ "TcpOnAppAbort: connection reset issued by application for TCB %p\n", ++ Tcb) + ); + + switch (Tcb->State) { +- case TCP_SYN_RCVD: +- case TCP_ESTABLISHED: +- case TCP_FIN_WAIT_1: +- case TCP_FIN_WAIT_2: +- case TCP_CLOSE_WAIT: +- TcpResetConnection (Tcb); +- break; +- default: +- break; ++ case TCP_SYN_RCVD: ++ case TCP_ESTABLISHED: ++ case TCP_FIN_WAIT_1: ++ case TCP_FIN_WAIT_2: ++ case TCP_CLOSE_WAIT: ++ TcpResetConnection (Tcb); ++ break; ++ default: ++ break; + } + + TcpSetState (Tcb, TCP_CLOSED); +@@ -923,7 +910,7 @@ TcpOnAppAbort ( + **/ + VOID + TcpResetConnection ( +- IN TCP_CB *Tcb ++ IN TCP_CB *Tcb + ) + { + NET_BUF *Nbuf; +@@ -932,10 +919,10 @@ TcpResetConnection ( + Nbuf = NetbufAlloc (TCP_MAX_HEAD); + + if (Nbuf == NULL) { +- return ; ++ return; + } + +- Nhead = (TCP_HEAD *) NetbufAllocSpace ( ++ Nhead = (TCP_HEAD *)NetbufAllocSpace ( + Nbuf, + sizeof (TCP_HEAD), + NET_BUF_TAIL +@@ -943,14 +930,14 @@ TcpResetConnection ( + + ASSERT (Nhead != NULL); + +- Nbuf->Tcp = Nhead; ++ Nbuf->Tcp = Nhead; + + Nhead->Flag = TCP_FLG_RST; + Nhead->Seq = HTONL (Tcb->SndNxt); + Nhead->Ack = HTONL (Tcb->RcvNxt); + Nhead->SrcPort = Tcb->LocalEnd.Port; + Nhead->DstPort = Tcb->RemoteEnd.Port; +- Nhead->HeadLen = (UINT8) (sizeof (TCP_HEAD) >> 2); ++ Nhead->HeadLen = (UINT8)(sizeof (TCP_HEAD) >> 2); + Nhead->Res = 0; + Nhead->Wnd = HTONS (0xFFFF); + Nhead->Checksum = 0; +@@ -973,24 +960,24 @@ TcpResetConnection ( + **/ + EFI_STATUS + TcpInstallDevicePath ( +- IN SOCKET *Sock ++ IN SOCKET *Sock + ) + { +- TCP_PROTO_DATA *TcpProto; +- TCP_SERVICE_DATA *TcpService; +- TCP_CB *Tcb; +- IPv4_DEVICE_PATH Ip4DPathNode; +- IPv6_DEVICE_PATH Ip6DPathNode; +- EFI_DEVICE_PATH_PROTOCOL *DevicePath; +- EFI_STATUS Status; +- TCP_PORTNO LocalPort; +- TCP_PORTNO RemotePort; +- +- TcpProto = (TCP_PROTO_DATA *) Sock->ProtoReserved; ++ TCP_PROTO_DATA *TcpProto; ++ TCP_SERVICE_DATA *TcpService; ++ TCP_CB *Tcb; ++ IPv4_DEVICE_PATH Ip4DPathNode; ++ IPv6_DEVICE_PATH Ip6DPathNode; ++ EFI_DEVICE_PATH_PROTOCOL *DevicePath; ++ EFI_STATUS Status; ++ TCP_PORTNO LocalPort; ++ TCP_PORTNO RemotePort; ++ ++ TcpProto = (TCP_PROTO_DATA *)Sock->ProtoReserved; + TcpService = TcpProto->TcpService; + Tcb = TcpProto->TcpPcb; + +- LocalPort = NTOHS (Tcb->LocalEnd.Port); ++ LocalPort = NTOHS (Tcb->LocalEnd.Port); + RemotePort = NTOHS (Tcb->RemoteEnd.Port); + if (Sock->IpVersion == IP_VERSION_4) { + NetLibCreateIPv4DPathNode ( +@@ -1006,7 +993,7 @@ TcpInstallDevicePath ( + + IP4_COPY_ADDRESS (&Ip4DPathNode.SubnetMask, &Tcb->SubnetMask); + +- DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) &Ip4DPathNode; ++ DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)&Ip4DPathNode; + } else { + NetLibCreateIPv6DPathNode ( + &Ip6DPathNode, +@@ -1018,7 +1005,7 @@ TcpInstallDevicePath ( + EFI_IP_PROTO_TCP + ); + +- DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) &Ip6DPathNode; ++ DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)&Ip6DPathNode; + } + + Sock->DevicePath = AppendDevicePathNode (Sock->ParentDevicePath, DevicePath); +@@ -1039,4 +1026,3 @@ TcpInstallDevicePath ( + + return Status; + } +- +diff --git a/NetworkPkg/Udp4Dxe/Udp4Driver.c b/NetworkPkg/Udp4Dxe/Udp4Driver.c +index 44032682e2..cb917fcfc9 100644 +--- a/NetworkPkg/Udp4Dxe/Udp4Driver.c ++++ b/NetworkPkg/Udp4Dxe/Udp4Driver.c +@@ -5,10 +5,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ + +- + #include "Udp4Impl.h" + +-EFI_DRIVER_BINDING_PROTOCOL gUdp4DriverBinding = { ++EFI_DRIVER_BINDING_PROTOCOL gUdp4DriverBinding = { + Udp4DriverBindingSupported, + Udp4DriverBindingStart, + Udp4DriverBindingStop, +@@ -17,7 +16,7 @@ EFI_DRIVER_BINDING_PROTOCOL gUdp4DriverBinding = { + NULL + }; + +-EFI_SERVICE_BINDING_PROTOCOL mUdp4ServiceBinding = { ++EFI_SERVICE_BINDING_PROTOCOL mUdp4ServiceBinding = { + Udp4ServiceBindingCreateChild, + Udp4ServiceBindingDestroyChild + }; +@@ -35,8 +34,8 @@ EFI_SERVICE_BINDING_PROTOCOL mUdp4ServiceBinding = { + EFI_STATUS + EFIAPI + Udp4DestroyChildEntryInHandleBuffer ( +- IN LIST_ENTRY *Entry, +- IN VOID *Context ++ IN LIST_ENTRY *Entry, ++ IN VOID *Context + ) + { + UDP4_INSTANCE_DATA *Instance; +@@ -44,14 +43,14 @@ Udp4DestroyChildEntryInHandleBuffer ( + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; + +- if (Entry == NULL || Context == NULL) { ++ if ((Entry == NULL) || (Context == NULL)) { + return EFI_INVALID_PARAMETER; + } + +- Instance = NET_LIST_USER_STRUCT_S (Entry, UDP4_INSTANCE_DATA, Link, UDP4_INSTANCE_DATA_SIGNATURE); +- ServiceBinding = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; +- NumberOfChildren = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; +- ChildHandleBuffer = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; ++ Instance = NET_LIST_USER_STRUCT_S (Entry, UDP4_INSTANCE_DATA, Link, UDP4_INSTANCE_DATA_SIGNATURE); ++ ServiceBinding = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; ++ NumberOfChildren = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; ++ ChildHandleBuffer = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; + + if (!NetIsInHandleBuffer (Instance->ChildHandle, NumberOfChildren, ChildHandleBuffer)) { + return EFI_SUCCESS; +@@ -60,7 +59,6 @@ Udp4DestroyChildEntryInHandleBuffer ( + return ServiceBinding->DestroyChild (ServiceBinding, Instance->ChildHandle); + } + +- + /** + Test to see if this driver supports ControllerHandle. This service + is called by the EFI boot service ConnectController(). In +@@ -119,7 +117,6 @@ Udp4DriverBindingSupported ( + return Status; + } + +- + /** + Start this driver on ControllerHandle. This service is called by the + EFI boot service ConnectController(). In order to make +@@ -180,7 +177,6 @@ Udp4DriverBindingStart ( + return Status; + } + +- + /** + Stop this driver on ControllerHandle. This service is called by the + EFI boot service DisconnectController(). In order to +@@ -229,7 +225,7 @@ Udp4DriverBindingStop ( + Status = gBS->OpenProtocol ( + NicHandle, + &gEfiUdp4ServiceBindingProtocolGuid, +- (VOID **) &ServiceBinding, ++ (VOID **)&ServiceBinding, + This->DriverBindingHandle, + NicHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -243,16 +239,16 @@ Udp4DriverBindingStop ( + // + // NumberOfChildren is not zero, destroy the children instances in ChildHandleBuffer. + // +- List = &Udp4Service->ChildrenList; ++ List = &Udp4Service->ChildrenList; + Context.ServiceBinding = ServiceBinding; + Context.NumberOfChildren = NumberOfChildren; + Context.ChildHandleBuffer = ChildHandleBuffer; +- Status = NetDestroyLinkList ( +- List, +- Udp4DestroyChildEntryInHandleBuffer, +- &Context, +- NULL +- ); ++ Status = NetDestroyLinkList ( ++ List, ++ Udp4DestroyChildEntryInHandleBuffer, ++ &Context, ++ NULL ++ ); + } else { + gBS->UninstallMultipleProtocolInterfaces ( + NicHandle, +@@ -267,13 +263,13 @@ Udp4DriverBindingStop ( + FreeUnicodeStringTable (gUdpControllerNameTable); + gUdpControllerNameTable = NULL; + } ++ + FreePool (Udp4Service); + } + + return Status; + } + +- + /** + Creates a child handle and installs a protocol. + +@@ -352,7 +348,7 @@ Udp4ServiceBindingCreateChild ( + Status = gBS->OpenProtocol ( + Udp4Service->IpIo->ChildHandle, + &gEfiIp4ProtocolGuid, +- (VOID **) &Ip4, ++ (VOID **)&Ip4, + gUdp4DriverBinding.DriverBindingHandle, + Instance->ChildHandle, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER +@@ -367,7 +363,7 @@ Udp4ServiceBindingCreateChild ( + Status = gBS->OpenProtocol ( + Instance->IpInfo->ChildHandle, + &gEfiIp4ProtocolGuid, +- (VOID **) &Ip4, ++ (VOID **)&Ip4, + gUdp4DriverBinding.DriverBindingHandle, + Instance->ChildHandle, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER +@@ -410,7 +406,6 @@ ON_ERROR: + return Status; + } + +- + /** + Destroys a child handle with a protocol installed on it. + +@@ -454,7 +449,7 @@ Udp4ServiceBindingDestroyChild ( + Status = gBS->OpenProtocol ( + ChildHandle, + &gEfiUdp4ProtocolGuid, +- (VOID **) &Udp4Proto, ++ (VOID **)&Udp4Proto, + gUdp4DriverBinding.DriverBindingHandle, + ChildHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -499,7 +494,7 @@ Udp4ServiceBindingDestroyChild ( + Status = gBS->UninstallMultipleProtocolInterfaces ( + ChildHandle, + &gEfiUdp4ProtocolGuid, +- (VOID *) &Instance->Udp4Proto, ++ (VOID *)&Instance->Udp4Proto, + NULL + ); + if (EFI_ERROR (Status)) { +@@ -576,9 +571,8 @@ Udp4DriverEntryPoint ( + // + // Initialize the UDP random port. + // +- mUdp4RandomPort = (UINT16) (((UINT16) NetRandomInitSeed ()) % UDP4_PORT_KNOWN + UDP4_PORT_KNOWN); ++ mUdp4RandomPort = (UINT16)(((UINT16)NetRandomInitSeed ()) % UDP4_PORT_KNOWN + UDP4_PORT_KNOWN); + } + + return Status; + } +- +diff --git a/NetworkPkg/Udp6Dxe/Udp6Driver.c b/NetworkPkg/Udp6Dxe/Udp6Driver.c +index 6021bb3699..ae96fb9966 100644 +--- a/NetworkPkg/Udp6Dxe/Udp6Driver.c ++++ b/NetworkPkg/Udp6Dxe/Udp6Driver.c +@@ -9,7 +9,7 @@ + + #include "Udp6Impl.h" + +-EFI_DRIVER_BINDING_PROTOCOL gUdp6DriverBinding = { ++EFI_DRIVER_BINDING_PROTOCOL gUdp6DriverBinding = { + Udp6DriverBindingSupported, + Udp6DriverBindingStart, + Udp6DriverBindingStop, +@@ -18,7 +18,7 @@ EFI_DRIVER_BINDING_PROTOCOL gUdp6DriverBinding = { + NULL + }; + +-EFI_SERVICE_BINDING_PROTOCOL mUdp6ServiceBinding = { ++EFI_SERVICE_BINDING_PROTOCOL mUdp6ServiceBinding = { + Udp6ServiceBindingCreateChild, + Udp6ServiceBindingDestroyChild + }; +@@ -74,6 +74,7 @@ Udp6DriverBindingSupported ( + ) + { + EFI_STATUS Status; ++ + // + // Test for the Udp6ServiceBinding Protocol + // +@@ -88,6 +89,7 @@ Udp6DriverBindingSupported ( + if (!EFI_ERROR (Status)) { + return EFI_ALREADY_STARTED; + } ++ + // + // Test for the Ip6ServiceBinding Protocol + // +@@ -166,6 +168,7 @@ EXIT: + FreePool (Udp6Service); + } + } ++ + return Status; + } + +@@ -183,8 +186,8 @@ EXIT: + EFI_STATUS + EFIAPI + Udp6DestroyChildEntryInHandleBuffer ( +- IN LIST_ENTRY *Entry, +- IN VOID *Context ++ IN LIST_ENTRY *Entry, ++ IN VOID *Context + ) + { + UDP6_INSTANCE_DATA *Instance; +@@ -192,14 +195,14 @@ Udp6DestroyChildEntryInHandleBuffer ( + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; + +- if (Entry == NULL || Context == NULL) { ++ if ((Entry == NULL) || (Context == NULL)) { + return EFI_INVALID_PARAMETER; + } + +- Instance = NET_LIST_USER_STRUCT_S (Entry, UDP6_INSTANCE_DATA, Link, UDP6_INSTANCE_DATA_SIGNATURE); +- ServiceBinding = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; +- NumberOfChildren = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; +- ChildHandleBuffer = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; ++ Instance = NET_LIST_USER_STRUCT_S (Entry, UDP6_INSTANCE_DATA, Link, UDP6_INSTANCE_DATA_SIGNATURE); ++ ServiceBinding = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; ++ NumberOfChildren = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; ++ ChildHandleBuffer = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; + + if (!NetIsInHandleBuffer (Instance->ChildHandle, NumberOfChildren, ChildHandleBuffer)) { + return EFI_SUCCESS; +@@ -258,7 +261,7 @@ Udp6DriverBindingStop ( + Status = gBS->OpenProtocol ( + NicHandle, + &gEfiUdp6ServiceBindingProtocolGuid, +- (VOID **) &ServiceBinding, ++ (VOID **)&ServiceBinding, + This->DriverBindingHandle, + NicHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -273,23 +276,23 @@ Udp6DriverBindingStop ( + // + // NumberOfChildren is not zero, destroy the children instances in ChildHandleBuffer. + // +- List = &Udp6Service->ChildrenList; ++ List = &Udp6Service->ChildrenList; + Context.ServiceBinding = ServiceBinding; + Context.NumberOfChildren = NumberOfChildren; + Context.ChildHandleBuffer = ChildHandleBuffer; +- Status = NetDestroyLinkList ( +- List, +- Udp6DestroyChildEntryInHandleBuffer, +- &Context, +- NULL +- ); ++ Status = NetDestroyLinkList ( ++ List, ++ Udp6DestroyChildEntryInHandleBuffer, ++ &Context, ++ NULL ++ ); + } else if (IsListEmpty (&Udp6Service->ChildrenList)) { + Status = gBS->UninstallMultipleProtocolInterfaces ( +- NicHandle, +- &gEfiUdp6ServiceBindingProtocolGuid, +- &Udp6Service->ServiceBinding, +- NULL +- ); ++ NicHandle, ++ &gEfiUdp6ServiceBindingProtocolGuid, ++ &Udp6Service->ServiceBinding, ++ NULL ++ ); + + Udp6CleanService (Udp6Service); + FreePool (Udp6Service); +@@ -376,7 +379,7 @@ Udp6ServiceBindingCreateChild ( + Status = gBS->OpenProtocol ( + Udp6Service->IpIo->ChildHandle, + &gEfiIp6ProtocolGuid, +- (VOID **) &Ip6, ++ (VOID **)&Ip6, + gUdp6DriverBinding.DriverBindingHandle, + Instance->ChildHandle, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER +@@ -391,7 +394,7 @@ Udp6ServiceBindingCreateChild ( + Status = gBS->OpenProtocol ( + Instance->IpInfo->ChildHandle, + &gEfiIp6ProtocolGuid, +- (VOID **) &Ip6, ++ (VOID **)&Ip6, + gUdp6DriverBinding.DriverBindingHandle, + Instance->ChildHandle, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER +@@ -478,7 +481,7 @@ Udp6ServiceBindingDestroyChild ( + Status = gBS->OpenProtocol ( + ChildHandle, + &gEfiUdp6ProtocolGuid, +- (VOID **) &Udp6Proto, ++ (VOID **)&Udp6Proto, + gUdp6DriverBinding.DriverBindingHandle, + ChildHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -502,11 +505,11 @@ Udp6ServiceBindingDestroyChild ( + // Close the Ip6 protocol on the default IpIo. + // + Status = gBS->CloseProtocol ( +- Udp6Service->IpIo->ChildHandle, +- &gEfiIp6ProtocolGuid, +- gUdp6DriverBinding.DriverBindingHandle, +- Instance->ChildHandle +- ); ++ Udp6Service->IpIo->ChildHandle, ++ &gEfiIp6ProtocolGuid, ++ gUdp6DriverBinding.DriverBindingHandle, ++ Instance->ChildHandle ++ ); + if (EFI_ERROR (Status)) { + Instance->InDestroy = FALSE; + return Status; +@@ -516,11 +519,11 @@ Udp6ServiceBindingDestroyChild ( + // Close the Ip6 protocol on this instance's IpInfo. + // + Status = gBS->CloseProtocol ( +- Instance->IpInfo->ChildHandle, +- &gEfiIp6ProtocolGuid, +- gUdp6DriverBinding.DriverBindingHandle, +- Instance->ChildHandle +- ); ++ Instance->IpInfo->ChildHandle, ++ &gEfiIp6ProtocolGuid, ++ gUdp6DriverBinding.DriverBindingHandle, ++ Instance->ChildHandle ++ ); + if (EFI_ERROR (Status)) { + Instance->InDestroy = FALSE; + return Status; +@@ -532,7 +535,7 @@ Udp6ServiceBindingDestroyChild ( + Status = gBS->UninstallMultipleProtocolInterfaces ( + ChildHandle, + &gEfiUdp6ProtocolGuid, +- (VOID *) &Instance->Udp6Proto, ++ (VOID *)&Instance->Udp6Proto, + NULL + ); + if (EFI_ERROR (Status)) { +@@ -611,13 +614,11 @@ Udp6DriverEntryPoint ( + // Initialize the UDP random port. + // + mUdp6RandomPort = (UINT16)( +- ((UINT16) NetRandomInitSeed ()) % +- UDP6_PORT_KNOWN + +- UDP6_PORT_KNOWN +- ); ++ ((UINT16)NetRandomInitSeed ()) % ++ UDP6_PORT_KNOWN + ++ UDP6_PORT_KNOWN ++ ); + } + + return Status; + } +- +- +diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c +index fb63cf61a9..874fc2c37b 100644 +--- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c ++++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c +@@ -27,7 +27,6 @@ UINT8 mInterestedDhcp4Tags[PXEBC_DHCP4_TAG_INDEX_MAX] = { + // + UINT32 mPxeDhcpTimeout[4] = {4, 8, 16, 32}; + +- + /** + Parse a certain dhcp4 option by OptTag in Buffer, and return with start pointer. + +@@ -53,7 +52,6 @@ PxeBcParseDhcp4Options ( + Offset = 0; + + while (Offset < Length && Option->OpCode != DHCP4_TAG_EOP) { +- + if (Option->OpCode == OptTag) { + // + // Found the required option. +@@ -76,7 +74,6 @@ PxeBcParseDhcp4Options ( + return NULL; + } + +- + /** + Parse the PXE vendor options and extract the information from them. + +@@ -107,7 +104,6 @@ PxeBcParseVendorOptions ( + // Parse all the interesting PXE vendor options one by one. + // + switch (PxeOption->OpCode) { +- + case PXEBC_VENDOR_TAG_MTFTP_IP: + + CopyMem (&VendorOption->MtftpIp, PxeOption->Data, sizeof (EFI_IPv4_ADDRESS)); +@@ -205,7 +201,6 @@ PxeBcParseVendorOptions ( + } + } + +- + /** + Build the options buffer for the DHCPv4 request packet. + +@@ -377,7 +372,6 @@ PxeBcBuildDhcp4Options ( + return Index; + } + +- + /** + Create a template DHCPv4 packet as a seed. + +@@ -412,7 +406,6 @@ PxeBcSeedDhcp4Packet ( + Seed->Dhcp4.Option[0] = DHCP4_TAG_EOP; + } + +- + /** + Cache the DHCPv4 packet. + +@@ -439,7 +432,6 @@ PxeBcCacheDhcp4Packet ( + return EFI_SUCCESS; + } + +- + /** + Parse the cached DHCPv4 packet, including all the options. + +@@ -485,6 +477,7 @@ PxeBcParseDhcp4Packet ( + mInterestedDhcp4Tags[Index] + ); + } ++ + // + // Second, Check if bootfilename and serverhostname is overloaded to carry DHCP options refers to rfc-2132. + // If yes, try to parse options from the BootFileName field, then ServerName field. +@@ -503,6 +496,7 @@ PxeBcParseDhcp4Packet ( + } + } + } ++ + if ((Option->Data[0] & PXEBC_DHCP4_OVERLOAD_SERVER_NAME) != 0) { + for (Index = 0; Index < PXEBC_DHCP4_TAG_INDEX_MAX; Index++) { + if (Options[Index] == NULL) { +@@ -528,7 +522,8 @@ PxeBcParseDhcp4Packet ( + // + Option = Options[PXEBC_DHCP4_TAG_INDEX_CLASS_ID]; + if ((Option != NULL) && (Option->Length >= 9) && +- (CompareMem (Option->Data, DEFAULT_CLASS_ID_DATA, 9) == 0)) { ++ (CompareMem (Option->Data, DEFAULT_CLASS_ID_DATA, 9) == 0)) ++ { + IsPxeOffer = TRUE; + } + +@@ -563,7 +558,6 @@ PxeBcParseDhcp4Packet ( + Options[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] = (EFI_DHCP4_PACKET_OPTION *) + (&Offer->Dhcp4.Header.BootFileName[0] - + OFFSET_OF (EFI_DHCP4_PACKET_OPTION, Data[0])); +- + } + + // +@@ -584,7 +578,6 @@ PxeBcParseDhcp4Packet ( + return EFI_DEVICE_ERROR; + } + } else { +- + if (IS_VALID_DISCOVER_VENDOR_OPTION (Cache4->VendorOpt.BitMap)) { + // + // It's a PXE10 offer with PXEClient and discover vendor option. +@@ -614,7 +607,6 @@ PxeBcParseDhcp4Packet ( + return EFI_SUCCESS; + } + +- + /** + Cache the DHCPv4 ack packet, and parse it on demand. + +@@ -655,7 +647,6 @@ PxeBcCopyDhcp4Ack ( + return EFI_SUCCESS; + } + +- + /** + Cache the DHCPv4 proxy offer packet according to the received order. + +@@ -701,7 +692,6 @@ PxeBcCopyProxyOffer ( + return EFI_SUCCESS; + } + +- + /** + Retry to request bootfile name by the BINL offer. + +@@ -725,8 +715,10 @@ PxeBcRetryBinlOffer ( + EFI_DHCP4_PACKET *Reply; + + ASSERT (Index < PXEBC_OFFER_MAX_NUM); +- ASSERT (Private->OfferBuffer[Index].Dhcp4.OfferType == PxeOfferTypeDhcpBinl || +- Private->OfferBuffer[Index].Dhcp4.OfferType == PxeOfferTypeProxyBinl); ++ ASSERT ( ++ Private->OfferBuffer[Index].Dhcp4.OfferType == PxeOfferTypeDhcpBinl || ++ Private->OfferBuffer[Index].Dhcp4.OfferType == PxeOfferTypeProxyBinl ++ ); + + Offer = &Private->OfferBuffer[Index].Dhcp4.Packet.Offer; + +@@ -866,7 +858,8 @@ PxeBcCacheDhcp4Offer ( + Private->OfferIndex[OfferType][Private->OfferCount[OfferType]] = Private->OfferNum; + Private->OfferCount[OfferType]++; + } else if ((OfferType == PxeOfferTypeProxyPxe10 || OfferType == PxeOfferTypeProxyWfm11a) && +- Private->OfferCount[OfferType] < 1) { ++ Private->OfferCount[OfferType] < 1) ++ { + // + // Only cache the first PXE10/WFM11a offer, and discard the others. + // +@@ -889,7 +882,6 @@ PxeBcCacheDhcp4Offer ( + return EFI_SUCCESS; + } + +- + /** + Select an DHCPv4 offer, and record SelectIndex and SelectProxyType. + +@@ -916,15 +908,14 @@ PxeBcSelectDhcp4Offer ( + // 1. DhcpPxe10 offer + // + Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpPxe10][0] + 1; +- + } else if (Private->OfferCount[PxeOfferTypeDhcpWfm11a] > 0) { + // + // 2. DhcpWfm11a offer + // + Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpWfm11a][0] + 1; +- + } else if (Private->OfferCount[PxeOfferTypeDhcpOnly] > 0 && +- Private->OfferCount[PxeOfferTypeProxyPxe10] > 0) { ++ Private->OfferCount[PxeOfferTypeProxyPxe10] > 0) ++ { + // + // 3. DhcpOnly offer and ProxyPxe10 offer. + // +@@ -1007,7 +998,6 @@ PxeBcSelectDhcp4Offer ( + } + } + +- + /** + Handle the DHCPv4 offer packet. + +@@ -1280,8 +1270,10 @@ PxeBcDhcp4CallBack ( + DEBUG ((EFI_D_WARN, "PXE: Failed to read system GUID from the smbios table!\n")); + ZeroMem (Packet->Dhcp4.Header.ClientHwAddr, sizeof (EFI_GUID)); + } ++ + Packet->Dhcp4.Header.HwAddrLen = (UINT8) sizeof (EFI_GUID); + } ++ + break; + + case Dhcp4RcvdOffer: +@@ -1292,6 +1284,7 @@ PxeBcDhcp4CallBack ( + // + break; + } ++ + if (Private->OfferNum < PXEBC_OFFER_MAX_NUM) { + // + // Cache the DHCPv4 offers to OfferBuffer[] for select later, and record +@@ -1300,6 +1293,7 @@ PxeBcDhcp4CallBack ( + // + PxeBcCacheDhcp4Offer (Private, Packet); + } ++ + break; + + case Dhcp4SelectOffer: +@@ -1316,6 +1310,7 @@ PxeBcDhcp4CallBack ( + } else { + *NewPacket = &Private->OfferBuffer[Private->SelectIndex - 1].Dhcp4.Packet.Offer; + } ++ + break; + + case Dhcp4RcvdAck: +@@ -1520,7 +1515,6 @@ PxeBcDhcp4Discover ( + } + + if (!EFI_ERROR (Status)) { +- + RepIndex = 0; + SrvIndex = 0; + Response = Token.ResponseList; +@@ -1539,10 +1533,13 @@ PxeBcDhcp4Discover ( + if (SrvList[SrvIndex].AcceptAnyResponse) { + break; + } ++ + if ((SrvList[SrvIndex].Type == Type) && +- EFI_IP4_EQUAL (&Response->Dhcp4.Header.ServerAddr, &SrvList[SrvIndex].IpAddr)) { ++ EFI_IP4_EQUAL (&Response->Dhcp4.Header.ServerAddr, &SrvList[SrvIndex].IpAddr)) ++ { + break; + } ++ + SrvIndex++; + } + +@@ -1565,6 +1562,7 @@ PxeBcDhcp4Discover ( + if (EFI_ERROR(Status)) { + goto ON_EXIT; + } ++ + CopyMem (&Mode->PxeDiscover, &Token.Packet->Dhcp4, Token.Packet->Length); + } else { + Status = PxeBcCacheDhcp4Packet (&Private->ProxyOffer.Dhcp4.Packet.Offer, Response); +diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c +index 0e2675be3c..d84aca7e85 100644 +--- a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c ++++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c +@@ -10,8 +10,7 @@ + + #include "PxeBcImpl.h" + +- +-EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp4DriverBinding = { ++EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp4DriverBinding = { + PxeBcIp4DriverBindingSupported, + PxeBcIp4DriverBindingStart, + PxeBcIp4DriverBindingStop, +@@ -20,7 +19,7 @@ EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp4DriverBinding = { + NULL + }; + +-EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp6DriverBinding = { ++EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp6DriverBinding = { + PxeBcIp6DriverBindingSupported, + PxeBcIp6DriverBindingStart, + PxeBcIp6DriverBindingStop, +@@ -39,10 +38,10 @@ EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp6DriverBinding = { + **/ + EFI_HANDLE + PxeBcGetNicByIp4Children ( +- IN EFI_HANDLE ControllerHandle ++ IN EFI_HANDLE ControllerHandle + ) + { +- EFI_HANDLE NicHandle; ++ EFI_HANDLE NicHandle; + + NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiArpProtocolGuid); + if (NicHandle == NULL) { +@@ -64,7 +63,6 @@ PxeBcGetNicByIp4Children ( + return NicHandle; + } + +- + /** + Get the Nic handle using any child handle in the IPv6 stack. + +@@ -75,10 +73,10 @@ PxeBcGetNicByIp4Children ( + **/ + EFI_HANDLE + PxeBcGetNicByIp6Children ( +- IN EFI_HANDLE ControllerHandle ++ IN EFI_HANDLE ControllerHandle + ) + { +- EFI_HANDLE NicHandle; ++ EFI_HANDLE NicHandle; + + NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiIp6ProtocolGuid); + if (NicHandle == NULL) { +@@ -97,7 +95,6 @@ PxeBcGetNicByIp6Children ( + return NicHandle; + } + +- + /** + Destroy the opened instances based on IPv4. + +@@ -111,7 +108,7 @@ PxeBcDestroyIp4Children ( + IN PXEBC_PRIVATE_DATA *Private + ) + { +- ASSERT(Private != NULL); ++ ASSERT (Private != NULL); + + if (Private->ArpChild != NULL) { + // +@@ -175,11 +172,11 @@ PxeBcDestroyIp4Children ( + // Close Udp4 for PxeBc->UdpRead and destroy the instance. + // + gBS->CloseProtocol ( +- Private->Udp4ReadChild, +- &gEfiUdp4ProtocolGuid, +- This->DriverBindingHandle, +- Private->Controller +- ); ++ Private->Udp4ReadChild, ++ &gEfiUdp4ProtocolGuid, ++ This->DriverBindingHandle, ++ Private->Controller ++ ); + + NetLibDestroyServiceChild ( + Private->Controller, +@@ -194,11 +191,11 @@ PxeBcDestroyIp4Children ( + // Close Mtftp4 for PxeBc->Mtftp4 and destroy the instance. + // + gBS->CloseProtocol ( +- Private->Mtftp4Child, +- &gEfiMtftp4ProtocolGuid, +- This->DriverBindingHandle, +- Private->Controller +- ); ++ Private->Mtftp4Child, ++ &gEfiMtftp4ProtocolGuid, ++ This->DriverBindingHandle, ++ Private->Controller ++ ); + + NetLibDestroyServiceChild ( + Private->Controller, +@@ -213,11 +210,11 @@ PxeBcDestroyIp4Children ( + // Close Dhcp4 for PxeBc->Dhcp4 and destroy the instance. + // + gBS->CloseProtocol ( +- Private->Dhcp4Child, +- &gEfiDhcp4ProtocolGuid, +- This->DriverBindingHandle, +- Private->Controller +- ); ++ Private->Dhcp4Child, ++ &gEfiDhcp4ProtocolGuid, ++ This->DriverBindingHandle, ++ Private->Controller ++ ); + + NetLibDestroyServiceChild ( + Private->Controller, +@@ -267,19 +264,19 @@ PxeBcDestroyIp4Children ( + Private->Snp + ); + } ++ + FreePool (Private->Ip4Nic); + } + +- Private->ArpChild = NULL; +- Private->Ip4Child = NULL; +- Private->Udp4WriteChild = NULL; +- Private->Udp4ReadChild = NULL; +- Private->Mtftp4Child = NULL; +- Private->Dhcp4Child = NULL; +- Private->Ip4Nic = NULL; ++ Private->ArpChild = NULL; ++ Private->Ip4Child = NULL; ++ Private->Udp4WriteChild = NULL; ++ Private->Udp4ReadChild = NULL; ++ Private->Mtftp4Child = NULL; ++ Private->Dhcp4Child = NULL; ++ Private->Ip4Nic = NULL; + } + +- + /** + Destroy the opened instances based on IPv6. + +@@ -293,18 +290,18 @@ PxeBcDestroyIp6Children ( + IN PXEBC_PRIVATE_DATA *Private + ) + { +- ASSERT(Private != NULL); ++ ASSERT (Private != NULL); + + if (Private->Ip6Child != NULL) { + // + // Close Ip6 for Ip6->Ip6Config and destroy the instance. + // + gBS->CloseProtocol ( +- Private->Ip6Child, +- &gEfiIp6ProtocolGuid, +- This->DriverBindingHandle, +- Private->Controller +- ); ++ Private->Ip6Child, ++ &gEfiIp6ProtocolGuid, ++ This->DriverBindingHandle, ++ Private->Controller ++ ); + + NetLibDestroyServiceChild ( + Private->Controller, +@@ -337,11 +334,11 @@ PxeBcDestroyIp6Children ( + // Close Udp6 for PxeBc->UdpRead and destroy the instance. + // + gBS->CloseProtocol ( +- Private->Udp6ReadChild, +- &gEfiUdp6ProtocolGuid, +- This->DriverBindingHandle, +- Private->Controller +- ); ++ Private->Udp6ReadChild, ++ &gEfiUdp6ProtocolGuid, ++ This->DriverBindingHandle, ++ Private->Controller ++ ); + NetLibDestroyServiceChild ( + Private->Controller, + This->DriverBindingHandle, +@@ -355,11 +352,11 @@ PxeBcDestroyIp6Children ( + // Close Mtftp6 for PxeBc->Mtftp and destroy the instance. + // + gBS->CloseProtocol ( +- Private->Mtftp6Child, +- &gEfiMtftp6ProtocolGuid, +- This->DriverBindingHandle, +- Private->Controller +- ); ++ Private->Mtftp6Child, ++ &gEfiMtftp6ProtocolGuid, ++ This->DriverBindingHandle, ++ Private->Controller ++ ); + + NetLibDestroyServiceChild ( + Private->Controller, +@@ -374,11 +371,11 @@ PxeBcDestroyIp6Children ( + // Close Dhcp6 for PxeBc->Dhcp and destroy the instance. + // + gBS->CloseProtocol ( +- Private->Dhcp6Child, +- &gEfiDhcp6ProtocolGuid, +- This->DriverBindingHandle, +- Private->Controller +- ); ++ Private->Dhcp6Child, ++ &gEfiDhcp6ProtocolGuid, ++ This->DriverBindingHandle, ++ Private->Controller ++ ); + + NetLibDestroyServiceChild ( + Private->Controller, +@@ -427,6 +424,7 @@ PxeBcDestroyIp6Children ( + Private->Snp + ); + } ++ + FreePool (Private->Ip6Nic); + } + +@@ -452,20 +450,20 @@ PxeBcDestroyIp6Children ( + **/ + EFI_STATUS + PxeBcCheckIpv6Support ( +- IN EFI_HANDLE ControllerHandle, +- IN PXEBC_PRIVATE_DATA *Private, +- OUT BOOLEAN *Ipv6Support ++ IN EFI_HANDLE ControllerHandle, ++ IN PXEBC_PRIVATE_DATA *Private, ++ OUT BOOLEAN *Ipv6Support + ) + { +- EFI_HANDLE Handle; +- EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; +- EFI_STATUS Status; +- EFI_GUID *InfoTypesBuffer; +- UINTN InfoTypeBufferCount; +- UINTN TypeIndex; +- BOOLEAN Supported; +- VOID *InfoBlock; +- UINTN InfoBlockSize; ++ EFI_HANDLE Handle; ++ EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; ++ EFI_STATUS Status; ++ EFI_GUID *InfoTypesBuffer; ++ UINTN InfoTypeBufferCount; ++ UINTN TypeIndex; ++ BOOLEAN Supported; ++ VOID *InfoBlock; ++ UINTN InfoBlockSize; + + ASSERT (Private != NULL && Ipv6Support != NULL); + +@@ -493,16 +491,16 @@ PxeBcCheckIpv6Support ( + Status = gBS->HandleProtocol ( + Handle, + &gEfiAdapterInformationProtocolGuid, +- (VOID *) &Aip ++ (VOID *)&Aip + ); +- if (EFI_ERROR (Status) || Aip == NULL) { ++ if (EFI_ERROR (Status) || (Aip == NULL)) { + return EFI_NOT_FOUND; + } + + InfoTypesBuffer = NULL; + InfoTypeBufferCount = 0; +- Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); +- if (EFI_ERROR (Status) || InfoTypesBuffer == NULL) { ++ Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); ++ if (EFI_ERROR (Status) || (InfoTypesBuffer == NULL)) { + FreePool (InfoTypesBuffer); + return EFI_NOT_FOUND; + } +@@ -525,16 +523,15 @@ PxeBcCheckIpv6Support ( + // + InfoBlock = NULL; + InfoBlockSize = 0; +- Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize); +- if (EFI_ERROR (Status) || InfoBlock == NULL) { ++ Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize); ++ if (EFI_ERROR (Status) || (InfoBlock == NULL)) { + FreePool (InfoBlock); + return EFI_NOT_FOUND; + } + +- *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *) InfoBlock)->Ipv6Support; ++ *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *)InfoBlock)->Ipv6Support; + FreePool (InfoBlock); + return EFI_SUCCESS; +- + } + + /** +@@ -555,14 +552,14 @@ PxeBcCreateIp4Children ( + IN PXEBC_PRIVATE_DATA *Private + ) + { +- EFI_STATUS Status; +- IPv4_DEVICE_PATH Ip4Node; +- EFI_PXE_BASE_CODE_MODE *Mode; +- EFI_UDP4_CONFIG_DATA *Udp4CfgData; +- EFI_IP4_CONFIG_DATA *Ip4CfgData; +- EFI_IP4_MODE_DATA Ip4ModeData; +- PXEBC_PRIVATE_PROTOCOL *Id; +- EFI_SIMPLE_NETWORK_PROTOCOL *Snp; ++ EFI_STATUS Status; ++ IPv4_DEVICE_PATH Ip4Node; ++ EFI_PXE_BASE_CODE_MODE *Mode; ++ EFI_UDP4_CONFIG_DATA *Udp4CfgData; ++ EFI_IP4_CONFIG_DATA *Ip4CfgData; ++ EFI_IP4_MODE_DATA Ip4ModeData; ++ PXEBC_PRIVATE_PROTOCOL *Id; ++ EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + + if (Private->Ip4Nic != NULL) { + // +@@ -587,7 +584,7 @@ PxeBcCreateIp4Children ( + Status = gBS->OpenProtocol ( + Private->Dhcp4Child, + &gEfiDhcp4ProtocolGuid, +- (VOID **) &Private->Dhcp4, ++ (VOID **)&Private->Dhcp4, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -612,7 +609,7 @@ PxeBcCreateIp4Children ( + Status = gBS->OpenProtocol ( + Private->Mtftp4Child, + &gEfiMtftp4ProtocolGuid, +- (VOID **) &Private->Mtftp4, ++ (VOID **)&Private->Mtftp4, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -637,7 +634,7 @@ PxeBcCreateIp4Children ( + Status = gBS->OpenProtocol ( + Private->Udp4ReadChild, + &gEfiUdp4ProtocolGuid, +- (VOID **) &Private->Udp4Read, ++ (VOID **)&Private->Udp4Read, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -662,7 +659,7 @@ PxeBcCreateIp4Children ( + Status = gBS->OpenProtocol ( + Private->Udp4WriteChild, + &gEfiUdp4ProtocolGuid, +- (VOID **) &Private->Udp4Write, ++ (VOID **)&Private->Udp4Write, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -687,7 +684,7 @@ PxeBcCreateIp4Children ( + Status = gBS->OpenProtocol ( + Private->ArpChild, + &gEfiArpProtocolGuid, +- (VOID **) &Private->Arp, ++ (VOID **)&Private->Arp, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -712,7 +709,7 @@ PxeBcCreateIp4Children ( + Status = gBS->OpenProtocol ( + Private->Ip4Child, + &gEfiIp4ProtocolGuid, +- (VOID **) &Private->Ip4, ++ (VOID **)&Private->Ip4, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -739,13 +736,13 @@ PxeBcCreateIp4Children ( + Private->Ip4Nic->Private = Private; + Private->Ip4Nic->Signature = PXEBC_VIRTUAL_NIC_SIGNATURE; + +- // ++ // + // Locate Ip4->Ip4Config2 and store it for set IPv4 Policy. + // + Status = gBS->HandleProtocol ( + ControllerHandle, + &gEfiIp4Config2ProtocolGuid, +- (VOID **) &Private->Ip4Config2 ++ (VOID **)&Private->Ip4Config2 + ); + if (EFI_ERROR (Status)) { + goto ON_ERROR; +@@ -814,7 +811,7 @@ PxeBcCreateIp4Children ( + Status = gBS->OpenProtocol ( + Private->Ip4Nic->Controller, + &gEfiSimpleNetworkProtocolGuid, +- (VOID **) &Snp, ++ (VOID **)&Snp, + This->DriverBindingHandle, + Private->Ip4Nic->Controller, + EFI_OPEN_PROTOCOL_BY_DRIVER|EFI_OPEN_PROTOCOL_EXCLUSIVE +@@ -831,7 +828,7 @@ PxeBcCreateIp4Children ( + Status = gBS->OpenProtocol ( + ControllerHandle, + &gEfiCallerIdGuid, +- (VOID **) &Id, ++ (VOID **)&Id, + This->DriverBindingHandle, + Private->Ip4Nic->Controller, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER +@@ -843,9 +840,9 @@ PxeBcCreateIp4Children ( + // + // Set default configure data for Udp4Read and Ip4 instance. + // +- Mode = Private->PxeBc.Mode; +- Udp4CfgData = &Private->Udp4CfgData; +- Ip4CfgData = &Private->Ip4CfgData; ++ Mode = Private->PxeBc.Mode; ++ Udp4CfgData = &Private->Udp4CfgData; ++ Ip4CfgData = &Private->Ip4CfgData; + + Udp4CfgData->AcceptBroadcast = FALSE; + Udp4CfgData->AcceptAnyPort = TRUE; +@@ -855,12 +852,12 @@ PxeBcCreateIp4Children ( + Udp4CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; + Udp4CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; + +- Ip4CfgData->AcceptIcmpErrors = TRUE; +- Ip4CfgData->DefaultProtocol = EFI_IP_PROTO_ICMP; +- Ip4CfgData->TypeOfService = Mode->ToS; +- Ip4CfgData->TimeToLive = Mode->TTL; +- Ip4CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; +- Ip4CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; ++ Ip4CfgData->AcceptIcmpErrors = TRUE; ++ Ip4CfgData->DefaultProtocol = EFI_IP_PROTO_ICMP; ++ Ip4CfgData->TypeOfService = Mode->ToS; ++ Ip4CfgData->TimeToLive = Mode->TTL; ++ Ip4CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; ++ Ip4CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; + + return EFI_SUCCESS; + +@@ -869,7 +866,6 @@ ON_ERROR: + return Status; + } + +- + /** + Create the opened instances based on IPv6. + +@@ -888,14 +884,14 @@ PxeBcCreateIp6Children ( + IN PXEBC_PRIVATE_DATA *Private + ) + { +- EFI_STATUS Status; +- IPv6_DEVICE_PATH Ip6Node; +- EFI_UDP6_CONFIG_DATA *Udp6CfgData; +- EFI_IP6_CONFIG_DATA *Ip6CfgData; +- EFI_IP6_MODE_DATA Ip6ModeData; +- PXEBC_PRIVATE_PROTOCOL *Id; +- EFI_SIMPLE_NETWORK_PROTOCOL *Snp; +- UINTN Index; ++ EFI_STATUS Status; ++ IPv6_DEVICE_PATH Ip6Node; ++ EFI_UDP6_CONFIG_DATA *Udp6CfgData; ++ EFI_IP6_CONFIG_DATA *Ip6CfgData; ++ EFI_IP6_MODE_DATA Ip6ModeData; ++ PXEBC_PRIVATE_PROTOCOL *Id; ++ EFI_SIMPLE_NETWORK_PROTOCOL *Snp; ++ UINTN Index; + + if (Private->Ip6Nic != NULL) { + // +@@ -929,7 +925,7 @@ PxeBcCreateIp6Children ( + Status = gBS->OpenProtocol ( + Private->Dhcp6Child, + &gEfiDhcp6ProtocolGuid, +- (VOID **) &Private->Dhcp6, ++ (VOID **)&Private->Dhcp6, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -964,7 +960,7 @@ PxeBcCreateIp6Children ( + Status = gBS->OpenProtocol ( + Private->Mtftp6Child, + &gEfiMtftp6ProtocolGuid, +- (VOID **) &Private->Mtftp6, ++ (VOID **)&Private->Mtftp6, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -989,7 +985,7 @@ PxeBcCreateIp6Children ( + Status = gBS->OpenProtocol ( + Private->Udp6ReadChild, + &gEfiUdp6ProtocolGuid, +- (VOID **) &Private->Udp6Read, ++ (VOID **)&Private->Udp6Read, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -1014,7 +1010,7 @@ PxeBcCreateIp6Children ( + Status = gBS->OpenProtocol ( + Private->Udp6WriteChild, + &gEfiUdp6ProtocolGuid, +- (VOID **) &Private->Udp6Write, ++ (VOID **)&Private->Udp6Write, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -1039,7 +1035,7 @@ PxeBcCreateIp6Children ( + Status = gBS->OpenProtocol ( + Private->Ip6Child, + &gEfiIp6ProtocolGuid, +- (VOID **) &Private->Ip6, ++ (VOID **)&Private->Ip6, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_BY_DRIVER +@@ -1088,7 +1084,7 @@ PxeBcCreateIp6Children ( + Status = gBS->HandleProtocol ( + ControllerHandle, + &gEfiIp6ConfigProtocolGuid, +- (VOID **) &Private->Ip6Cfg ++ (VOID **)&Private->Ip6Cfg + ); + if (EFI_ERROR (Status)) { + goto ON_ERROR; +@@ -1098,9 +1094,9 @@ PxeBcCreateIp6Children ( + // Create a device path node for Ipv6 virtual nic, and append it. + // + ZeroMem (&Ip6Node, sizeof (IPv6_DEVICE_PATH)); +- Ip6Node.Header.Type = MESSAGING_DEVICE_PATH; +- Ip6Node.Header.SubType = MSG_IPv6_DP; +- Ip6Node.PrefixLength = IP6_PREFIX_LENGTH; ++ Ip6Node.Header.Type = MESSAGING_DEVICE_PATH; ++ Ip6Node.Header.SubType = MSG_IPv6_DP; ++ Ip6Node.PrefixLength = IP6_PREFIX_LENGTH; + + SetDevicePathNodeLength (&Ip6Node.Header, sizeof (Ip6Node)); + +@@ -1157,7 +1153,7 @@ PxeBcCreateIp6Children ( + Status = gBS->OpenProtocol ( + Private->Ip6Nic->Controller, + &gEfiSimpleNetworkProtocolGuid, +- (VOID **) &Snp, ++ (VOID **)&Snp, + This->DriverBindingHandle, + Private->Ip6Nic->Controller, + EFI_OPEN_PROTOCOL_BY_DRIVER|EFI_OPEN_PROTOCOL_EXCLUSIVE +@@ -1174,7 +1170,7 @@ PxeBcCreateIp6Children ( + Status = gBS->OpenProtocol ( + ControllerHandle, + &gEfiCallerIdGuid, +- (VOID **) &Id, ++ (VOID **)&Id, + This->DriverBindingHandle, + Private->Ip6Nic->Controller, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER +@@ -1192,15 +1188,15 @@ PxeBcCreateIp6Children ( + // + // Fail to get the data whether UNDI supports IPv6. Set default value. + // +- Private->Mode.Ipv6Available = TRUE; ++ Private->Mode.Ipv6Available = TRUE; + } + + if (!Private->Mode.Ipv6Available) { + goto ON_ERROR; + } + +- Udp6CfgData = &Private->Udp6CfgData; +- Ip6CfgData = &Private->Ip6CfgData; ++ Udp6CfgData = &Private->Udp6CfgData; ++ Ip6CfgData = &Private->Ip6CfgData; + + Udp6CfgData->AcceptAnyPort = TRUE; + Udp6CfgData->AllowDuplicatePort = TRUE; +@@ -1208,11 +1204,11 @@ PxeBcCreateIp6Children ( + Udp6CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; + Udp6CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; + +- Ip6CfgData->AcceptIcmpErrors = TRUE; +- Ip6CfgData->DefaultProtocol = IP6_ICMP; +- Ip6CfgData->HopLimit = PXEBC_DEFAULT_HOPLIMIT; +- Ip6CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; +- Ip6CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; ++ Ip6CfgData->AcceptIcmpErrors = TRUE; ++ Ip6CfgData->DefaultProtocol = IP6_ICMP; ++ Ip6CfgData->HopLimit = PXEBC_DEFAULT_HOPLIMIT; ++ Ip6CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; ++ Ip6CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; + + return EFI_SUCCESS; + +@@ -1221,7 +1217,6 @@ ON_ERROR: + return Status; + } + +- + /** + The entry point for UefiPxeBc driver that installs the driver + binding and component name protocol on its image. +@@ -1236,13 +1231,13 @@ ON_ERROR: + EFI_STATUS + EFIAPI + PxeBcDriverEntryPoint ( +- IN EFI_HANDLE ImageHandle, +- IN EFI_SYSTEM_TABLE *SystemTable ++ IN EFI_HANDLE ImageHandle, ++ IN EFI_SYSTEM_TABLE *SystemTable + ) + { + EFI_STATUS Status; + +- if ((PcdGet8(PcdIPv4PXESupport) == PXE_DISABLED) && (PcdGet8(PcdIPv6PXESupport) == PXE_DISABLED)) { ++ if ((PcdGet8 (PcdIPv4PXESupport) == PXE_DISABLED) && (PcdGet8 (PcdIPv6PXESupport) == PXE_DISABLED)) { + return EFI_UNSUPPORTED; + } + +@@ -1300,20 +1295,22 @@ PxeBcSupported ( + IN UINT8 IpVersion + ) + { +- EFI_STATUS Status; +- EFI_GUID *DhcpServiceBindingGuid; +- EFI_GUID *MtftpServiceBindingGuid; ++ EFI_STATUS Status; ++ EFI_GUID *DhcpServiceBindingGuid; ++ EFI_GUID *MtftpServiceBindingGuid; + + if (IpVersion == IP_VERSION_4) { +- if (PcdGet8(PcdIPv4PXESupport) == PXE_DISABLED) { ++ if (PcdGet8 (PcdIPv4PXESupport) == PXE_DISABLED) { + return EFI_UNSUPPORTED; + } ++ + DhcpServiceBindingGuid = &gEfiDhcp4ServiceBindingProtocolGuid; + MtftpServiceBindingGuid = &gEfiMtftp4ServiceBindingProtocolGuid; + } else { +- if (PcdGet8(PcdIPv6PXESupport) == PXE_DISABLED) { ++ if (PcdGet8 (PcdIPv6PXESupport) == PXE_DISABLED) { + return EFI_UNSUPPORTED; + } ++ + DhcpServiceBindingGuid = &gEfiDhcp6ServiceBindingProtocolGuid; + MtftpServiceBindingGuid = &gEfiMtftp6ServiceBindingProtocolGuid; + } +@@ -1322,22 +1319,22 @@ PxeBcSupported ( + // Try to open the Mtftp and Dhcp protocol to test whether IP stack is ready. + // + Status = gBS->OpenProtocol ( +- ControllerHandle, +- DhcpServiceBindingGuid, +- NULL, +- This->DriverBindingHandle, +- ControllerHandle, +- EFI_OPEN_PROTOCOL_TEST_PROTOCOL +- ); ++ ControllerHandle, ++ DhcpServiceBindingGuid, ++ NULL, ++ This->DriverBindingHandle, ++ ControllerHandle, ++ EFI_OPEN_PROTOCOL_TEST_PROTOCOL ++ ); + if (!EFI_ERROR (Status)) { + Status = gBS->OpenProtocol ( +- ControllerHandle, +- MtftpServiceBindingGuid, +- NULL, +- This->DriverBindingHandle, +- ControllerHandle, +- EFI_OPEN_PROTOCOL_TEST_PROTOCOL +- ); ++ ControllerHandle, ++ MtftpServiceBindingGuid, ++ NULL, ++ This->DriverBindingHandle, ++ ControllerHandle, ++ EFI_OPEN_PROTOCOL_TEST_PROTOCOL ++ ); + } + + // +@@ -1375,20 +1372,20 @@ PxeBcStart ( + IN UINT8 IpVersion + ) + { +- PXEBC_PRIVATE_DATA *Private; +- EFI_STATUS Status; +- PXEBC_PRIVATE_PROTOCOL *Id; +- BOOLEAN FirstStart; ++ PXEBC_PRIVATE_DATA *Private; ++ EFI_STATUS Status; ++ PXEBC_PRIVATE_PROTOCOL *Id; ++ BOOLEAN FirstStart; + + FirstStart = FALSE; +- Status = gBS->OpenProtocol ( +- ControllerHandle, +- &gEfiCallerIdGuid, +- (VOID **) &Id, +- This->DriverBindingHandle, +- ControllerHandle, +- EFI_OPEN_PROTOCOL_GET_PROTOCOL +- ); ++ Status = gBS->OpenProtocol ( ++ ControllerHandle, ++ &gEfiCallerIdGuid, ++ (VOID **)&Id, ++ This->DriverBindingHandle, ++ ControllerHandle, ++ EFI_OPEN_PROTOCOL_GET_PROTOCOL ++ ); + if (!EFI_ERROR (Status)) { + // + // Skip the initialization if the driver has been started already. +@@ -1425,7 +1422,7 @@ PxeBcStart ( + Status = gBS->OpenProtocol ( + ControllerHandle, + &gEfiDevicePathProtocolGuid, +- (VOID **) &Private->DevicePath, ++ (VOID **)&Private->DevicePath, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -1441,7 +1438,7 @@ PxeBcStart ( + Status = gBS->OpenProtocol ( + ControllerHandle, + &gEfiNetworkInterfaceIdentifierProtocolGuid_31, +- (VOID **) &Private->Nii, ++ (VOID **)&Private->Nii, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -1469,7 +1466,7 @@ PxeBcStart ( + // + // Try to locate SNP protocol. + // +- NetLibGetSnpHandle(ControllerHandle, &Private->Snp); ++ NetLibGetSnpHandle (ControllerHandle, &Private->Snp); + } + + if (IpVersion == IP_VERSION_4) { +@@ -1483,6 +1480,7 @@ PxeBcStart ( + // + Status = PxeBcCreateIp6Children (This, ControllerHandle, Private); + } ++ + if (EFI_ERROR (Status)) { + // + // Failed to start PXE driver if IPv4 and IPv6 stack are both not available. +@@ -1508,14 +1506,13 @@ ON_ERROR: + PxeBcDestroyIp6Children (This, Private); + } + +- if (FirstStart && Private != NULL) { ++ if (FirstStart && (Private != NULL)) { + FreePool (Private); + } + + return Status; + } + +- + /** + Stop this driver on ControllerHandle. This is the worker function for + PxeBcIp4(6)DriverBindingStop. +@@ -1542,12 +1539,12 @@ PxeBcStop ( + IN UINT8 IpVersion + ) + { +- PXEBC_PRIVATE_DATA *Private; +- PXEBC_VIRTUAL_NIC *VirtualNic; +- EFI_LOAD_FILE_PROTOCOL *LoadFile; +- EFI_STATUS Status; +- EFI_HANDLE NicHandle; +- PXEBC_PRIVATE_PROTOCOL *Id; ++ PXEBC_PRIVATE_DATA *Private; ++ PXEBC_VIRTUAL_NIC *VirtualNic; ++ EFI_LOAD_FILE_PROTOCOL *LoadFile; ++ EFI_STATUS Status; ++ EFI_HANDLE NicHandle; ++ PXEBC_PRIVATE_PROTOCOL *Id; + + Private = NULL; + NicHandle = NULL; +@@ -1558,7 +1555,7 @@ PxeBcStop ( + Status = gBS->OpenProtocol ( + ControllerHandle, + &gEfiLoadFileProtocolGuid, +- (VOID **) &LoadFile, ++ (VOID **)&LoadFile, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -1572,6 +1569,7 @@ PxeBcStop ( + } else { + NicHandle = PxeBcGetNicByIp6Children (ControllerHandle); + } ++ + if (NicHandle == NULL) { + return EFI_SUCCESS; + } +@@ -1582,7 +1580,7 @@ PxeBcStop ( + Status = gBS->OpenProtocol ( + NicHandle, + &gEfiCallerIdGuid, +- (VOID **) &Id, ++ (VOID **)&Id, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -1590,8 +1588,8 @@ PxeBcStop ( + if (EFI_ERROR (Status)) { + return Status; + } +- Private = PXEBC_PRIVATE_DATA_FROM_ID (Id); + ++ Private = PXEBC_PRIVATE_DATA_FROM_ID (Id); + } else { + // + // It's a virtual handle with LoadFileProtocol. +@@ -1599,7 +1597,7 @@ PxeBcStop ( + Status = gBS->OpenProtocol ( + ControllerHandle, + &gEfiLoadFileProtocolGuid, +- (VOID **) &LoadFile, ++ (VOID **)&LoadFile, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL +@@ -1617,20 +1615,19 @@ PxeBcStop ( + // Stop functionality of PXE Base Code protocol + // + Status = Private->PxeBc.Stop (&Private->PxeBc); +- if (Status != EFI_SUCCESS && Status != EFI_NOT_STARTED) { ++ if ((Status != EFI_SUCCESS) && (Status != EFI_NOT_STARTED)) { + return Status; + } + +- +- if (Private->Ip4Nic != NULL && IpVersion == IP_VERSION_4) { ++ if ((Private->Ip4Nic != NULL) && (IpVersion == IP_VERSION_4)) { + PxeBcDestroyIp4Children (This, Private); + } + +- if (Private->Ip6Nic != NULL && IpVersion == IP_VERSION_6) { ++ if ((Private->Ip6Nic != NULL) && (IpVersion == IP_VERSION_6)) { + PxeBcDestroyIp6Children (This, Private); + } + +- if (Private->Ip4Nic == NULL && Private->Ip6Nic == NULL) { ++ if ((Private->Ip4Nic == NULL) && (Private->Ip6Nic == NULL)) { + gBS->UninstallProtocolInterface ( + NicHandle, + &gEfiCallerIdGuid, +-- +2.39.3 + diff --git a/edk2-NetworkPkg-SECURITY-PATCH-CVE-2023-45237.patch b/edk2-NetworkPkg-SECURITY-PATCH-CVE-2023-45237.patch new file mode 100644 index 0000000..92ddff3 --- /dev/null +++ b/edk2-NetworkPkg-SECURITY-PATCH-CVE-2023-45237.patch @@ -0,0 +1,1252 @@ +From 43f2ff1b06ea010f06cdef68eebc9e0280489477 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Tue, 11 Jun 2024 15:19:39 -0400 +Subject: [PATCH 24/31] NetworkPkg: SECURITY PATCH CVE-2023-45237 + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [24/31] 3fc9b5e3d0ab3a20c139601292fed66a6a089644 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 +Conflicts: Did not add NetworkPkg/SecurityFixes.yaml + +commit 4c4ceb2ceb80c42fd5545b2a4bd80321f07f4345 +Author: Doug Flick +Date: Wed May 8 22:56:28 2024 -0700 + + NetworkPkg: SECURITY PATCH CVE-2023-45237 + + REF:https://bugzilla.tianocore.org/show_bug.cgi?id=4542 + + Bug Overview: + PixieFail Bug #9 + CVE-2023-45237 + CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N + CWE-338 Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) + + Use of a Weak PseudoRandom Number Generator + + Change Overview: + + Updates all Instances of NET_RANDOM (NetRandomInitSeed ()) to either + + > + > EFI_STATUS + > EFIAPI + > PseudoRandomU32 ( + > OUT UINT32 *Output + > ); + > + + or (depending on the use case) + + > + > EFI_STATUS + > EFIAPI + > PseudoRandom ( + > OUT VOID *Output, + > IN UINTN OutputLength + > ); + > + + This is because the use of + + Example: + + The following code snippet PseudoRandomU32 () function is used: + + > + > UINT32 Random; + > + > Status = PseudoRandomU32 (&Random); + > if (EFI_ERROR (Status)) { + > DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", + __func__, Status)); + > return Status; + > } + > + This also introduces a new PCD to enable/disable the use of the + secure implementation of algorithms for PseudoRandom () and + instead depend on the default implementation. This may be required for + some platforms where the UEFI Spec defined algorithms are not available. + + > + > PcdEnforceSecureRngAlgorithms + > + + If the platform does not have any one of the UEFI defined + secure RNG algorithms then the driver will assert. + + Cc: Saloni Kasbekar + Cc: Zachary Clark-williams + + Signed-off-by: Doug Flick [MSFT] + Reviewed-by: Saloni Kasbekar + +Signed-off-by: Jon Maloy +--- + NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c | 10 +- + NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c | 11 +- + NetworkPkg/DnsDxe/DnsDhcp.c | 10 +- + NetworkPkg/DnsDxe/DnsImpl.c | 11 +- + NetworkPkg/HttpBootDxe/HttpBootDhcp6.c | 10 +- + NetworkPkg/IScsiDxe/IScsiCHAP.c | 19 ++- + NetworkPkg/IScsiDxe/IScsiMisc.c | 14 +-- + NetworkPkg/IScsiDxe/IScsiMisc.h | 6 +- + NetworkPkg/Include/Library/NetLib.h | 40 +++++-- + NetworkPkg/Ip4Dxe/Ip4Driver.c | 10 +- + NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c | 9 +- + NetworkPkg/Ip6Dxe/Ip6Driver.c | 17 ++- + NetworkPkg/Ip6Dxe/Ip6If.c | 12 +- + NetworkPkg/Ip6Dxe/Ip6Mld.c | 12 +- + NetworkPkg/Ip6Dxe/Ip6Nd.c | 33 +++++- + NetworkPkg/Ip6Dxe/Ip6Nd.h | 8 +- + NetworkPkg/Library/DxeNetLib/DxeNetLib.c | 130 ++++++++++++++++++--- + NetworkPkg/Library/DxeNetLib/DxeNetLib.inf | 14 ++- + NetworkPkg/NetworkPkg.dec | 7 ++ + NetworkPkg/TcpDxe/TcpDriver.c | 15 ++- + NetworkPkg/TcpDxe/TcpDxe.inf | 3 + + NetworkPkg/Udp4Dxe/Udp4Driver.c | 10 +- + NetworkPkg/Udp6Dxe/Udp6Driver.c | 11 +- + NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c | 9 +- + NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c | 11 +- + NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c | 12 +- + 26 files changed, 371 insertions(+), 83 deletions(-) + +diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c b/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c +index 8c37e93be3..892caee368 100644 +--- a/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c ++++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c +@@ -1,6 +1,7 @@ + /** @file + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
++Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -189,6 +190,13 @@ Dhcp4CreateService ( + { + DHCP_SERVICE *DhcpSb; + EFI_STATUS Status; ++ UINT32 Random; ++ ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } + + *Service = NULL; + DhcpSb = AllocateZeroPool (sizeof (DHCP_SERVICE)); +@@ -203,7 +211,7 @@ Dhcp4CreateService ( + DhcpSb->Image = ImageHandle; + InitializeListHead (&DhcpSb->Children); + DhcpSb->DhcpState = Dhcp4Stopped; +- DhcpSb->Xid = NET_RANDOM (NetRandomInitSeed ()); ++ DhcpSb->Xid = Random; + CopyMem ( + &DhcpSb->ServiceBinding, + &mDhcp4ServiceBindingTemplate, +diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c b/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c +index b591a4605b..e7f2787a98 100644 +--- a/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c ++++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c +@@ -3,7 +3,7 @@ + implementation for Dhcp6 Driver. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+- ++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -123,6 +123,13 @@ Dhcp6CreateService ( + { + DHCP6_SERVICE *Dhcp6Srv; + EFI_STATUS Status; ++ UINT32 Random; ++ ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } + + *Service = NULL; + Dhcp6Srv = AllocateZeroPool (sizeof (DHCP6_SERVICE)); +@@ -147,7 +154,7 @@ Dhcp6CreateService ( + Dhcp6Srv->Signature = DHCP6_SERVICE_SIGNATURE; + Dhcp6Srv->Controller = Controller; + Dhcp6Srv->Image = ImageHandle; +- Dhcp6Srv->Xid = (0xffffff & NET_RANDOM (NetRandomInitSeed ())); ++ Dhcp6Srv->Xid = (0xffffff & Random); + + CopyMem ( + &Dhcp6Srv->ServiceBinding, +diff --git a/NetworkPkg/DnsDxe/DnsDhcp.c b/NetworkPkg/DnsDxe/DnsDhcp.c +index 933565a32d..9eb3c1d2d8 100644 +--- a/NetworkPkg/DnsDxe/DnsDhcp.c ++++ b/NetworkPkg/DnsDxe/DnsDhcp.c +@@ -2,6 +2,7 @@ + Functions implementation related with DHCPv4/v6 for DNS driver. + + Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
++Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -277,6 +278,7 @@ GetDns4ServerFromDhcp4 ( + EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN Token; + BOOLEAN IsDone; + UINTN Index; ++ UINT32 Random; + + Image = Instance->Service->ImageHandle; + Controller = Instance->Service->ControllerHandle; +@@ -292,6 +294,12 @@ GetDns4ServerFromDhcp4 ( + Data = NULL; + InterfaceInfo = NULL; + ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } ++ + ZeroMem ((UINT8 *)ParaList, sizeof (ParaList)); + + ZeroMem (&MnpConfigData, sizeof (EFI_MANAGED_NETWORK_CONFIG_DATA)); +@@ -467,7 +475,7 @@ GetDns4ServerFromDhcp4 ( + + Status = Dhcp4->Build (Dhcp4, &SeedPacket, 0, NULL, 2, ParaList, &Token.Packet); + +- Token.Packet->Dhcp4.Header.Xid = HTONL (NET_RANDOM (NetRandomInitSeed ())); ++ Token.Packet->Dhcp4.Header.Xid = Random; + + Token.Packet->Dhcp4.Header.Reserved = HTONS ((UINT16)0x8000); + +diff --git a/NetworkPkg/DnsDxe/DnsImpl.c b/NetworkPkg/DnsDxe/DnsImpl.c +index d311812800..c2629bb8df 100644 +--- a/NetworkPkg/DnsDxe/DnsImpl.c ++++ b/NetworkPkg/DnsDxe/DnsImpl.c +@@ -2,6 +2,7 @@ + DnsDxe support functions implementation. + + Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.
++Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -1963,6 +1964,14 @@ ConstructDNSQuery ( + NET_FRAGMENT Frag; + DNS_HEADER *DnsHeader; + DNS_QUERY_SECTION *DnsQuery; ++ EFI_STATUS Status; ++ UINT32 Random; ++ ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } + + // + // Messages carried by UDP are restricted to 512 bytes (not counting the IP +@@ -1977,7 +1986,7 @@ ConstructDNSQuery ( + // Fill header + // + DnsHeader = (DNS_HEADER *)Frag.Bulk; +- DnsHeader->Identification = (UINT16)NET_RANDOM (NetRandomInitSeed ()); ++ DnsHeader->Identification = (UINT16)Random; + DnsHeader->Flags.Uint16 = 0x0000; + DnsHeader->Flags.Bits.RD = 1; + DnsHeader->Flags.Bits.OpCode = DNS_FLAGS_OPCODE_STANDARD; +diff --git a/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c b/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c +index b22cef4ff5..f964515b0f 100644 +--- a/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c ++++ b/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c +@@ -2,6 +2,7 @@ + Functions implementation related with DHCPv6 for HTTP boot driver. + + Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
++Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -951,6 +952,7 @@ HttpBootDhcp6Sarr ( + UINT32 OptCount; + UINT8 Buffer[HTTP_BOOT_DHCP6_OPTION_MAX_SIZE]; + EFI_STATUS Status; ++ UINT32 Random; + + Dhcp6 = Private->Dhcp6; + ASSERT (Dhcp6 != NULL); +@@ -961,6 +963,12 @@ HttpBootDhcp6Sarr ( + OptCount = HttpBootBuildDhcp6Options (Private, OptList, Buffer); + ASSERT (OptCount > 0); + ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } ++ + Retransmit = AllocateZeroPool (sizeof (EFI_DHCP6_RETRANSMISSION)); + if (Retransmit == NULL) { + return EFI_OUT_OF_RESOURCES; +@@ -976,7 +984,7 @@ HttpBootDhcp6Sarr ( + Config.IaInfoEvent = NULL; + Config.RapidCommit = FALSE; + Config.ReconfigureAccept = FALSE; +- Config.IaDescriptor.IaId = NET_RANDOM (NetRandomInitSeed ()); ++ Config.IaDescriptor.IaId = Random; + Config.IaDescriptor.Type = EFI_DHCP6_IA_TYPE_NA; + Config.SolicitRetransmission = Retransmit; + Retransmit->Irt = 4; +diff --git a/NetworkPkg/IScsiDxe/IScsiCHAP.c b/NetworkPkg/IScsiDxe/IScsiCHAP.c +index b507f11cd4..bebb1ac29b 100644 +--- a/NetworkPkg/IScsiDxe/IScsiCHAP.c ++++ b/NetworkPkg/IScsiDxe/IScsiCHAP.c +@@ -3,6 +3,7 @@ + Configuration. + + Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
++Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -576,16 +577,24 @@ IScsiCHAPToSendReq ( + // + // CHAP_I= + // +- IScsiGenRandom ((UINT8 *)&AuthData->OutIdentifier, 1); ++ Status = IScsiGenRandom ((UINT8 *)&AuthData->OutIdentifier, 1); ++ if (EFI_ERROR (Status)) { ++ break; ++ } ++ + AsciiSPrint (ValueStr, sizeof (ValueStr), "%d", AuthData->OutIdentifier); + IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_IDENTIFIER, ValueStr); + // + // CHAP_C= + // +- IScsiGenRandom ( +- (UINT8 *)AuthData->OutChallenge, +- AuthData->Hash->DigestSize +- ); ++ Status = IScsiGenRandom ( ++ (UINT8 *)AuthData->OutChallenge, ++ AuthData->Hash->DigestSize ++ ); ++ if (EFI_ERROR (Status)) { ++ break; ++ } ++ + BinToHexStatus = IScsiBinToHex ( + (UINT8 *)AuthData->OutChallenge, + AuthData->Hash->DigestSize, +diff --git a/NetworkPkg/IScsiDxe/IScsiMisc.c b/NetworkPkg/IScsiDxe/IScsiMisc.c +index b3ea90158f..cd77f1a13e 100644 +--- a/NetworkPkg/IScsiDxe/IScsiMisc.c ++++ b/NetworkPkg/IScsiDxe/IScsiMisc.c +@@ -2,6 +2,7 @@ + Miscellaneous routines for iSCSI driver. + + Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
++Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -474,20 +475,17 @@ IScsiNetNtoi ( + @param[in, out] Rand The buffer to contain random numbers. + @param[in] RandLength The length of the Rand buffer. + ++ @retval EFI_SUCCESS on success ++ @retval others on error ++ + **/ +-VOID ++EFI_STATUS + IScsiGenRandom ( + IN OUT UINT8 *Rand, + IN UINTN RandLength + ) + { +- UINT32 Random; +- +- while (RandLength > 0) { +- Random = NET_RANDOM (NetRandomInitSeed ()); +- *Rand++ = (UINT8)(Random); +- RandLength--; +- } ++ return PseudoRandom (Rand, RandLength); + } + + /** +diff --git a/NetworkPkg/IScsiDxe/IScsiMisc.h b/NetworkPkg/IScsiDxe/IScsiMisc.h +index fddef4f466..a8f814f7b8 100644 +--- a/NetworkPkg/IScsiDxe/IScsiMisc.h ++++ b/NetworkPkg/IScsiDxe/IScsiMisc.h +@@ -2,6 +2,7 @@ + Miscellaneous definitions for iSCSI driver. + + Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
++Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -205,8 +206,11 @@ IScsiNetNtoi ( + @param[in, out] Rand The buffer to contain random numbers. + @param[in] RandLength The length of the Rand buffer. + ++ @retval EFI_SUCCESS on success ++ @retval others on error ++ + **/ +-VOID ++EFI_STATUS + IScsiGenRandom ( + IN OUT UINT8 *Rand, + IN UINTN RandLength +diff --git a/NetworkPkg/Include/Library/NetLib.h b/NetworkPkg/Include/Library/NetLib.h +index 53495aa494..8c05e3da47 100644 +--- a/NetworkPkg/Include/Library/NetLib.h ++++ b/NetworkPkg/Include/Library/NetLib.h +@@ -3,6 +3,7 @@ + It provides basic functions for the UEFI network stack. + + Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.
++Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -539,8 +540,6 @@ extern EFI_IPv4_ADDRESS mZeroIp4Addr; + #define TICKS_PER_MS 10000U + #define TICKS_PER_SECOND 10000000U + +-#define NET_RANDOM(Seed) ((UINT32) ((UINT32) (Seed) * 1103515245UL + 12345) % 4294967295UL) +- + /** + Extract a UINT32 from a byte stream. + +@@ -580,19 +579,40 @@ NetPutUint32 ( + ); + + /** +- Initialize a random seed using current time and monotonic count. ++ Generate a Random output data given a length. + +- Get current time and monotonic count first. Then initialize a random seed +- based on some basic mathematics operation on the hour, day, minute, second, +- nanosecond and year of the current time and the monotonic count value. ++ @param[out] Output - The buffer to store the generated random data. ++ @param[in] OutputLength - The length of the output buffer. + +- @return The random seed initialized with current time. ++ @retval EFI_SUCCESS On Success ++ @retval EFI_INVALID_PARAMETER Pointer is null or size is zero ++ @retval EFI_NOT_FOUND RNG protocol not found ++ @retval Others Error from RngProtocol->GetRNG() + ++ @return Status code + **/ +-UINT32 ++EFI_STATUS + EFIAPI +-NetRandomInitSeed ( +- VOID ++PseudoRandom ( ++ OUT VOID *Output, ++ IN UINTN OutputLength ++ ); ++ ++/** ++ Generate a 32-bit pseudo-random number. ++ ++ @param[out] Output - The buffer to store the generated random number. ++ ++ @retval EFI_SUCCESS On Success ++ @retval EFI_NOT_FOUND RNG protocol not found ++ @retval Others Error from RngProtocol->GetRNG() ++ ++ @return Status code ++**/ ++EFI_STATUS ++EFIAPI ++PseudoRandomU32 ( ++ OUT UINT32 *Output + ); + + #define NET_LIST_USER_STRUCT(Entry, Type, Field) \ +diff --git a/NetworkPkg/Ip4Dxe/Ip4Driver.c b/NetworkPkg/Ip4Dxe/Ip4Driver.c +index ec483ff01f..683423f38d 100644 +--- a/NetworkPkg/Ip4Dxe/Ip4Driver.c ++++ b/NetworkPkg/Ip4Dxe/Ip4Driver.c +@@ -2,6 +2,7 @@ + The driver binding and service binding protocol for IP4 driver. + + Copyright (c) 2005 - 2019, Intel Corporation. All rights reserved.
++Copyright (c) Microsoft Corporation + (C) Copyright 2015 Hewlett-Packard Development Company, L.P.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent +@@ -549,11 +550,18 @@ Ip4DriverBindingStart ( + EFI_IP4_CONFIG2_PROTOCOL *Ip4Cfg2; + UINTN Index; + IP4_CONFIG2_DATA_ITEM *DataItem; ++ UINT32 Random; + + IpSb = NULL; + Ip4Cfg2 = NULL; + DataItem = NULL; + ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } ++ + // + // Test for the Ip4 service binding protocol + // +@@ -653,7 +661,7 @@ Ip4DriverBindingStart ( + // + // Initialize the IP4 ID + // +- mIp4Id = (UINT16)NET_RANDOM (NetRandomInitSeed ()); ++ mIp4Id = (UINT16)Random; + + return Status; + +diff --git a/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c b/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c +index ab38013369..a79fc89821 100644 +--- a/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c ++++ b/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c +@@ -2294,6 +2294,13 @@ Ip6ConfigInitInstance ( + UINTN Index; + UINT16 IfIndex; + IP6_CONFIG_DATA_ITEM *DataItem; ++ UINT32 Random; ++ ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } + + IpSb = IP6_SERVICE_FROM_IP6_CONFIG_INSTANCE (Instance); + +@@ -2399,7 +2406,7 @@ Ip6ConfigInitInstance ( + // The NV variable is not set, so generate a random IAID, and write down the + // fresh new configuration as the NV variable now. + // +- Instance->IaId = NET_RANDOM (NetRandomInitSeed ()); ++ Instance->IaId = Random; + + for (Index = 0; Index < IpSb->SnpMode.HwAddressSize; Index++) { + Instance->IaId |= (IpSb->SnpMode.CurrentAddress.Addr[Index] << ((Index << 3) & 31)); +diff --git a/NetworkPkg/Ip6Dxe/Ip6Driver.c b/NetworkPkg/Ip6Dxe/Ip6Driver.c +index 7c13d6a3d4..b73fcb4828 100644 +--- a/NetworkPkg/Ip6Dxe/Ip6Driver.c ++++ b/NetworkPkg/Ip6Dxe/Ip6Driver.c +@@ -3,7 +3,7 @@ + + Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.
+ (C) Copyright 2015 Hewlett-Packard Development Company, L.P.
+- ++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -315,7 +315,11 @@ Ip6CreateService ( + IpSb->CurHopLimit = IP6_HOP_LIMIT; + IpSb->LinkMTU = IP6_MIN_LINK_MTU; + IpSb->BaseReachableTime = IP6_REACHABLE_TIME; +- Ip6UpdateReachableTime (IpSb); ++ Status = Ip6UpdateReachableTime (IpSb); ++ if (EFI_ERROR (Status)) { ++ goto ON_ERROR; ++ } ++ + // + // RFC4861 RETRANS_TIMER: 1,000 milliseconds + // +@@ -515,11 +519,18 @@ Ip6DriverBindingStart ( + EFI_STATUS Status; + EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; + IP6_CONFIG_DATA_ITEM *DataItem; ++ UINT32 Random; + + IpSb = NULL; + Ip6Cfg = NULL; + DataItem = NULL; + ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } ++ + // + // Test for the Ip6 service binding protocol + // +@@ -655,7 +666,7 @@ Ip6DriverBindingStart ( + // + // Initialize the IP6 ID + // +- mIp6Id = NET_RANDOM (NetRandomInitSeed ()); ++ mIp6Id = Random; + + return EFI_SUCCESS; + +diff --git a/NetworkPkg/Ip6Dxe/Ip6If.c b/NetworkPkg/Ip6Dxe/Ip6If.c +index 4629c05f25..f3d11c4d21 100644 +--- a/NetworkPkg/Ip6Dxe/Ip6If.c ++++ b/NetworkPkg/Ip6Dxe/Ip6If.c +@@ -2,7 +2,7 @@ + Implement IP6 pseudo interface. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+- ++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -89,6 +89,14 @@ Ip6SetAddress ( + IP6_PREFIX_LIST_ENTRY *PrefixEntry; + UINT64 Delay; + IP6_DELAY_JOIN_LIST *DelayNode; ++ EFI_STATUS Status; ++ UINT32 Random; ++ ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } + + NET_CHECK_SIGNATURE (Interface, IP6_INTERFACE_SIGNATURE); + +@@ -164,7 +172,7 @@ Ip6SetAddress ( + // Thus queue the address to be processed in Duplicate Address Detection module + // after the delay time (in milliseconds). + // +- Delay = (UINT64)NET_RANDOM (NetRandomInitSeed ()); ++ Delay = (UINT64)Random; + Delay = MultU64x32 (Delay, IP6_ONE_SECOND_IN_MS); + Delay = RShiftU64 (Delay, 32); + +diff --git a/NetworkPkg/Ip6Dxe/Ip6Mld.c b/NetworkPkg/Ip6Dxe/Ip6Mld.c +index e6b2b653e2..498a118543 100644 +--- a/NetworkPkg/Ip6Dxe/Ip6Mld.c ++++ b/NetworkPkg/Ip6Dxe/Ip6Mld.c +@@ -696,7 +696,15 @@ Ip6UpdateDelayTimer ( + IN OUT IP6_MLD_GROUP *Group + ) + { +- UINT32 Delay; ++ UINT32 Delay; ++ EFI_STATUS Status; ++ UINT32 Random; ++ ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } + + // + // If the Query packet specifies a Maximum Response Delay of zero, perform timer +@@ -715,7 +723,7 @@ Ip6UpdateDelayTimer ( + // is less than the remaining value of the running timer. + // + if ((Group->DelayTimer == 0) || (Delay < Group->DelayTimer)) { +- Group->DelayTimer = Delay / 4294967295UL * NET_RANDOM (NetRandomInitSeed ()); ++ Group->DelayTimer = Delay / 4294967295UL * Random; + } + + return EFI_SUCCESS; +diff --git a/NetworkPkg/Ip6Dxe/Ip6Nd.c b/NetworkPkg/Ip6Dxe/Ip6Nd.c +index c10c7017f8..72aa45c10f 100644 +--- a/NetworkPkg/Ip6Dxe/Ip6Nd.c ++++ b/NetworkPkg/Ip6Dxe/Ip6Nd.c +@@ -2,7 +2,7 @@ + Implementation of Neighbor Discovery support routines. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+- ++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -16,17 +16,28 @@ EFI_MAC_ADDRESS mZeroMacAddress; + + @param[in, out] IpSb Points to the IP6_SERVICE. + ++ @retval EFI_SUCCESS ReachableTime Updated ++ @retval others Failed to update ReachableTime + **/ +-VOID ++EFI_STATUS + Ip6UpdateReachableTime ( + IN OUT IP6_SERVICE *IpSb + ) + { +- UINT32 Random; ++ UINT32 Random; ++ EFI_STATUS Status; + +- Random = (NetRandomInitSeed () / 4294967295UL) * IP6_RANDOM_FACTOR_SCALE; ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } ++ ++ Random = (Random / 4294967295UL) * IP6_RANDOM_FACTOR_SCALE; + Random = Random + IP6_MIN_RANDOM_FACTOR_SCALED; + IpSb->ReachableTime = (IpSb->BaseReachableTime * Random) / IP6_RANDOM_FACTOR_SCALE; ++ ++ return EFI_SUCCESS; + } + + /** +@@ -972,10 +983,17 @@ Ip6InitDADProcess ( + IP6_SERVICE *IpSb; + EFI_STATUS Status; + UINT32 MaxDelayTick; ++ UINT32 Random; + + NET_CHECK_SIGNATURE (IpIf, IP6_INTERFACE_SIGNATURE); + ASSERT (AddressInfo != NULL); + ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } ++ + // + // Do nothing if we have already started DAD on the address. + // +@@ -1014,7 +1032,7 @@ Ip6InitDADProcess ( + Entry->Transmit = 0; + Entry->Receive = 0; + MaxDelayTick = IP6_MAX_RTR_SOLICITATION_DELAY / IP6_TIMER_INTERVAL_IN_MS; +- Entry->RetransTick = (MaxDelayTick * ((NET_RANDOM (NetRandomInitSeed ()) % 5) + 1)) / 5; ++ Entry->RetransTick = (MaxDelayTick * ((Random % 5) + 1)) / 5; + Entry->AddressInfo = AddressInfo; + Entry->Callback = Callback; + Entry->Context = Context; +@@ -2078,7 +2096,10 @@ Ip6ProcessRouterAdvertise ( + // in BaseReachableTime and recompute a ReachableTime. + // + IpSb->BaseReachableTime = ReachableTime; +- Ip6UpdateReachableTime (IpSb); ++ Status = Ip6UpdateReachableTime (IpSb); ++ if (EFI_ERROR (Status)) { ++ goto Exit; ++ } + } + + if (RetransTimer != 0) { +diff --git a/NetworkPkg/Ip6Dxe/Ip6Nd.h b/NetworkPkg/Ip6Dxe/Ip6Nd.h +index bf64e9114e..5795e23c7d 100644 +--- a/NetworkPkg/Ip6Dxe/Ip6Nd.h ++++ b/NetworkPkg/Ip6Dxe/Ip6Nd.h +@@ -2,7 +2,7 @@ + Definition of Neighbor Discovery support routines. + + Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
+- ++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -780,10 +780,10 @@ Ip6OnArpResolved ( + /** + Update the ReachableTime in IP6 service binding instance data, in milliseconds. + +- @param[in, out] IpSb Points to the IP6_SERVICE. +- ++ @retval EFI_SUCCESS ReachableTime Updated ++ @retval others Failed to update ReachableTime + **/ +-VOID ++EFI_STATUS + Ip6UpdateReachableTime ( + IN OUT IP6_SERVICE *IpSb + ); +diff --git a/NetworkPkg/Library/DxeNetLib/DxeNetLib.c b/NetworkPkg/Library/DxeNetLib/DxeNetLib.c +index 0428abdda0..0bc9aef8cd 100644 +--- a/NetworkPkg/Library/DxeNetLib/DxeNetLib.c ++++ b/NetworkPkg/Library/DxeNetLib/DxeNetLib.c +@@ -3,6 +3,7 @@ + + Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.
+ (C) Copyright 2015 Hewlett Packard Enterprise Development LP
++Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + **/ + +@@ -31,6 +32,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + #include + #include + #include ++#include + + #define NIC_ITEM_CONFIG_SIZE (sizeof (NIC_IP4_CONFIG_INFO) + sizeof (EFI_IP4_ROUTE_TABLE) * MAX_IP4_CONFIG_IN_VARIABLE) + #define DEFAULT_ZERO_START ((UINTN) ~0) +@@ -127,6 +129,25 @@ GLOBAL_REMOVE_IF_UNREFERENCED VLAN_DEVICE_PATH mNetVlanDevicePathTemplate = { + 0 + }; + ++// ++// These represent UEFI SPEC defined algorithms that should be supported by ++// the RNG protocol and are generally considered secure. ++// ++// The order of the algorithms in this array is important. This order is the order ++// in which the algorithms will be tried by the RNG protocol. ++// If your platform needs to use a specific algorithm for the random number generator, ++// then you should place that algorithm first in the array. ++// ++GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID *mSecureHashAlgorithms[] = { ++ &gEfiRngAlgorithmSp80090Ctr256Guid, // SP800-90A DRBG CTR using AES-256 ++ &gEfiRngAlgorithmSp80090Hmac256Guid, // SP800-90A DRBG HMAC using SHA-256 ++ &gEfiRngAlgorithmSp80090Hash256Guid, // SP800-90A DRBG Hash using SHA-256 ++ &gEfiRngAlgorithmArmRndr, // unspecified SP800-90A DRBG via ARM RNDR register ++ &gEfiRngAlgorithmRaw, // Raw data from NRBG (or TRNG) ++}; ++ ++#define SECURE_HASH_ALGORITHMS_SIZE (sizeof (mSecureHashAlgorithms) / sizeof (EFI_GUID *)) ++ + /** + Locate the handles that support SNP, then open one of them + to send the syslog packets. The caller isn't required to close +@@ -884,34 +905,107 @@ Ip6Swap128 ( + } + + /** +- Initialize a random seed using current time and monotonic count. ++ Generate a Random output data given a length. + +- Get current time and monotonic count first. Then initialize a random seed +- based on some basic mathematics operation on the hour, day, minute, second, +- nanosecond and year of the current time and the monotonic count value. ++ @param[out] Output - The buffer to store the generated random data. ++ @param[in] OutputLength - The length of the output buffer. + +- @return The random seed initialized with current time. ++ @retval EFI_SUCCESS On Success ++ @retval EFI_INVALID_PARAMETER Pointer is null or size is zero ++ @retval EFI_NOT_FOUND RNG protocol not found ++ @retval Others Error from RngProtocol->GetRNG() + ++ @return Status code + **/ +-UINT32 ++EFI_STATUS + EFIAPI +-NetRandomInitSeed ( +- VOID ++PseudoRandom ( ++ OUT VOID *Output, ++ IN UINTN OutputLength + ) + { +- EFI_TIME Time; +- UINT32 Seed; +- UINT64 MonotonicCount; ++ EFI_RNG_PROTOCOL *RngProtocol; ++ EFI_STATUS Status; ++ UINTN AlgorithmIndex; ++ ++ if ((Output == NULL) || (OutputLength == 0)) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ Status = gBS->LocateProtocol (&gEfiRngProtocolGuid, NULL, (VOID **)&RngProtocol); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "Failed to locate EFI_RNG_PROTOCOL: %r\n", Status)); ++ ASSERT_EFI_ERROR (Status); ++ return Status; ++ } ++ ++ if (PcdGetBool (PcdEnforceSecureRngAlgorithms)) { ++ for (AlgorithmIndex = 0; AlgorithmIndex < SECURE_HASH_ALGORITHMS_SIZE; AlgorithmIndex++) { ++ Status = RngProtocol->GetRNG (RngProtocol, mSecureHashAlgorithms[AlgorithmIndex], OutputLength, (UINT8 *)Output); ++ if (!EFI_ERROR (Status)) { ++ // ++ // Secure Algorithm was supported on this platform ++ // ++ return EFI_SUCCESS; ++ } else if (Status == EFI_UNSUPPORTED) { ++ // ++ // Secure Algorithm was not supported on this platform ++ // ++ DEBUG ((DEBUG_ERROR, "Failed to generate random data using secure algorithm %d: %r\n", AlgorithmIndex, Status)); ++ ++ // ++ // Try the next secure algorithm ++ // ++ continue; ++ } else { ++ // ++ // Some other error occurred ++ // ++ DEBUG ((DEBUG_ERROR, "Failed to generate random data using secure algorithm %d: %r\n", AlgorithmIndex, Status)); ++ ASSERT_EFI_ERROR (Status); ++ return Status; ++ } ++ } ++ ++ // ++ // If we get here, we failed to generate random data using any secure algorithm ++ // Platform owner should ensure that at least one secure algorithm is supported ++ // ++ ASSERT_EFI_ERROR (Status); ++ return Status; ++ } ++ ++ // ++ // Lets try using the default algorithm (which may not be secure) ++ // ++ Status = RngProtocol->GetRNG (RngProtocol, NULL, OutputLength, (UINT8 *)Output); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random data: %r\n", __func__, Status)); ++ ASSERT_EFI_ERROR (Status); ++ return Status; ++ } + +- gRT->GetTime (&Time, NULL); +- Seed = (Time.Hour << 24 | Time.Day << 16 | Time.Minute << 8 | Time.Second); +- Seed ^= Time.Nanosecond; +- Seed ^= Time.Year << 7; ++ return EFI_SUCCESS; ++} ++ ++/** ++ Generate a 32-bit pseudo-random number. + +- gBS->GetNextMonotonicCount (&MonotonicCount); +- Seed += (UINT32)MonotonicCount; ++ @param[out] Output - The buffer to store the generated random number. + +- return Seed; ++ @retval EFI_SUCCESS On Success ++ @retval EFI_NOT_FOUND RNG protocol not found ++ @retval Others Error from RngProtocol->GetRNG() ++ ++ @return Status code ++**/ ++EFI_STATUS ++EFIAPI ++PseudoRandomU32 ( ++ OUT UINT32 *Output ++ ) ++{ ++ return PseudoRandom (Output, sizeof (*Output)); + } + + /** +diff --git a/NetworkPkg/Library/DxeNetLib/DxeNetLib.inf b/NetworkPkg/Library/DxeNetLib/DxeNetLib.inf +index 8145d256ec..a8f534a293 100644 +--- a/NetworkPkg/Library/DxeNetLib/DxeNetLib.inf ++++ b/NetworkPkg/Library/DxeNetLib/DxeNetLib.inf +@@ -3,6 +3,7 @@ + # + # Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ # (C) Copyright 2015 Hewlett Packard Enterprise Development LP
++# Copyright (c) Microsoft Corporation + # SPDX-License-Identifier: BSD-2-Clause-Patent + # + ## +@@ -49,7 +50,11 @@ + gEfiSmbiosTableGuid ## SOMETIMES_CONSUMES ## SystemTable + gEfiSmbios3TableGuid ## SOMETIMES_CONSUMES ## SystemTable + gEfiAdapterInfoMediaStateGuid ## SOMETIMES_CONSUMES +- ++ gEfiRngAlgorithmRaw ## CONSUMES ++ gEfiRngAlgorithmSp80090Ctr256Guid ## CONSUMES ++ gEfiRngAlgorithmSp80090Hmac256Guid ## CONSUMES ++ gEfiRngAlgorithmSp80090Hash256Guid ## CONSUMES ++ gEfiRngAlgorithmArmRndr ## CONSUMES + + [Protocols] + gEfiSimpleNetworkProtocolGuid ## SOMETIMES_CONSUMES +@@ -59,3 +64,10 @@ + gEfiComponentNameProtocolGuid ## SOMETIMES_CONSUMES + gEfiComponentName2ProtocolGuid ## SOMETIMES_CONSUMES + gEfiAdapterInformationProtocolGuid ## SOMETIMES_CONSUMES ++ gEfiRngProtocolGuid ## CONSUMES ++ ++[FixedPcd] ++ gEfiNetworkPkgTokenSpaceGuid.PcdEnforceSecureRngAlgorithms ## CONSUMES ++ ++[Depex] ++ gEfiRngProtocolGuid +diff --git a/NetworkPkg/NetworkPkg.dec b/NetworkPkg/NetworkPkg.dec +index 928e84fec4..ff335e957c 100644 +--- a/NetworkPkg/NetworkPkg.dec ++++ b/NetworkPkg/NetworkPkg.dec +@@ -5,6 +5,7 @@ + # + # Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.
+ # (C) Copyright 2015-2020 Hewlett Packard Enterprise Development LP
++# Copyright (c) Microsoft Corporation + # + # SPDX-License-Identifier: BSD-2-Clause-Patent + # +@@ -127,6 +128,12 @@ + # @Prompt Indicates whether SnpDxe creates event for ExitBootServices() call. + gEfiNetworkPkgTokenSpaceGuid.PcdSnpCreateExitBootServicesEvent|TRUE|BOOLEAN|0x1000000C + ++ ## Enforces the use of Secure UEFI spec defined RNG algorithms for all network connections. ++ # TRUE - Enforce the use of Secure UEFI spec defined RNG algorithms. ++ # FALSE - Do not enforce and depend on the default implementation of RNG algorithm from the provider. ++ # @Prompt Enforce the use of Secure UEFI spec defined RNG algorithms. ++ gEfiNetworkPkgTokenSpaceGuid.PcdEnforceSecureRngAlgorithms|TRUE|BOOLEAN|0x1000000D ++ + [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx] + ## IPv6 DHCP Unique Identifier (DUID) Type configuration (From RFCs 3315 and 6355). + # 01 = DUID Based on Link-layer Address Plus Time [DUID-LLT] +diff --git a/NetworkPkg/TcpDxe/TcpDriver.c b/NetworkPkg/TcpDxe/TcpDriver.c +index 8a75b4b55b..430911c2f4 100644 +--- a/NetworkPkg/TcpDxe/TcpDriver.c ++++ b/NetworkPkg/TcpDxe/TcpDriver.c +@@ -2,7 +2,7 @@ + The driver binding and service binding protocol for the TCP driver. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+- ++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -163,7 +163,13 @@ TcpDriverEntryPoint ( + ) + { + EFI_STATUS Status; +- UINT32 Seed; ++ UINT32 Random; ++ ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a Failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } + + // + // Install the TCP Driver Binding Protocol +@@ -203,9 +209,8 @@ TcpDriverEntryPoint ( + // + // Initialize ISS and random port. + // +- Seed = NetRandomInitSeed (); +- mTcpGlobalIss = NET_RANDOM (Seed) % mTcpGlobalIss; +- mTcp4RandomPort = (UINT16)(TCP_PORT_KNOWN + (NET_RANDOM (Seed) % TCP_PORT_KNOWN)); ++ mTcpGlobalIss = Random % mTcpGlobalIss; ++ mTcp4RandomPort = (UINT16)(TCP_PORT_KNOWN + (Random % TCP_PORT_KNOWN)); + mTcp6RandomPort = mTcp4RandomPort; + + return EFI_SUCCESS; +diff --git a/NetworkPkg/TcpDxe/TcpDxe.inf b/NetworkPkg/TcpDxe/TcpDxe.inf +index c0acbdca57..cf5423f4c5 100644 +--- a/NetworkPkg/TcpDxe/TcpDxe.inf ++++ b/NetworkPkg/TcpDxe/TcpDxe.inf +@@ -82,5 +82,8 @@ + gEfiTcp6ProtocolGuid ## BY_START + gEfiTcp6ServiceBindingProtocolGuid ## BY_START + ++[Depex] ++ gEfiHash2ServiceBindingProtocolGuid ++ + [UserExtensions.TianoCore."ExtraFiles"] + TcpDxeExtra.uni +diff --git a/NetworkPkg/Udp4Dxe/Udp4Driver.c b/NetworkPkg/Udp4Dxe/Udp4Driver.c +index cb917fcfc9..c7ea16f4cd 100644 +--- a/NetworkPkg/Udp4Dxe/Udp4Driver.c ++++ b/NetworkPkg/Udp4Dxe/Udp4Driver.c +@@ -1,6 +1,7 @@ + /** @file + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
++Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -555,6 +556,13 @@ Udp4DriverEntryPoint ( + ) + { + EFI_STATUS Status; ++ UINT32 Random; ++ ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } + + // + // Install the Udp4DriverBinding and Udp4ComponentName protocols. +@@ -571,7 +579,7 @@ Udp4DriverEntryPoint ( + // + // Initialize the UDP random port. + // +- mUdp4RandomPort = (UINT16)(((UINT16)NetRandomInitSeed ()) % UDP4_PORT_KNOWN + UDP4_PORT_KNOWN); ++ mUdp4RandomPort = (UINT16)(((UINT16)Random) % UDP4_PORT_KNOWN + UDP4_PORT_KNOWN); + } + + return Status; +diff --git a/NetworkPkg/Udp6Dxe/Udp6Driver.c b/NetworkPkg/Udp6Dxe/Udp6Driver.c +index ae96fb9966..edb758d57c 100644 +--- a/NetworkPkg/Udp6Dxe/Udp6Driver.c ++++ b/NetworkPkg/Udp6Dxe/Udp6Driver.c +@@ -2,7 +2,7 @@ + Driver Binding functions and Service Binding functions for the Network driver module. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+- ++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -596,6 +596,13 @@ Udp6DriverEntryPoint ( + ) + { + EFI_STATUS Status; ++ UINT32 Random; ++ ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } + + // + // Install the Udp6DriverBinding and Udp6ComponentName protocols. +@@ -614,7 +621,7 @@ Udp6DriverEntryPoint ( + // Initialize the UDP random port. + // + mUdp6RandomPort = (UINT16)( +- ((UINT16)NetRandomInitSeed ()) % ++ ((UINT16)Random) % + UDP6_PORT_KNOWN + + UDP6_PORT_KNOWN + ); +diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c +index 874fc2c37b..5f13352566 100644 +--- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c ++++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c +@@ -2,7 +2,7 @@ + Functions implementation related with DHCPv4 for UefiPxeBc Driver. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+- ++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -1381,6 +1381,12 @@ PxeBcDhcp4Discover ( + UINT8 VendorOptLen; + UINT32 Xid; + ++ Status = PseudoRandomU32 (&Xid); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } ++ + Mode = Private->PxeBc.Mode; + Dhcp4 = Private->Dhcp4; + Status = EFI_SUCCESS; +@@ -1470,7 +1476,6 @@ PxeBcDhcp4Discover ( + // + // Set fields of the token for the request packet. + // +- Xid = NET_RANDOM (NetRandomInitSeed ()); + Token.Packet->Dhcp4.Header.Xid = HTONL (Xid); + Token.Packet->Dhcp4.Header.Reserved = HTONS ((UINT16) ((IsBCast) ? 0x8000 : 0x0)); + CopyMem (&Token.Packet->Dhcp4.Header.ClientAddr, &Private->StationIp, sizeof (EFI_IPv4_ADDRESS)); +diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c +index 7fd1281c11..bcabbd2219 100644 +--- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c ++++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c +@@ -2180,7 +2180,7 @@ PxeBcDhcp6Discover ( + UINTN ReadSize; + UINT16 OpCode; + UINT16 OpLen; +- UINT32 Xid; ++ UINT32 Random; + EFI_STATUS Status; + UINTN DiscoverLenNeeded; + +@@ -2198,6 +2198,12 @@ PxeBcDhcp6Discover ( + return EFI_DEVICE_ERROR; + } + ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } ++ + DiscoverLenNeeded = sizeof (EFI_PXE_BASE_CODE_DHCPV6_PACKET); + Discover = AllocateZeroPool (DiscoverLenNeeded); + if (Discover == NULL) { +@@ -2207,8 +2213,7 @@ PxeBcDhcp6Discover ( + // + // Build the discover packet by the cached request packet before. + // +- Xid = NET_RANDOM (NetRandomInitSeed ()); +- Discover->TransactionId = HTONL (Xid); ++ Discover->TransactionId = HTONL (Random); + Discover->MessageType = Request->Dhcp6.Header.MessageType; + RequestOpt = Request->Dhcp6.Option; + DiscoverOpt = Discover->DhcpOptions; +diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c +index d84aca7e85..4cd915b411 100644 +--- a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c ++++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c +@@ -3,6 +3,7 @@ + + (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
+ Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.
++ Copyright (c) Microsoft Corporation + + SPDX-License-Identifier: BSD-2-Clause-Patent + +@@ -892,6 +893,13 @@ PxeBcCreateIp6Children ( + PXEBC_PRIVATE_PROTOCOL *Id; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + UINTN Index; ++ UINT32 Random; ++ ++ Status = PseudoRandomU32 (&Random); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "Failed to generate random number using EFI_RNG_PROTOCOL: %r\n", Status)); ++ return Status; ++ } + + if (Private->Ip6Nic != NULL) { + // +@@ -935,9 +943,9 @@ PxeBcCreateIp6Children ( + } + + // +- // Generate a random IAID for the Dhcp6 assigned address. ++ // Set a random IAID for the Dhcp6 assigned address. + // +- Private->IaId = NET_RANDOM (NetRandomInitSeed ()); ++ Private->IaId = Random; + if (Private->Snp != NULL) { + for (Index = 0; Index < Private->Snp->Mode->HwAddressSize; Index++) { + Private->IaId |= (Private->Snp->Mode->CurrentAddress.Addr[Index] << ((Index << 3) & 31)); +-- +2.39.3 + diff --git a/edk2-NetworkPkg-TcpDxe-Fixed-system-stuck-on-PXE-boot-flo.patch b/edk2-NetworkPkg-TcpDxe-Fixed-system-stuck-on-PXE-boot-flo.patch new file mode 100644 index 0000000..ad2adac --- /dev/null +++ b/edk2-NetworkPkg-TcpDxe-Fixed-system-stuck-on-PXE-boot-flo.patch @@ -0,0 +1,74 @@ +From 6eceae607639b46ea46ba26a288270bd1c97dc0f Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 13 Jun 2024 18:35:46 -0400 +Subject: [PATCH 31/31] NetworkPkg TcpDxe: Fixed system stuck on PXE boot flow + in iPXE environment +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [31/31] 2088a79fef3d6dfec032f2f560ccf87ae42d786f + +JIRA: https://issues.redhat.com/browse/RHEL-21854 +Upstream: Merged +CVE: CVE-2023-45236 + +commit ced13b93afea87a8a1fe6ddbb67240a84cb2e3d3 +Author: Sam +Date: Wed May 29 07:46:03 2024 +0800 + + NetworkPkg TcpDxe: Fixed system stuck on PXE boot flow in iPXE environment + + This bug fix is based on the following commit "NetworkPkg TcpDxe: SECURITY PATCH" + REF: 1904a64 + + Issue Description: + An "Invalid handle" error was detected during runtime when attempting to destroy a child instance of the hashing protocol. The problematic code segment was: + + NetworkPkg\TcpDxe\TcpDriver.c + Status = Hash2ServiceBinding->DestroyChild(Hash2ServiceBinding, ​&mHash2ServiceHandle); + + Root Cause Analysis: + The root cause of the error was the passing of an incorrect parameter type, a pointer to an EFI_HANDLE instead of an EFI_HANDLE itself, to the DestroyChild function. This mismatch resulted in the function receiving an invalid handle. + + Implemented Solution: + To resolve this issue, the function call was corrected to pass mHash2ServiceHandle directly: + + NetworkPkg\TcpDxe\TcpDriver.c + Status = Hash2ServiceBinding->DestroyChild(Hash2ServiceBinding, mHash2ServiceHandle); + + This modification ensures the correct handle type is used, effectively rectifying the "Invalid handle" error. + + Verification: + Testing has been conducted, confirming the efficacy of the fix. Additionally, the BIOS can boot into the OS in an iPXE environment. + + Cc: Doug Flick [MSFT] + + Signed-off-by: Sam Tsai [Wiwynn] + Reviewed-by: Saloni Kasbekar + +Signed-off-by: Jon Maloy +--- + NetworkPkg/TcpDxe/TcpDriver.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/NetworkPkg/TcpDxe/TcpDriver.c b/NetworkPkg/TcpDxe/TcpDriver.c +index 34ae838ae0..1aec292501 100644 +--- a/NetworkPkg/TcpDxe/TcpDriver.c ++++ b/NetworkPkg/TcpDxe/TcpDriver.c +@@ -509,7 +509,7 @@ TcpDestroyService ( + // + // Destroy the instance of the hashing protocol for this controller. + // +- Status = Hash2ServiceBinding->DestroyChild (Hash2ServiceBinding, &mHash2ServiceHandle); ++ Status = Hash2ServiceBinding->DestroyChild (Hash2ServiceBinding, mHash2ServiceHandle); + if (EFI_ERROR (Status)) { + return EFI_UNSUPPORTED; + } +-- +2.39.3 + diff --git a/edk2-NetworkPkg-TcpDxe-SECURITY-PATCH-CVE-2023-45236.patch b/edk2-NetworkPkg-TcpDxe-SECURITY-PATCH-CVE-2023-45236.patch new file mode 100644 index 0000000..a0c6ccf --- /dev/null +++ b/edk2-NetworkPkg-TcpDxe-SECURITY-PATCH-CVE-2023-45236.patch @@ -0,0 +1,808 @@ +From 1e7f4034ddc0896e16c981d4220a1178813b4e86 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Tue, 11 Jun 2024 15:20:29 -0400 +Subject: [PATCH 30/31] NetworkPkg TcpDxe: SECURITY PATCH CVE-2023-45236 + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [30/31] 9ae15a2abf1d9bd0a0df1ff73a88446b9eb33602 + +JIRA: https://issues.redhat.com/browse/RHEL-21854 +Upstream: Merged +CVE: CVE-2023-45236 +Conflicts: Didn't add new file NetworkPkg/SecurityFixes.yaml + +commit 1904a64bcc18199738e5be183d28887ac5d837d7 +Author: Doug Flick +Date: Wed May 8 22:56:29 2024 -0700 + + NetworkPkg TcpDxe: SECURITY PATCH CVE-2023-45236 + + REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4541 + REF: https://www.rfc-editor.org/rfc/rfc1948.txt + REF: https://www.rfc-editor.org/rfc/rfc6528.txt + REF: https://www.rfc-editor.org/rfc/rfc9293.txt + + Bug Overview: + PixieFail Bug #8 + CVE-2023-45236 + CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N + CWE-200 Exposure of Sensitive Information to an Unauthorized Actor + + Updates TCP ISN generation to use a cryptographic hash of the + connection's identifying parameters and a secret key. + This prevents an attacker from guessing the ISN used for some other + connection. + + This is follows the guidance in RFC 1948, RFC 6528, and RFC 9293. + + RFC: 9293 Section 3.4.1. Initial Sequence Number Selection + + A TCP implementation MUST use the above type of "clock" for clock- + driven selection of initial sequence numbers (MUST-8), and SHOULD + generate its initial sequence numbers with the expression: + + ISN = M + F(localip, localport, remoteip, remoteport, secretkey) + + where M is the 4 microsecond timer, and F() is a pseudorandom + function (PRF) of the connection's identifying parameters ("localip, + localport, remoteip, remoteport") and a secret key ("secretkey") + (SHLD-1). F() MUST NOT be computable from the outside (MUST-9), or + an attacker could still guess at sequence numbers from the ISN used + for some other connection. The PRF could be implemented as a + cryptographic hash of the concatenation of the TCP connection + parameters and some secret data. For discussion of the selection of + a specific hash algorithm and management of the secret key data, + please see Section 3 of [42]. + + For each connection there is a send sequence number and a receive + sequence number. The initial send sequence number (ISS) is chosen by + the data sending TCP peer, and the initial receive sequence number + (IRS) is learned during the connection-establishing procedure. + + For a connection to be established or initialized, the two TCP peers + must synchronize on each other's initial sequence numbers. This is + done in an exchange of connection-establishing segments carrying a + control bit called "SYN" (for synchronize) and the initial sequence + numbers. As a shorthand, segments carrying the SYN bit are also + called "SYNs". Hence, the solution requires a suitable mechanism for + picking an initial sequence number and a slightly involved handshake + to exchange the ISNs. + + Cc: Saloni Kasbekar + Cc: Zachary Clark-williams + + Signed-off-by: Doug Flick [MSFT] + Reviewed-by: Saloni Kasbekar +--- + NetworkPkg/TcpDxe/TcpDriver.c | 92 ++++++++++++- + NetworkPkg/TcpDxe/TcpDxe.inf | 8 +- + NetworkPkg/TcpDxe/TcpFunc.h | 23 ++-- + NetworkPkg/TcpDxe/TcpInput.c | 13 +- + NetworkPkg/TcpDxe/TcpMain.h | 59 ++++++-- + NetworkPkg/TcpDxe/TcpMisc.c | 244 ++++++++++++++++++++++++++++++++-- + NetworkPkg/TcpDxe/TcpTimer.c | 3 +- + 7 files changed, 394 insertions(+), 48 deletions(-) + +diff --git a/NetworkPkg/TcpDxe/TcpDriver.c b/NetworkPkg/TcpDxe/TcpDriver.c +index 430911c2f4..34ae838ae0 100644 +--- a/NetworkPkg/TcpDxe/TcpDriver.c ++++ b/NetworkPkg/TcpDxe/TcpDriver.c +@@ -83,6 +83,12 @@ EFI_SERVICE_BINDING_PROTOCOL gTcpServiceBinding = { + TcpServiceBindingDestroyChild + }; + ++// ++// This is the handle for the Hash2ServiceBinding Protocol instance this driver produces ++// if the platform does not provide one. ++// ++EFI_HANDLE mHash2ServiceHandle = NULL; ++ + /** + Create and start the heartbeat timer for the TCP driver. + +@@ -165,6 +171,23 @@ TcpDriverEntryPoint ( + EFI_STATUS Status; + UINT32 Random; + ++ // ++ // Initialize the Secret used for hashing TCP sequence numbers ++ // ++ // Normally this should be regenerated periodically, but since ++ // this is only used for UEFI networking and not a general purpose ++ // operating system, it is not necessary to regenerate it. ++ // ++ Status = PseudoRandomU32 (&mTcpGlobalSecret); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a failed to generate random number: %r\n", __func__, Status)); ++ return Status; ++ } ++ ++ // ++ // Get a random number used to generate a random port number ++ // Intentionally not linking this to mTcpGlobalSecret to avoid leaking information about the secret ++ // + Status = PseudoRandomU32 (&Random); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a Failed to generate random number: %r\n", __func__, Status)); +@@ -207,9 +230,8 @@ TcpDriverEntryPoint ( + } + + // +- // Initialize ISS and random port. ++ // Initialize the random port. + // +- mTcpGlobalIss = Random % mTcpGlobalIss; + mTcp4RandomPort = (UINT16)(TCP_PORT_KNOWN + (Random % TCP_PORT_KNOWN)); + mTcp6RandomPort = mTcp4RandomPort; + +@@ -224,6 +246,8 @@ TcpDriverEntryPoint ( + @param[in] IpVersion IP_VERSION_4 or IP_VERSION_6. + + @retval EFI_OUT_OF_RESOURCES Failed to allocate some resources. ++ @retval EFI_UNSUPPORTED Service Binding Protocols are unavailable. ++ @retval EFI_ALREADY_STARTED The TCP driver is already started on the controller. + @retval EFI_SUCCESS A new IP6 service binding private was created. + + **/ +@@ -234,11 +258,13 @@ TcpCreateService ( + IN UINT8 IpVersion + ) + { +- EFI_STATUS Status; +- EFI_GUID *IpServiceBindingGuid; +- EFI_GUID *TcpServiceBindingGuid; +- TCP_SERVICE_DATA *TcpServiceData; +- IP_IO_OPEN_DATA OpenData; ++ EFI_STATUS Status; ++ EFI_GUID *IpServiceBindingGuid; ++ EFI_GUID *TcpServiceBindingGuid; ++ TCP_SERVICE_DATA *TcpServiceData; ++ IP_IO_OPEN_DATA OpenData; ++ EFI_SERVICE_BINDING_PROTOCOL *Hash2ServiceBinding; ++ EFI_HASH2_PROTOCOL *Hash2Protocol; + + if (IpVersion == IP_VERSION_4) { + IpServiceBindingGuid = &gEfiIp4ServiceBindingProtocolGuid; +@@ -272,6 +298,33 @@ TcpCreateService ( + return EFI_UNSUPPORTED; + } + ++ Status = gBS->LocateProtocol (&gEfiHash2ProtocolGuid, NULL, (VOID **)&Hash2Protocol); ++ if (EFI_ERROR (Status)) { ++ // ++ // If we can't find the Hashing protocol, then we need to create one. ++ // ++ ++ // ++ // Platform is expected to publish the hash service binding protocol to support TCP. ++ // ++ Status = gBS->LocateProtocol ( ++ &gEfiHash2ServiceBindingProtocolGuid, ++ NULL, ++ (VOID **)&Hash2ServiceBinding ++ ); ++ if (EFI_ERROR (Status) || (Hash2ServiceBinding == NULL) || (Hash2ServiceBinding->CreateChild == NULL)) { ++ return EFI_UNSUPPORTED; ++ } ++ ++ // ++ // Create an instance of the hash protocol for this controller. ++ // ++ Status = Hash2ServiceBinding->CreateChild (Hash2ServiceBinding, &mHash2ServiceHandle); ++ if (EFI_ERROR (Status)) { ++ return EFI_UNSUPPORTED; ++ } ++ } ++ + // + // Create the TCP service data. + // +@@ -423,6 +476,7 @@ TcpDestroyService ( + EFI_STATUS Status; + LIST_ENTRY *List; + TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; ++ EFI_SERVICE_BINDING_PROTOCOL *Hash2ServiceBinding; + + ASSERT ((IpVersion == IP_VERSION_4) || (IpVersion == IP_VERSION_6)); + +@@ -439,6 +493,30 @@ TcpDestroyService ( + return EFI_SUCCESS; + } + ++ // ++ // Destroy the Hash2ServiceBinding instance if it is created by Tcp driver. ++ // ++ if (mHash2ServiceHandle != NULL) { ++ Status = gBS->LocateProtocol ( ++ &gEfiHash2ServiceBindingProtocolGuid, ++ NULL, ++ (VOID **)&Hash2ServiceBinding ++ ); ++ if (EFI_ERROR (Status) || (Hash2ServiceBinding == NULL) || (Hash2ServiceBinding->DestroyChild == NULL)) { ++ return EFI_UNSUPPORTED; ++ } ++ ++ // ++ // Destroy the instance of the hashing protocol for this controller. ++ // ++ Status = Hash2ServiceBinding->DestroyChild (Hash2ServiceBinding, &mHash2ServiceHandle); ++ if (EFI_ERROR (Status)) { ++ return EFI_UNSUPPORTED; ++ } ++ ++ mHash2ServiceHandle = NULL; ++ } ++ + Status = gBS->OpenProtocol ( + NicHandle, + ServiceBindingGuid, +diff --git a/NetworkPkg/TcpDxe/TcpDxe.inf b/NetworkPkg/TcpDxe/TcpDxe.inf +index cf5423f4c5..76de4cf9ec 100644 +--- a/NetworkPkg/TcpDxe/TcpDxe.inf ++++ b/NetworkPkg/TcpDxe/TcpDxe.inf +@@ -6,6 +6,7 @@ + # stack has been loaded in system. This driver supports both IPv4 and IPv6 network stack. + # + # Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
++# Copyright (c) Microsoft Corporation + # + # SPDX-License-Identifier: BSD-2-Clause-Patent + # +@@ -68,7 +69,6 @@ + NetLib + IpIoLib + +- + [Protocols] + ## SOMETIMES_CONSUMES + ## SOMETIMES_PRODUCES +@@ -81,6 +81,12 @@ + gEfiIp6ServiceBindingProtocolGuid ## TO_START + gEfiTcp6ProtocolGuid ## BY_START + gEfiTcp6ServiceBindingProtocolGuid ## BY_START ++ gEfiHash2ProtocolGuid ## BY_START ++ gEfiHash2ServiceBindingProtocolGuid ## BY_START ++ ++[Guids] ++ gEfiHashAlgorithmMD5Guid ## CONSUMES ++ gEfiHashAlgorithmSha256Guid ## CONSUMES + + [Depex] + gEfiHash2ServiceBindingProtocolGuid +diff --git a/NetworkPkg/TcpDxe/TcpFunc.h b/NetworkPkg/TcpDxe/TcpFunc.h +index 05cd3c75dc..e578b8bb29 100644 +--- a/NetworkPkg/TcpDxe/TcpFunc.h ++++ b/NetworkPkg/TcpDxe/TcpFunc.h +@@ -2,7 +2,7 @@ + Declaration of external functions shared in TCP driver. + + Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
+- ++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -36,8 +36,11 @@ VOID + + @param[in, out] Tcb Pointer to the TCP_CB of this TCP instance. + ++ @retval EFI_SUCCESS The operation completed successfully ++ @retval others The underlying functions failed and could not complete the operation ++ + **/ +-VOID ++EFI_STATUS + TcpInitTcbLocal ( + IN OUT TCP_CB *Tcb + ); +@@ -128,17 +131,6 @@ TcpCloneTcb ( + IN TCP_CB *Tcb + ); + +-/** +- Compute an ISS to be used by a new connection. +- +- @return The result ISS. +- +-**/ +-TCP_SEQNO +-TcpGetIss ( +- VOID +- ); +- + /** + Get the local mss. + +@@ -202,8 +194,11 @@ TcpFormatNetbuf ( + @param[in, out] Tcb Pointer to the TCP_CB that wants to initiate a + connection. + ++ @retval EFI_SUCCESS The operation completed successfully ++ @retval others The underlying functions failed and could not complete the operation ++ + **/ +-VOID ++EFI_STATUS + TcpOnAppConnect ( + IN OUT TCP_CB *Tcb + ); +diff --git a/NetworkPkg/TcpDxe/TcpInput.c b/NetworkPkg/TcpDxe/TcpInput.c +index 5e6c8c54ca..c0656ccd7d 100644 +--- a/NetworkPkg/TcpDxe/TcpInput.c ++++ b/NetworkPkg/TcpDxe/TcpInput.c +@@ -759,6 +759,7 @@ TcpInput ( + TCP_SEQNO Urg; + UINT16 Checksum; + INT32 Usable; ++ EFI_STATUS Status; + + ASSERT ((Version == IP_VERSION_4) || (Version == IP_VERSION_6)); + +@@ -908,7 +909,17 @@ TcpInput ( + Tcb->LocalEnd.Port = Head->DstPort; + Tcb->RemoteEnd.Port = Head->SrcPort; + +- TcpInitTcbLocal (Tcb); ++ Status = TcpInitTcbLocal (Tcb); ++ if (EFI_ERROR (Status)) { ++ DEBUG ( ++ (DEBUG_ERROR, ++ "TcpInput: discard a segment because failed to init local end for TCB %p\n", ++ Tcb) ++ ); ++ ++ goto DISCARD; ++ } ++ + TcpInitTcbPeer (Tcb, Seg, &Option); + + TcpSetState (Tcb, TCP_SYN_RCVD); +diff --git a/NetworkPkg/TcpDxe/TcpMain.h b/NetworkPkg/TcpDxe/TcpMain.h +index 0709298bbf..3fa572d3d4 100644 +--- a/NetworkPkg/TcpDxe/TcpMain.h ++++ b/NetworkPkg/TcpDxe/TcpMain.h +@@ -3,6 +3,7 @@ + It is the common head file for all Tcp*.c in TCP driver. + + Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -12,6 +13,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -30,7 +32,7 @@ extern EFI_UNICODE_STRING_TABLE *gTcpControllerNameTable; + + extern LIST_ENTRY mTcpRunQue; + extern LIST_ENTRY mTcpListenQue; +-extern TCP_SEQNO mTcpGlobalIss; ++extern TCP_SEQNO mTcpGlobalSecret; + extern UINT32 mTcpTick; + + /// +@@ -44,15 +46,6 @@ extern UINT32 mTcpTick; + + #define TCP_EXPIRE_TIME 65535 + +-/// +-/// The implementation selects the initial send sequence number and the unit to +-/// be added when it is increased. +-/// +-#define TCP_BASE_ISS 0x4d7e980b +-#define TCP_ISS_INCREMENT_1 2048 +-#define TCP_ISS_INCREMENT_2 100 +- +- + typedef union { + EFI_TCP4_CONFIG_DATA Tcp4CfgData; + EFI_TCP6_CONFIG_DATA Tcp6CfgData; +@@ -774,4 +767,50 @@ Tcp6Poll ( + IN EFI_TCP6_PROTOCOL *This + ); + ++/** ++ Retrieves the Initial Sequence Number (ISN) for a TCP connection identified by local ++ and remote IP addresses and ports. ++ ++ This method is based on https://datatracker.ietf.org/doc/html/rfc9293#section-3.4.1 ++ Where the ISN is computed as follows: ++ ISN = TimeStamp + MD5(LocalIP, LocalPort, RemoteIP, RemotePort, Secret) ++ ++ Otherwise: ++ ISN = M + F(localip, localport, remoteip, remoteport, secretkey) ++ ++ "Here M is the 4 microsecond timer, and F() is a pseudorandom function (PRF) of the ++ connection's identifying parameters ("localip, localport, remoteip, remoteport") ++ and a secret key ("secretkey") (SHLD-1). F() MUST NOT be computable from the ++ outside (MUST-9), or an attacker could still guess at sequence numbers from the ++ ISN used for some other connection. The PRF could be implemented as a ++ cryptographic hash of the concatenation of the TCP connection parameters and some ++ secret data. For discussion of the selection of a specific hash algorithm and ++ management of the secret key data." ++ ++ @param[in] LocalIp A pointer to the local IP address of the TCP connection. ++ @param[in] LocalIpSize The size, in bytes, of the LocalIp buffer. ++ @param[in] LocalPort The local port number of the TCP connection. ++ @param[in] RemoteIp A pointer to the remote IP address of the TCP connection. ++ @param[in] RemoteIpSize The size, in bytes, of the RemoteIp buffer. ++ @param[in] RemotePort The remote port number of the TCP connection. ++ @param[out] Isn A pointer to the variable that will receive the Initial ++ Sequence Number (ISN). ++ ++ @retval EFI_SUCCESS The operation completed successfully, and the ISN was ++ retrieved. ++ @retval EFI_INVALID_PARAMETER One or more of the input parameters are invalid. ++ @retval EFI_UNSUPPORTED The operation is not supported. ++ ++**/ ++EFI_STATUS ++TcpGetIsn ( ++ IN UINT8 *LocalIp, ++ IN UINTN LocalIpSize, ++ IN UINT16 LocalPort, ++ IN UINT8 *RemoteIp, ++ IN UINTN RemoteIpSize, ++ IN UINT16 RemotePort, ++ OUT TCP_SEQNO *Isn ++ ); ++ + #endif +diff --git a/NetworkPkg/TcpDxe/TcpMisc.c b/NetworkPkg/TcpDxe/TcpMisc.c +index 3fa9d90d9f..42dc9fa941 100644 +--- a/NetworkPkg/TcpDxe/TcpMisc.c ++++ b/NetworkPkg/TcpDxe/TcpMisc.c +@@ -3,6 +3,7 @@ + + (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
+ Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -19,7 +20,34 @@ LIST_ENTRY mTcpListenQue = { + &mTcpListenQue + }; + +-TCP_SEQNO mTcpGlobalIss = TCP_BASE_ISS; ++// ++// The Session secret ++// This must be initialized to a random value at boot time ++// ++TCP_SEQNO mTcpGlobalSecret; ++ ++// ++// Union to hold either an IPv4 or IPv6 address ++// This is used to simplify the ISN hash computation ++// ++typedef union { ++ UINT8 IPv4[4]; ++ UINT8 IPv6[16]; ++} NETWORK_ADDRESS; ++ ++// ++// The ISN is computed by hashing this structure ++// It is initialized with the local and remote IP addresses and ports ++// and the secret ++// ++// ++typedef struct { ++ UINT16 LocalPort; ++ UINT16 RemotePort; ++ NETWORK_ADDRESS LocalAddress; ++ NETWORK_ADDRESS RemoteAddress; ++ TCP_SEQNO Secret; ++} ISN_HASH_CTX; + + CHAR16 *mTcpStateName[] = { + L"TCP_CLOSED", +@@ -40,12 +68,18 @@ CHAR16 *mTcpStateName[] = { + + @param[in, out] Tcb Pointer to the TCP_CB of this TCP instance. + ++ @retval EFI_SUCCESS The operation completed successfully ++ @retval others The underlying functions failed and could not complete the operation ++ + **/ +-VOID ++EFI_STATUS + TcpInitTcbLocal ( + IN OUT TCP_CB *Tcb + ) + { ++ TCP_SEQNO Isn; ++ EFI_STATUS Status; ++ + // + // Compute the checksum of the fixed parts of pseudo header + // +@@ -56,6 +90,16 @@ TcpInitTcbLocal ( + 0x06, + 0 + ); ++ ++ Status = TcpGetIsn ( ++ Tcb->LocalEnd.Ip.v4.Addr, ++ sizeof (IPv4_ADDRESS), ++ Tcb->LocalEnd.Port, ++ Tcb->RemoteEnd.Ip.v4.Addr, ++ sizeof (IPv4_ADDRESS), ++ Tcb->RemoteEnd.Port, ++ &Isn ++ ); + } else { + Tcb->HeadSum = NetIp6PseudoHeadChecksum ( + &Tcb->LocalEnd.Ip.v6, +@@ -63,9 +107,25 @@ TcpInitTcbLocal ( + 0x06, + 0 + ); ++ ++ Status = TcpGetIsn ( ++ Tcb->LocalEnd.Ip.v6.Addr, ++ sizeof (IPv6_ADDRESS), ++ Tcb->LocalEnd.Port, ++ Tcb->RemoteEnd.Ip.v6.Addr, ++ sizeof (IPv6_ADDRESS), ++ Tcb->RemoteEnd.Port, ++ &Isn ++ ); ++ } ++ ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "TcpInitTcbLocal: failed to get isn\n")); ++ ASSERT (FALSE); ++ return Status; + } + +- Tcb->Iss = TcpGetIss (); ++ Tcb->Iss = Isn; + Tcb->SndUna = Tcb->Iss; + Tcb->SndNxt = Tcb->Iss; + +@@ -81,6 +141,8 @@ TcpInitTcbLocal ( + Tcb->RetxmitSeqMax = 0; + + Tcb->ProbeTimerOn = FALSE; ++ ++ return EFI_SUCCESS; + } + + /** +@@ -505,18 +567,162 @@ TcpCloneTcb ( + } + + /** +- Compute an ISS to be used by a new connection. +- +- @return The resulting ISS. ++ Retrieves the Initial Sequence Number (ISN) for a TCP connection identified by local ++ and remote IP addresses and ports. ++ ++ This method is based on https://datatracker.ietf.org/doc/html/rfc9293#section-3.4.1 ++ Where the ISN is computed as follows: ++ ISN = TimeStamp + MD5(LocalIP, LocalPort, RemoteIP, RemotePort, Secret) ++ ++ Otherwise: ++ ISN = M + F(localip, localport, remoteip, remoteport, secretkey) ++ ++ "Here M is the 4 microsecond timer, and F() is a pseudorandom function (PRF) of the ++ connection's identifying parameters ("localip, localport, remoteip, remoteport") ++ and a secret key ("secretkey") (SHLD-1). F() MUST NOT be computable from the ++ outside (MUST-9), or an attacker could still guess at sequence numbers from the ++ ISN used for some other connection. The PRF could be implemented as a ++ cryptographic hash of the concatenation of the TCP connection parameters and some ++ secret data. For discussion of the selection of a specific hash algorithm and ++ management of the secret key data." ++ ++ @param[in] LocalIp A pointer to the local IP address of the TCP connection. ++ @param[in] LocalIpSize The size, in bytes, of the LocalIp buffer. ++ @param[in] LocalPort The local port number of the TCP connection. ++ @param[in] RemoteIp A pointer to the remote IP address of the TCP connection. ++ @param[in] RemoteIpSize The size, in bytes, of the RemoteIp buffer. ++ @param[in] RemotePort The remote port number of the TCP connection. ++ @param[out] Isn A pointer to the variable that will receive the Initial ++ Sequence Number (ISN). ++ ++ @retval EFI_SUCCESS The operation completed successfully, and the ISN was ++ retrieved. ++ @retval EFI_INVALID_PARAMETER One or more of the input parameters are invalid. ++ @retval EFI_UNSUPPORTED The operation is not supported. + + **/ +-TCP_SEQNO +-TcpGetIss ( +- VOID ++EFI_STATUS ++TcpGetIsn ( ++ IN UINT8 *LocalIp, ++ IN UINTN LocalIpSize, ++ IN UINT16 LocalPort, ++ IN UINT8 *RemoteIp, ++ IN UINTN RemoteIpSize, ++ IN UINT16 RemotePort, ++ OUT TCP_SEQNO *Isn + ) + { +- mTcpGlobalIss += TCP_ISS_INCREMENT_1; +- return mTcpGlobalIss; ++ EFI_STATUS Status; ++ EFI_HASH2_PROTOCOL *Hash2Protocol; ++ EFI_HASH2_OUTPUT HashResult; ++ ISN_HASH_CTX IsnHashCtx; ++ EFI_TIME TimeStamp; ++ ++ // ++ // Check that the ISN pointer is valid ++ // ++ if (Isn == NULL) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ // ++ // The local ip may be a v4 or v6 address and may not be NULL ++ // ++ if ((LocalIp == NULL) || (LocalIpSize == 0) || (RemoteIp == NULL) || (RemoteIpSize == 0)) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ // ++ // the local ip may be a v4 or v6 address ++ // ++ if ((LocalIpSize != sizeof (EFI_IPv4_ADDRESS)) && (LocalIpSize != sizeof (EFI_IPv6_ADDRESS))) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ // ++ // Locate the Hash Protocol ++ // ++ Status = gBS->LocateProtocol (&gEfiHash2ProtocolGuid, NULL, (VOID **)&Hash2Protocol); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_NET, "Failed to locate Hash Protocol: %r\n", Status)); ++ ++ // ++ // TcpCreateService(..) is expected to be called prior to this function ++ // ++ ASSERT_EFI_ERROR (Status); ++ return Status; ++ } ++ ++ // ++ // Initialize the hash algorithm ++ // ++ Status = Hash2Protocol->HashInit (Hash2Protocol, &gEfiHashAlgorithmSha256Guid); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_NET, "Failed to initialize sha256 hash algorithm: %r\n", Status)); ++ return Status; ++ } ++ ++ IsnHashCtx.LocalPort = LocalPort; ++ IsnHashCtx.RemotePort = RemotePort; ++ IsnHashCtx.Secret = mTcpGlobalSecret; ++ ++ // ++ // Check the IP address family and copy accordingly ++ // ++ if (LocalIpSize == sizeof (EFI_IPv4_ADDRESS)) { ++ CopyMem (&IsnHashCtx.LocalAddress.IPv4, LocalIp, LocalIpSize); ++ } else if (LocalIpSize == sizeof (EFI_IPv6_ADDRESS)) { ++ CopyMem (&IsnHashCtx.LocalAddress.IPv6, LocalIp, LocalIpSize); ++ } else { ++ return EFI_INVALID_PARAMETER; // Unsupported address size ++ } ++ ++ // ++ // Repeat the process for the remote IP address ++ // ++ if (RemoteIpSize == sizeof (EFI_IPv4_ADDRESS)) { ++ CopyMem (&IsnHashCtx.RemoteAddress.IPv4, RemoteIp, RemoteIpSize); ++ } else if (RemoteIpSize == sizeof (EFI_IPv6_ADDRESS)) { ++ CopyMem (&IsnHashCtx.RemoteAddress.IPv6, RemoteIp, RemoteIpSize); ++ } else { ++ return EFI_INVALID_PARAMETER; // Unsupported address size ++ } ++ ++ // ++ // Compute the hash ++ // Update the hash with the data ++ // ++ Status = Hash2Protocol->HashUpdate (Hash2Protocol, (UINT8 *)&IsnHashCtx, sizeof (IsnHashCtx)); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_NET, "Failed to update hash: %r\n", Status)); ++ return Status; ++ } ++ ++ // ++ // Finalize the hash and retrieve the result ++ // ++ Status = Hash2Protocol->HashFinal (Hash2Protocol, &HashResult); ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_NET, "Failed to finalize hash: %r\n", Status)); ++ return Status; ++ } ++ ++ Status = gRT->GetTime (&TimeStamp, NULL); ++ if (EFI_ERROR (Status)) { ++ return Status; ++ } ++ ++ // ++ // copy the first 4 bytes of the hash result into the ISN ++ // ++ CopyMem (Isn, HashResult.Md5Hash, sizeof (*Isn)); ++ ++ // ++ // now add the timestamp to the ISN as 4 microseconds units (1000 / 4 = 250) ++ // ++ *Isn += (TCP_SEQNO)TimeStamp.Nanosecond * 250; ++ ++ return Status; + } + + /** +@@ -719,17 +925,29 @@ TcpFormatNetbuf ( + + @param[in, out] Tcb Pointer to the TCP_CB that wants to initiate a + connection. ++ ++ @retval EFI_SUCCESS The operation completed successfully ++ @retval others The underlying functions failed and could not complete the operation ++ + **/ +-VOID ++EFI_STATUS + TcpOnAppConnect ( + IN OUT TCP_CB *Tcb + ) + { +- TcpInitTcbLocal (Tcb); ++ EFI_STATUS Status; ++ ++ Status = TcpInitTcbLocal (Tcb); ++ if (EFI_ERROR (Status)) { ++ return Status; ++ } ++ + TcpSetState (Tcb, TCP_SYN_SENT); + + TcpSetTimer (Tcb, TCP_TIMER_CONNECT, Tcb->ConnectTimeout); + TcpToSendData (Tcb, 1); ++ ++ return EFI_SUCCESS; + } + + /** +diff --git a/NetworkPkg/TcpDxe/TcpTimer.c b/NetworkPkg/TcpDxe/TcpTimer.c +index 106d9470db..535d09d342 100644 +--- a/NetworkPkg/TcpDxe/TcpTimer.c ++++ b/NetworkPkg/TcpDxe/TcpTimer.c +@@ -2,7 +2,7 @@ + TCP timer related functions. + + Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
+- ++ Copyright (c) Microsoft Corporation + SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ +@@ -497,7 +497,6 @@ TcpTickingDpc ( + INT16 Index; + + mTcpTick++; +- mTcpGlobalIss += TCP_ISS_INCREMENT_2; + + // + // Don't use LIST_FOR_EACH, which isn't delete safe. +-- +2.39.3 + diff --git a/edk2-OvmfPkg-wire-up-RngDxe.patch b/edk2-OvmfPkg-wire-up-RngDxe.patch new file mode 100644 index 0000000..22ada98 --- /dev/null +++ b/edk2-OvmfPkg-wire-up-RngDxe.patch @@ -0,0 +1,318 @@ +From c74cced5adaab44edf1bbfae63010b3fa31d4c69 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Sun, 23 Jun 2024 19:20:44 -0400 +Subject: [PATCH 27/31] OvmfPkg: wire up RngDxe + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [27/31] 90226f6630261d2823bed33c4e2f6c96a4125027 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 +Conflicts: - Needed to apply 9 earlier commits from Pierre Gondois + to make this one apply and build. + - Cherry pick wanted to add include files from the + missing 'add ShellComponents' (commit 2cb466cc2cbf...) + series. This had to be handled manually. + - There are no Dsc and Fdf subdirectories under + OvmfPkg/Include/ in this version. We adjust includes + and move files to OvmfPkg/ where needed. + +commit 712797cf19acd292bf203522a79e40e7e13d268b +Author: Gerd Hoffmann +Date: Fri May 24 12:51:17 2024 +0200 + + OvmfPkg: wire up RngDxe + + Add OvmfRng include snippets with the random number generator + configuration for OVMF. Include RngDxe, build with BaseRngLib, + so the rdrand instruction is used (if available). + + Also move VirtioRng to the include snippets. + + Use the new include snippets for OVMF builds. + + Signed-off-by: Gerd Hoffmann + +Signed-off-by: Jon Maloy +--- + OvmfPkg/AmdSev/AmdSevX64.dsc | 2 +- + OvmfPkg/AmdSev/AmdSevX64.fdf | 3 ++- + OvmfPkg/IntelTdx/IntelTdxX64.dsc | 2 +- + OvmfPkg/Microvm/MicrovmX64.dsc | 2 +- + OvmfPkg/Microvm/MicrovmX64.fdf | 3 ++- + OvmfPkg/OvmfPkgIa32.dsc | 2 +- + OvmfPkg/OvmfPkgIa32.fdf | 3 ++- + OvmfPkg/OvmfPkgIa32X64.dsc | 2 +- + OvmfPkg/OvmfPkgIa32X64.fdf | 2 +- + OvmfPkg/OvmfPkgX64.dsc | 2 +- + OvmfPkg/OvmfPkgX64.fdf | 2 +- + OvmfPkg/OvmfRngComponents.dsc.inc | 9 +++++++++ + OvmfPkg/OvmfRngDxe.fdf.inc | 6 ++++++ + 13 files changed, 29 insertions(+), 11 deletions(-) + create mode 100644 OvmfPkg/OvmfRngComponents.dsc.inc + create mode 100644 OvmfPkg/OvmfRngDxe.fdf.inc + +diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc +index a1a6897bc2..499ad2e6e8 100644 +--- a/OvmfPkg/AmdSev/AmdSevX64.dsc ++++ b/OvmfPkg/AmdSev/AmdSevX64.dsc +@@ -707,7 +707,6 @@ + OvmfPkg/Virtio10Dxe/Virtio10.inf + OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + OvmfPkg/VirtioScsiDxe/VirtioScsi.inf +- OvmfPkg/VirtioRngDxe/VirtioRng.inf + !if $(PVSCSI_ENABLE) == TRUE + OvmfPkg/PvScsiDxe/PvScsiDxe.inf + !endif +@@ -824,6 +823,7 @@ + gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 + } + !endif ++!include OvmfPkg/OvmfRngComponents.dsc.inc + + OvmfPkg/PlatformDxe/Platform.inf + OvmfPkg/AmdSevDxe/AmdSevDxe.inf +diff --git a/OvmfPkg/AmdSev/AmdSevX64.fdf b/OvmfPkg/AmdSev/AmdSevX64.fdf +index 5662609886..06ff2f1d30 100644 +--- a/OvmfPkg/AmdSev/AmdSevX64.fdf ++++ b/OvmfPkg/AmdSev/AmdSevX64.fdf +@@ -222,7 +222,6 @@ INF OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf + INF OvmfPkg/Virtio10Dxe/Virtio10.inf + INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf +-INF OvmfPkg/VirtioRngDxe/VirtioRng.inf + !if $(PVSCSI_ENABLE) == TRUE + INF OvmfPkg/PvScsiDxe/PvScsiDxe.inf + !endif +@@ -327,6 +326,8 @@ INF SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf + !endif + !endif + ++!include OvmfPkg/OvmfRngDxe.fdf.inc ++ + ################################################################################ + + [FV.FVMAIN_COMPACT] +diff --git a/OvmfPkg/IntelTdx/IntelTdxX64.dsc b/OvmfPkg/IntelTdx/IntelTdxX64.dsc +index d08b77ff25..4f2909b76e 100644 +--- a/OvmfPkg/IntelTdx/IntelTdxX64.dsc ++++ b/OvmfPkg/IntelTdx/IntelTdxX64.dsc +@@ -635,7 +635,6 @@ + OvmfPkg/Virtio10Dxe/Virtio10.inf + OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + OvmfPkg/VirtioScsiDxe/VirtioScsi.inf +- OvmfPkg/VirtioRngDxe/VirtioRng.inf + !if $(PVSCSI_ENABLE) == TRUE + OvmfPkg/PvScsiDxe/PvScsiDxe.inf + !endif +@@ -744,6 +743,7 @@ + gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE + gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 + } ++!include OvmfPkg/OvmfRngComponents.dsc.inc + + !if $(SECURE_BOOT_ENABLE) == TRUE + SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf +diff --git a/OvmfPkg/Microvm/MicrovmX64.dsc b/OvmfPkg/Microvm/MicrovmX64.dsc +index afd4bf3e98..0efb0b456d 100644 +--- a/OvmfPkg/Microvm/MicrovmX64.dsc ++++ b/OvmfPkg/Microvm/MicrovmX64.dsc +@@ -694,7 +694,6 @@ + OvmfPkg/Virtio10Dxe/Virtio10.inf + OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + OvmfPkg/VirtioScsiDxe/VirtioScsi.inf +- OvmfPkg/VirtioRngDxe/VirtioRng.inf + MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf + MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf + MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf +@@ -820,6 +819,7 @@ + gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE + gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 + } ++!include OvmfPkg/OvmfRngComponents.dsc.inc + + OvmfPkg/PlatformDxe/Platform.inf + OvmfPkg/IoMmuDxe/IoMmuDxe.inf +diff --git a/OvmfPkg/Microvm/MicrovmX64.fdf b/OvmfPkg/Microvm/MicrovmX64.fdf +index 6314014f3d..bd5afdafe0 100644 +--- a/OvmfPkg/Microvm/MicrovmX64.fdf ++++ b/OvmfPkg/Microvm/MicrovmX64.fdf +@@ -230,7 +230,6 @@ INF OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf + INF OvmfPkg/Virtio10Dxe/Virtio10.inf + INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf +-INF OvmfPkg/VirtioRngDxe/VirtioRng.inf + + INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf + INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf +@@ -322,6 +321,8 @@ INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf + INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf + INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf + ++!include OvmfPkg/OvmfRngDxe.fdf.inc ++ + ################################################################################ + + [FV.FVMAIN_COMPACT] +diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc +index 47426c5cd2..f03906a9ff 100644 +--- a/OvmfPkg/OvmfPkgIa32.dsc ++++ b/OvmfPkg/OvmfPkgIa32.dsc +@@ -801,7 +801,6 @@ + OvmfPkg/Virtio10Dxe/Virtio10.inf + OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + OvmfPkg/VirtioScsiDxe/VirtioScsi.inf +- OvmfPkg/VirtioRngDxe/VirtioRng.inf + !if $(PVSCSI_ENABLE) == TRUE + OvmfPkg/PvScsiDxe/PvScsiDxe.inf + !endif +@@ -958,6 +957,7 @@ + gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE + gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 + } ++!include OvmfPkg/OvmfRngComponents.dsc.inc + + !if $(SECURE_BOOT_ENABLE) == TRUE + SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf +diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf +index 00ea14adf0..050148948c 100644 +--- a/OvmfPkg/OvmfPkgIa32.fdf ++++ b/OvmfPkg/OvmfPkgIa32.fdf +@@ -228,7 +228,6 @@ INF OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf + INF OvmfPkg/Virtio10Dxe/Virtio10.inf + INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf +-INF OvmfPkg/VirtioRngDxe/VirtioRng.inf + !if $(PVSCSI_ENABLE) == TRUE + INF OvmfPkg/PvScsiDxe/PvScsiDxe.inf + !endif +@@ -363,6 +362,7 @@ INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf + # + # TPM support + # ++ + !if $(TPM_ENABLE) == TRUE + INF SecurityPkg/Tcg/TcgDxe/TcgDxe.inf + INF SecurityPkg/Tcg/Tcg2Dxe/Tcg2Dxe.inf +@@ -371,6 +371,7 @@ INF SecurityPkg/Tcg/Tcg2PlatformDxe/Tcg2PlatformDxe.inf + INF SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf + !endif + !endif ++!include OvmfPkg/OvmfRngDxe.fdf.inc + + !if $(LOAD_X64_ON_IA32_ENABLE) == TRUE + INF OvmfPkg/CompatImageLoaderDxe/CompatImageLoaderDxe.inf +diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc +index d4b30e8133..81145050c3 100644 +--- a/OvmfPkg/OvmfPkgIa32X64.dsc ++++ b/OvmfPkg/OvmfPkgIa32X64.dsc +@@ -815,7 +815,6 @@ + OvmfPkg/Virtio10Dxe/Virtio10.inf + OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + OvmfPkg/VirtioScsiDxe/VirtioScsi.inf +- OvmfPkg/VirtioRngDxe/VirtioRng.inf + !if $(PVSCSI_ENABLE) == TRUE + OvmfPkg/PvScsiDxe/PvScsiDxe.inf + !endif +@@ -972,6 +971,7 @@ + gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE + gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 + } ++!include OvmfPkg/OvmfRngComponents.dsc.inc + + !if $(SECURE_BOOT_ENABLE) == TRUE + SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf +diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf +index e33a40c44e..3e2373f225 100644 +--- a/OvmfPkg/OvmfPkgIa32X64.fdf ++++ b/OvmfPkg/OvmfPkgIa32X64.fdf +@@ -232,7 +232,6 @@ INF OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf + INF OvmfPkg/Virtio10Dxe/Virtio10.inf + INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf +-INF OvmfPkg/VirtioRngDxe/VirtioRng.inf + !if $(PVSCSI_ENABLE) == TRUE + INF OvmfPkg/PvScsiDxe/PvScsiDxe.inf + !endif +@@ -381,6 +380,7 @@ INF SecurityPkg/Tcg/Tcg2PlatformDxe/Tcg2PlatformDxe.inf + INF SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf + !endif + !endif ++!include OvmfPkg/OvmfRngDxe.fdf.inc + + ################################################################################ + +diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc +index 5b0f6c8747..1cb169b447 100644 +--- a/OvmfPkg/OvmfPkgX64.dsc ++++ b/OvmfPkg/OvmfPkgX64.dsc +@@ -813,7 +813,6 @@ + OvmfPkg/Virtio10Dxe/Virtio10.inf + OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + OvmfPkg/VirtioScsiDxe/VirtioScsi.inf +- OvmfPkg/VirtioRngDxe/VirtioRng.inf + !if $(PVSCSI_ENABLE) == TRUE + OvmfPkg/PvScsiDxe/PvScsiDxe.inf + !endif +@@ -970,6 +969,7 @@ + gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE + gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000 + } ++!include OvmfPkg/OvmfRngComponents.dsc.inc + + !if $(SECURE_BOOT_ENABLE) == TRUE + SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf +diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf +index 85b4b23857..8ba0ca437a 100644 +--- a/OvmfPkg/OvmfPkgX64.fdf ++++ b/OvmfPkg/OvmfPkgX64.fdf +@@ -248,7 +248,6 @@ INF OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf + INF OvmfPkg/Virtio10Dxe/Virtio10.inf + INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf + INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf +-INF OvmfPkg/VirtioRngDxe/VirtioRng.inf + !if $(PVSCSI_ENABLE) == TRUE + INF OvmfPkg/PvScsiDxe/PvScsiDxe.inf + !endif +@@ -397,6 +396,7 @@ INF SecurityPkg/Tcg/Tcg2PlatformDxe/Tcg2PlatformDxe.inf + INF SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf + !endif + !endif ++!include OvmfPkg/OvmfRngDxe.fdf.inc + + ################################################################################ + +diff --git a/OvmfPkg/OvmfRngComponents.dsc.inc b/OvmfPkg/OvmfRngComponents.dsc.inc +new file mode 100644 +index 0000000000..68839a0caa +--- /dev/null ++++ b/OvmfPkg/OvmfRngComponents.dsc.inc +@@ -0,0 +1,9 @@ ++## ++# SPDX-License-Identifier: BSD-2-Clause-Patent ++## ++ ++ SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf { ++ ++ RngLib|MdePkg/Library/BaseRngLib/BaseRngLib.inf ++ } ++ OvmfPkg/VirtioRngDxe/VirtioRng.inf +diff --git a/OvmfPkg/OvmfRngDxe.fdf.inc b/OvmfPkg/OvmfRngDxe.fdf.inc +new file mode 100644 +index 0000000000..99cb4a32b1 +--- /dev/null ++++ b/OvmfPkg/OvmfRngDxe.fdf.inc +@@ -0,0 +1,6 @@ ++## ++# SPDX-License-Identifier: BSD-2-Clause-Patent ++## ++ ++INF SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf ++INF OvmfPkg/VirtioRngDxe/VirtioRng.inf +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Add-AArch64-RawAlgorithm-support-.patch b/edk2-SecurityPkg-RngDxe-Add-AArch64-RawAlgorithm-support-.patch new file mode 100644 index 0000000..dc9a102 --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Add-AArch64-RawAlgorithm-support-.patch @@ -0,0 +1,246 @@ +From 660ffc1753c84e89281d54059c0cb73eef7200d0 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Tue, 25 Jun 2024 22:27:16 -0400 +Subject: [PATCH 09/31] SecurityPkg/RngDxe: Add AArch64 RawAlgorithm support + through ArmTrngLib + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [9/31] 34f5db557b893a686c382a09ceacda728dbd4ad9 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +CVE: CVE-2022-45237 +Upstream: Merged + +commit 863fe9e191fb3d90c3283062183692c04cd71975 +Author: Sami Mujawar +Date: Fri Oct 28 17:32:55 2022 +0200 + + SecurityPkg/RngDxe: Add AArch64 RawAlgorithm support through ArmTrngLib + + Bugzilla: 3668 (https://bugzilla.tianocore.org/show_bug.cgi?id=3668) + + RawAlgorithm is used to provide access to entropy that is suitable + for cryptographic applications. Therefore, add RawAlgorithm support + that provides access to entropy using the ArmTrngLib. + + Also remove unused UefiBootServicesTableLib library inclusion + and Status variable. + + Signed-off-by: Pierre Gondois + Acked-by: Jiewen Yao + +Signed-off-by: Jon Maloy +--- + .../RngDxe/AArch64/RngDxe.c | 28 ++++++-- + .../RandomNumberGenerator/RngDxe/ArmTrng.c | 71 +++++++++++++++++++ + .../RandomNumberGenerator/RngDxe/RngDxe.inf | 5 ++ + SecurityPkg/SecurityPkg.dsc | 4 ++ + 4 files changed, 104 insertions(+), 4 deletions(-) + create mode 100644 SecurityPkg/RandomNumberGenerator/RngDxe/ArmTrng.c + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c +index c9d66d9777..c0b0d28d48 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c +@@ -1,11 +1,13 @@ + /** @file + RNG Driver to produce the UEFI Random Number Generator protocol. + +- The driver will use the RNDR instruction to produce random numbers. ++ The driver can use RNDR instruction (through the RngLib and if FEAT_RNG is ++ present) to produce random numbers. It also uses the Arm FW-TRNG interface ++ to implement EFI_RNG_ALGORITHM_RAW. + + RNG Algorithms defined in UEFI 2.4: + - EFI_RNG_ALGORITHM_SP800_90_CTR_256_GUID +- - EFI_RNG_ALGORITHM_RAW - Unsupported ++ - EFI_RNG_ALGORITHM_RAW + - EFI_RNG_ALGORITHM_SP800_90_HMAC_256_GUID + - EFI_RNG_ALGORITHM_SP800_90_HASH_256_GUID + - EFI_RNG_ALGORITHM_X9_31_3DES_GUID - Unsupported +@@ -26,12 +28,14 @@ + #include + #include + #include ++#include ++#include + #include + + #include "RngDxeInternals.h" + + // Maximum number of Rng algorithms. +-#define RNG_AVAILABLE_ALGO_MAX 1 ++#define RNG_AVAILABLE_ALGO_MAX 2 + + /** Allocate and initialize mAvailableAlgoArray with the available + Rng algorithms. Also update mAvailableAlgoArrayCount. +@@ -46,8 +50,9 @@ GetAvailableAlgorithms ( + ) + { + UINT64 DummyRand; ++ UINT16 MajorRevision; ++ UINT16 MinorRevision; + +- // Allocate RNG_AVAILABLE_ALGO_MAX entries to avoid evaluating + // Rng algorithms 2 times, one for the allocation, one to populate. + mAvailableAlgoArray = AllocateZeroPool (RNG_AVAILABLE_ALGO_MAX); + if (mAvailableAlgoArray == NULL) { +@@ -64,6 +69,16 @@ GetAvailableAlgorithms ( + mAvailableAlgoArrayCount++; + } + ++ // Raw algorithm (Trng) ++ if (!EFI_ERROR (GetArmTrngVersion (&MajorRevision, &MinorRevision))) { ++ CopyMem ( ++ &mAvailableAlgoArray[mAvailableAlgoArrayCount], ++ &gEfiRngAlgorithmRaw, ++ sizeof (EFI_RNG_ALGORITHM) ++ ); ++ mAvailableAlgoArrayCount++; ++ } ++ + return EFI_SUCCESS; + } + +@@ -141,6 +156,11 @@ FoundAlgo: + return Status; + } + ++ // Raw algorithm (Trng) ++ if (CompareGuid (RNGAlgorithm, &gEfiRngAlgorithmRaw)) { ++ return GenerateEntropy (RNGValueLength, RNGValue); ++ } ++ + // + // Other algorithms are unsupported by this driver. + // +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/ArmTrng.c b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmTrng.c +new file mode 100644 +index 0000000000..ffe557b692 +--- /dev/null ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmTrng.c +@@ -0,0 +1,71 @@ ++/** @file ++ RNG Driver to produce the UEFI Random Number Generator protocol. ++ ++ The driver implements the EFI_RNG_ALGORITHM_RAW using the FW-TRNG ++ interface to provide entropy. ++ ++ Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
++ ++ SPDX-License-Identifier: BSD-2-Clause-Patent ++ ++**/ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "RngDxeInternals.h" ++ ++/** ++ Generate high-quality entropy source using a TRNG or through RDRAND. ++ ++ @param[in] Length Size of the buffer, in bytes, to fill with. ++ @param[out] Entropy Pointer to the buffer to store the entropy data. ++ ++ @retval RETURN_SUCCESS The function completed successfully. ++ @retval RETURN_INVALID_PARAMETER Invalid parameter. ++ @retval RETURN_UNSUPPORTED Function not implemented. ++ @retval RETURN_BAD_BUFFER_SIZE Buffer size is too small. ++ @retval RETURN_NOT_READY No Entropy available. ++**/ ++EFI_STATUS ++EFIAPI ++GenerateEntropy ( ++ IN UINTN Length, ++ OUT UINT8 *Entropy ++ ) ++{ ++ EFI_STATUS Status; ++ UINTN CollectedEntropyBits; ++ UINTN RequiredEntropyBits; ++ UINTN EntropyBits; ++ UINTN Index; ++ UINTN MaxBits; ++ ++ ZeroMem (Entropy, Length); ++ ++ RequiredEntropyBits = (Length << 3); ++ Index = 0; ++ CollectedEntropyBits = 0; ++ MaxBits = GetArmTrngMaxSupportedEntropyBits (); ++ while (CollectedEntropyBits < RequiredEntropyBits) { ++ EntropyBits = MIN ((RequiredEntropyBits - CollectedEntropyBits), MaxBits); ++ Status = GetArmTrngEntropy ( ++ EntropyBits, ++ (Length - Index), ++ &Entropy[Index] ++ ); ++ if (EFI_ERROR (Status)) { ++ // Discard the collected bits. ++ ZeroMem (Entropy, Length); ++ return Status; ++ } ++ ++ CollectedEntropyBits += EntropyBits; ++ Index += (EntropyBits >> 3); ++ } // while ++ ++ return Status; ++} +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +index 1985dfbb46..e0e767cbf3 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +@@ -43,8 +43,10 @@ + + [Sources.AARCH64] + AArch64/RngDxe.c ++ ArmTrng.c + + [Packages] ++ MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec + SecurityPkg/SecurityPkg.dec + +@@ -57,6 +59,9 @@ + TimerLib + RngLib + ++[LibraryClasses.AARCH64] ++ ArmTrngLib ++ + [Guids] + gEfiRngAlgorithmSp80090Hash256Guid ## SOMETIMES_PRODUCES ## GUID # Unique ID of the algorithm for RNG + gEfiRngAlgorithmSp80090Hmac256Guid ## SOMETIMES_PRODUCES ## GUID # Unique ID of the algorithm for RNG +diff --git a/SecurityPkg/SecurityPkg.dsc b/SecurityPkg/SecurityPkg.dsc +index 73a93c2285..9f58cc2333 100644 +--- a/SecurityPkg/SecurityPkg.dsc ++++ b/SecurityPkg/SecurityPkg.dsc +@@ -3,6 +3,8 @@ + # + # Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.
+ # (C) Copyright 2015-2020 Hewlett Packard Enterprise Development LP
++# Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.
++# Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
+ # SPDX-License-Identifier: BSD-2-Clause-Patent + # + ## +@@ -86,6 +88,8 @@ + + ArmSoftFloatLib|ArmPkg/Library/ArmSoftFloatLib/ArmSoftFloatLib.inf + ++ ArmTrngLib|MdePkg/Library/BaseArmTrngLibNull/BaseArmTrngLibNull.inf ++ + [LibraryClasses.ARM] + RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf + +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Add-Arm-support-of-RngDxe.patch b/edk2-SecurityPkg-RngDxe-Add-Arm-support-of-RngDxe.patch new file mode 100644 index 0000000..39d41c2 --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Add-Arm-support-of-RngDxe.patch @@ -0,0 +1,311 @@ +From 0c6e925403e5aa50a77797af59308e6fee4be6b1 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Tue, 25 Jun 2024 22:31:58 -0400 +Subject: [PATCH 12/31] SecurityPkg/RngDxe: Add Arm support of RngDxe + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [12/31] 11b72f6d69392c7b2e8565025a576e76877fe7ed + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +CVE: CVE-2022-45237 +Upstream: Merged + +commit 9eb5ccda505917f6ee80284ed6fb5b51aa7152f9 +Author: Pierre Gondois +Date: Fri Oct 28 17:32:58 2022 +0200 + + SecurityPkg/RngDxe: Add Arm support of RngDxe + + Bugzilla: 3668 (https://bugzilla.tianocore.org/show_bug.cgi?id=3668) + + Add RngDxe support for Arm. This implementation uses the ArmTrngLib + to support the RawAlgorithm and doens't support the RNDR instruction. + + To re-use the RngGetRNG(), RngGetInfo() and FreeAvailableAlgorithms() + functions, create Arm/AArch64 files which implement the arch specific + function GetAvailableAlgorithms(). Indeed, FEAT_RNG instruction is not + supported on Arm. + + Signed-off-by: Pierre Gondois + Acked-by: Jiewen Yao + +Signed-off-by: Jon Maloy +--- + .../RngDxe/AArch64/AArch64Algo.c | 72 +++++++++++++++++++ + .../RngDxe/Arm/ArmAlgo.c | 51 +++++++++++++ + .../RandomNumberGenerator/RngDxe/ArmRngDxe.c | 60 ---------------- + .../RandomNumberGenerator/RngDxe/RngDxe.inf | 12 +++- + SecurityPkg/SecurityPkg.dsc | 2 +- + 5 files changed, 133 insertions(+), 64 deletions(-) + create mode 100644 SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/AArch64Algo.c + create mode 100644 SecurityPkg/RandomNumberGenerator/RngDxe/Arm/ArmAlgo.c + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/AArch64Algo.c b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/AArch64Algo.c +new file mode 100644 +index 0000000000..e8be217f8a +--- /dev/null ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/AArch64Algo.c +@@ -0,0 +1,72 @@ ++/** @file ++ Aarch64 specific code. ++ ++ Copyright (c) 2022, Arm Limited. All rights reserved.
++ SPDX-License-Identifier: BSD-2-Clause-Patent ++**/ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "RngDxeInternals.h" ++ ++// Maximum number of Rng algorithms. ++#define RNG_AVAILABLE_ALGO_MAX 2 ++ ++/** Allocate and initialize mAvailableAlgoArray with the available ++ Rng algorithms. Also update mAvailableAlgoArrayCount. ++ ++ @retval EFI_SUCCESS The function completed successfully. ++ @retval EFI_OUT_OF_RESOURCES Could not allocate memory. ++**/ ++EFI_STATUS ++EFIAPI ++GetAvailableAlgorithms ( ++ VOID ++ ) ++{ ++ UINT64 DummyRand; ++ UINT16 MajorRevision; ++ UINT16 MinorRevision; ++ ++ // Rng algorithms 2 times, one for the allocation, one to populate. ++ mAvailableAlgoArray = AllocateZeroPool (RNG_AVAILABLE_ALGO_MAX); ++ if (mAvailableAlgoArray == NULL) { ++ return EFI_OUT_OF_RESOURCES; ++ } ++ ++ // Check RngGetBytes() before advertising PcdCpuRngSupportedAlgorithm. ++ if (!EFI_ERROR (RngGetBytes (sizeof (DummyRand), (UINT8 *)&DummyRand))) { ++ CopyMem ( ++ &mAvailableAlgoArray[mAvailableAlgoArrayCount], ++ PcdGetPtr (PcdCpuRngSupportedAlgorithm), ++ sizeof (EFI_RNG_ALGORITHM) ++ ); ++ mAvailableAlgoArrayCount++; ++ ++ DEBUG_CODE_BEGIN (); ++ if (IsZeroGuid (PcdGetPtr (PcdCpuRngSupportedAlgorithm))) { ++ DEBUG (( ++ DEBUG_WARN, ++ "PcdCpuRngSupportedAlgorithm should be a non-zero GUID\n" ++ )); ++ } ++ ++ DEBUG_CODE_END (); ++ } ++ ++ // Raw algorithm (Trng) ++ if (!EFI_ERROR (GetArmTrngVersion (&MajorRevision, &MinorRevision))) { ++ CopyMem ( ++ &mAvailableAlgoArray[mAvailableAlgoArrayCount], ++ &gEfiRngAlgorithmRaw, ++ sizeof (EFI_RNG_ALGORITHM) ++ ); ++ mAvailableAlgoArrayCount++; ++ } ++ ++ return EFI_SUCCESS; ++} +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/Arm/ArmAlgo.c b/SecurityPkg/RandomNumberGenerator/RngDxe/Arm/ArmAlgo.c +new file mode 100644 +index 0000000000..4b24f5c4a6 +--- /dev/null ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/Arm/ArmAlgo.c +@@ -0,0 +1,51 @@ ++/** @file ++ Arm specific code. ++ ++ Copyright (c) 2022, Arm Limited. All rights reserved.
++ SPDX-License-Identifier: BSD-2-Clause-Patent ++**/ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "RngDxeInternals.h" ++ ++// Maximum number of Rng algorithms. ++#define RNG_AVAILABLE_ALGO_MAX 1 ++ ++/** Allocate and initialize mAvailableAlgoArray with the available ++ Rng algorithms. Also update mAvailableAlgoArrayCount. ++ ++ @retval EFI_SUCCESS The function completed successfully. ++ @retval EFI_OUT_OF_RESOURCES Could not allocate memory. ++**/ ++EFI_STATUS ++EFIAPI ++GetAvailableAlgorithms ( ++ VOID ++ ) ++{ ++ UINT16 MajorRevision; ++ UINT16 MinorRevision; ++ ++ // Rng algorithms 2 times, one for the allocation, one to populate. ++ mAvailableAlgoArray = AllocateZeroPool (RNG_AVAILABLE_ALGO_MAX); ++ if (mAvailableAlgoArray == NULL) { ++ return EFI_OUT_OF_RESOURCES; ++ } ++ ++ // Raw algorithm (Trng) ++ if (!EFI_ERROR (GetArmTrngVersion (&MajorRevision, &MinorRevision))) { ++ CopyMem ( ++ &mAvailableAlgoArray[mAvailableAlgoArrayCount], ++ &gEfiRngAlgorithmRaw, ++ sizeof (EFI_RNG_ALGORITHM) ++ ); ++ mAvailableAlgoArrayCount++; ++ } ++ ++ return EFI_SUCCESS; ++} +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c +index a800a85792..5e7d9ef681 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c +@@ -28,70 +28,10 @@ + #include + #include + #include +-#include +-#include + #include + + #include "RngDxeInternals.h" + +-// Maximum number of Rng algorithms. +-#define RNG_AVAILABLE_ALGO_MAX 2 +- +-/** Allocate and initialize mAvailableAlgoArray with the available +- Rng algorithms. Also update mAvailableAlgoArrayCount. +- +- @retval EFI_SUCCESS The function completed successfully. +- @retval EFI_OUT_OF_RESOURCES Could not allocate memory. +-**/ +-EFI_STATUS +-EFIAPI +-GetAvailableAlgorithms ( +- VOID +- ) +-{ +- UINT64 DummyRand; +- UINT16 MajorRevision; +- UINT16 MinorRevision; +- +- // Rng algorithms 2 times, one for the allocation, one to populate. +- mAvailableAlgoArray = AllocateZeroPool (RNG_AVAILABLE_ALGO_MAX); +- if (mAvailableAlgoArray == NULL) { +- return EFI_OUT_OF_RESOURCES; +- } +- +- // Check RngGetBytes() before advertising PcdCpuRngSupportedAlgorithm. +- if (!EFI_ERROR (RngGetBytes (sizeof (DummyRand), (UINT8 *)&DummyRand))) { +- CopyMem ( +- &mAvailableAlgoArray[mAvailableAlgoArrayCount], +- PcdGetPtr (PcdCpuRngSupportedAlgorithm), +- sizeof (EFI_RNG_ALGORITHM) +- ); +- mAvailableAlgoArrayCount++; +- +- DEBUG_CODE_BEGIN (); +- if (IsZeroGuid (PcdGetPtr (PcdCpuRngSupportedAlgorithm))) { +- DEBUG (( +- DEBUG_WARN, +- "PcdCpuRngSupportedAlgorithm should be a non-zero GUID\n" +- )); +- } +- +- DEBUG_CODE_END (); +- } +- +- // Raw algorithm (Trng) +- if (!EFI_ERROR (GetArmTrngVersion (&MajorRevision, &MinorRevision))) { +- CopyMem ( +- &mAvailableAlgoArray[mAvailableAlgoArrayCount], +- &gEfiRngAlgorithmRaw, +- sizeof (EFI_RNG_ALGORITHM) +- ); +- mAvailableAlgoArrayCount++; +- } +- +- return EFI_SUCCESS; +-} +- + /** Free mAvailableAlgoArray. + **/ + VOID +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +index 1d0bdef57d..c8e0ee4ae5 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +@@ -28,7 +28,7 @@ + # + # The following information is for reference only and not required by the build tools. + # +-# VALID_ARCHITECTURES = IA32 X64 AARCH64 ++# VALID_ARCHITECTURES = IA32 X64 AARCH64 ARM + # + + [Sources.common] +@@ -41,10 +41,16 @@ + Rand/AesCore.c + Rand/AesCore.h + +-[Sources.AARCH64] ++[Sources.AARCH64, Sources.ARM] + ArmRngDxe.c + ArmTrng.c + ++[Sources.AARCH64] ++ AArch64/AArch64Algo.c ++ ++[Sources.ARM] ++ Arm/ArmAlgo.c ++ + [Packages] + MdeModulePkg/MdeModulePkg.dec + MdePkg/MdePkg.dec +@@ -59,7 +65,7 @@ + TimerLib + RngLib + +-[LibraryClasses.AARCH64] ++[LibraryClasses.AARCH64, LibraryClasses.ARM] + ArmTrngLib + + [Guids] +diff --git a/SecurityPkg/SecurityPkg.dsc b/SecurityPkg/SecurityPkg.dsc +index 9f58cc2333..36493f04ee 100644 +--- a/SecurityPkg/SecurityPkg.dsc ++++ b/SecurityPkg/SecurityPkg.dsc +@@ -281,7 +281,7 @@ + SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.inf + SecurityPkg/VariableAuthenticated/SecureBootDefaultKeysDxe/SecureBootDefaultKeysDxe.inf + +-[Components.IA32, Components.X64, Components.AARCH64] ++[Components.IA32, Components.X64, Components.AARCH64, Components.ARM] + # + # Random Number Generator + # +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Add-debug-warning-for-NULL-PcdCpu.patch b/edk2-SecurityPkg-RngDxe-Add-debug-warning-for-NULL-PcdCpu.patch new file mode 100644 index 0000000..e146890 --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Add-debug-warning-for-NULL-PcdCpu.patch @@ -0,0 +1,58 @@ +From 8b78800fed2a4af7c08eebd20d1bf764e8e10c84 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Tue, 25 Jun 2024 22:28:58 -0400 +Subject: [PATCH 10/31] SecurityPkg/RngDxe: Add debug warning for NULL + PcdCpuRngSupportedAlgorithm + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [10/31] 66b888e9b1e2be0c79784e02b4821854bd80432d + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +CVE: CVE-2022-45237 +Upstream: Merged + +commit 6cdddccf0085cf2929f8ae710515e4e53663dfb2 +Author: Pierre Gondois +Date: Fri Oct 28 17:32:56 2022 +0200 + + SecurityPkg/RngDxe: Add debug warning for NULL PcdCpuRngSupportedAlgorithm + + PcdCpuRngSupportedAlgorithm should allow to identify the the algorithm + used by the RNDR CPU instruction to generate a random number. + Add a debug warning if the Pcd is not set. + + Signed-off-by: Pierre Gondois + Acked-by: Jiewen Yao + +Signed-off-by: Jon Maloy +--- + .../RandomNumberGenerator/RngDxe/AArch64/RngDxe.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c +index c0b0d28d48..a800a85792 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c +@@ -67,6 +67,16 @@ GetAvailableAlgorithms ( + sizeof (EFI_RNG_ALGORITHM) + ); + mAvailableAlgoArrayCount++; ++ ++ DEBUG_CODE_BEGIN (); ++ if (IsZeroGuid (PcdGetPtr (PcdCpuRngSupportedAlgorithm))) { ++ DEBUG (( ++ DEBUG_WARN, ++ "PcdCpuRngSupportedAlgorithm should be a non-zero GUID\n" ++ )); ++ } ++ ++ DEBUG_CODE_END (); + } + + // Raw algorithm (Trng) +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Check-before-advertising-Cpu-Rng-.patch b/edk2-SecurityPkg-RngDxe-Check-before-advertising-Cpu-Rng-.patch new file mode 100644 index 0000000..b285fca --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Check-before-advertising-Cpu-Rng-.patch @@ -0,0 +1,336 @@ +From 5bd27a5a923c8880a06d52fca48e304becbbb8f6 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Tue, 25 Jun 2024 22:25:23 -0400 +Subject: [PATCH 08/31] SecurityPkg/RngDxe: Check before advertising Cpu Rng + algo + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [8/31] 5417b276749a2d1b1afa9465b5b7a501def26a12 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +CVE: CVE-2022-45237 +Upstream: Merged + +commit 4b3e9d80bedf5909a4ec901425ed9c0a738fc76f +Author: Pierre Gondois +Date: Fri Oct 28 17:32:54 2022 +0200 + + SecurityPkg/RngDxe: Check before advertising Cpu Rng algo + + RngGetBytes() relies on the RngLib. The RngLib might use the RNDR + instruction if the FEAT_RNG feature is present. RngGetInfo and + RngGetRNG both must check that RngGetBytes() is working before + advertising/using it. + + To do so, allocate an array storing the available algorithms. + The Rng algorithm at the lowest index will be the default Rng + algorithm. The array is shared between RngGetInfo and RngGetRNG. + + This array is allocated when the driver is loaded, and freed + when unloaded. + + This patch also prevents from having PcdCpuRngSupportedAlgorithm + let to a zero GUID, but let the possibility to have no valid Rng + algorithm in such case. + + Signed-off-by: Pierre Gondois + Acked-by: Jiewen Yao + +Signed-off-by: Jon Maloy +--- + .../RngDxe/AArch64/RngDxe.c | 87 +++++++++++++++++-- + .../RngDxe/Rand/RngDxe.c | 26 ++++++ + .../RandomNumberGenerator/RngDxe/RngDxe.c | 40 ++++++++- + .../RandomNumberGenerator/RngDxe/RngDxe.inf | 1 + + .../RngDxe/RngDxeInternals.h | 27 ++++++ + 5 files changed, 172 insertions(+), 9 deletions(-) + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c +index 8c6ad4ed43..c9d66d9777 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c +@@ -22,11 +22,63 @@ + + #include + #include ++#include ++#include + #include ++#include + #include + + #include "RngDxeInternals.h" + ++// Maximum number of Rng algorithms. ++#define RNG_AVAILABLE_ALGO_MAX 1 ++ ++/** Allocate and initialize mAvailableAlgoArray with the available ++ Rng algorithms. Also update mAvailableAlgoArrayCount. ++ ++ @retval EFI_SUCCESS The function completed successfully. ++ @retval EFI_OUT_OF_RESOURCES Could not allocate memory. ++**/ ++EFI_STATUS ++EFIAPI ++GetAvailableAlgorithms ( ++ VOID ++ ) ++{ ++ UINT64 DummyRand; ++ ++ // Allocate RNG_AVAILABLE_ALGO_MAX entries to avoid evaluating ++ // Rng algorithms 2 times, one for the allocation, one to populate. ++ mAvailableAlgoArray = AllocateZeroPool (RNG_AVAILABLE_ALGO_MAX); ++ if (mAvailableAlgoArray == NULL) { ++ return EFI_OUT_OF_RESOURCES; ++ } ++ ++ // Check RngGetBytes() before advertising PcdCpuRngSupportedAlgorithm. ++ if (!EFI_ERROR (RngGetBytes (sizeof (DummyRand), (UINT8 *)&DummyRand))) { ++ CopyMem ( ++ &mAvailableAlgoArray[mAvailableAlgoArrayCount], ++ PcdGetPtr (PcdCpuRngSupportedAlgorithm), ++ sizeof (EFI_RNG_ALGORITHM) ++ ); ++ mAvailableAlgoArrayCount++; ++ } ++ ++ return EFI_SUCCESS; ++} ++ ++/** Free mAvailableAlgoArray. ++**/ ++VOID ++EFIAPI ++FreeAvailableAlgorithms ( ++ VOID ++ ) ++{ ++ FreePool (mAvailableAlgoArray); ++ return; ++} ++ + /** + Produces and returns an RNG value using either the default or specified RNG algorithm. + +@@ -59,6 +111,7 @@ RngGetRNG ( + ) + { + EFI_STATUS Status; ++ UINTN Index; + + if ((This == NULL) || (RNGValueLength == 0) || (RNGValue == NULL)) { + return EFI_INVALID_PARAMETER; +@@ -68,9 +121,21 @@ RngGetRNG ( + // + // Use the default RNG algorithm if RNGAlgorithm is NULL. + // +- RNGAlgorithm = PcdGetPtr (PcdCpuRngSupportedAlgorithm); ++ for (Index = 0; Index < mAvailableAlgoArrayCount; Index++) { ++ if (!IsZeroGuid (&mAvailableAlgoArray[Index])) { ++ RNGAlgorithm = &mAvailableAlgoArray[Index]; ++ goto FoundAlgo; ++ } ++ } ++ ++ if (Index == mAvailableAlgoArrayCount) { ++ // No algorithm available. ++ ASSERT (Index != mAvailableAlgoArrayCount); ++ return EFI_DEVICE_ERROR; ++ } + } + ++FoundAlgo: + if (CompareGuid (RNGAlgorithm, PcdGetPtr (PcdCpuRngSupportedAlgorithm))) { + Status = RngGetBytes (RNGValueLength, RNGValue); + return Status; +@@ -113,24 +178,30 @@ RngGetInfo ( + OUT EFI_RNG_ALGORITHM *RNGAlgorithmList + ) + { +- UINTN RequiredSize; +- EFI_RNG_ALGORITHM *CpuRngSupportedAlgorithm; +- +- RequiredSize = sizeof (EFI_RNG_ALGORITHM); ++ UINTN RequiredSize; + + if ((This == NULL) || (RNGAlgorithmListSize == NULL)) { + return EFI_INVALID_PARAMETER; + } + ++ RequiredSize = mAvailableAlgoArrayCount * sizeof (EFI_RNG_ALGORITHM); ++ ++ if (RequiredSize == 0) { ++ // No supported algorithms found. ++ return EFI_UNSUPPORTED; ++ } ++ + if (*RNGAlgorithmListSize < RequiredSize) { + *RNGAlgorithmListSize = RequiredSize; + return EFI_BUFFER_TOO_SMALL; + } + +- CpuRngSupportedAlgorithm = PcdGetPtr (PcdCpuRngSupportedAlgorithm); +- +- CopyMem(&RNGAlgorithmList[0], CpuRngSupportedAlgorithm, sizeof (EFI_RNG_ALGORITHM)); ++ if (RNGAlgorithmList == NULL) { ++ return EFI_INVALID_PARAMETER; ++ } + ++ // There is no gap in the array, so copy the block. ++ CopyMem (RNGAlgorithmList, mAvailableAlgoArray, RequiredSize); + *RNGAlgorithmListSize = RequiredSize; + return EFI_SUCCESS; + } +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +index 70b6ac20c9..7caa64a4ff 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +@@ -26,6 +26,32 @@ + + #include "RngDxeInternals.h" + ++/** Allocate and initialize mAvailableAlgoArray with the available ++ Rng algorithms. Also update mAvailableAlgoArrayCount. ++ ++ @retval EFI_SUCCESS The function completed successfully. ++ @retval EFI_OUT_OF_RESOURCES Could not allocate memory. ++**/ ++EFI_STATUS ++EFIAPI ++GetAvailableAlgorithms ( ++ VOID ++ ) ++{ ++ return EFI_SUCCESS; ++} ++ ++/** Free mAvailableAlgoArray. ++**/ ++VOID ++EFIAPI ++FreeAvailableAlgorithms ( ++ VOID ++ ) ++{ ++ return; ++} ++ + /** + Produces and returns an RNG value using either the default or specified RNG algorithm. + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c +index 4599728889..cc2ddfcc06 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c +@@ -27,6 +27,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + + #include "RngDxeInternals.h" + ++// ++// Array containing the validated Rng algorithm. ++// The entry with the lowest index will be the default algorithm. ++// ++UINTN mAvailableAlgoArrayCount; ++EFI_RNG_ALGORITHM *mAvailableAlgoArray; ++ + // + // The Random Number Generator (RNG) protocol + // +@@ -66,8 +73,39 @@ RngDriverEntry ( + &mRngRdRand, + NULL + ); ++ if (EFI_ERROR (Status)) { ++ return Status; ++ } ++ ++ // ++ // Get the list of available algorithm. ++ // ++ return GetAvailableAlgorithms (); ++} ++ ++/** ++ This is the unload handle for RndgDxe module. ++ ++ Disconnect the driver specified by ImageHandle from all the devices in the handle database. ++ Uninstall all the protocols installed in the driver entry point. + +- return Status; ++ @param[in] ImageHandle The drivers' driver image. ++ ++ @retval EFI_SUCCESS The image is unloaded. ++ @retval Others Failed to unload the image. ++ ++**/ ++EFI_STATUS ++EFIAPI ++RngDriverUnLoad ( ++ IN EFI_HANDLE ImageHandle ++ ) ++{ ++ // ++ // Free the list of available algorithm. ++ // ++ FreeAvailableAlgorithms (); ++ return EFI_SUCCESS; + } + + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +index 60efb5562e..1985dfbb46 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +@@ -22,6 +22,7 @@ + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + ENTRY_POINT = RngDriverEntry ++ UNLOAD_IMAGE = RngDriverUnLoad + MODULE_UNI_FILE = RngDxe.uni + + # +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h +index f17adb83fb..0ef5e6522f 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h +@@ -12,6 +12,33 @@ + + #include + ++// ++// Array containing the validated Rng algorithm. ++// The entry with the lowest index will be the default algorithm. ++// ++extern UINTN mAvailableAlgoArrayCount; ++extern EFI_RNG_ALGORITHM *mAvailableAlgoArray; ++ ++/** Allocate and initialize mAvailableAlgoArray with the available ++ Rng algorithms. Also update mAvailableAlgoArrayCount. ++ ++ @retval EFI_SUCCESS The function completed successfully. ++ @retval EFI_OUT_OF_RESOURCES Could not allocate memory. ++**/ ++EFI_STATUS ++EFIAPI ++GetAvailableAlgorithms ( ++ VOID ++ ); ++ ++/** Free mAvailableAlgoArray. ++**/ ++VOID ++EFIAPI ++FreeAvailableAlgorithms ( ++ VOID ++ ); ++ + /** + Returns information about the random number generation implementation. + +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Conditionally-install-EFI_RNG_PRO.patch b/edk2-SecurityPkg-RngDxe-Conditionally-install-EFI_RNG_PRO.patch new file mode 100644 index 0000000..918fe39 --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Conditionally-install-EFI_RNG_PRO.patch @@ -0,0 +1,79 @@ +From e7444d0b84a8fd41aa63ecb083e65fd56b32fd38 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Sun, 23 Jun 2024 14:21:01 -0400 +Subject: [PATCH 14/31] SecurityPkg/RngDxe: Conditionally install + EFI_RNG_PROTOCOL + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [14/31] bc64d4cad6c30353723d674ef9f10eb10aeb1cac + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit 75fb0cfc82376906243386514be0e4067d702117 +Author: Pierre Gondois +Date: Thu Nov 24 17:17:55 2022 +0100 + + SecurityPkg/RngDxe: Conditionally install EFI_RNG_PROTOCOL + + On Arm platforms, the number of available RNG algorithms is + dynamically detected and can be 0 in the absence of FEAT_RNG + and firmware TRNG. + In this case, the EFI_RNG_PROTOCOL should not be installed to + prevent from installing an empty protocol. + + Signed-off-by: Pierre Gondois + [ardb: return EFI_REQUEST_UNLOAD_IMAGE instead of an error] + Reviewed-by: Ard Biesheuvel + +Signed-off-by: Jon Maloy +--- + .../RandomNumberGenerator/RngDxe/RngDxe.c | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c +index cc2ddfcc06..55e8dd49d0 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c +@@ -63,6 +63,18 @@ RngDriverEntry ( + EFI_STATUS Status; + EFI_HANDLE Handle; + ++ // ++ // Get the list of available algorithm. ++ // ++ Status = GetAvailableAlgorithms (); ++ if (EFI_ERROR (Status)) { ++ return Status; ++ } ++ ++ if (mAvailableAlgoArrayCount == 0) { ++ return EFI_REQUEST_UNLOAD_IMAGE; ++ } ++ + // + // Install UEFI RNG (Random Number Generator) Protocol + // +@@ -74,13 +86,10 @@ RngDriverEntry ( + NULL + ); + if (EFI_ERROR (Status)) { +- return Status; ++ FreeAvailableAlgorithms (); + } + +- // +- // Get the list of available algorithm. +- // +- return GetAvailableAlgorithms (); ++ return Status; + } + + /** +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Correctly-update-mAvailableAlgoAr.patch b/edk2-SecurityPkg-RngDxe-Correctly-update-mAvailableAlgoAr.patch new file mode 100644 index 0000000..8384f2f --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Correctly-update-mAvailableAlgoAr.patch @@ -0,0 +1,105 @@ +From b9a937603080bfada6c224a6e9da046a8a33f868 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Sun, 23 Jun 2024 14:18:18 -0400 +Subject: [PATCH 13/31] SecurityPkg/RngDxe: Correctly update + mAvailableAlgoArrayCount + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [13/31] 3e06e270cad90038537305a4cb7828fcc45251fb + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit bfb574db110899471fe09db819587b3151c7b7b5 +Author: Pierre Gondois +Date: Thu Nov 24 17:17:54 2022 +0100 + + SecurityPkg/RngDxe: Correctly update mAvailableAlgoArrayCount + + mAvailableAlgoArrayCount holds the count of available RNG algorithms. + In a following patch, its value will be used to prevent the + EFI_RNG_PROTOCOL to be installed if no RNG algorithm is available. + + Correctly set/reset the value for all implementations. + + Signed-off-by: Pierre Gondois + Reviewed-by: Ard Biesheuvel + +Signed-off-by: Jon Maloy +--- + .../RandomNumberGenerator/RngDxe/ArmRngDxe.c | 1 + + .../RandomNumberGenerator/RngDxe/Rand/RngDxe.c | 16 ++++++++++++++-- + 2 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c +index 5e7d9ef681..0e44d0c931 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c +@@ -40,6 +40,7 @@ FreeAvailableAlgorithms ( + VOID + ) + { ++ mAvailableAlgoArrayCount = 0; + FreePool (mAvailableAlgoArray); + return; + } +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +index 7caa64a4ff..149de875ce 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +@@ -26,6 +26,11 @@ + + #include "RngDxeInternals.h" + ++// ++// Count of Rng algorithms. ++// ++#define RNG_ALGORITHM_COUNT 2 ++ + /** Allocate and initialize mAvailableAlgoArray with the available + Rng algorithms. Also update mAvailableAlgoArrayCount. + +@@ -38,6 +43,13 @@ GetAvailableAlgorithms ( + VOID + ) + { ++ ++ UINT64 RngTest; ++ ++ if (GetRandomNumber64 (&RngTest)) { ++ mAvailableAlgoArrayCount = RNG_ALGORITHM_COUNT; ++ } ++ + return EFI_SUCCESS; + } + +@@ -49,6 +61,7 @@ FreeAvailableAlgorithms ( + VOID + ) + { ++ mAvailableAlgoArrayCount = 0; + return; + } + +@@ -159,13 +172,12 @@ RngGetInfo ( + ) + { + UINTN RequiredSize; +- EFI_RNG_ALGORITHM *CpuRngSupportedAlgorithm; + + if ((This == NULL) || (RNGAlgorithmListSize == NULL)) { + return EFI_INVALID_PARAMETER; + } + +- RequiredSize = 2 * sizeof (EFI_RNG_ALGORITHM); ++ RequiredSize = RNG_ALGORITHM_COUNT * sizeof (EFI_RNG_ALGORITHM); + + if (*RNGAlgorithmListSize < RequiredSize) { + *RNGAlgorithmListSize = RequiredSize; +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Documentation-include-parameter-c.patch b/edk2-SecurityPkg-RngDxe-Documentation-include-parameter-c.patch new file mode 100644 index 0000000..7f87bbc --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Documentation-include-parameter-c.patch @@ -0,0 +1,98 @@ +From 0f8890578f46bc791d007b19dbbfa0dd2805032d Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Tue, 25 Jun 2024 22:23:42 -0400 +Subject: [PATCH 07/31] SecurityPkg/RngDxe: Documentation/include/parameter + cleanup + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [7/31] 19a0a13d18fc7f92c7b05e8da08f4d83df77ea6c + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +CVE: CVE-2022-45237 +Upstream: Merged + +commit 199031b2b0233652ad5d5fdf73f0f44c0f264d55 +Author: Pierre Gondois +Date: Fri Oct 28 17:32:53 2022 +0200 + + SecurityPkg/RngDxe: Documentation/include/parameter cleanup + + This patch: + -Update RngGetBytes() documentation to align the function + definition and declaration. + -Improve input parameter checking. Even though 'This' + it is not used, the parameter should always point to the + current EFI_RNG_PROTOCOL. + -Removes TimerLib inclusion as unused. + + Signed-off-by: Pierre Gondois + Acked-by: Jiewen Yao + +Signed-off-by: Jon Maloy +--- + SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c | 3 +-- + SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c | 2 +- + SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c | 3 +-- + 3 files changed, 3 insertions(+), 5 deletions(-) + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c +index f6a0bf7b2b..8c6ad4ed43 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c +@@ -23,7 +23,6 @@ + #include + #include + #include +-#include + #include + + #include "RngDxeInternals.h" +@@ -61,7 +60,7 @@ RngGetRNG ( + { + EFI_STATUS Status; + +- if ((RNGValueLength == 0) || (RNGValue == NULL)) { ++ if ((This == NULL) || (RNGValueLength == 0) || (RNGValue == NULL)) { + return EFI_INVALID_PARAMETER; + } + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +index 5a649ecf24..70b6ac20c9 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +@@ -59,7 +59,7 @@ RngGetRNG ( + { + EFI_STATUS Status; + +- if ((RNGValueLength == 0) || (RNGValue == NULL)) { ++ if ((This == NULL) || (RNGValueLength == 0) || (RNGValue == NULL)) { + return EFI_INVALID_PARAMETER; + } + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c +index 7b8ecfc70d..4599728889 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c +@@ -23,7 +23,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + #include + #include + #include +-#include + #include + + #include "RngDxeInternals.h" +@@ -73,7 +72,7 @@ RngDriverEntry ( + + + /** +- Calls RDRAND to fill a buffer of arbitrary size with random bytes. ++ Runs CPU RNG instruction to fill a buffer of arbitrary size with random bytes. + + @param[in] Length Size of the buffer, in bytes, to fill with. + @param[out] RandBuffer Pointer to the buffer to store the random result. +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Remove-ArchGetSupportedRngAlgorit.patch b/edk2-SecurityPkg-RngDxe-Remove-ArchGetSupportedRngAlgorit.patch new file mode 100644 index 0000000..4c5f254 --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Remove-ArchGetSupportedRngAlgorit.patch @@ -0,0 +1,258 @@ +From df912b4c93cd848991d9a9439d3aba441bae1d67 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Tue, 25 Jun 2024 22:21:09 -0400 +Subject: [PATCH 06/31] SecurityPkg/RngDxe: Remove + ArchGetSupportedRngAlgorithms() + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [6/31] 4066cb1503b5c5a29b6d45a4b671d0829f2671ae + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +CVE: CVE-2022-45237 +Upstream: Merged + +commit 922bf317f1731554b3e77a0a48033a38fdc75a77 +Author: Pierre Gondois +Date: Fri Oct 28 17:32:52 2022 +0200 + + SecurityPkg/RngDxe: Remove ArchGetSupportedRngAlgorithms() + + RngGetInfo() is one of the 2 functions of the EFI_RNG_PROTOCOL. + RngGetInfo() is currently a mere wrapper around + ArchGetSupportedRngAlgorithms() which is implemented differently + depending on the architecture used. + + RngGetInfo() does nothing more than calling + ArchGetSupportedRngAlgorithms(). So remove it, and let RngGetInfo() + be implemented differently according to the architecture. + + This follows the implementation of the other function of the + EFI_RNG_PROTOCOL, RngGetRNG(). + + Signed-off-by: Pierre Gondois + Acked-by: Jiewen Yao + +Signed-off-by: Jon Maloy +--- + .../RngDxe/AArch64/RngDxe.c | 19 +++++-- + .../RngDxe/Rand/RngDxe.c | 24 ++++++--- + .../RandomNumberGenerator/RngDxe/RngDxe.c | 49 ------------------- + .../RngDxe/RngDxeInternals.h | 25 ---------- + 4 files changed, 33 insertions(+), 84 deletions(-) + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c +index 1cdc842966..f6a0bf7b2b 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c +@@ -14,6 +14,7 @@ + Copyright (c) 2021, NUVIA Inc. All rights reserved.
+ Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.
+ (C) Copyright 2015 Hewlett Packard Enterprise Development LP
++ Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +@@ -85,6 +86,7 @@ RngGetRNG ( + /** + Returns information about the random number generation implementation. + ++ @param[in] This A pointer to the EFI_RNG_PROTOCOL instance. + @param[in,out] RNGAlgorithmListSize On input, the size in bytes of RNGAlgorithmList. + On output with a return code of EFI_SUCCESS, the size + in bytes of the data returned in RNGAlgorithmList. On output +@@ -97,14 +99,19 @@ RngGetRNG ( + is the default algorithm for the driver. + + @retval EFI_SUCCESS The RNG algorithm list was returned successfully. ++ @retval EFI_UNSUPPORTED The services is not supported by this driver. ++ @retval EFI_DEVICE_ERROR The list of algorithms could not be retrieved due to a ++ hardware or firmware error. ++ @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect. + @retval EFI_BUFFER_TOO_SMALL The buffer RNGAlgorithmList is too small to hold the result. + + **/ +-UINTN ++EFI_STATUS + EFIAPI +-ArchGetSupportedRngAlgorithms ( +- IN OUT UINTN *RNGAlgorithmListSize, +- OUT EFI_RNG_ALGORITHM *RNGAlgorithmList ++RngGetInfo ( ++ IN EFI_RNG_PROTOCOL *This, ++ IN OUT UINTN *RNGAlgorithmListSize, ++ OUT EFI_RNG_ALGORITHM *RNGAlgorithmList + ) + { + UINTN RequiredSize; +@@ -112,6 +119,10 @@ ArchGetSupportedRngAlgorithms ( + + RequiredSize = sizeof (EFI_RNG_ALGORITHM); + ++ if ((This == NULL) || (RNGAlgorithmListSize == NULL)) { ++ return EFI_INVALID_PARAMETER; ++ } ++ + if (*RNGAlgorithmListSize < RequiredSize) { + *RNGAlgorithmListSize = RequiredSize; + return EFI_BUFFER_TOO_SMALL; +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +index 19755b3bfd..5a649ecf24 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +@@ -104,6 +104,7 @@ RngGetRNG ( + /** + Returns information about the random number generation implementation. + ++ @param[in] This A pointer to the EFI_RNG_PROTOCOL instance. + @param[in,out] RNGAlgorithmListSize On input, the size in bytes of RNGAlgorithmList. + On output with a return code of EFI_SUCCESS, the size + in bytes of the data returned in RNGAlgorithmList. On output +@@ -116,19 +117,28 @@ RngGetRNG ( + is the default algorithm for the driver. + + @retval EFI_SUCCESS The RNG algorithm list was returned successfully. ++ @retval EFI_UNSUPPORTED No supported algorithms found. ++ @retval EFI_DEVICE_ERROR The list of algorithms could not be retrieved due to a ++ hardware or firmware error. ++ @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect. + @retval EFI_BUFFER_TOO_SMALL The buffer RNGAlgorithmList is too small to hold the result. + + **/ +-UINTN ++EFI_STATUS + EFIAPI +-ArchGetSupportedRngAlgorithms ( +- IN OUT UINTN *RNGAlgorithmListSize, +- OUT EFI_RNG_ALGORITHM *RNGAlgorithmList ++RngGetInfo ( ++ IN EFI_RNG_PROTOCOL *This, ++ IN OUT UINTN *RNGAlgorithmListSize, ++ OUT EFI_RNG_ALGORITHM *RNGAlgorithmList + ) + { + UINTN RequiredSize; + EFI_RNG_ALGORITHM *CpuRngSupportedAlgorithm; + ++ if ((This == NULL) || (RNGAlgorithmListSize == NULL)) { ++ return EFI_INVALID_PARAMETER; ++ } ++ + RequiredSize = 2 * sizeof (EFI_RNG_ALGORITHM); + + if (*RNGAlgorithmListSize < RequiredSize) { +@@ -136,9 +146,11 @@ ArchGetSupportedRngAlgorithms ( + return EFI_BUFFER_TOO_SMALL; + } + +- CpuRngSupportedAlgorithm = PcdGetPtr (PcdCpuRngSupportedAlgorithm); ++ if (RNGAlgorithmList == NULL) { ++ return EFI_INVALID_PARAMETER; ++ } + +- CopyMem(&RNGAlgorithmList[0], CpuRngSupportedAlgorithm, sizeof (EFI_RNG_ALGORITHM)); ++ CopyMem (&RNGAlgorithmList[0], &gEfiRngAlgorithmSp80090Ctr256Guid, sizeof (EFI_RNG_ALGORITHM)); + + // x86 platforms also support EFI_RNG_ALGORITHM_RAW via RDSEED + CopyMem(&RNGAlgorithmList[1], &gEfiRngAlgorithmRaw, sizeof (EFI_RNG_ALGORITHM)); +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c +index b959c70536..7b8ecfc70d 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.c +@@ -28,55 +28,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent + + #include "RngDxeInternals.h" + +-/** +- Returns information about the random number generation implementation. +- +- @param[in] This A pointer to the EFI_RNG_PROTOCOL instance. +- @param[in,out] RNGAlgorithmListSize On input, the size in bytes of RNGAlgorithmList. +- On output with a return code of EFI_SUCCESS, the size +- in bytes of the data returned in RNGAlgorithmList. On output +- with a return code of EFI_BUFFER_TOO_SMALL, +- the size of RNGAlgorithmList required to obtain the list. +- @param[out] RNGAlgorithmList A caller-allocated memory buffer filled by the driver +- with one EFI_RNG_ALGORITHM element for each supported +- RNG algorithm. The list must not change across multiple +- calls to the same driver. The first algorithm in the list +- is the default algorithm for the driver. +- +- @retval EFI_SUCCESS The RNG algorithm list was returned successfully. +- @retval EFI_UNSUPPORTED The services is not supported by this driver. +- @retval EFI_DEVICE_ERROR The list of algorithms could not be retrieved due to a +- hardware or firmware error. +- @retval EFI_INVALID_PARAMETER One or more of the parameters are incorrect. +- @retval EFI_BUFFER_TOO_SMALL The buffer RNGAlgorithmList is too small to hold the result. +- +-**/ +-EFI_STATUS +-EFIAPI +-RngGetInfo ( +- IN EFI_RNG_PROTOCOL *This, +- IN OUT UINTN *RNGAlgorithmListSize, +- OUT EFI_RNG_ALGORITHM *RNGAlgorithmList +- ) +-{ +- EFI_STATUS Status; +- +- if ((This == NULL) || (RNGAlgorithmListSize == NULL)) { +- return EFI_INVALID_PARAMETER; +- } +- +- // +- // Return algorithm list supported by driver. +- // +- if (RNGAlgorithmList != NULL) { +- Status = ArchGetSupportedRngAlgorithms (RNGAlgorithmListSize, RNGAlgorithmList); +- } else { +- Status = EFI_INVALID_PARAMETER; +- } +- +- return Status; +-} +- + // + // The Random Number Generator (RNG) protocol + // +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h +index fcb8b69153..f17adb83fb 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h +@@ -74,31 +74,6 @@ RngGetRNG ( + OUT UINT8 *RNGValue + ); + +-/** +- Returns information about the random number generation implementation. +- +- @param[in,out] RNGAlgorithmListSize On input, the size in bytes of RNGAlgorithmList. +- On output with a return code of EFI_SUCCESS, the size +- in bytes of the data returned in RNGAlgorithmList. On output +- with a return code of EFI_BUFFER_TOO_SMALL, +- the size of RNGAlgorithmList required to obtain the list. +- @param[out] RNGAlgorithmList A caller-allocated memory buffer filled by the driver +- with one EFI_RNG_ALGORITHM element for each supported +- RNG algorithm. The list must not change across multiple +- calls to the same driver. The first algorithm in the list +- is the default algorithm for the driver. +- +- @retval EFI_SUCCESS The RNG algorithm list was returned successfully. +- @retval EFI_BUFFER_TOO_SMALL The buffer RNGAlgorithmList is too small to hold the result. +- +-**/ +-UINTN +-EFIAPI +-ArchGetSupportedRngAlgorithms ( +- IN OUT UINTN *RNGAlgorithmListSize, +- OUT EFI_RNG_ALGORITHM *RNGAlgorithmList +- ); +- + /** + Runs CPU RNG instruction to fill a buffer of arbitrary size with random bytes. + +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Rename-AArch64-RngDxe.c.patch b/edk2-SecurityPkg-RngDxe-Rename-AArch64-RngDxe.c.patch new file mode 100644 index 0000000..0033755 --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Rename-AArch64-RngDxe.c.patch @@ -0,0 +1,55 @@ +From 05ffe3749d73942cf4df7ed8f53ae239e62d5376 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Tue, 25 Jun 2024 22:30:19 -0400 +Subject: [PATCH 11/31] SecurityPkg/RngDxe: Rename AArch64/RngDxe.c + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [11/31] 39c8a7a1e45c7c26f5d16f79d81abac1fbae4f22 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +CVE: CVE-2022-45237 +Upstream: Merged + +commit ff29cdb968a1a4d7bd7ab4eba2597a77c0748dc2 +Author: Pierre Gondois +Date: Fri Oct 28 17:32:57 2022 +0200 + + SecurityPkg/RngDxe: Rename AArch64/RngDxe.c + + To re-use the AArch64/RngDxe.c for an Arm implementation, + rename AArch64/RngDxe.c to ArmRngDxe.c. + + Acked-by: Leif Lindholm + Signed-off-by: Pierre Gondois + Acked-by: Jiewen Yao + +Signed-off-by: Jon Maloy +--- + .../RngDxe/{AArch64/RngDxe.c => ArmRngDxe.c} | 0 + SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf | 2 +- + 2 files changed, 1 insertion(+), 1 deletion(-) + rename SecurityPkg/RandomNumberGenerator/RngDxe/{AArch64/RngDxe.c => ArmRngDxe.c} (100%) + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c +similarity index 100% +rename from SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/RngDxe.c +rename to SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +index e0e767cbf3..1d0bdef57d 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +@@ -42,7 +42,7 @@ + Rand/AesCore.h + + [Sources.AARCH64] +- AArch64/RngDxe.c ++ ArmRngDxe.c + ArmTrng.c + + [Packages] +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Rename-RdRandGenerateEntropy-to-g.patch b/edk2-SecurityPkg-RngDxe-Rename-RdRandGenerateEntropy-to-g.patch new file mode 100644 index 0000000..dea7b6e --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Rename-RdRandGenerateEntropy-to-g.patch @@ -0,0 +1,176 @@ +From 2a5e4e144cbea46784fde638765a9c9068ed2869 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Tue, 25 Jun 2024 22:19:10 -0400 +Subject: [PATCH 05/31] SecurityPkg/RngDxe: Rename RdRandGenerateEntropy to + generic name + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [5/31] 12b8646964435f1a70def57afb9f4565b11c5dc8 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +CVE: CVE-2022-45237 +Upstream: Merged + +commit 8a89747844a5061791e55a25daedcf895180a794 +Author: Sami Mujawar +Date: Fri Oct 28 17:32:50 2022 +0200 + + SecurityPkg/RngDxe: Rename RdRandGenerateEntropy to generic name + + Bugzilla: 3668 (https://bugzilla.tianocore.org/show_bug.cgi?id=3668) + + Rename RdRandGenerateEntropy() to GenerateEntropy() to provide a + common interface to generate entropy on other architectures. + GenerateEntropy() is intended to generate high quality entropy. + + Also move the definition to RngDxeInternals.h + + Signed-off-by: Pierre Gondois + Acked-by: Jiewen Yao + +Signed-off-by: Jon Maloy +--- + .../RngDxe/Rand/RdRand.c | 20 ++++++++++++----- + .../RngDxe/Rand/RngDxe.c | 7 ++++-- + .../RandomNumberGenerator/RngDxe/RngDxe.inf | 2 +- + .../RngDxe/RngDxeInternals.h | 22 ++++++++++++++++++- + 4 files changed, 41 insertions(+), 10 deletions(-) + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RdRand.c b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RdRand.c +index 83025a47d4..853bf43148 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RdRand.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RdRand.c +@@ -1,15 +1,23 @@ + /** @file +- Support routines for RDRAND instruction access. +- ++ Support routines for RDRAND instruction access, which will leverage ++ Intel Secure Key technology to provide high-quality random numbers for use ++ in applications, or entropy for seeding other random number generators. ++ Refer to http://software.intel.com/en-us/articles/intel-digital-random-number ++ -generator-drng-software-implementation-guide/ for more information about Intel ++ Secure Key technology. ++ ++Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
+ Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.
+ (C) Copyright 2015 Hewlett Packard Enterprise Development LP
+ SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ ++#include ++#include + #include ++#include + + #include "AesCore.h" +-#include "RdRand.h" + #include "RngDxeInternals.h" + + /** +@@ -87,9 +95,9 @@ RdRandGetSeed128 ( + **/ + EFI_STATUS + EFIAPI +-RdRandGenerateEntropy ( +- IN UINTN Length, +- OUT UINT8 *Entropy ++GenerateEntropy ( ++ IN UINTN Length, ++ OUT UINT8 *Entropy + ) + { + EFI_STATUS Status; +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +index 834123b945..19755b3bfd 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +@@ -14,13 +14,16 @@ + - EFI_RNG_ALGORITHM_X9_31_3DES_GUID - Unsupported + - EFI_RNG_ALGORITHM_X9_31_AES_GUID - Unsupported + ++ Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
+ Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.
+ (C) Copyright 2015 Hewlett Packard Enterprise Development LP
+ SPDX-License-Identifier: BSD-2-Clause-Patent + + **/ + +-#include "RdRand.h" ++#include ++#include ++ + #include "RngDxeInternals.h" + + /** +@@ -88,7 +91,7 @@ RngGetRNG ( + return EFI_INVALID_PARAMETER; + } + +- Status = RdRandGenerateEntropy (RNGValueLength, RNGValue); ++ Status = GenerateEntropy (RNGValueLength, RNGValue); + return Status; + } + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +index f330097199..60efb5562e 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +@@ -10,6 +10,7 @@ + # + # Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.
+ # (C) Copyright 2015 Hewlett Packard Enterprise Development LP
++# Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
+ # SPDX-License-Identifier: BSD-2-Clause-Patent + # + ## +@@ -36,7 +37,6 @@ + [Sources.IA32, Sources.X64] + Rand/RngDxe.c + Rand/RdRand.c +- Rand/RdRand.h + Rand/AesCore.c + Rand/AesCore.h + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h +index 25cccbe92c..fcb8b69153 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxeInternals.h +@@ -10,6 +10,8 @@ + #ifndef RNGDXE_INTERNALS_H_ + #define RNGDXE_INTERNALS_H_ + ++#include ++ + /** + Returns information about the random number generation implementation. + +@@ -114,4 +116,22 @@ RngGetBytes ( + OUT UINT8 *RandBuffer + ); + +-#endif // RNGDXE_INTERNALS_H_ ++/** ++ Generate high-quality entropy source using a TRNG or through RDRAND. ++ ++ @param[in] Length Size of the buffer, in bytes, to fill with. ++ @param[out] Entropy Pointer to the buffer to store the entropy data. ++ ++ @retval EFI_SUCCESS Entropy generation succeeded. ++ @retval EFI_NOT_READY Failed to request random data. ++ ++**/ ++EFI_STATUS ++EFIAPI ++GenerateEntropy ( ++ IN UINTN Length, ++ OUT UINT8 *Entropy ++ ); ++ ++#endif // RNGDXE_INTERNALS_H_ ++ +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Simplify-Rng-algorithm-selection-.patch b/edk2-SecurityPkg-RngDxe-Simplify-Rng-algorithm-selection-.patch new file mode 100644 index 0000000..f00f461 --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Simplify-Rng-algorithm-selection-.patch @@ -0,0 +1,78 @@ +From 1a0bf45b088e05f6eb7edaa0d24aec894ea3491b Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 16:11:16 -0400 +Subject: [PATCH 23/31] SecurityPkg/RngDxe: Simplify Rng algorithm selection + for Arm + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [23/31] 21b2854eed63bf5d406cfec5ac03b9ae3901a679 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit ff7ddc02b273f9159ef46fdb67d99062f8e598d9 +Author: Pierre Gondois +Date: Fri Aug 11 16:33:10 2023 +0200 + + SecurityPkg/RngDxe: Simplify Rng algorithm selection for Arm + + The first element of mAvailableAlgoArray is defined as the default + Rng algorithm to use. Don't go through the array at each RngGetRNG() + call and just return the first element of the array. + + Signed-off-by: Pierre Gondois + Reviewed-by: Sami Mujawar + Acked-by: Ard Biesheuvel + Acked-by: Jiewen Yao + Tested-by: Kun Qin + +Signed-off-by: Jon Maloy +--- + .../RandomNumberGenerator/RngDxe/ArmRngDxe.c | 17 ++++------------- + 1 file changed, 4 insertions(+), 13 deletions(-) + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c +index 2fc36fc186..7249904413 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c +@@ -77,7 +77,6 @@ RngGetRNG ( + ) + { + EFI_STATUS Status; +- UINTN Index; + GUID RngGuid; + + if ((This == NULL) || (RNGValueLength == 0) || (RNGValue == NULL)) { +@@ -88,21 +87,13 @@ RngGetRNG ( + // + // Use the default RNG algorithm if RNGAlgorithm is NULL. + // +- for (Index = 0; Index < mAvailableAlgoArrayCount; Index++) { +- if (!IsZeroGuid (&mAvailableAlgoArray[Index])) { +- RNGAlgorithm = &mAvailableAlgoArray[Index]; +- goto FoundAlgo; +- } +- } +- +- if (Index == mAvailableAlgoArrayCount) { +- // No algorithm available. +- ASSERT (Index != mAvailableAlgoArrayCount); +- return EFI_DEVICE_ERROR; ++ if (mAvailableAlgoArrayCount != 0) { ++ RNGAlgorithm = &mAvailableAlgoArray[0]; ++ } else { ++ return EFI_UNSUPPORTED; + } + } + +-FoundAlgo: + Status = GetRngGuid (&RngGuid); + if (!EFI_ERROR (Status) && + CompareGuid (RNGAlgorithm, &RngGuid)) +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-Use-GetRngGuid-when-probing-RngLi.patch b/edk2-SecurityPkg-RngDxe-Use-GetRngGuid-when-probing-RngLi.patch new file mode 100644 index 0000000..79b5293 --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-Use-GetRngGuid-when-probing-RngLi.patch @@ -0,0 +1,195 @@ +From 6b3795dcecf31b0d8aa7edabeffccf37b7259ff0 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 16:09:46 -0400 +Subject: [PATCH 22/31] SecurityPkg/RngDxe: Use GetRngGuid() when probing + RngLib + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [22/31] 17b40bc3daeba2ba8407826e17f3096c4a5151c6 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit 19438cff973bfb35a1ef12fab45fabb28b63fe64 +Author: Pierre Gondois +Date: Fri Aug 11 16:33:09 2023 +0200 + + SecurityPkg/RngDxe: Use GetRngGuid() when probing RngLib + + BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4151 + + The EFI_RNG_PROTOCOL can rely on the RngLib. The RngLib has multiple + implementations, some of them are unsafe (e.g. BaseRngLibTimerLib). + To allow the RngDxe to detect when such implementation is used, + a GetRngGuid() function was added in a previous patch. + + The EFI_RNG_PROTOCOL can advertise multiple algorithms through + Guids. The PcdCpuRngSupportedAlgorithm is currently used to + advertise the RngLib in the Arm implementation. + + The issues of doing that are: + - the RngLib implementation might not use CPU instructions, + cf. the BaseRngLibTimerLib + - most platforms don't set PcdCpuRngSupportedAlgorithm + + A GetRngGuid() was added to the RngLib in a previous patch, + allowing to identify the algorithm implemented by the RngLib. + Make use of this function and place the unsage algorithm + at the last position in the mAvailableAlgoArray. + + Signed-off-by: Pierre Gondois + Reviewed-by: Sami Mujawar + Acked-by: Ard Biesheuvel + Acked-by: Jiewen Yao + Tested-by: Kun Qin + +Signed-off-by: Jon Maloy +--- + .../RngDxe/AArch64/AArch64Algo.c | 55 +++++++++++++------ + .../RandomNumberGenerator/RngDxe/ArmRngDxe.c | 8 ++- + .../RandomNumberGenerator/RngDxe/RngDxe.inf | 4 +- + 3 files changed, 45 insertions(+), 22 deletions(-) + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/AArch64Algo.c b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/AArch64Algo.c +index e8be217f8a..a270441ebb 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/AArch64Algo.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/AArch64/AArch64Algo.c +@@ -10,6 +10,8 @@ + #include + #include + #include ++#include ++#include + + #include "RngDxeInternals.h" + +@@ -28,9 +30,13 @@ GetAvailableAlgorithms ( + VOID + ) + { +- UINT64 DummyRand; +- UINT16 MajorRevision; +- UINT16 MinorRevision; ++ EFI_STATUS Status; ++ UINT16 MajorRevision; ++ UINT16 MinorRevision; ++ GUID RngGuid; ++ BOOLEAN UnSafeAlgo; ++ ++ UnSafeAlgo = FALSE; + + // Rng algorithms 2 times, one for the allocation, one to populate. + mAvailableAlgoArray = AllocateZeroPool (RNG_AVAILABLE_ALGO_MAX); +@@ -38,24 +44,29 @@ GetAvailableAlgorithms ( + return EFI_OUT_OF_RESOURCES; + } + +- // Check RngGetBytes() before advertising PcdCpuRngSupportedAlgorithm. +- if (!EFI_ERROR (RngGetBytes (sizeof (DummyRand), (UINT8 *)&DummyRand))) { +- CopyMem ( +- &mAvailableAlgoArray[mAvailableAlgoArrayCount], +- PcdGetPtr (PcdCpuRngSupportedAlgorithm), +- sizeof (EFI_RNG_ALGORITHM) +- ); +- mAvailableAlgoArrayCount++; +- +- DEBUG_CODE_BEGIN (); +- if (IsZeroGuid (PcdGetPtr (PcdCpuRngSupportedAlgorithm))) { ++ // Identify RngLib algorithm. ++ Status = GetRngGuid (&RngGuid); ++ if (!EFI_ERROR (Status)) { ++ if (IsZeroGuid (&RngGuid) || ++ CompareGuid (&RngGuid, &gEdkiiRngAlgorithmUnSafe)) ++ { ++ // Treat zero GUID as an unsafe algorithm + DEBUG (( + DEBUG_WARN, +- "PcdCpuRngSupportedAlgorithm should be a non-zero GUID\n" ++ "RngLib uses an Unsafe algorithm and " ++ "must not be used for production builds.\n" + )); ++ // Set the UnSafeAlgo flag to indicate an unsafe algorithm was found ++ // so that it can be added at the end of the algorithm list. ++ UnSafeAlgo = TRUE; ++ } else { ++ CopyMem ( ++ &mAvailableAlgoArray[mAvailableAlgoArrayCount], ++ &RngGuid, ++ sizeof (RngGuid) ++ ); ++ mAvailableAlgoArrayCount++; + } +- +- DEBUG_CODE_END (); + } + + // Raw algorithm (Trng) +@@ -68,5 +79,15 @@ GetAvailableAlgorithms ( + mAvailableAlgoArrayCount++; + } + ++ // Add unsafe algorithm at the end of the list. ++ if (UnSafeAlgo) { ++ CopyMem ( ++ &mAvailableAlgoArray[mAvailableAlgoArrayCount], ++ &gEdkiiRngAlgorithmUnSafe, ++ sizeof (EFI_RNG_ALGORITHM) ++ ); ++ mAvailableAlgoArrayCount++; ++ } ++ + return EFI_SUCCESS; + } +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c +index 0e44d0c931..2fc36fc186 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c +@@ -76,8 +76,9 @@ RngGetRNG ( + OUT UINT8 *RNGValue + ) + { +- EFI_STATUS Status; ++ EFI_STATUS Status; + UINTN Index; ++ GUID RngGuid; + + if ((This == NULL) || (RNGValueLength == 0) || (RNGValue == NULL)) { + return EFI_INVALID_PARAMETER; +@@ -102,7 +103,10 @@ RngGetRNG ( + } + + FoundAlgo: +- if (CompareGuid (RNGAlgorithm, PcdGetPtr (PcdCpuRngSupportedAlgorithm))) { ++ Status = GetRngGuid (&RngGuid); ++ if (!EFI_ERROR (Status) && ++ CompareGuid (RNGAlgorithm, &RngGuid)) ++ { + Status = RngGetBytes (RNGValueLength, RNGValue); + return Status; + } +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +index d6c2d30195..8704a64441 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +@@ -75,13 +75,11 @@ + gEfiRngAlgorithmX9313DesGuid ## SOMETIMES_PRODUCES ## GUID # Unique ID of the algorithm for RNG + gEfiRngAlgorithmX931AesGuid ## SOMETIMES_PRODUCES ## GUID # Unique ID of the algorithm for RNG + gEfiRngAlgorithmRaw ## SOMETIMES_PRODUCES ## GUID # Unique ID of the algorithm for RNG ++ gEdkiiRngAlgorithmUnSafe ## SOMETIMES_PRODUCES ## GUID # Unique ID of the algorithm for RNG + + [Protocols] + gEfiRngProtocolGuid ## PRODUCES + +-[Pcd.AARCH64] +- gEfiMdePkgTokenSpaceGuid.PcdCpuRngSupportedAlgorithm ## CONSUMES +- + [Depex] + TRUE + +-- +2.39.3 + diff --git a/edk2-SecurityPkg-RngDxe-add-rng-test.patch b/edk2-SecurityPkg-RngDxe-add-rng-test.patch new file mode 100644 index 0000000..0395b30 --- /dev/null +++ b/edk2-SecurityPkg-RngDxe-add-rng-test.patch @@ -0,0 +1,57 @@ +From 5022087de4a4bcd113ef0325e657bd78b798d5f6 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 10:33:43 -0400 +Subject: [PATCH 26/31] SecurityPkg/RngDxe: add rng test + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [26/31] 97c8deefd351f2755cf458f10679dd1d859fb321 + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit a61bc0accb8a76edba4f073fdc7bafc908df045d +Author: Gerd Hoffmann +Date: Fri May 31 09:49:13 2024 +0200 + + SecurityPkg/RngDxe: add rng test + + Check whenever RngLib actually returns random numbers, only return + a non-zero number of Algorithms if that is the case. + + This has the effect that RndDxe loads and installs EFI_RNG_PROTOCOL + only in case it can actually deliver random numbers. + + Signed-off-by: Gerd Hoffmann + +Signed-off-by: Jon Maloy + +Check whenever RngLib actually returns random numbers, only return +a non-zero number of Algorithms if that is the case. + +This has the effect that RndDxe loads and installs EFI_RNG_PROTOCOL +only in case it can actually deliver random numbers. + +Signed-off-by: Gerd Hoffmann +--- + SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +index 149de875ce..e374b62208 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c +@@ -23,6 +23,7 @@ + + #include + #include ++#include + + #include "RngDxeInternals.h" + +-- +2.39.3 + diff --git a/edk2-SecurityPkg-SecurityPkg.dec-Move-PcdCpuRngSupportedA.patch b/edk2-SecurityPkg-SecurityPkg.dec-Move-PcdCpuRngSupportedA.patch new file mode 100644 index 0000000..d0fb89e --- /dev/null +++ b/edk2-SecurityPkg-SecurityPkg.dec-Move-PcdCpuRngSupportedA.patch @@ -0,0 +1,104 @@ +From 1548ea758f7d9d58fd61110f5719cc12786380d3 Mon Sep 17 00:00:00 2001 +From: Jon Maloy +Date: Thu, 20 Jun 2024 16:01:08 -0400 +Subject: [PATCH 17/31] SecurityPkg/SecurityPkg.dec: Move + PcdCpuRngSupportedAlgorithm to MdePkg + +RH-Author: Jon Maloy +RH-MergeRequest: 77: UINT32 overflow in S3 ResumeCount and Pixiefail fixes +RH-Jira: RHEL-21854 RHEL-21856 RHEL-40099 +RH-Acked-by: Gerd Hoffmann +RH-Commit: [17/31] 01f31c97f800f3451072762c0e9a9eb59f1cc2ab + +JIRA: https://issues.redhat.com/browse/RHEL-21856 +Upstream: Merged +CVE: CVE-2023-45237 + +commit 65b5dd828ef2ea5056031b239a4e7a6642f771a3 +Author: Pierre Gondois +Date: Fri Aug 11 16:33:04 2023 +0200 + + SecurityPkg/SecurityPkg.dec: Move PcdCpuRngSupportedAlgorithm to MdePkg + + In order to use PcdCpuRngSupportedAlgorithm in the MdePkg in a + following patch and to avoid making the MdePkg dependent on another + package, move PcdCpuRngSupportedAlgorithm to the MdePkg. + + As the Pcd is only used for AARCH64, place it in an AARCH64 + specific sections. + + Signed-off-by: Pierre Gondois + Reviewed-by: Liming Gao + Reviewed-by: Sami Mujawar + Acked-by: Ard Biesheuvel + Acked-by: Jiewen Yao + Tested-by: Kun Qin + +Signed-off-by: Jon Maloy +--- + .../Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf | 2 +- + MdePkg/MdePkg.dec | 5 +++++ + SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf | 4 ++-- + SecurityPkg/SecurityPkg.dec | 2 -- + 4 files changed, 8 insertions(+), 5 deletions(-) + +diff --git a/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf b/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf +index f857290e82..f729001060 100644 +--- a/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf ++++ b/MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf +@@ -19,7 +19,7 @@ + INF_VERSION = 1.27 + BASE_NAME = BaseRngLibTimerLib + MODULE_UNI_FILE = BaseRngLibTimerLib.uni +- FILE_GUID = 74950C45-10FC-4AB5-B114-49C87C17409B ++ FILE_GUID = B3E66B05-D218-4B9A-AC33-EF0F83D6A513 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = RngLib +diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec +index 6389a48338..8f05e822ac 100644 +--- a/MdePkg/MdePkg.dec ++++ b/MdePkg/MdePkg.dec +@@ -2306,6 +2306,11 @@ + # @Prompt Memory Address of GuidedExtractHandler Table. + gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress|0x1000000|UINT64|0x30001015 + ++[PcdsFixedAtBuild.AARCH64, PcdsPatchableInModule.AARCH64] ++ ## GUID identifying the Rng algorithm implemented by CPU instruction. ++ # @Prompt CPU Rng algorithm's GUID. ++ gEfiMdePkgTokenSpaceGuid.PcdCpuRngSupportedAlgorithm|{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}|VOID*|0x00000037 ++ + [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx] + ## This value is used to set the base address of PCI express hierarchy. + # @Prompt PCI Express Base Address. +diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +index c8e0ee4ae5..d6c2d30195 100644 +--- a/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf ++++ b/SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf +@@ -79,8 +79,8 @@ + [Protocols] + gEfiRngProtocolGuid ## PRODUCES + +-[Pcd] +- gEfiSecurityPkgTokenSpaceGuid.PcdCpuRngSupportedAlgorithm ## CONSUMES ++[Pcd.AARCH64] ++ gEfiMdePkgTokenSpaceGuid.PcdCpuRngSupportedAlgorithm ## CONSUMES + + [Depex] + TRUE +diff --git a/SecurityPkg/SecurityPkg.dec b/SecurityPkg/SecurityPkg.dec +index 9f7a032d60..8cf80b1e84 100644 +--- a/SecurityPkg/SecurityPkg.dec ++++ b/SecurityPkg/SecurityPkg.dec +@@ -323,8 +323,6 @@ + gEfiSecurityPkgTokenSpaceGuid.PcdStatusCodeFvVerificationPass|0x0303100A|UINT32|0x00010030 + gEfiSecurityPkgTokenSpaceGuid.PcdStatusCodeFvVerificationFail|0x0303100B|UINT32|0x00010031 + +- gEfiSecurityPkgTokenSpaceGuid.PcdCpuRngSupportedAlgorithm|{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}|VOID*|0x00010032 +- + [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx] + ## Image verification policy for OptionRom. Only following values are valid:

+ # NOTE: Do NOT use 0x5 and 0x2 since it violates the UEFI specification and has been removed.
+-- +2.39.3 + diff --git a/edk2.spec b/edk2.spec index 49eedd0..e8fb9bb 100644 --- a/edk2.spec +++ b/edk2.spec @@ -1,4 +1,3 @@ -%define anolis_release .0.1 ExclusiveArch: x86_64 aarch64 %define GITDATE 20220126 @@ -8,7 +7,7 @@ ExclusiveArch: x86_64 aarch64 Name: edk2 Version: %{GITDATE}git%{GITCOMMIT} -Release: 13%{anolis_release}%{?dist} +Release: 13%{?dist}.2 Summary: UEFI firmware for 64-bit virtual machines Group: Applications/Emulators License: BSD-2-Clause-Patent and OpenSSL and MIT @@ -261,31 +260,131 @@ Patch82: edk2-NetworkPkg-Dhcp6Dxe-Packet-Length-is-not-updated-bef.patch Patch83: edk2-EmbeddedPkg-Hob-Integer-Overflow-in-CreateHob.patch # For RHEL-21158 - CVE-2022-36765 edk2: integer overflow in CreateHob() could lead to HOB OOB R/W [rhel-8] Patch84: edk2-StandaloneMmPkg-Hob-Integer-Overflow-in-CreateHob.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch85: edk2-MdeModulePkg-Change-use-of-EFI_D_-to-DEBUG_.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch86: edk2-MdeModulePkg-Potential-UINT32-overflow-in-S3-ResumeC.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch87: edk2-MdePkg-Apply-uncrustify-changes.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch88: edk2-NetworkPkg-Apply-uncrustify-changes.p2.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch89: edk2-SecurityPkg-RngDxe-Rename-RdRandGenerateEntropy-to-g.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch90: edk2-SecurityPkg-RngDxe-Remove-ArchGetSupportedRngAlgorit.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch91: edk2-SecurityPkg-RngDxe-Documentation-include-parameter-c.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch92: edk2-SecurityPkg-RngDxe-Check-before-advertising-Cpu-Rng-.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch93: edk2-SecurityPkg-RngDxe-Add-AArch64-RawAlgorithm-support-.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch94: edk2-SecurityPkg-RngDxe-Add-debug-warning-for-NULL-PcdCpu.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch95: edk2-SecurityPkg-RngDxe-Rename-AArch64-RngDxe.c.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch96: edk2-SecurityPkg-RngDxe-Add-Arm-support-of-RngDxe.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch97: edk2-SecurityPkg-RngDxe-Correctly-update-mAvailableAlgoAr.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch98: edk2-SecurityPkg-RngDxe-Conditionally-install-EFI_RNG_PRO.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch99: edk2-MdeModulePkg-Duplicate-BaseRngLibTimerLib-to-MdeModu.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch100: edk2-MdePkg-Add-deprecated-warning-to-BaseRngLibTimer.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch101: edk2-SecurityPkg-SecurityPkg.dec-Move-PcdCpuRngSupportedA.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch102: edk2-MdePkg-DxeRngLib-Request-raw-algorithm-instead-of-de.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch103: edk2-MdePkg-Rng-Add-GUID-to-describe-Arm-Rndr-Rng-algorit.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch104: edk2-MdeModulePkg-Rng-Add-GUID-to-describe-unsafe-Rng-alg.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch105: edk2-MdePkg-Rng-Add-GetRngGuid-to-RngLib.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch106: edk2-SecurityPkg-RngDxe-Use-GetRngGuid-when-probing-RngLi.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch107: edk2-SecurityPkg-RngDxe-Simplify-Rng-algorithm-selection-.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch108: edk2-NetworkPkg-SECURITY-PATCH-CVE-2023-45237.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch109: edk2-MdePkg-BaseRngLib-Add-a-smoketest-for-RDRAND-and-che.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch110: edk2-SecurityPkg-RngDxe-add-rng-test.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch111: edk2-OvmfPkg-wire-up-RngDxe.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch112: edk2-CryptoPkg-Test-call-ProcessLibraryConstructorList.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch113: edk2-MdePkg-X86UnitTestHost-set-rdrand-cpuid-bit.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch114: edk2-NetworkPkg-TcpDxe-SECURITY-PATCH-CVE-2023-45236.patch +# For RHEL-21854 - CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8] +# For RHEL-21856 - CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8] +# For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] +Patch115: edk2-NetworkPkg-TcpDxe-Fixed-system-stuck-on-PXE-boot-flo.patch -# Support hygon csv3 feature -Patch1000: 0029-anolis-UefiCpuPkg-Add-StandardSignatureIsHygonGenuin.patch -Patch1001: 0030-anolis-UefiCpuPkg-LocalApicLib-Exclude-second-SendIp.patch -Patch1002: 0031-anolis-OvmfPkg-Add-CSV-secure-call-library-on-Hygon-.patch -Patch1003: 0032-anolis-OvmfPkg-Tcg-Add-CsvLib-for-TpmMmioSevDecryptP.patch -Patch1004: 0033-anolis-OvmfPkg-ResetVector-Support-CSV-in-ResetVecto.patch -Patch1005: 0034-anolis-OvmfPkg-PlatformPei-Initialize-CSV-VM-s-memor.patch -Patch1006: 0035-anolis-OvmfPkg-BaseMemcryptSevLib-update-page-status.patch -Patch1007: 0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch -Patch1008: 0037-anolis-OvmfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch -Patch1009: 0038-anolis-OvmfPkg-Reserve-a-CPUID-table-page-for-CSV-gu.patch -# Support SEV live migration -Patch1010: 0039-OvmfPkg-BaseMemEncryptLib-Detect-SEV-live-migration-.patch -Patch1011: 0040-OvmfPkg-BaseMemEncryptLib-Hypercall-API-for-page-enc.patch -Patch1012: 0041-OvmfPkg-BaseMemEncryptLib-Invoke-page-encryption-sta.patch -Patch1013: 0042-OvmfPkg-VmgExitLib-Encryption-state-change-hypercall.patch -Patch1014: 0043-OvmfPkg-PlatformPei-Mark-SEC-GHCB-page-as-unencrypte.patch -Patch1015: 0044-OvmfPkg-AmdSevDxe-Add-support-for-SEV-live-migration.patch -Patch1016: 0045-anolis-OvmfPkg-BaseMemcryptSevLib-Correct-the-calcul.patch -Patch1017: 0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch -# Fix the isue that interrupt is enabled in MMIO VC handler -Patch1018: 0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch - -Patch1019: 0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch # python3-devel and libuuid-devel are required for building tools. # python3-devel is also needed for varstore template generation and @@ -731,13 +830,46 @@ true %endif %changelog -* Tue May 28 2024 Jiang Xin - 20220126gitbb1bba3d77-13.0.1 -- Support hygon CSV3 feature -- Support SEV live migration -- 0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch -- Fix the isue that interrupt is enabled in MMIO VC handler -- 0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch (fangbaoshun@hygon.cn) -- Resolves: bz#8033 +* Wed Jul 10 2024 Jon Maloy - 20220126gitbb1bba3d77-13.el8_10.2 + +* Wed Jul 03 2024 Miroslav Rezanina - 20220126gitbb1bba3d77-13.el8_10.1 +- edk2-MdeModulePkg-Change-use-of-EFI_D_-to-DEBUG_.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-MdeModulePkg-Potential-UINT32-overflow-in-S3-ResumeC.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-MdePkg-Apply-uncrustify-changes.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-NetworkPkg-Apply-uncrustify-changes.p2.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Rename-RdRandGenerateEntropy-to-g.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Remove-ArchGetSupportedRngAlgorit.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Documentation-include-parameter-c.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Check-before-advertising-Cpu-Rng-.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Add-AArch64-RawAlgorithm-support-.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Add-debug-warning-for-NULL-PcdCpu.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Rename-AArch64-RngDxe.c.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Add-Arm-support-of-RngDxe.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Correctly-update-mAvailableAlgoAr.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Conditionally-install-EFI_RNG_PRO.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-MdeModulePkg-Duplicate-BaseRngLibTimerLib-to-MdeModu.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-MdePkg-Add-deprecated-warning-to-BaseRngLibTimer.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-SecurityPkg.dec-Move-PcdCpuRngSupportedA.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-MdePkg-DxeRngLib-Request-raw-algorithm-instead-of-de.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-MdePkg-Rng-Add-GUID-to-describe-Arm-Rndr-Rng-algorit.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-MdeModulePkg-Rng-Add-GUID-to-describe-unsafe-Rng-alg.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-MdePkg-Rng-Add-GetRngGuid-to-RngLib.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Use-GetRngGuid-when-probing-RngLi.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-Simplify-Rng-algorithm-selection-.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-NetworkPkg-SECURITY-PATCH-CVE-2023-45237.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-MdePkg-BaseRngLib-Add-a-smoketest-for-RDRAND-and-che.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-SecurityPkg-RngDxe-add-rng-test.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-OvmfPkg-wire-up-RngDxe.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-CryptoPkg-Test-call-ProcessLibraryConstructorList.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-MdePkg-X86UnitTestHost-set-rdrand-cpuid-bit.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-NetworkPkg-TcpDxe-SECURITY-PATCH-CVE-2023-45236.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- edk2-NetworkPkg-TcpDxe-Fixed-system-stuck-on-PXE-boot-flo.patch [RHEL-21854 RHEL-21856 RHEL-40099] +- Resolves: RHEL-21854 + (CVE-2023-45236 edk2: Predictable TCP Initial Sequence Numbers [rhel-8]) +- Resolves: RHEL-21856 + (CVE-2023-45237 edk2: Use of a Weak PseudoRandom Number Generator [rhel-8]) +- Resolves: RHEL-40099 + (CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z]) * Thu Mar 14 2024 Miroslav Rezanina - 20220126gitbb1bba3d77-13 - edk2-EmbeddedPkg-Hob-Integer-Overflow-in-CreateHob.patch [RHEL-21158] -- Gitee From 3214dbe4bcf3332ace5c24860153f04e9bb85b8d Mon Sep 17 00:00:00 2001 From: Xin Jiang Date: Mon, 11 Dec 2023 14:05:11 +0800 Subject: [PATCH 2/4] Support Hygon CSV3 feaure and SEV live migration Signed-off-by: Xin Jiang --- ...g-Add-StandardSignatureIsHygonGenuin.patch | 140 ++++ ...g-LocalApicLib-Exclude-second-SendIp.patch | 83 ++ ...dd-CSV-secure-call-library-on-Hygon-.patch | 672 ++++++++++++++++ ...cg-Add-CsvLib-for-TpmMmioSevDecryptP.patch | 27 + ...esetVector-Support-CSV-in-ResetVecto.patch | 222 ++++++ ...latformPei-Initialize-CSV-VM-s-memor.patch | 202 +++++ ...aseMemcryptSevLib-update-page-status.patch | 75 ++ 0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch | 616 +++++++++++++++ ...mfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch | 724 ++++++++++++++++++ ...eserve-a-CPUID-table-page-for-CSV-gu.patch | 137 ++++ ...ncryptLib-Detect-SEV-live-migration-.patch | 325 ++++++++ ...ncryptLib-Hypercall-API-for-page-enc.patch | 298 +++++++ ...ncryptLib-Invoke-page-encryption-sta.patch | 91 +++ ...ib-Encryption-state-change-hypercall.patch | 46 ++ ...Pei-Mark-SEC-GHCB-page-as-unencrypte.patch | 43 ++ ...e-Add-support-for-SEV-live-migration.patch | 185 +++++ ...aseMemcryptSevLib-Correct-the-calcul.patch | 35 + ...aseMemEncryptLib-Return-SUCCESS-if-n.patch | 36 + edk2.spec | 27 +- 19 files changed, 3983 insertions(+), 1 deletion(-) create mode 100644 0029-anolis-UefiCpuPkg-Add-StandardSignatureIsHygonGenuin.patch create mode 100644 0030-anolis-UefiCpuPkg-LocalApicLib-Exclude-second-SendIp.patch create mode 100644 0031-anolis-OvmfPkg-Add-CSV-secure-call-library-on-Hygon-.patch create mode 100644 0032-anolis-OvmfPkg-Tcg-Add-CsvLib-for-TpmMmioSevDecryptP.patch create mode 100644 0033-anolis-OvmfPkg-ResetVector-Support-CSV-in-ResetVecto.patch create mode 100644 0034-anolis-OvmfPkg-PlatformPei-Initialize-CSV-VM-s-memor.patch create mode 100644 0035-anolis-OvmfPkg-BaseMemcryptSevLib-update-page-status.patch create mode 100644 0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch create mode 100644 0037-anolis-OvmfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch create mode 100644 0038-anolis-OvmfPkg-Reserve-a-CPUID-table-page-for-CSV-gu.patch create mode 100644 0039-OvmfPkg-BaseMemEncryptLib-Detect-SEV-live-migration-.patch create mode 100644 0040-OvmfPkg-BaseMemEncryptLib-Hypercall-API-for-page-enc.patch create mode 100644 0041-OvmfPkg-BaseMemEncryptLib-Invoke-page-encryption-sta.patch create mode 100644 0042-OvmfPkg-VmgExitLib-Encryption-state-change-hypercall.patch create mode 100644 0043-OvmfPkg-PlatformPei-Mark-SEC-GHCB-page-as-unencrypte.patch create mode 100644 0044-OvmfPkg-AmdSevDxe-Add-support-for-SEV-live-migration.patch create mode 100644 0045-anolis-OvmfPkg-BaseMemcryptSevLib-Correct-the-calcul.patch create mode 100644 0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch diff --git a/0029-anolis-UefiCpuPkg-Add-StandardSignatureIsHygonGenuin.patch b/0029-anolis-UefiCpuPkg-Add-StandardSignatureIsHygonGenuin.patch new file mode 100644 index 0000000..5abf6fc --- /dev/null +++ b/0029-anolis-UefiCpuPkg-Add-StandardSignatureIsHygonGenuin.patch @@ -0,0 +1,140 @@ +From c5906a1813f0a370e76d0e4910f1959edd552af4 Mon Sep 17 00:00:00 2001 +From: jiangxin +Date: Thu, 21 Apr 2022 16:03:08 +0800 +Subject: [PATCH 29/46] anolis: UefiCpuPkg: Add + StandardSignatureIsHygonGenuine() in BaseUefiCpuLib + +This function allows IA32/X64 code to determine if it is running on an +Hygon brand processor. + +Signed-off-by: Xin Jiang +Change-Id: I72594196f0ce6003fce43856120e3ca4609b8bb2 +--- + UefiCpuPkg/Include/Library/UefiCpuLib.h | 13 +++++ + UefiCpuPkg/Include/Register/Hygon/Cpuid.h | 47 +++++++++++++++++++ + .../Library/BaseUefiCpuLib/BaseUefiCpuLib.c | 24 ++++++++++ + 3 files changed, 84 insertions(+) + create mode 100644 UefiCpuPkg/Include/Register/Hygon/Cpuid.h + +diff --git a/UefiCpuPkg/Include/Library/UefiCpuLib.h b/UefiCpuPkg/Include/Library/UefiCpuLib.h +index 092c1d2..c64fe26 100644 +--- a/UefiCpuPkg/Include/Library/UefiCpuLib.h ++++ b/UefiCpuPkg/Include/Library/UefiCpuLib.h +@@ -43,6 +43,19 @@ StandardSignatureIsAuthenticAMD ( + VOID + ); + ++/** ++ Determine if the standard CPU signature is "HygonGenuine". ++ ++ @retval TRUE The CPU signature matches. ++ @retval FALSE The CPU signature does not match. ++ ++**/ ++BOOLEAN ++EFIAPI ++StandardSignatureIsHygonGenuine ( ++ VOID ++ ); ++ + /** + Return the 32bit CPU family and model value. + +diff --git a/UefiCpuPkg/Include/Register/Hygon/Cpuid.h b/UefiCpuPkg/Include/Register/Hygon/Cpuid.h +new file mode 100644 +index 0000000..e8a2c76 +--- /dev/null ++++ b/UefiCpuPkg/Include/Register/Hygon/Cpuid.h +@@ -0,0 +1,47 @@ ++/** @file ++ CPUID leaf definitions. ++ ++ Provides defines for CPUID leaf indexes. Data structures are provided for ++ registers returned by a CPUID leaf that contain one or more bit fields. ++ If a register returned is a single 32-bit value, then a data structure is ++ not provided for that register. ++ ++ Copyright (c) 2022, HYGON. All rights reserved.
++ ++ This program and the accompanying materials are licensed and made available ++ under the terms and conditions of the BSD License which accompanies this ++ distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++**/ ++ ++#ifndef __HYGON_CPUID_H__ ++#define __HYGON_CPUID_H__ ++ ++/** ++CPUID Signature Information ++ ++@param EAX CPUID_SIGNATURE (0x00) ++ ++@retval EAX Returns the highest value the CPUID instruction recognizes for ++ returning basic processor information. The value is returned is ++ processor specific. ++@retval EBX First 4 characters of a vendor identification string. ++@retval ECX Last 4 characters of a vendor identification string. ++@retval EDX Middle 4 characters of a vendor identification string. ++ ++**/ ++ ++/// ++/// @{ CPUID signature values returned by HYGON processors ++/// ++#define CPUID_SIGNATURE_AUTHENTIC_HYGON_EBX SIGNATURE_32 ('H', 'y', 'g', 'o') ++#define CPUID_SIGNATURE_AUTHENTIC_HYGON_EDX SIGNATURE_32 ('n', 'G', 'e', 'n') ++#define CPUID_SIGNATURE_AUTHENTIC_HYGON_ECX SIGNATURE_32 ('u', 'i', 'n', 'e') ++/// ++/// @} ++/// ++ ++#endif +diff --git a/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c b/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c +index 5089161..700d633 100644 +--- a/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c ++++ b/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c +@@ -11,6 +11,7 @@ + + #include + #include ++#include + + #include + #include +@@ -38,6 +39,29 @@ StandardSignatureIsAuthenticAMD ( + RegEdx == CPUID_SIGNATURE_AUTHENTIC_AMD_EDX); + } + ++/** ++ Determine if the standard CPU signature is "HygonGenuine". ++ ++ @retval TRUE The CPU signature matches. ++ @retval FALSE The CPU signature does not match. ++ ++**/ ++BOOLEAN ++EFIAPI ++StandardSignatureIsHygonGenuine ( ++ VOID ++ ) ++{ ++ UINT32 RegEbx; ++ UINT32 RegEcx; ++ UINT32 RegEdx; ++ ++ AsmCpuid (CPUID_SIGNATURE, NULL, &RegEbx, &RegEcx, &RegEdx); ++ return (RegEbx == CPUID_SIGNATURE_AUTHENTIC_HYGON_EBX && ++ RegEcx == CPUID_SIGNATURE_AUTHENTIC_HYGON_ECX && ++ RegEdx == CPUID_SIGNATURE_AUTHENTIC_HYGON_EDX); ++} ++ + /** + Return the 32bit CPU family and model value. + +-- +2.17.1 + diff --git a/0030-anolis-UefiCpuPkg-LocalApicLib-Exclude-second-SendIp.patch b/0030-anolis-UefiCpuPkg-LocalApicLib-Exclude-second-SendIp.patch new file mode 100644 index 0000000..ccb5fd6 --- /dev/null +++ b/0030-anolis-UefiCpuPkg-LocalApicLib-Exclude-second-SendIp.patch @@ -0,0 +1,83 @@ +From 573b40aeb685842d7fd4e7985cd197fc79fe8cff Mon Sep 17 00:00:00 2001 +From: jiangxin +Date: Sun, 10 Apr 2022 21:50:15 -0400 +Subject: [PATCH 30/46] anolis: UefiCpuPkg/LocalApicLib: Exclude second SendIpi + sequence on HYGON hardware + +On HYGON processors the second SendIpi in the SendInitSipiSipi and +SendInitSipiSipiAllExcludingSelf routines is not required, and may cause +undesired side-effects during MP initialization. + +This patch leverages the StandardSignatureIsHygonGenuine check to exclude +the second SendIpi and its associated MicroSecondDelay (200). + +Signed-off-by: Xin Jiang +Change-Id: I59defdaf10fb36981c5dfb7e3b69e8bf5aaf46cc +--- + UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c | 5 +++-- + UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c | 5 +++-- + 2 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c b/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c +index 52bd90d..fac41bd 100644 +--- a/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c ++++ b/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + // + // Library internal functions +@@ -527,7 +528,7 @@ SendInitSipiSipi ( + IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_STARTUP; + IcrLow.Bits.Level = 1; + SendIpi (IcrLow.Uint32, ApicId); +- if (!StandardSignatureIsAuthenticAMD ()) { ++ if (!StandardSignatureIsAuthenticAMD () && !StandardSignatureIsHygonGenuine ()) { + MicroSecondDelay (200); + SendIpi (IcrLow.Uint32, ApicId); + } +@@ -563,7 +564,7 @@ SendInitSipiSipiAllExcludingSelf ( + IcrLow.Bits.Level = 1; + IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF; + SendIpi (IcrLow.Uint32, 0); +- if (!StandardSignatureIsAuthenticAMD ()) { ++ if (!StandardSignatureIsAuthenticAMD () && !StandardSignatureIsHygonGenuine ()) { + MicroSecondDelay (200); + SendIpi (IcrLow.Uint32, 0); + } +diff --git a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c b/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c +index cdcbca0..a8fea8b 100644 +--- a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c ++++ b/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + // + // Library internal functions +@@ -622,7 +623,7 @@ SendInitSipiSipi ( + IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_STARTUP; + IcrLow.Bits.Level = 1; + SendIpi (IcrLow.Uint32, ApicId); +- if (!StandardSignatureIsAuthenticAMD ()) { ++ if (!StandardSignatureIsAuthenticAMD () && !StandardSignatureIsHygonGenuine ()) { + MicroSecondDelay (200); + SendIpi (IcrLow.Uint32, ApicId); + } +@@ -658,7 +659,7 @@ SendInitSipiSipiAllExcludingSelf ( + IcrLow.Bits.Level = 1; + IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF; + SendIpi (IcrLow.Uint32, 0); +- if (!StandardSignatureIsAuthenticAMD ()) { ++ if (!StandardSignatureIsAuthenticAMD () && !StandardSignatureIsHygonGenuine ()) { + MicroSecondDelay (200); + SendIpi (IcrLow.Uint32, 0); + } +-- +2.17.1 + diff --git a/0031-anolis-OvmfPkg-Add-CSV-secure-call-library-on-Hygon-.patch b/0031-anolis-OvmfPkg-Add-CSV-secure-call-library-on-Hygon-.patch new file mode 100644 index 0000000..72ebc6f --- /dev/null +++ b/0031-anolis-OvmfPkg-Add-CSV-secure-call-library-on-Hygon-.patch @@ -0,0 +1,672 @@ +From 98354124fe8c4cd7e6aed0fb6feabbe3a4de1836 Mon Sep 17 00:00:00 2001 +From: Liu Zixing +Date: Fri, 25 Feb 2022 14:25:11 +0800 +Subject: [PATCH 31/46] anolis: OvmfPkg: Add CSV secure call library on Hygon + CPU + +CSV is the secure virtualization feature on Hygon CPU. +A CSV virtual machine is composed of private memory and shared memory. +The private memory or shared memory can be converted to the other by +the following steps: + - guest clear/set the c-bit in the guest page table + - guest send a update command to Hygon Secure Processor + +While the update command has to be forwarded by the VMM to the Secure +Processor, to prevent the malicious VMM from attacking the update +command, a reliable command channel is required between the CSV VM +and the Hygon Secure Processor. + +The secure call library is created to build a secure command channel +between the VM and the Secure Processor by #NPF on a special private +page which the VMM is not able to access. +This special page is called secure call page. +The VM puts command in the secure call page and triggers a #NPF +to reach the Secure Processor. +The Secure Processor then puts the response in the same page and +finishes the #NPF. +The information is protected in the secure call page all the way. + +CsvLib is added to implement the functionality and new PCDs are added +accordingly. + +Signed-off-by: Xin Jiang +Change-Id: If62f0cb37faf003a79ed8a117bf582f8b90cdf89 +--- + OvmfPkg/Include/Library/CsvLib.h | 84 +++++++ + OvmfPkg/Library/CsvLib/CsvLib.c | 82 ++++++ + OvmfPkg/Library/CsvLib/CsvLib.inf | 55 ++++ + .../Library/CsvLib/Ia32/UpdateMemoryCsvLib.c | 53 ++++ + .../Library/CsvLib/X64/UpdateMemoryCsvLib.c | 238 ++++++++++++++++++ + OvmfPkg/OvmfPkg.dec | 8 + + OvmfPkg/OvmfPkgIa32.dsc | 1 + + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + + OvmfPkg/OvmfPkgX64.dsc | 1 + + OvmfPkg/OvmfPkgX64.fdf | 3 + + 10 files changed, 526 insertions(+) + create mode 100644 OvmfPkg/Include/Library/CsvLib.h + create mode 100644 OvmfPkg/Library/CsvLib/CsvLib.c + create mode 100644 OvmfPkg/Library/CsvLib/CsvLib.inf + create mode 100644 OvmfPkg/Library/CsvLib/Ia32/UpdateMemoryCsvLib.c + create mode 100644 OvmfPkg/Library/CsvLib/X64/UpdateMemoryCsvLib.c + +diff --git a/OvmfPkg/Include/Library/CsvLib.h b/OvmfPkg/Include/Library/CsvLib.h +new file mode 100644 +index 0000000..0cb6218 +--- /dev/null ++++ b/OvmfPkg/Include/Library/CsvLib.h +@@ -0,0 +1,84 @@ ++/** @file ++ ++ CSV base library helper function ++ ++ Copyright (c) 2022, HYGON. All rights reserved.
++ ++ This program and the accompanying materials are licensed and made available ++ under the terms and conditions of the BSD License which accompanies this ++ distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++ ++**/ ++ ++#ifndef _CSV_LIB_H_ ++#define _CSV_LIB_H_ ++ ++#include ++ ++typedef struct { ++ IN UINT64 BaseAddress; ++ IN UINT64 Size; ++} CSV_SECURE_CMD_SHARED_REGION; ++ ++typedef enum { ++ CsvSecureCmdEnc = 1, ++ CsvSecureCmdDec, ++ CsvSecureCmdReset, ++ CsvSecureCmdUpdateSecureCallTable, ++ CsvSecureCmdMapLowerMemory, //secure memory range below 4G ++ CsvSecureCmdMapUpperMemory //secure memory range above 4G ++} CSV_SECURE_COMMAND_TYPE; ++ ++/** ++ Returns a boolean to indicate whether CSV is enabled ++ ++ @retval TRUE CSV is enabled ++ @retval FALSE CSV is not enabled ++**/ ++BOOLEAN ++EFIAPI ++CsvIsEnabled ( ++ VOID ++ ); ++ ++#define CSV_SHARED_MEMORY_SIGNATURE SIGNATURE_32('C','S','V',' ') ++ ++typedef struct { ++ UINTN Signature; ++ LIST_ENTRY Link; ++ UINT64 Start; ++ UINT64 Length; ++} CsvSharedMemoryEntry; ++ ++VOID ++EFIAPI ++CsvUpdateMemory ( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages, ++ IN BOOLEAN Dec ++); ++ ++VOID ++EFIAPI ++CsvResetMemory ( ++ VOID ++); ++ ++VOID ++EFIAPI ++CsvUpdateMapLowerMemory ( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages ++); ++ ++VOID ++EFIAPI ++CsvUpdateMapUpperMemory ( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages ++); ++#endif // _CSV_LIB_H_ +diff --git a/OvmfPkg/Library/CsvLib/CsvLib.c b/OvmfPkg/Library/CsvLib/CsvLib.c +new file mode 100644 +index 0000000..7e7f8ef +--- /dev/null ++++ b/OvmfPkg/Library/CsvLib/CsvLib.c +@@ -0,0 +1,82 @@ ++/** @file ++ ++ CSV library helper function ++ ++ Copyright (c) 2022, HYGON. All rights reserved.
++ ++ This program and the accompanying materials are licensed and made available ++ under the terms and conditions of the BSD License which accompanies this ++ distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++ ++**/ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++STATIC BOOLEAN mCsvStatus = FALSE; ++STATIC BOOLEAN mCsvStatusChecked = FALSE; ++ ++/** ++ ++ Reads and sets the status of CSV features ++ **/ ++STATIC ++VOID ++EFIAPI ++InternalCsvStatus ( ++ VOID ++ ) ++{ ++ UINT32 RegEax; ++ ++ // ++ // Check if memory encryption leaf exist ++ // ++ AsmCpuid (CPUID_EXTENDED_FUNCTION, &RegEax, NULL, NULL, NULL); ++ if (RegEax >= CPUID_MEMORY_ENCRYPTION_INFO) { ++ if(StandardSignatureIsHygonGenuine ()){ ++ // ++ // Check MSR_0xC0010131 Bit 30 (Csv Enabled) ++ // ++ MSR_SEV_STATUS_REGISTER Msr; ++ Msr.Uint32 = AsmReadMsr32 (MSR_SEV_STATUS); ++ if (Msr.Uint32 & (1 << 30)) { ++ mCsvStatus = TRUE; ++ DEBUG ((EFI_D_INFO, "CSV is enabled\n")); ++ } ++ } ++ } ++ mCsvStatusChecked = TRUE; ++} ++ ++/** ++ Returns a boolean to indicate whether CSV is enabled ++ ++ @retval TRUE CSV is enabled ++ @retval FALSE CSV is not enabled ++**/ ++BOOLEAN ++EFIAPI ++CsvIsEnabled ( ++ VOID ++ ) ++{ ++ if (!mCsvStatusChecked) { ++ InternalCsvStatus (); ++ } ++ ++ return MemEncryptSevEsIsEnabled () && mCsvStatus; ++} +diff --git a/OvmfPkg/Library/CsvLib/CsvLib.inf b/OvmfPkg/Library/CsvLib/CsvLib.inf +new file mode 100644 +index 0000000..25859c3 +--- /dev/null ++++ b/OvmfPkg/Library/CsvLib/CsvLib.inf +@@ -0,0 +1,55 @@ ++## @file ++# Library provides the helper functions for CSV guest ++# ++# Copyright (c) 2022 HYGON. All rights reserved.
++# ++# This program and the accompanying materials ++# are licensed and made available under the terms and conditions of the BSD ++# License which accompanies this distribution. The full text of the license ++# may be found at http://opensource.org/licenses/bsd-license.php ++# ++# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR ++# IMPLIED. ++# ++# ++## ++ ++[Defines] ++ INF_VERSION = 1.25 ++ BASE_NAME = CsvLib ++ FILE_GUID = 9460ef3a-b9c3-11e9-8324-7371ac35e1e3 ++ MODULE_TYPE = BASE ++ VERSION_STRING = 1.0 ++ LIBRARY_CLASS = CsvLib|PEIM DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_DRIVER ++ ++# ++# The following information is for reference only and not required by the build ++# tools. ++# ++# VALID_ARCHITECTURES = Ia32 X64 ++# ++ ++[Packages] ++ MdePkg/MdePkg.dec ++ OvmfPkg/OvmfPkg.dec ++ UefiCpuPkg/UefiCpuPkg.dec ++ ++[Sources] ++ CsvLib.c ++ ++[Sources.X64] ++ X64/UpdateMemoryCsvLib.c ++[Sources.IA32] ++ Ia32/UpdateMemoryCsvLib.c ++ ++[LibraryClasses] ++ BaseLib ++ CpuLib ++ DebugLib ++ MemEncryptSevLib ++ UefiCpuLib ++ ++[Pcd] ++ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase ++ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize +diff --git a/OvmfPkg/Library/CsvLib/Ia32/UpdateMemoryCsvLib.c b/OvmfPkg/Library/CsvLib/Ia32/UpdateMemoryCsvLib.c +new file mode 100644 +index 0000000..15d3aa8 +--- /dev/null ++++ b/OvmfPkg/Library/CsvLib/Ia32/UpdateMemoryCsvLib.c +@@ -0,0 +1,53 @@ ++/** @file ++ ++ CSV library helper function ++ ++ Copyright (c) 2022, HYGON. All rights reserved.
++ ++ This program and the accompanying materials are licensed and made available ++ under the terms and conditions of the BSD License which accompanies this ++ distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++ ++**/ ++ ++#include ++ ++VOID ++EFIAPI ++CsvUpdateMemory ( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages, ++ IN BOOLEAN Dec ++) ++{ ++} ++ ++VOID ++EFIAPI ++CsvResetMemory ( ++ VOID ++) ++{ ++} ++ ++VOID ++EFIAPI ++CsvUpdateMapLowerMemory ( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages ++) ++{ ++} ++ ++VOID ++EFIAPI ++CsvUpdateMapUpperMemory ( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages ++) ++{ ++} +diff --git a/OvmfPkg/Library/CsvLib/X64/UpdateMemoryCsvLib.c b/OvmfPkg/Library/CsvLib/X64/UpdateMemoryCsvLib.c +new file mode 100644 +index 0000000..13d06d7 +--- /dev/null ++++ b/OvmfPkg/Library/CsvLib/X64/UpdateMemoryCsvLib.c +@@ -0,0 +1,238 @@ ++/** @file ++ ++ CSV library helper function ++ ++ Copyright (c) 2022, HYGON. All rights reserved.
++ ++ This program and the accompanying materials are licensed and made available ++ under the terms and conditions of the BSD License which accompanies this ++ distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++ ++**/ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define SECURE_CALL_ENTRY_MAX (254) ++ ++ ++typedef struct { ++ union { ++ UINT8 Guid[16]; ++ UINT64 Guid64[2]; ++ }; ++ UINT32 CmdType; ++ UINT32 Nums; ++ UINT64 Unused; ++ struct { ++ UINT64 BaseAddress; ++ UINT64 Size; ++ } Entry[SECURE_CALL_ENTRY_MAX]; ++} CSV_SECURE_CALL_CMD; ++ ++STATIC UINT32 SecureCallPageIdx = 0; ++ ++STATIC UINTN MemorySizeBelow4G = (UINTN)-1; ++STATIC UINTN MemorySizeAbove4G = (UINTN)-1; ++ ++STATIC ++VOID ++EFIAPI ++CsvSecureCall( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages, ++ IN CSV_SECURE_COMMAND_TYPE CmdType ++) ++{ ++ volatile CSV_SECURE_COMMAND_TYPE CmdAck = 0; ++ ++ CSV_SECURE_CALL_CMD *SecureCallPageRead; ++ CSV_SECURE_CALL_CMD *SecureCallPageWrite; ++ UINTN SecureCallBase = 0; ++ ++ if (CsvIsEnabled () == FALSE) { ++ return ; ++ } ++ ++ SecureCallBase = FixedPcdGet32 (PcdCsvDefaultSecureCallBase); ++ ++ SecureCallPageRead = ++ (CSV_SECURE_CALL_CMD *)(UINT64) ++ (EFI_PAGE_SIZE * SecureCallPageIdx + SecureCallBase); ++ ++ SecureCallPageWrite = ++ (CSV_SECURE_CALL_CMD *) ++ (UINT64)(EFI_PAGE_SIZE * (1 - SecureCallPageIdx) + SecureCallBase); ++ ++ while(1) { ++ SecureCallPageWrite->CmdType = (UINT32)CmdType; ++ SecureCallPageWrite->Nums = 1; ++ SecureCallPageWrite->Entry[0].BaseAddress = (UINT64)BaseAddress; ++ SecureCallPageWrite->Entry[0].Size = (UINT64)NumPages << EFI_PAGE_SHIFT; ++ ++ MemoryFence (); ++ ++ CmdAck = SecureCallPageRead->CmdType; ++ if (CmdAck != CmdType) ++ break; ++ } ++ SecureCallPageIdx = 1 - SecureCallPageIdx; ++} ++ ++STATIC ++UINT8 ++CmosRead8 ( ++ IN UINTN Index ++ ) ++{ ++ IoWrite8 (0x70, (UINT8) Index); ++ return IoRead8 (0x71); ++} ++ ++ ++STATIC ++VOID ++EFIAPI ++CsvGetSystemMemory( ++ VOID ++ ) ++{ ++ UINT8 Cmos0x34; ++ UINT8 Cmos0x35; ++ UINT32 Size; ++ UINTN CmosIndex; ++ ++ // ++ // system memory below 4GB MB ++ // ++ ++ Cmos0x34 = (UINT8) CmosRead8 (0x34); ++ Cmos0x35 = (UINT8) CmosRead8 (0x35); ++ ++ MemorySizeBelow4G = ++ (UINT32) (((UINTN)((Cmos0x35 << 8) + Cmos0x34) << 16) + SIZE_16MB); ++ ++ // ++ // system memory above 4GB MB ++ // ++ ++ Size = 0; ++ for (CmosIndex = 0x5d; CmosIndex >= 0x5b; CmosIndex--) { ++ Size = (UINT32) (Size << 8) + (UINT32) CmosRead8 (CmosIndex); ++ } ++ ++ MemorySizeAbove4G = LShiftU64 (Size, 16); ++} ++ ++STATIC ++BOOLEAN ++EFIAPI ++CsvIsDRAM( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages ++ ) ++{ ++ UINTN Size = EFI_PAGES_TO_SIZE (NumPages); ++ PHYSICAL_ADDRESS EndAddress; ++ ++ Size = EFI_PAGES_TO_SIZE (NumPages); ++ EndAddress = BaseAddress + Size; ++ ++ if (MemorySizeBelow4G == (UINTN)-1 || ++ MemorySizeAbove4G == (UINTN)-1) { ++ CsvGetSystemMemory (); ++ } ++ ++ if (BaseAddress < MemorySizeBelow4G) { ++ return TRUE; ++ } else if (BaseAddress >= BASE_4GB && ++ BaseAddress < (BASE_4GB + MemorySizeAbove4G)) { ++ return TRUE; ++ } else if (EndAddress > BASE_4GB && ++ EndAddress <= (BASE_4GB + MemorySizeAbove4G)) { ++ return TRUE; ++ } else { ++ return FALSE; ++ } ++} ++ ++STATIC ++VOID ++EFIAPI ++CsvUpdateEncryptMemory ( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages ++) ++{ ++ PHYSICAL_ADDRESS PageAddress = BaseAddress & ~EFI_PAGE_MASK; ++ ++ if (CsvIsDRAM (PageAddress, NumPages)) { ++ CsvSecureCall (PageAddress, NumPages, CsvSecureCmdEnc); ++ } ++} ++ ++STATIC ++VOID ++EFIAPI ++CsvUpdateDecryptMemory ( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages ++) ++{ ++ PHYSICAL_ADDRESS PageAddress = BaseAddress & ~EFI_PAGE_MASK; ++ ++ if (CsvIsDRAM (PageAddress, NumPages)) { ++ CsvSecureCall (PageAddress, NumPages, CsvSecureCmdDec); ++ } ++} ++ ++VOID ++EFIAPI ++CsvUpdateMemory ( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages, ++ IN BOOLEAN Dec ++ ) ++{ ++ if (Dec) ++ CsvUpdateDecryptMemory (BaseAddress, NumPages); ++ else ++ CsvUpdateEncryptMemory (BaseAddress, NumPages); ++} ++ ++VOID ++EFIAPI ++CsvResetMemory ( ++ VOID ++) ++{ ++ CsvSecureCall (0, 0, CsvSecureCmdReset); ++} ++ ++VOID ++EFIAPI ++CsvUpdateMapLowerMemory ( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages ++) ++{ ++ CsvSecureCall (BaseAddress, NumPages, CsvSecureCmdMapLowerMemory); ++} ++ ++VOID ++EFIAPI ++CsvUpdateMapUpperMemory ( ++ IN PHYSICAL_ADDRESS BaseAddress, ++ IN UINTN NumPages ++) ++{ ++ CsvSecureCall (BaseAddress, NumPages, CsvSecureCmdMapUpperMemory); ++} +diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec +index 340d83f..6f4afb8 100644 +--- a/OvmfPkg/OvmfPkg.dec ++++ b/OvmfPkg/OvmfPkg.dec +@@ -109,6 +109,10 @@ + # + XenPlatformLib|Include/Library/XenPlatformLib.h + ++ ## @libraryclass CSV Library ++ # ++ CsvLib|Include/Library/CsvLib.h ++ + [Guids] + gUefiOvmfPkgTokenSpaceGuid = {0x93bb96af, 0xb9f2, 0x4eb8, {0x94, 0x62, 0xe0, 0xba, 0x74, 0x56, 0x42, 0x36}} + gEfiXenInfoGuid = {0xd3b46f3b, 0xd441, 0x1244, {0x9a, 0x12, 0x0, 0x12, 0x27, 0x3f, 0xc1, 0x4d}} +@@ -350,6 +354,10 @@ + gUefiOvmfPkgTokenSpaceGuid.PcdBfvRawDataOffset|0|UINT32|0x56 + gUefiOvmfPkgTokenSpaceGuid.PcdBfvRawDataSize|0|UINT32|0x57 + ++ ## the base address of the secure call pages used by CSV. ++ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase|0|UINT32|0x58 ++ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize|0|UINT32|0x59 ++ + [PcdsDynamic, PcdsDynamicEx] + gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10 +diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc +index a066693..d623ed3 100644 +--- a/OvmfPkg/OvmfPkgIa32.dsc ++++ b/OvmfPkg/OvmfPkgIa32.dsc +@@ -176,6 +176,7 @@ + VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf + LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf + MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf ++ CsvLib|OvmfPkg/Library/CsvLib/CsvLib.inf + !if $(SMM_REQUIRE) == FALSE + LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf + !endif +diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc +index 5efeb42..9e4dcce 100644 +--- a/OvmfPkg/OvmfPkgIa32X64.dsc ++++ b/OvmfPkg/OvmfPkgIa32X64.dsc +@@ -180,6 +180,7 @@ + VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf + LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf + MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf ++ CsvLib|OvmfPkg/Library/CsvLib/CsvLib.inf + !if $(SMM_REQUIRE) == FALSE + LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf + !endif +diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc +index 10fb7d7..e62b533 100644 +--- a/OvmfPkg/OvmfPkgX64.dsc ++++ b/OvmfPkg/OvmfPkgX64.dsc +@@ -180,6 +180,7 @@ + VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf + LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf + MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf ++ CsvLib|OvmfPkg/Library/CsvLib/CsvLib.inf + !if $(SMM_REQUIRE) == FALSE + LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf + !endif +diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf +index 85b4b23..a3634dd 100644 +--- a/OvmfPkg/OvmfPkgX64.fdf ++++ b/OvmfPkg/OvmfPkgX64.fdf +@@ -88,6 +88,9 @@ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvm + 0x00C000|0x001000 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupSize + ++0x00D000|0x002000 ++gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase|gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize ++ + 0x010000|0x010000 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize + +-- +2.17.1 + diff --git a/0032-anolis-OvmfPkg-Tcg-Add-CsvLib-for-TpmMmioSevDecryptP.patch b/0032-anolis-OvmfPkg-Tcg-Add-CsvLib-for-TpmMmioSevDecryptP.patch new file mode 100644 index 0000000..c00ebcd --- /dev/null +++ b/0032-anolis-OvmfPkg-Tcg-Add-CsvLib-for-TpmMmioSevDecryptP.patch @@ -0,0 +1,27 @@ +From 40c0763c88a6a895d4fc58158f3c0f9a17798049 Mon Sep 17 00:00:00 2001 +From: Xin Jiang +Date: Fri, 18 Aug 2023 16:48:03 +0800 +Subject: [PATCH 32/46] anolis: OvmfPkg/Tcg: Add CsvLib for + TpmMmioSevDecryptPei + +Signed-off-by: Xin Jiang +Change-Id: I4a11065abcc679538aabcb7602185f785df60496 +--- + OvmfPkg/Tcg/TpmMmioSevDecryptPei/TpmMmioSevDecryptPei.inf | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/OvmfPkg/Tcg/TpmMmioSevDecryptPei/TpmMmioSevDecryptPei.inf b/OvmfPkg/Tcg/TpmMmioSevDecryptPei/TpmMmioSevDecryptPei.inf +index 51ad6d0..402e4c9 100644 +--- a/OvmfPkg/Tcg/TpmMmioSevDecryptPei/TpmMmioSevDecryptPei.inf ++++ b/OvmfPkg/Tcg/TpmMmioSevDecryptPei/TpmMmioSevDecryptPei.inf +@@ -29,6 +29,7 @@ + PcdLib + PeimEntryPoint + PeiServicesLib ++ CsvLib + + [Ppis] + gOvmfTpmMmioAccessiblePpiGuid ## PRODUCES +-- +2.17.1 + diff --git a/0033-anolis-OvmfPkg-ResetVector-Support-CSV-in-ResetVecto.patch b/0033-anolis-OvmfPkg-ResetVector-Support-CSV-in-ResetVecto.patch new file mode 100644 index 0000000..b30e7df --- /dev/null +++ b/0033-anolis-OvmfPkg-ResetVector-Support-CSV-in-ResetVecto.patch @@ -0,0 +1,222 @@ +From b08f9e4b2d4aa1f1baec02ecda6ae481ed58c64f Mon Sep 17 00:00:00 2001 +From: Liu Zixing +Date: Fri, 25 Feb 2022 15:55:44 +0800 +Subject: [PATCH 33/46] anolis: OvmfPkg/ResetVector: Support CSV in ResetVector + phase + +- A GUID is written along with the first secure call page address, +by which the Secure Processor can locate the first secure call page +address. + +- Check whether the VM is a CSV VM when setting the first page table + +- CSV VM will update first shared GHCB page address to Secure Processor +by secure call page + +Signed-off-by: Xin Jiang +Change-Id: I422bff00dc88d6738d1dae2d9f6c5c49ec601e95 +--- + OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm | 15 +++ + OvmfPkg/ResetVector/Ia32/AmdSev.asm | 10 ++ + OvmfPkg/ResetVector/Ia32/CsvInit.asm | 107 +++++++++++++++++++ + OvmfPkg/ResetVector/ResetVector.inf | 2 + + OvmfPkg/ResetVector/ResetVector.nasmb | 4 + + 5 files changed, 138 insertions(+) + create mode 100644 OvmfPkg/ResetVector/Ia32/CsvInit.asm + +diff --git a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm +index dee2e3f..c32b608 100644 +--- a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm ++++ b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm +@@ -48,6 +48,21 @@ TIMES (15 - ((guidedStructureEnd - guidedStructureStart + 15) % 16)) DB 0 + guidedStructureStart: + + %ifdef ARCH_X64 ++; ++; CSV secure call table ++; ++; Provide secure call pages when boot up for CSV guest. ++; ++; GUID : 9a5d926f-2fa5-ceba-ab21-6b275d5556a5 ++; ++csvSecureCallBase: ++ DD CSV_DEFAULT_SECURE_CALL_SIZE ++ DD CSV_DEFAULT_SECURE_CALL_BASE ++ DW csvSecureCallEnd - csvSecureCallBase ++ DB 0x6F, 0x92, 0x5D, 0x9A, 0xA5, 0x2F, 0xBA, 0xCE ++ DB 0xAB, 0x21, 0x6B, 0x27, 0x5D, 0x55, 0x56, 0xA5 ++csvSecureCallEnd: ++ + ; + ; TDX Metadata offset block + ; +diff --git a/OvmfPkg/ResetVector/Ia32/AmdSev.asm b/OvmfPkg/ResetVector/Ia32/AmdSev.asm +index 250ac8d..8ce5eb0 100644 +--- a/OvmfPkg/ResetVector/Ia32/AmdSev.asm ++++ b/OvmfPkg/ResetVector/Ia32/AmdSev.asm +@@ -177,6 +177,16 @@ pageTableEntries4kLoop: + mov ecx, (GHCB_BASE & 0x1F_FFFF) >> 12 + mov [ecx * 8 + GHCB_PT_ADDR + 4], strict dword 0 + ++ OneTimeCall CheckCsvFeature ++ test eax, eax ++ jz clearGhcbStart ++ ++ OneTimeCall CsvInit ++ mov eax, 1 ++ test ecx, ecx ++ jz SevEsUnexpectedRespTerminate ++ ++clearGhcbStart: + mov ecx, GHCB_SIZE / 4 + xor eax, eax + clearGhcbMemoryLoop: +diff --git a/OvmfPkg/ResetVector/Ia32/CsvInit.asm b/OvmfPkg/ResetVector/Ia32/CsvInit.asm +new file mode 100644 +index 0000000..0744a35 +--- /dev/null ++++ b/OvmfPkg/ResetVector/Ia32/CsvInit.asm +@@ -0,0 +1,107 @@ ++;------------------------------------------------------------------------------ ++; @file ++; Provide the functions to check whether CSV is enabled. ++; ++; Copyright (c) 2022, HYGON. All rights reserved.
++; SPDX-License-Identifier: BSD-2-Clause-Patent ++; ++;------------------------------------------------------------------------------ ++ ++BITS 32 ++ ++; If Secure Command returns ok then ECX will be non-zero. ++; If Secure Command returns error then ECX will be zero. ++CsvInit: ++ mov esp, SEV_ES_VC_TOP_OF_STACK ++ push esi ++ push edi ++ ++ ; copy SECURE_CALL_GUID to CSV_DEFAULT_SECURE_CALL_BASE + 4096 ++ cld ++ mov esi, ADDR_OF(SECURE_CALL_GUID) ++ mov edi, CSV_DEFAULT_SECURE_CALL_BASE ++ add edi, 4096 ++ mov ecx, 4 ++ rep movsd ++ ++ ; secure call begin ++ mov esi, CSV_DEFAULT_SECURE_CALL_BASE ++ ; write secure cmd to page B ++ ; 16 bytes of page A/B is GUID, just ignore ++ mov [esi + 4096 + 16], DWORD 2 ; dec command ++ mov [esi + 4096 + 20], DWORD 1 ; 1 entry ++ ; 8 bytes is unused ++ mov [esi + 4096 + 32], DWORD GHCB_BASE; lower address ++ mov [esi + 4096 + 36], DWORD 0 ; upper address ++ mov [esi + 4096 + 40], DWORD 4096 ; lower 32 bit of page size ++ mov [esi + 4096 + 44], DWORD 0 ; upper 32 bit of page size ++ mfence ++ ; read from page A ++ mov ecx, [esi + 16] ++ ; check if the response comes ++ cmp ecx, 2 ++ jne SecureCommandDone ++ ; no secure command response, clean ecx ++ xor ecx, ecx ++ ; secure call end ++ ++SecureCommandDone: ++ pop edi ++ pop esi ++ mov esp, 0 ++ ++ OneTimeCallRet CsvInit ++ ++; Check if CSV feature is enabled. ++; ++; Modified: EAX, EBX, ECX, EDX ++; ++; If CSV is enabled then EAX will be non-zero. ++; If CSV is disabled then EAX will be zero. ++; ++CheckCsvFeature: ++ mov esp, SEV_ES_VC_TOP_OF_STACK ++ mov eax, ADDR_OF(Idtr) ++ lidt [cs:eax] ++ ++ ; Check if vendor Hygon CPUID_SIGNATURE(0x0) ++ ; CPUID raises a #VC exception if running as an SEV-ES guest ++ mov eax, 0 ++ cpuid ++ ++ cmp ebx, 0x6f677948 ++ jne NoCsv ++ cmp ecx, 0x656e6975 ++ jne NoCsv ++ cmp edx, 0x6e65476e ++ jne NoCsv ++ ++ ; Check if CSV is enabled ++ ; MSR_0xC0010131 - Bit 30 (CSV enabled) ++ mov ecx, 0xc0010131 ++ rdmsr ++ and eax, 0x40000000 ++ jmp CsvExit ++ ++NoCsv: ++ xor eax, eax ++ ++CsvExit: ++ ; ++ ; Clear exception handlers and stack ++ ; ++ push eax ++ mov eax, ADDR_OF(IdtrClear) ++ lidt [cs:eax] ++ pop eax ++ mov esp, 0 ++ ++ OneTimeCallRet CheckCsvFeature ++ ++SECURE_CALL_GUID: ++; low 0xceba2fa59a5d926f ++; high 0xa556555d276b21ab ++ dd 0x9a5d926f ++ dd 0xceba2fa5 ++ dd 0x276b21ab ++ dd 0xa556555d +diff --git a/OvmfPkg/ResetVector/ResetVector.inf b/OvmfPkg/ResetVector/ResetVector.inf +index 320e5f2..38c1720 100644 +--- a/OvmfPkg/ResetVector/ResetVector.inf ++++ b/OvmfPkg/ResetVector/ResetVector.inf +@@ -35,6 +35,8 @@ + + [Pcd] + gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaBase ++ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase ++ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBase + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbSize + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbPageTableBase +diff --git a/OvmfPkg/ResetVector/ResetVector.nasmb b/OvmfPkg/ResetVector/ResetVector.nasmb +index 87effed..ca00f64 100644 +--- a/OvmfPkg/ResetVector/ResetVector.nasmb ++++ b/OvmfPkg/ResetVector/ResetVector.nasmb +@@ -104,11 +104,15 @@ + %define SEV_ES_WORK_AREA_ENC_MASK (FixedPcdGet32 (PcdSevEsWorkAreaBase) + 16) + %define SEV_ES_VC_TOP_OF_STACK (FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + FixedPcdGet32 (PcdOvmfSecPeiTempRamSize)) + ++ %define CSV_DEFAULT_SECURE_CALL_BASE FixedPcdGet32 (PcdCsvDefaultSecureCallBase) ++ %define CSV_DEFAULT_SECURE_CALL_SIZE FixedPcdGet32 (PcdCsvDefaultSecureCallSize) ++ + %include "X64/IntelTdxMetadata.asm" + %include "Ia32/Flat32ToFlat64.asm" + %include "Ia32/AmdSev.asm" + %include "Ia32/PageTables64.asm" + %include "Ia32/IntelTdx.asm" ++%include "Ia32/CsvInit.asm" + %endif + + %include "Ia16/Real16ToFlat32.asm" +-- +2.17.1 + diff --git a/0034-anolis-OvmfPkg-PlatformPei-Initialize-CSV-VM-s-memor.patch b/0034-anolis-OvmfPkg-PlatformPei-Initialize-CSV-VM-s-memor.patch new file mode 100644 index 0000000..3a55e93 --- /dev/null +++ b/0034-anolis-OvmfPkg-PlatformPei-Initialize-CSV-VM-s-memor.patch @@ -0,0 +1,202 @@ +From 9c52c4e45c2fc51308628c8118edb3740bbfae47 Mon Sep 17 00:00:00 2001 +From: Liu Zixing +Date: Fri, 25 Feb 2022 16:12:38 +0800 +Subject: [PATCH 34/46] anolis: OvmfPkg/PlatformPei: Initialize CSV VM's memory + +For CSV VM, the Secure Processor builds a temporary nested +page table to help the guest to run into the PEI phase. + +In PEI phase, CSV VM detects the start address and size of the +guest physical memory. + +The CSV VM sends the memory information to the Secure Processor +to build the permanent nested page table. + +Signed-off-by: Xin Jiang +Change-Id: I853d17ffa4146037038018d934f224fcbf79be1a +--- + OvmfPkg/PlatformPei/Csv.c | 81 +++++++++++++++++++++++++++++ + OvmfPkg/PlatformPei/MemDetect.c | 2 - + OvmfPkg/PlatformPei/Platform.c | 2 + + OvmfPkg/PlatformPei/Platform.h | 14 +++++ + OvmfPkg/PlatformPei/PlatformPei.inf | 4 ++ + 5 files changed, 101 insertions(+), 2 deletions(-) + create mode 100644 OvmfPkg/PlatformPei/Csv.c + +diff --git a/OvmfPkg/PlatformPei/Csv.c b/OvmfPkg/PlatformPei/Csv.c +new file mode 100644 +index 0000000..44e81e1 +--- /dev/null ++++ b/OvmfPkg/PlatformPei/Csv.c +@@ -0,0 +1,81 @@ ++/** @file ++ ++ CSV initialization in PEI ++ ++ Copyright (c) 2022, HYGON. All rights reserved.
++ ++ This program and the accompanying materials are licensed and made available ++ under the terms and conditions of the BSD License which accompanies this ++ distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++ ++**/ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "Platform.h" ++ ++VOID ++CsvInitializeMemInfo ( ++ VOID ++ ) ++{ ++ UINT64 LowerMemorySize; ++ UINT64 UpperMemorySize; ++ ++ if (!CsvIsEnabled ()) { ++ return ; ++ } ++ ++ LowerMemorySize = GetSystemMemorySizeBelow4gb (); ++ UpperMemorySize = GetSystemMemorySizeAbove4gb (); ++ ++ CsvUpdateMapLowerMemory ( ++ 0, ++ LowerMemorySize >> EFI_PAGE_SHIFT ++ ); ++ ++ if (UpperMemorySize > 0) { ++ CsvUpdateMapUpperMemory ( ++ BASE_4GB, ++ UpperMemorySize >> EFI_PAGE_SHIFT ++ ); ++ } ++ ++ BuildMemoryAllocationHob ( ++ (EFI_PHYSICAL_ADDRESS)(UINTN) FixedPcdGet32 (PcdCsvDefaultSecureCallBase), ++ (UINT64)(UINTN) FixedPcdGet32 (PcdCsvDefaultSecureCallSize), ++ EfiReservedMemoryType ++ ); ++} ++ ++VOID ++CsvInitializeGhcb ( ++ VOID ++ ) ++{ ++ RETURN_STATUS EncryptStatus; ++ ++ if (!CsvIsEnabled ()) { ++ return ; ++ } ++ ++ // ++ // Encrypt the SecGhcb as it's not a Ghcb any more ++ // ++ EncryptStatus = MemEncryptSevSetPageEncMask( ++ 0, ++ PcdGet32 (PcdOvmfSecGhcbBase), ++ 1 ++ ); ++ ASSERT_RETURN_ERROR (EncryptStatus); ++} +diff --git a/OvmfPkg/PlatformPei/MemDetect.c b/OvmfPkg/PlatformPei/MemDetect.c +index d736b85..c2c3cf7 100644 +--- a/OvmfPkg/PlatformPei/MemDetect.c ++++ b/OvmfPkg/PlatformPei/MemDetect.c +@@ -301,8 +301,6 @@ GetSystemMemorySizeBelow4gb ( + return (UINT32) (((UINTN)((Cmos0x35 << 8) + Cmos0x34) << 16) + SIZE_16MB); + } + +- +-STATIC + UINT64 + GetSystemMemorySizeAbove4gb ( + ) +diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c +index d0e2c08..79bf4e7 100644 +--- a/OvmfPkg/PlatformPei/Platform.c ++++ b/OvmfPkg/PlatformPei/Platform.c +@@ -743,6 +743,7 @@ InitializePlatform ( + QemuUc32BaseInitialization (); + + InitializeRamRegions (); ++ CsvInitializeMemInfo (); + + if (mBootMode != BOOT_ON_S3_RESUME) { + if (!FeaturePcdGet (PcdSmmSmramRequire)) { +@@ -757,6 +758,7 @@ InitializePlatform ( + + InstallClearCacheCallback (); + AmdSevInitialize (); ++ CsvInitializeGhcb (); + MiscInitialization (); + InstallFeatureControlCallback (); + +diff --git a/OvmfPkg/PlatformPei/Platform.h b/OvmfPkg/PlatformPei/Platform.h +index 8b1d270..89c3bd8 100644 +--- a/OvmfPkg/PlatformPei/Platform.h ++++ b/OvmfPkg/PlatformPei/Platform.h +@@ -102,6 +102,20 @@ AmdSevInitialize ( + VOID + ); + ++VOID ++CsvInitializeMemInfo ( ++ VOID ++); ++ ++VOID ++CsvInitializeGhcb ( ++ VOID ++); ++ ++UINT64 ++GetSystemMemorySizeAbove4gb ( ++); ++ + extern EFI_BOOT_MODE mBootMode; + + extern BOOLEAN mS3Supported; +diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf +index 69eb3ed..cb0582c 100644 +--- a/OvmfPkg/PlatformPei/PlatformPei.inf ++++ b/OvmfPkg/PlatformPei/PlatformPei.inf +@@ -33,6 +33,7 @@ + MemTypeInfo.c + Platform.c + Platform.h ++ Csv.c + + [Packages] + EmbeddedPkg/EmbeddedPkg.dec +@@ -62,6 +63,7 @@ + MtrrLib + MemEncryptSevLib + PcdLib ++ CsvLib + + [Pcd] + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase +@@ -119,6 +121,8 @@ + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupSize + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaBase + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaSize ++ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase ++ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize + + [FeaturePcd] + gUefiOvmfPkgTokenSpaceGuid.PcdCsmEnable +-- +2.17.1 + diff --git a/0035-anolis-OvmfPkg-BaseMemcryptSevLib-update-page-status.patch b/0035-anolis-OvmfPkg-BaseMemcryptSevLib-update-page-status.patch new file mode 100644 index 0000000..1938b99 --- /dev/null +++ b/0035-anolis-OvmfPkg-BaseMemcryptSevLib-update-page-status.patch @@ -0,0 +1,75 @@ +From 16936ea22fc052576844dfdad6987531aa27a8ec Mon Sep 17 00:00:00 2001 +From: Liu Zixing +Date: Sat, 26 Feb 2022 14:39:06 +0800 +Subject: [PATCH 35/46] anolis: OvmfPkg/BaseMemcryptSevLib: update page status + to Secure Processor for CSV + +For CSV VM, when encrypting/decrypting a shared/private memory region, +guest needs to + - set/clear the c-bit in guest page table + - the Secure Processor should be updated accordingly + +The BaseMemcryptSevLib has done the first step. +Calling the secure call library for second step. + +Signed-off-by: Xin Jiang +Change-Id: Icab502ee201d887d6056bcb0116b2e5a1b9eb6b9 +--- + .../BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf | 1 + + .../BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c | 14 ++++++++++++++ + 2 files changed, 15 insertions(+) + +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf +index f2e162d..dc32929 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf +@@ -49,6 +49,7 @@ + DebugLib + MemoryAllocationLib + PcdLib ++ CsvLib + + [FeaturePcd] + gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c +index c696745..6726010 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c +@@ -18,6 +18,8 @@ + + #include "VirtualMemory.h" + ++#include ++ + STATIC BOOLEAN mAddressEncMaskChecked = FALSE; + STATIC UINT64 mAddressEncMask; + STATIC PAGE_TABLE_POOL *mPageTablePool = NULL; +@@ -585,6 +587,11 @@ SetMemoryEncDec ( + UINT64 AddressEncMask; + BOOLEAN IsWpEnabled; + RETURN_STATUS Status; ++ PHYSICAL_ADDRESS PageAddress; ++ UINTN PageNum; ++ ++ PageAddress = PhysicalAddress; ++ PageNum = EFI_SIZE_TO_PAGES (Length); + + // + // Set PageMapLevel4Entry to suppress incorrect compiler/analyzer warnings. +@@ -816,6 +823,13 @@ Done: + EnableReadOnlyPageWriteProtect (); + } + ++ if (CsvIsEnabled () && Status == EFI_SUCCESS) { ++ if (Mode == ClearCBit) ++ CsvUpdateMemory (PageAddress, PageNum, TRUE); ++ else ++ CsvUpdateMemory (PageAddress, PageNum, FALSE); ++ } ++ + return Status; + } + +-- +2.17.1 + diff --git a/0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch b/0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch new file mode 100644 index 0000000..0bf6d40 --- /dev/null +++ b/0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch @@ -0,0 +1,616 @@ +From 4569ddd201843a1fd1e9b0431e971cd4edefff5d Mon Sep 17 00:00:00 2001 +From: Liu Zixing +Date: Fri, 25 Feb 2022 16:34:25 +0800 +Subject: [PATCH 36/46] anolis: OvmfPkg: Add CsvDxe driver + +CsvDxe creates and installs the CsvSharedMemory protocol. + +CSV VM needs the shared memory to exchange data with external devices. + +To improve the performance, CsvSharedMemory protocol pre-allocates +huge shared memory chunk as a pool. + +When reqeusted, it allocates small pieces of shared memory from the +pool and records the allocated memory in a list. + +When finished, the shared memory pieces are returned to the pool and +removed from the record list. + +Signed-off-by: Xin Jiang +Change-Id: I6b41c6e1af34b4f8ad58a61cce2e7fd8e8b5795b +--- + OvmfPkg/CsvDxe/CsvDxe.c | 104 +++++++++++ + OvmfPkg/CsvDxe/CsvDxe.inf | 45 +++++ + OvmfPkg/CsvDxe/CsvSharedMemory.c | 208 +++++++++++++++++++++ + OvmfPkg/CsvDxe/CsvSharedMemory.h | 29 +++ + OvmfPkg/Include/Protocol/CsvSharedMemory.h | 99 ++++++++++ + OvmfPkg/OvmfPkg.dec | 1 + + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + + OvmfPkg/OvmfPkgIa32X64.fdf | 1 + + OvmfPkg/OvmfPkgX64.dsc | 1 + + OvmfPkg/OvmfPkgX64.fdf | 1 + + 10 files changed, 490 insertions(+) + create mode 100644 OvmfPkg/CsvDxe/CsvDxe.c + create mode 100644 OvmfPkg/CsvDxe/CsvDxe.inf + create mode 100644 OvmfPkg/CsvDxe/CsvSharedMemory.c + create mode 100644 OvmfPkg/CsvDxe/CsvSharedMemory.h + create mode 100644 OvmfPkg/Include/Protocol/CsvSharedMemory.h + +diff --git a/OvmfPkg/CsvDxe/CsvDxe.c b/OvmfPkg/CsvDxe/CsvDxe.c +new file mode 100644 +index 0000000..552f3cf +--- /dev/null ++++ b/OvmfPkg/CsvDxe/CsvDxe.c +@@ -0,0 +1,104 @@ ++/** @file ++ ++ Hygon CSV DXE. ++ ++ Copyright (c) 2022, HYGON. All rights reserved.
++ ++ This program and the accompanying materials are licensed and made available ++ under the terms and conditions of the BSD License which accompanies this ++ distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT ++ WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++ ++**/ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "CsvSharedMemory.h" ++ ++ ++#define HUGE_PAGE_SIZE 0x200000ULL ++ ++EFI_STATUS ++EFIAPI ++CsvDxeEntryPoint ( ++ IN EFI_HANDLE ImageHandle, ++ IN EFI_SYSTEM_TABLE *SystemTable ++ ) ++{ ++ EFI_STATUS Status; ++ RETURN_STATUS DecryptStatus; ++ CSV_SHARED_MEMORY_PROTOCOL *SharedMemory; ++ EFI_PHYSICAL_ADDRESS Memory; ++ EFI_PHYSICAL_ADDRESS EndMemory; ++ EFI_ALLOCATE_TYPE AllocateType; ++ UINT64 Size; ++ ++ Status = CsvInstallSharedMemoryProtocol (); ++ ++ if (EFI_ERROR (Status)) { ++ DEBUG ((EFI_D_ERROR, "fail to install CsvSharedMemory protocol\n")); ++ return Status; ++ } ++ ++ // ++ // Do nothing more when CSV is not enabled ++ // ++ if (!CsvIsEnabled ()) { ++ return EFI_SUCCESS; ++ } ++ ++ Status = gBS->LocateProtocol ( ++ &gCsvSharedMemoryProtocolGuid, ++ NULL, ++ (VOID**)&SharedMemory ++ ); ++ ++ if (Status == EFI_SUCCESS) { ++ ++ AllocateType = AllocateMaxAddress; ++ Memory = BASE_4GB - 1; ++ ++ Status = gBS->AllocatePages ( ++ AllocateType, ++ EfiBootServicesData, ++ CSV_SHARED_MEMORY_PAGE_NUMBER, ++ &Memory ++ ); ++ ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "fail to allocate CsvSharedMemory\n", SharedMemory)); ++ } else { ++ //Align to huge page ++ EndMemory = (Memory + CSV_SHARED_MEMORY_SIZE) & (~(HUGE_PAGE_SIZE - 1)); ++ Memory = ALIGN_VALUE(Memory, HUGE_PAGE_SIZE); ++ Size = (EndMemory > Memory) ? EndMemory - Memory : 0; ++ DecryptStatus = MemEncryptSevClearPageEncMask ( ++ 0, ++ Memory, ++ Size >> EFI_PAGE_SHIFT ++ ); ++ ASSERT_RETURN_ERROR (DecryptStatus); ++ ++ SharedMemory->CsvInitializeSharedMemoryList ( ++ SharedMemory, ++ (UINT64)Memory, ++ Size ++ ); ++ } ++ } else { ++ DEBUG ((DEBUG_ERROR, "fail to LocateProtocol gCsvSharedMemoryProtocolGuid\n")); ++ } ++ ++ return EFI_SUCCESS; ++} +diff --git a/OvmfPkg/CsvDxe/CsvDxe.inf b/OvmfPkg/CsvDxe/CsvDxe.inf +new file mode 100644 +index 0000000..89e3703 +--- /dev/null ++++ b/OvmfPkg/CsvDxe/CsvDxe.inf +@@ -0,0 +1,45 @@ ++#/** @file ++# ++# Secure Isolated Virtualization ++# ++# Copyright (c) 2022, HYGON Inc. All rights reserved.
++# ++# This program and the accompanying materials are licensed and made available ++# under the terms and conditions of the BSD License which accompanies this ++# distribution. The full text of the license may be found at ++# http://opensource.org/licenses/bsd-license.php ++# ++# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR ++# IMPLIED. ++# ++#**/ ++ ++[Defines] ++ INF_VERSION = 1.25 ++ BASE_NAME = CsvDxe ++ FILE_GUID = 829310c0-b9c4-11e9-9e16-9b10d744f884 ++ MODULE_TYPE = DXE_DRIVER ++ VERSION_STRING = 1.0 ++ ENTRY_POINT = CsvDxeEntryPoint ++ ++[Sources] ++ CsvDxe.c ++ CsvSharedMemory.c ++ ++[Packages] ++ MdePkg/MdePkg.dec ++ OvmfPkg/OvmfPkg.dec ++ ++[LibraryClasses] ++ BaseLib ++ BaseMemoryLib ++ DebugLib ++ CsvLib ++ UefiDriverEntryPoint ++ ++[Depex] ++ TRUE ++ ++[Protocols] ++ gCsvSharedMemoryProtocolGuid +diff --git a/OvmfPkg/CsvDxe/CsvSharedMemory.c b/OvmfPkg/CsvDxe/CsvSharedMemory.c +new file mode 100644 +index 0000000..8674eaf +--- /dev/null ++++ b/OvmfPkg/CsvDxe/CsvSharedMemory.c +@@ -0,0 +1,208 @@ ++/** @file ++ ++ The protocol provides allocate, free the CSV shared memory. ++ ++ Copyright (c) 2022, HYGON. All rights reserved.
++ ++ This program and the accompanying materials are licensed and made available ++ under the terms and conditions of the BSD License which accompanies this ++ distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++ ++**/ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++STATIC LIST_ENTRY CsvSharedMemoryList = INITIALIZE_LIST_HEAD_VARIABLE (CsvSharedMemoryList); ++ ++// ++// Insert the initial shared memory address and length to list. ++// ++ ++EFI_STATUS ++EFIAPI ++CsvInitializeSharedMemoryList ( ++ IN CSV_SHARED_MEMORY_PROTOCOL *Protocol, ++ IN UINT64 Address, ++ IN UINT64 Length ++ ) ++{ ++ CsvSharedMemoryEntry *Entry; ++ ++ if (Length == 0) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ Entry = AllocatePool (sizeof (*Entry)); ++ if (Entry == NULL) { ++ DEBUG((DEBUG_ERROR, "CsvInitializeSharedMemoryList AllocatePool error\n")); ++ return EFI_OUT_OF_RESOURCES; ++ } ++ ++ Entry->Start = Address; ++ Entry->Length = Length; ++ Entry->Signature = CSV_SHARED_MEMORY_SIGNATURE; ++ ++ InsertTailList (&CsvSharedMemoryList, &Entry->Link); ++ ++ return EFI_SUCCESS; ++} ++ ++EFI_STATUS ++EFIAPI ++CsvAllocateSharedMemory ( ++ IN CSV_SHARED_MEMORY_PROTOCOL *Protocol, ++ IN UINTN NumberOfPages, ++ OUT UINT64 *Memory ++ ) ++{ ++ LIST_ENTRY *Link; ++ CsvSharedMemoryEntry *Entry; ++ UINT64 MemoryLength; ++ ++ MemoryLength = (UINT64)NumberOfPages << EFI_PAGE_SHIFT; ++ ++ for (Link = CsvSharedMemoryList.ForwardLink; Link != &CsvSharedMemoryList; Link = Link->ForwardLink) { ++ Entry = CR (Link, CsvSharedMemoryEntry, Link, CSV_SHARED_MEMORY_SIGNATURE); ++ if (Entry->Length > MemoryLength) { ++ *Memory = (EFI_PHYSICAL_ADDRESS)Entry->Start; ++ Entry->Start = *Memory + MemoryLength; ++ Entry->Length -= MemoryLength; ++ break; ++ } else if (Entry->Length == MemoryLength) { ++ *Memory = (EFI_PHYSICAL_ADDRESS)Entry->Start; ++ RemoveEntryList (&Entry->Link); ++ FreePool (Entry); ++ break; ++ } ++ } ++ ++ ++ ++ if (Link == &CsvSharedMemoryList) { ++ DEBUG ((EFI_D_ERROR, "CsvAllocateSharedMemory fail to allocate %u pages\n", NumberOfPages)); ++ return EFI_NOT_FOUND; ++ } ++ else { ++ return EFI_SUCCESS; ++ } ++} ++ ++ ++ ++EFI_STATUS ++EFIAPI ++CsvFreeSharedMemory ( ++ IN CSV_SHARED_MEMORY_PROTOCOL *Protocol, ++ IN UINTN Pages, ++ IN UINT64 HostAddress ++ ) ++{ ++ LIST_ENTRY *Link; ++ CsvSharedMemoryEntry *Entry; ++ CsvSharedMemoryEntry *NewEntry; ++ UINT64 Memory; ++ UINT64 MemoryLength; ++ CsvSharedMemoryEntry *Previous = NULL; ++ BOOLEAN Inserted = FALSE; ++ ++ Memory = (UINT64)HostAddress; ++ MemoryLength = (UINT64)Pages << EFI_PAGE_SHIFT; ++ ++ for (Link = CsvSharedMemoryList.ForwardLink; ++ Link != &CsvSharedMemoryList; ++ Link = Link->ForwardLink) { ++ Entry = CR (Link, CsvSharedMemoryEntry, Link, CSV_SHARED_MEMORY_SIGNATURE); ++ if (Inserted) ++ goto Merge; ++ if (Entry->Start + Entry->Length == Memory) { ++ Entry->Length += MemoryLength; ++ Inserted = TRUE; ++ goto Merge; ++ } else if (Memory + MemoryLength < Entry->Start) { ++ NewEntry = AllocatePool (sizeof *NewEntry); ++ if (NewEntry == NULL) { ++ return EFI_OUT_OF_RESOURCES; ++ } ++ ++ NewEntry->Start = Memory; ++ NewEntry->Length = MemoryLength; ++ NewEntry->Signature = CSV_SHARED_MEMORY_SIGNATURE; ++ ++ InsertTailList (&Entry->Link, &NewEntry->Link); ++ break; ++ } else if (Memory + MemoryLength == Entry->Start) { ++ Entry->Start = Memory; ++ Entry->Length += MemoryLength; ++ break; ++ } else if (Link->ForwardLink == &CsvSharedMemoryList) { ++ // ++ // Insert to tail ++ // ++ NewEntry = AllocatePool (sizeof *NewEntry); ++ if (NewEntry == NULL) { ++ return EFI_OUT_OF_RESOURCES; ++ } ++ ++ NewEntry->Start = Memory; ++ NewEntry->Length = MemoryLength; ++ NewEntry->Signature = CSV_SHARED_MEMORY_SIGNATURE; ++ InsertHeadList (Link, &NewEntry->Link); ++ break; ++ } ++ ++Merge: ++ if (Previous) { ++ if (Previous->Start + Previous->Length == Entry->Start) { ++ Entry->Start = Previous->Start; ++ Entry->Length += Previous->Length; ++ RemoveEntryList (&Previous->Link); ++ FreePool (Previous); ++ } ++ break; ++ } else { ++ Previous = Entry; ++ } ++ } ++ ++ return EFI_SUCCESS; ++} ++ ++CSV_SHARED_MEMORY_PROTOCOL mCsvSharedMemory = { ++ CsvInitializeSharedMemoryList, ++ CsvAllocateSharedMemory, ++ CsvFreeSharedMemory ++}; ++ ++/** ++ Initialize CsvSharedMemory Protocol. ++ ++**/ ++EFI_STATUS ++EFIAPI ++CsvInstallSharedMemoryProtocol ( ++ VOID ++ ) ++{ ++ EFI_STATUS Status; ++ EFI_HANDLE Handle; ++ ++ Handle = NULL; ++ Status = gBS->InstallMultipleProtocolInterfaces ( ++ &Handle, ++ &gCsvSharedMemoryProtocolGuid, ++ &mCsvSharedMemory, ++ NULL ++ ); ++ return Status; ++} +diff --git a/OvmfPkg/CsvDxe/CsvSharedMemory.h b/OvmfPkg/CsvDxe/CsvSharedMemory.h +new file mode 100644 +index 0000000..8828515 +--- /dev/null ++++ b/OvmfPkg/CsvDxe/CsvSharedMemory.h +@@ -0,0 +1,29 @@ ++/** @file ++ CSV shared memory management protocol ++ ++ Copyright (C) 2022 HYGON. ++ ++ This program and the accompanying materials ++ are licensed and made available under the terms and conditions of the BSD License ++ which accompanies this distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++ ++**/ ++ ++#ifndef _CSV_SHARED_MEMORY_H_ ++#define _CSV_SHARED_MEMORY_H_ ++ ++// ++// Install SHARED_MEMORY protocol . ++// ++ ++EFI_STATUS ++EFIAPI ++CsvInstallSharedMemoryProtocol ( ++ VOID ++ ); ++ ++#endif +diff --git a/OvmfPkg/Include/Protocol/CsvSharedMemory.h b/OvmfPkg/Include/Protocol/CsvSharedMemory.h +new file mode 100644 +index 0000000..0c3f23d +--- /dev/null ++++ b/OvmfPkg/Include/Protocol/CsvSharedMemory.h +@@ -0,0 +1,99 @@ ++/** @file ++ CSV shared memory management protocol ++ ++ Copyright (C) 2022 HYGON. ++ ++ This program and the accompanying materials ++ are licensed and made available under the terms and conditions of the BSD License ++ which accompanies this distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++ ++**/ ++ ++#ifndef __PROTOCOL_CSV_SHARED_MEMORY_H__ ++#define __PROTOCOL_CSV_SHARED_MEMORY_H__ ++ ++#define CSV_SHARED_MEMORY_PAGE_NUMBER (16384ULL) ++#define CSV_SHARED_MEMORY_SIZE ((CSV_SHARED_MEMORY_PAGE_NUMBER)*(SIZE_4KB)) ++ ++/// ++/// Forward declaration ++/// ++typedef struct _CSV_SHARED_MEMORY_PROTOCOL CSV_SHARED_MEMORY_PROTOCOL; ++ ++ ++/// ++/// Function prototypes ++/// ++ ++/** ++ Initialize the list to manage the CSV shared memory. ++ Insert the start address and length. ++ ++ @param This A pointer to CSV_SHARED_MEMORY_PROTOCOL instance. ++ @param Address The start address of the shared memory. ++ @param Length The length of the shared memory. ++ ++**/ ++typedef ++EFI_STATUS ++(EFIAPI *CSV_INITIALIZE_SHARED_MEMORY_LIST)( ++ IN CSV_SHARED_MEMORY_PROTOCOL *This, ++ IN UINT64 Address, ++ IN UINT64 Length ++ ); ++ ++/** ++ Allocate buffer from the shared memory. ++ ++ @param This A pointer to CSV_SHARED_MEMORY_PROTOCOL instance. ++ @param NumberOfPages The length of page number. ++ @param Memory When success, allocated memory will be stored in. ++ ++ @return On success, EFI_SUCCESS. Otherwise an errno value ++ indicating the type of failure. ++**/ ++typedef ++EFI_STATUS ++(EFIAPI *CSV_ALLOCATE_SHARED_MEMORY)( ++ IN CSV_SHARED_MEMORY_PROTOCOL *This, ++ IN UINTN NumberOfPages, ++ OUT UINT64 *Memory ++ ); ++ ++/** ++ Free buffer to the shared memory. ++ ++ @param This A pointer to CSV_SHARED_MEMORY_PROTOCOL instance. ++ @param NumberOfPages The page number. ++ @param Memory The allocated memory to be freed. ++ ++ @return On success, EFI_SUCCESS. Otherwise an errno value ++ indicating the type of failure. ++**/ ++typedef ++EFI_STATUS ++(EFIAPI *CSV_FREE_SHARED_MEMORY)( ++ IN CSV_SHARED_MEMORY_PROTOCOL *This, ++ IN UINTN NumberOfPages, ++ IN UINT64 Memory ++ ); ++ ++/// ++/// Protocol structure ++/// ++struct _CSV_SHARED_MEMORY_PROTOCOL { ++ // ++ // Protocol data fields ++ // ++ CSV_INITIALIZE_SHARED_MEMORY_LIST CsvInitializeSharedMemoryList; ++ CSV_ALLOCATE_SHARED_MEMORY CsvAllocateSharedMemory; ++ CSV_FREE_SHARED_MEMORY CsvFreeSharedMemory; ++}; ++ ++extern EFI_GUID gCsvSharedMemoryProtocolGuid; ++ ++#endif +diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec +index 6f4afb8..d8f9be3 100644 +--- a/OvmfPkg/OvmfPkg.dec ++++ b/OvmfPkg/OvmfPkg.dec +@@ -152,6 +152,7 @@ + gEfiLegacyInterruptProtocolGuid = {0x31ce593d, 0x108a, 0x485d, {0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe}} + gEfiVgaMiniPortProtocolGuid = {0xc7735a2f, 0x88f5, 0x4882, {0xae, 0x63, 0xfa, 0xac, 0x8c, 0x8b, 0x86, 0xb3}} + gOvmfLoadedX86LinuxKernelProtocolGuid = {0xa3edc05d, 0xb618, 0x4ff6, {0x95, 0x52, 0x76, 0xd7, 0x88, 0x63, 0x43, 0xc8}} ++ gCsvSharedMemoryProtocolGuid = {0x0c795ed0, 0xbf0a, 0x11e9, {0x99, 0xbe, 0x50, 0x9a, 0x4c, 0x01, 0x1e, 0xd1}} + + [PcdsFixedAtBuild] + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|0x0|UINT32|0 +diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc +index 9e4dcce..edc0f0e 100644 +--- a/OvmfPkg/OvmfPkgIa32X64.dsc ++++ b/OvmfPkg/OvmfPkgIa32X64.dsc +@@ -982,6 +982,7 @@ + OvmfPkg/PlatformDxe/Platform.inf + OvmfPkg/AmdSevDxe/AmdSevDxe.inf + OvmfPkg/IoMmuDxe/IoMmuDxe.inf ++ OvmfPkg/CsvDxe/CsvDxe.inf + + !if $(SMM_REQUIRE) == TRUE + OvmfPkg/SmmAccess/SmmAccess2Dxe.inf +diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf +index e33a40c..f05405b 100644 +--- a/OvmfPkg/OvmfPkgIa32X64.fdf ++++ b/OvmfPkg/OvmfPkgIa32X64.fdf +@@ -339,6 +339,7 @@ INF OvmfPkg/VirtioGpuDxe/VirtioGpu.inf + INF OvmfPkg/PlatformDxe/Platform.inf + INF OvmfPkg/AmdSevDxe/AmdSevDxe.inf + INF OvmfPkg/IoMmuDxe/IoMmuDxe.inf ++INF OvmfPkg/CsvDxe/CsvDxe.inf + + !if $(SMM_REQUIRE) == TRUE + INF OvmfPkg/SmmAccess/SmmAccess2Dxe.inf +diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc +index e62b533..763214d 100644 +--- a/OvmfPkg/OvmfPkgX64.dsc ++++ b/OvmfPkg/OvmfPkgX64.dsc +@@ -980,6 +980,7 @@ + OvmfPkg/PlatformDxe/Platform.inf + OvmfPkg/AmdSevDxe/AmdSevDxe.inf + OvmfPkg/IoMmuDxe/IoMmuDxe.inf ++ OvmfPkg/CsvDxe/CsvDxe.inf + + !if $(SMM_REQUIRE) == TRUE + OvmfPkg/SmmAccess/SmmAccess2Dxe.inf +diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf +index a3634dd..0f04acb 100644 +--- a/OvmfPkg/OvmfPkgX64.fdf ++++ b/OvmfPkg/OvmfPkgX64.fdf +@@ -358,6 +358,7 @@ INF OvmfPkg/VirtioGpuDxe/VirtioGpu.inf + INF OvmfPkg/PlatformDxe/Platform.inf + INF OvmfPkg/AmdSevDxe/AmdSevDxe.inf + INF OvmfPkg/IoMmuDxe/IoMmuDxe.inf ++INF OvmfPkg/CsvDxe/CsvDxe.inf + + !if $(SMM_REQUIRE) == TRUE + INF OvmfPkg/SmmAccess/SmmAccess2Dxe.inf +-- +2.17.1 + diff --git a/0037-anolis-OvmfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch b/0037-anolis-OvmfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch new file mode 100644 index 0000000..9b4b800 --- /dev/null +++ b/0037-anolis-OvmfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch @@ -0,0 +1,724 @@ +From 8f82f4b8d86ca1b10b9353b484c403c628b3b560 Mon Sep 17 00:00:00 2001 +From: Liu Zixing +Date: Fri, 25 Feb 2022 16:54:44 +0800 +Subject: [PATCH 37/46] anolis: OvmfPkg/IoMmuDxe: Add CsvIoMmu protocol + +Create the dedicated IoMmu protocol for CSV virtual machine. +And Install it during CSV VM boots up. + +It calls the CsvSharedMemoryProtocol to allocate shared memory +for DMA operations. + +- AllocateBuffer() allocates the shared memory. + +- FreeBuffer() frees the shared memory. + +- Map() does nothing when BusMasterCommonBuffer[64] is requested + Otherwise, Map() allocates shared memory. + +- Unmap() does nothing when cleaning up a BusMasterCommonBuffer[64] + operation. Otherwise, Unmap() frees the shared memory. + +Signed-off-by: Xin Jiang +Change-Id: If49857f45c639341a96605722b06babfa1553874 +--- + OvmfPkg/IoMmuDxe/CsvIoMmu.c | 592 ++++++++++++++++++++++++++++++++++ + OvmfPkg/IoMmuDxe/CsvIoMmu.h | 29 ++ + OvmfPkg/IoMmuDxe/IoMmuDxe.c | 10 + + OvmfPkg/IoMmuDxe/IoMmuDxe.inf | 6 +- + 4 files changed, 636 insertions(+), 1 deletion(-) + create mode 100644 OvmfPkg/IoMmuDxe/CsvIoMmu.c + create mode 100644 OvmfPkg/IoMmuDxe/CsvIoMmu.h + +diff --git a/OvmfPkg/IoMmuDxe/CsvIoMmu.c b/OvmfPkg/IoMmuDxe/CsvIoMmu.c +new file mode 100644 +index 0000000..c5df6b9 +--- /dev/null ++++ b/OvmfPkg/IoMmuDxe/CsvIoMmu.c +@@ -0,0 +1,592 @@ ++/** @file ++ ++ The protocol provides support to allocate, free, map and umap a DMA buffer ++ for bus master (e.g PciHostBridge). When CSV is enabled, the DMA operations ++ must be performed on non-secure memory so we have to allocate the DMA buffer ++ from non-secure memory. ++ ++ Copyright (c) 2022, HYGON. All rights reserved.
++ ++ This program and the accompanying materials are licensed and made available ++ under the terms and conditions of the BSD License which accompanies this ++ distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++ ++**/ ++ ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "CsvIoMmu.h" ++ ++#define MAP_INFO_SIG SIGNATURE_64 ('M', 'A', 'P', '_', 'I', 'N', 'F', 'O') ++ ++typedef struct { ++ UINT64 Signature; ++ LIST_ENTRY Link; ++ EDKII_IOMMU_OPERATION Operation; ++ UINTN NumberOfBytes; ++ UINTN NumberOfPages; ++ EFI_PHYSICAL_ADDRESS SecureAddress; ++ EFI_PHYSICAL_ADDRESS UnSecureAddress; ++} MAP_INFO; ++ ++// ++// List of the MAP_INFO structures that have been set up by IoMmuMap() and not ++// yet torn down by IoMmuUnmap(). The list represents the full set of mappings ++// currently in effect. ++// ++STATIC LIST_ENTRY mMapInfos = INITIALIZE_LIST_HEAD_VARIABLE (mMapInfos); ++ ++// ++// ASCII names for EDKII_IOMMU_OPERATION constants, for debug logging. ++// ++STATIC CONST CHAR8 * CONST ++mBusMasterOperationName[EdkiiIoMmuOperationMaximum] = { ++ "Read", ++ "Write", ++ "CommonBuffer", ++ "Read64", ++ "Write64", ++ "CommonBuffer64" ++}; ++ ++STATIC CSV_SHARED_MEMORY_PROTOCOL *SharedMemory; ++STATIC ++EFI_STATUS ++EFIAPI ++CsvAllocSharedPage( ++ IN UINTN Pages, ++ OUT EFI_PHYSICAL_ADDRESS *Address ++ ) ++{ ++ EFI_STATUS Status; ++ ++ Status = SharedMemory->CsvAllocateSharedMemory ( ++ SharedMemory, ++ Pages, ++ (UINT64*)Address ++ ); ++ ++ return Status; ++} ++ ++STATIC ++EFI_STATUS ++EFIAPI ++CsvFreeSharedPage( ++ IN UINTN Pages, ++ IN VOID *HostAddress ++ ) ++{ ++ EFI_STATUS Status; ++ ++ Status = SharedMemory->CsvFreeSharedMemory ( ++ SharedMemory, ++ Pages, ++ (UINTN)HostAddress ++ ); ++ ++ return Status; ++} ++ ++/** ++ Provides the controller-specific addresses required to access system memory ++ from a DMA bus master. ++ On CSV guest, the DMA openerations must be done on non-secure memory which ++ is the shared memory between the guest and QEMU. ++ ++ @param This The protocol instance pointer. ++ @param Operation Indicates if the bus master is going to read or ++ write to system memory. ++ @param HostAddress The system memory address to map to the PCI ++ controller. ++ @param NumberOfBytes On input the number of bytes to map. On output ++ the number of bytes that were mapped. ++ @param DeviceAddress The resulting map address for the bus master ++ PCI controller to use to access the hosts ++ HostAddress. ++ @param Mapping A resulting value to pass to Unmap(). ++ ++ @retval EFI_SUCCESS The range was mapped for the returned ++ NumberOfBytes. ++ @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common ++ buffer. ++ @retval EFI_INVALID_PARAMETER One or more parameters are invalid. ++ @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a ++ lack of resources. ++ @retval EFI_DEVICE_ERROR The system hardware could not map the requested ++ address. ++ ++**/ ++EFI_STATUS ++EFIAPI ++CsvIoMmuMap ( ++ IN EDKII_IOMMU_PROTOCOL *This, ++ IN EDKII_IOMMU_OPERATION Operation, ++ IN VOID *HostAddress, ++ IN OUT UINTN *NumberOfBytes, ++ OUT EFI_PHYSICAL_ADDRESS *DeviceAddress, ++ OUT VOID **Mapping ++ ) ++{ ++ EFI_STATUS Status; ++ MAP_INFO *MapInfo; ++ ++ DEBUG (( ++ DEBUG_VERBOSE, ++ "%a: Operation=%a Operation=%u Host=0x%p Bytes=0x%Lx\n", ++ __FUNCTION__, ++ ((Operation >= 0 && ++ Operation < ARRAY_SIZE (mBusMasterOperationName)) ? ++ mBusMasterOperationName[Operation] : ++ "Invalid"), ++ Operation, ++ HostAddress, ++ (UINT64)((NumberOfBytes == NULL) ? 0 : *NumberOfBytes) ++ )); ++ ++ if (HostAddress == NULL || NumberOfBytes == NULL || DeviceAddress == NULL || ++ Mapping == NULL) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ // ++ // Allocate a MAP_INFO structure to remember the mapping when Unmap() is ++ // called later. ++ // ++ MapInfo = AllocatePool (sizeof (MAP_INFO)); ++ if (MapInfo == NULL) { ++ Status = EFI_OUT_OF_RESOURCES; ++ goto Failed; ++ } ++ ++ ZeroMem (&MapInfo->Link, sizeof MapInfo->Link); ++ MapInfo->Operation = Operation; ++ MapInfo->NumberOfBytes = *NumberOfBytes; ++ MapInfo->NumberOfPages = EFI_SIZE_TO_PAGES (MapInfo->NumberOfBytes); ++ MapInfo->Signature = MAP_INFO_SIG; ++ ++ switch (Operation) { ++ // ++ // For BusMasterRead[64] and BusMasterWrite[64] operations, a bounce buffer ++ // is necessary regardless of whether the original (crypted) buffer crosses ++ // the 4GB limit or not -- we have to allocate a separate plaintext buffer. ++ // The only variable is whether the plaintext buffer should be under 4GB. ++ // ++ case EdkiiIoMmuOperationBusMasterRead: ++ case EdkiiIoMmuOperationBusMasterWrite: ++ // ++ // fall through ++ // ++ case EdkiiIoMmuOperationBusMasterRead64: ++ case EdkiiIoMmuOperationBusMasterWrite64: ++ // ++ // Allocate the implicit plaintext bounce buffer. ++ // ++ Status = CsvAllocSharedPage ( ++ MapInfo->NumberOfPages, ++ &MapInfo->UnSecureAddress ++ ); ++ if (EFI_ERROR (Status)) { ++ goto FreeMapInfo; ++ } ++ MapInfo->SecureAddress = (UINTN)HostAddress; ++ if (Operation == EdkiiIoMmuOperationBusMasterRead || ++ Operation == EdkiiIoMmuOperationBusMasterRead64) { ++ CopyMem ( ++ (VOID *) (UINTN) MapInfo->UnSecureAddress, ++ (VOID *) (UINTN) MapInfo->SecureAddress, ++ MapInfo->NumberOfBytes ++ ); ++ } ++ break; ++ ++ // ++ // For BusMasterCommonBuffer[64] operations, ++ // AllocateBuffer already returns the plain-text, ++ // No need to decrypt the data. ++ // ++ case EdkiiIoMmuOperationBusMasterCommonBuffer: ++ case EdkiiIoMmuOperationBusMasterCommonBuffer64: ++ MapInfo->UnSecureAddress = (UINTN)HostAddress; ++ MapInfo->SecureAddress = (UINTN)HostAddress; ++ break; ++ ++ default: ++ // ++ // Operation is invalid ++ // ++ Status = EFI_INVALID_PARAMETER; ++ goto FreeMapInfo; ++ } ++ ++ // ++ // Track all MAP_INFO structures. ++ // ++ InsertHeadList (&mMapInfos, &MapInfo->Link); ++ // ++ // Populate output parameters. ++ // ++ *DeviceAddress = MapInfo->UnSecureAddress; ++ *Mapping = MapInfo; ++ ++ DEBUG (( ++ DEBUG_VERBOSE, ++ "%a: Mapping=0x%p Device=0x%Lx Host=0x%Lx Pages=0x%Lx\n", ++ __FUNCTION__, ++ MapInfo, ++ MapInfo->UnSecureAddress, ++ MapInfo->SecureAddress, ++ (UINT64)MapInfo->NumberOfPages ++ )); ++ ++ return EFI_SUCCESS; ++ ++FreeMapInfo: ++ FreePool (MapInfo); ++ ++Failed: ++ *NumberOfBytes = 0; ++ return Status; ++} ++ ++/** ++ Completes the Map() operation and releases any corresponding resources. ++ ++ This is an internal worker function that only extends the Map() API with ++ the MemoryMapLocked parameter. ++ ++ @param This The protocol instance pointer. ++ @param Mapping The mapping value returned from Map(). ++ @param MemoryMapLocked The function is executing on the stack of ++ gBS->ExitBootServices(); changes to the UEFI ++ memory map are forbidden. ++ ++ @retval EFI_SUCCESS The range was unmapped. ++ @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by ++ Map(). ++ @retval EFI_DEVICE_ERROR The data was not committed to the target system ++ memory. ++**/ ++STATIC ++EFI_STATUS ++EFIAPI ++CsvIoMmuUnmapWorker ( ++ IN EDKII_IOMMU_PROTOCOL *This, ++ IN VOID *Mapping, ++ IN BOOLEAN MemoryMapLocked ++ ) ++{ ++ MAP_INFO *MapInfo; ++ EDKII_IOMMU_OPERATION Operation; ++ ++ if (Mapping == NULL) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ MapInfo = (MAP_INFO *)Mapping; ++ Operation = MapInfo->Operation; ++ ++ DEBUG (( ++ DEBUG_VERBOSE, ++ "%a: Mapping=0x%p MemoryMapLocked=%d Operation %a Operation %d\n", ++ __FUNCTION__, ++ Mapping, ++ MemoryMapLocked, ++ ((Operation >= 0 && ++ Operation < ARRAY_SIZE (mBusMasterOperationName)) ? ++ mBusMasterOperationName[Operation] : ++ "Invalid"), ++ Operation ++ )); ++ ++ switch (MapInfo->Operation) { ++ case EdkiiIoMmuOperationBusMasterWrite: ++ case EdkiiIoMmuOperationBusMasterWrite64: ++ CopyMem ( ++ (VOID *) (UINTN) MapInfo->SecureAddress, ++ (VOID *) (UINTN) MapInfo->UnSecureAddress, ++ MapInfo->NumberOfBytes ++ ); ++ case EdkiiIoMmuOperationBusMasterRead: ++ case EdkiiIoMmuOperationBusMasterRead64: ++ ZeroMem ( ++ (VOID *)(UINTN)MapInfo->UnSecureAddress, ++ EFI_PAGES_TO_SIZE (MapInfo->NumberOfPages) ++ ); ++ CsvFreeSharedPage( ++ MapInfo->NumberOfPages, ++ (VOID*)(UINTN)MapInfo->UnSecureAddress ++ ); ++ ++ default: ++ break; ++ } ++ ++ // ++ // Forget the MAP_INFO structure, then free it (unless the UEFI memory map is ++ // locked). ++ // ++ RemoveEntryList (&MapInfo->Link); ++ if (!MemoryMapLocked) { ++ FreePool (MapInfo); ++ } ++ ++ return EFI_SUCCESS; ++ ++} ++ ++/** ++ Completes the Map() operation and releases any corresponding resources. ++ ++ @param This The protocol instance pointer. ++ @param Mapping The mapping value returned from Map(). ++ ++ @retval EFI_SUCCESS The range was unmapped. ++ @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by ++ Map(). ++ @retval EFI_DEVICE_ERROR The data was not committed to the target system ++ memory. ++**/ ++EFI_STATUS ++EFIAPI ++CsvIoMmuUnmap ( ++ IN EDKII_IOMMU_PROTOCOL *This, ++ IN VOID *Mapping ++ ) ++{ ++ return CsvIoMmuUnmapWorker ( ++ This, ++ Mapping, ++ FALSE // MemoryMapLocked ++ ); ++} ++ ++/** ++ Allocates pages that are suitable for an OperationBusMasterCommonBuffer or ++ OperationBusMasterCommonBuffer64 mapping. ++ ++ @param This The protocol instance pointer. ++ @param Type This parameter is not used and must be ignored. ++ @param MemoryType The type of memory to allocate, ++ EfiBootServicesData or EfiRuntimeServicesData. ++ @param Pages The number of pages to allocate. ++ @param HostAddress A pointer to store the base system memory ++ address of the allocated range. ++ @param Attributes The requested bit mask of attributes for the ++ allocated range. ++ ++ @retval EFI_SUCCESS The requested memory pages were allocated. ++ @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal ++ attribute bits are MEMORY_WRITE_COMBINE and ++ MEMORY_CACHED. ++ @retval EFI_INVALID_PARAMETER One or more parameters are invalid. ++ @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated. ++ ++**/ ++EFI_STATUS ++EFIAPI ++CsvIoMmuAllocateBuffer ( ++ IN EDKII_IOMMU_PROTOCOL *This, ++ IN EFI_ALLOCATE_TYPE Type, ++ IN EFI_MEMORY_TYPE MemoryType, ++ IN UINTN Pages, ++ IN OUT VOID **HostAddress, ++ IN UINT64 Attributes ++ ) ++{ ++ EFI_STATUS Status; ++ EFI_PHYSICAL_ADDRESS PhysicalAddress; ++ ++ DEBUG (( ++ DEBUG_VERBOSE, ++ "%a: MemoryType=%u Pages=0x%Lx Attributes=0x%Lx\n", ++ __FUNCTION__, ++ (UINT32)MemoryType, ++ (UINT64)Pages, ++ Attributes ++ )); ++ ++ // ++ // Validate Attributes ++ // ++ if ((Attributes & EDKII_IOMMU_ATTRIBUTE_INVALID_FOR_ALLOCATE_BUFFER) != 0) { ++ return EFI_UNSUPPORTED; ++ } ++ ++ // ++ // Check for invalid inputs ++ // ++ if (HostAddress == NULL) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ // ++ // The only valid memory types are EfiBootServicesData and ++ // EfiRuntimeServicesData ++ // ++ if (MemoryType != EfiBootServicesData && ++ MemoryType != EfiRuntimeServicesData) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ // ++ // We'll need a header page for the COMMON_BUFFER_HEADER structure. ++ // ++ if (Pages > MAX_UINTN - 1) { ++ return EFI_OUT_OF_RESOURCES; ++ } ++ ++ Status = CsvAllocSharedPage (Pages,&PhysicalAddress); ++ if (Status != EFI_SUCCESS){ ++ goto error; ++ } ++ ++ ++ *HostAddress = (VOID *)(UINTN)PhysicalAddress; ++ ++ return EFI_SUCCESS; ++ ++error: ++ return Status; ++} ++ ++/** ++ Frees memory that was allocated with AllocateBuffer(). ++ ++ @param This The protocol instance pointer. ++ @param Pages The number of pages to free. ++ @param HostAddress The base system memory address of the allocated ++ range. ++ ++ @retval EFI_SUCCESS The requested memory pages were freed. ++ @retval EFI_INVALID_PARAMETER The memory range specified by HostAddress and ++ Pages was not allocated with AllocateBuffer(). ++ ++**/ ++EFI_STATUS ++EFIAPI ++CsvIoMmuFreeBuffer ( ++ IN EDKII_IOMMU_PROTOCOL *This, ++ IN UINTN Pages, ++ IN VOID *HostAddress ++ ) ++{ ++ ++ EFI_STATUS Status; ++ ++ if (HostAddress == NULL || Pages == 0) { ++ return EFI_INVALID_PARAMETER; ++ } ++ ++ DEBUG (( ++ DEBUG_VERBOSE, ++ "%a: Host=0x%p Pages=0x%Lx\n", ++ __FUNCTION__, ++ HostAddress, ++ (UINT64)Pages ++ )); ++ ++ Status = CsvFreeSharedPage (Pages, HostAddress); ++ ++ return Status; ++} ++ ++ ++/** ++ Set IOMMU attribute for a system memory. ++ ++ @param[in] This The protocol instance pointer. ++ @param[in] DeviceHandle The device who initiates the DMA access ++ request. ++ @param[in] Mapping The mapping value returned from Map(). ++ @param[in] IoMmuAccess The IOMMU access. ++ ++ @retval EFI_SUCCESS The IoMmuAccess is set for the memory range ++ specified by DeviceAddress and Length. ++ @retval EFI_INVALID_PARAMETER DeviceHandle is an invalid handle. ++ @retval EFI_INVALID_PARAMETER Mapping is not a value that was returned by ++ Map(). ++ @retval EFI_INVALID_PARAMETER IoMmuAccess specified an illegal combination ++ of access. ++ @retval EFI_UNSUPPORTED DeviceHandle is unknown by the IOMMU. ++ @retval EFI_UNSUPPORTED The bit mask of IoMmuAccess is not supported ++ by the IOMMU. ++ @retval EFI_UNSUPPORTED The IOMMU does not support the memory range ++ specified by Mapping. ++ @retval EFI_OUT_OF_RESOURCES There are not enough resources available to ++ modify the IOMMU access. ++ @retval EFI_DEVICE_ERROR The IOMMU device reported an error while ++ attempting the operation. ++ ++**/ ++EFI_STATUS ++EFIAPI ++CsvIoMmuSetAttribute ( ++ IN EDKII_IOMMU_PROTOCOL *This, ++ IN EFI_HANDLE DeviceHandle, ++ IN VOID *Mapping, ++ IN UINT64 IoMmuAccess ++ ) ++{ ++ return EFI_UNSUPPORTED; ++} ++ ++EDKII_IOMMU_PROTOCOL mCsv = { ++ EDKII_IOMMU_PROTOCOL_REVISION, ++ CsvIoMmuSetAttribute, ++ CsvIoMmuMap, ++ CsvIoMmuUnmap, ++ CsvIoMmuAllocateBuffer, ++ CsvIoMmuFreeBuffer, ++}; ++ ++/** ++ Initialize Iommu Protocol. ++ ++**/ ++EFI_STATUS ++EFIAPI ++CsvInstallIoMmuProtocol ( ++ VOID ++ ) ++{ ++ EFI_STATUS Status; ++ EFI_HANDLE Handle; ++ ++ Status = gBS->LocateProtocol ( ++ &gCsvSharedMemoryProtocolGuid, ++ NULL, ++ (VOID**)&SharedMemory ++ ); ++ ++ if (EFI_ERROR (Status)) { ++ goto error; ++ } ++ ++ Handle = NULL; ++ Status = gBS->InstallMultipleProtocolInterfaces ( ++ &Handle, ++ &gEdkiiIoMmuProtocolGuid, ++ &mCsv, ++ NULL ++ ); ++ if (EFI_ERROR (Status)) { ++ goto error; ++ } ++ ++ return EFI_SUCCESS; ++ ++error: ++ return Status; ++} +diff --git a/OvmfPkg/IoMmuDxe/CsvIoMmu.h b/OvmfPkg/IoMmuDxe/CsvIoMmu.h +new file mode 100644 +index 0000000..d48a02c +--- /dev/null ++++ b/OvmfPkg/IoMmuDxe/CsvIoMmu.h +@@ -0,0 +1,29 @@ ++/** @file ++ ++ The protocol provides support to allocate, free, map and umap a DMA buffer ++ for bus master (e.g PciHostBridge). When CSV is enabled, the DMA operations ++ must be performed on unencrypted buffer hence protocol clear the encryption ++ bit from the DMA buffer. ++ ++ Copyright (c) 2022, HYGON. All rights reserved.
++ ++ This program and the accompanying materials are licensed and made available ++ under the terms and conditions of the BSD License which accompanies this ++ distribution. The full text of the license may be found at ++ http://opensource.org/licenses/bsd-license.php ++ ++ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ++ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ++ ++**/ ++ ++#ifndef _CSV_IOMMU_H_ ++#define _CSV_IOMMU_H_ ++ ++EFI_STATUS ++EFIAPI ++CsvInstallIoMmuProtocol ( ++ VOID ++ ); ++ ++#endif +diff --git a/OvmfPkg/IoMmuDxe/IoMmuDxe.c b/OvmfPkg/IoMmuDxe/IoMmuDxe.c +index 13df8ba..35e5df9 100644 +--- a/OvmfPkg/IoMmuDxe/IoMmuDxe.c ++++ b/OvmfPkg/IoMmuDxe/IoMmuDxe.c +@@ -9,7 +9,9 @@ + + **/ + ++#include + #include "AmdSevIoMmu.h" ++#include "CsvIoMmu.h" + + EFI_STATUS + EFIAPI +@@ -21,6 +23,14 @@ IoMmuDxeEntryPoint ( + EFI_STATUS Status; + EFI_HANDLE Handle; + ++ if (CsvIsEnabled ()) { ++ Status = CsvInstallIoMmuProtocol (); ++ if (Status != EFI_SUCCESS) { ++ DEBUG((EFI_D_ERROR, "fail to install CSV IOMMU\n")); ++ } ++ return Status; ++ } ++ + // + // When SEV is enabled, install IoMmu protocol otherwise install the + // placeholder protocol so that other dependent module can run. +diff --git a/OvmfPkg/IoMmuDxe/IoMmuDxe.inf b/OvmfPkg/IoMmuDxe/IoMmuDxe.inf +index 2ebd74e..6b89c6a 100644 +--- a/OvmfPkg/IoMmuDxe/IoMmuDxe.inf ++++ b/OvmfPkg/IoMmuDxe/IoMmuDxe.inf +@@ -21,6 +21,8 @@ + AmdSevIoMmu.c + AmdSevIoMmu.h + IoMmuDxe.c ++ CsvIoMmu.c ++ CsvIoMmu.h + + [Packages] + MdePkg/MdePkg.dec +@@ -35,10 +37,12 @@ + MemoryAllocationLib + UefiBootServicesTableLib + UefiDriverEntryPoint ++ CsvLib + + [Protocols] + gEdkiiIoMmuProtocolGuid ## SOMETIME_PRODUCES + gIoMmuAbsentProtocolGuid ## SOMETIME_PRODUCES ++ gCsvSharedMemoryProtocolGuid + + [Depex] +- TRUE ++ gCsvSharedMemoryProtocolGuid +-- +2.17.1 + diff --git a/0038-anolis-OvmfPkg-Reserve-a-CPUID-table-page-for-CSV-gu.patch b/0038-anolis-OvmfPkg-Reserve-a-CPUID-table-page-for-CSV-gu.patch new file mode 100644 index 0000000..6aeeadf --- /dev/null +++ b/0038-anolis-OvmfPkg-Reserve-a-CPUID-table-page-for-CSV-gu.patch @@ -0,0 +1,137 @@ +From 8a7ac3e25c1e8a62852a64d0a303e948b0e1499a Mon Sep 17 00:00:00 2001 +From: Xin Jiang +Date: Tue, 15 Aug 2023 17:15:53 +0800 +Subject: [PATCH 38/46] anolis: OvmfPkg: Reserve a CPUID table page for CSV + guest + +Reserve a page for CPUID table which will be initialized by firmware. +In future, A CSV guest should get CPUID value from a CPUID table +which has been validated by firmware rather than requesting them from +hypervisor via a VMGEXIT. + +Signed-off-by: Xin Jiang +Change-Id: Ic09af8667c65ac83eef5a2a4a1e69d0506cd89d7 +--- + OvmfPkg/OvmfPkg.dec | 4 ++++ + OvmfPkg/OvmfPkgX64.fdf | 3 +++ + OvmfPkg/PlatformPei/Csv.c | 6 ++++++ + OvmfPkg/PlatformPei/PlatformPei.inf | 2 ++ + OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm | 15 +++++++++++++++ + OvmfPkg/ResetVector/ResetVector.inf | 2 ++ + OvmfPkg/ResetVector/ResetVector.nasmb | 2 ++ + 7 files changed, 34 insertions(+) + +diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec +index d8f9be3..7e6a6a2 100644 +--- a/OvmfPkg/OvmfPkg.dec ++++ b/OvmfPkg/OvmfPkg.dec +@@ -359,6 +359,10 @@ + gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase|0|UINT32|0x58 + gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize|0|UINT32|0x59 + ++ ## the base address of the cpuid table page used by CSV. ++ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase|0|UINT32|0x60 ++ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize|0|UINT32|0x61 ++ + [PcdsDynamic, PcdsDynamicEx] + gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10 +diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf +index 0f04acb..04efa62 100644 +--- a/OvmfPkg/OvmfPkgX64.fdf ++++ b/OvmfPkg/OvmfPkgX64.fdf +@@ -91,6 +91,9 @@ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupBase|gUefiOvmfPkgTokenSpaceGuid.P + 0x00D000|0x002000 + gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase|gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize + ++0x00F000|0x001000 ++gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize ++ + 0x010000|0x010000 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize + +diff --git a/OvmfPkg/PlatformPei/Csv.c b/OvmfPkg/PlatformPei/Csv.c +index 44e81e1..f7c87ac 100644 +--- a/OvmfPkg/PlatformPei/Csv.c ++++ b/OvmfPkg/PlatformPei/Csv.c +@@ -56,6 +56,12 @@ CsvInitializeMemInfo ( + (UINT64)(UINTN) FixedPcdGet32 (PcdCsvDefaultSecureCallSize), + EfiReservedMemoryType + ); ++ ++ BuildMemoryAllocationHob ( ++ (EFI_PHYSICAL_ADDRESS)(UINTN) FixedPcdGet32 (PcdOvmfCsvCpuidBase), ++ (UINT64)(UINTN) FixedPcdGet32 (PcdOvmfCsvCpuidSize), ++ EfiReservedMemoryType ++ ); + } + + VOID +diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf +index cb0582c..bed4dcf 100644 +--- a/OvmfPkg/PlatformPei/PlatformPei.inf ++++ b/OvmfPkg/PlatformPei/PlatformPei.inf +@@ -123,6 +123,8 @@ + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfWorkAreaSize + gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase + gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize ++ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase ++ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize + + [FeaturePcd] + gUefiOvmfPkgTokenSpaceGuid.PcdCsmEnable +diff --git a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm +index c32b608..f282692 100644 +--- a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm ++++ b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm +@@ -63,6 +63,21 @@ csvSecureCallBase: + DB 0xAB, 0x21, 0x6B, 0x27, 0x5D, 0x55, 0x56, 0xA5 + csvSecureCallEnd: + ++; ++; CSV cpuid table ++; ++; Provide cpuid table page when boot up for CSV guest ++; ++; GUID : 1b4c70e6-07e6-4e4e-8f28-0eaf871a0752 ++; ++csvCpuidTableBase: ++ DD CSV_CPUID_TABLE_SIZE ++ DD CSV_CPUID_TABLE_BASE ++ DW csvCpuidTableEnd - csvCpuidTableBase ++ DB 0xE6, 0x70, 0x4C, 0x1B, 0xE6, 0x07, 0x4E, 0x4E ++ DB 0x8F, 0x28, 0x0E, 0xAF, 0x87, 0x1A, 0x07, 0x52 ++csvCpuidTableEnd: ++ + ; + ; TDX Metadata offset block + ; +diff --git a/OvmfPkg/ResetVector/ResetVector.inf b/OvmfPkg/ResetVector/ResetVector.inf +index 38c1720..e35c17b 100644 +--- a/OvmfPkg/ResetVector/ResetVector.inf ++++ b/OvmfPkg/ResetVector/ResetVector.inf +@@ -37,6 +37,8 @@ + gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaBase + gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase + gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize ++ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase ++ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBase + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbSize + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbPageTableBase +diff --git a/OvmfPkg/ResetVector/ResetVector.nasmb b/OvmfPkg/ResetVector/ResetVector.nasmb +index ca00f64..4e7c7ad 100644 +--- a/OvmfPkg/ResetVector/ResetVector.nasmb ++++ b/OvmfPkg/ResetVector/ResetVector.nasmb +@@ -106,6 +106,8 @@ + + %define CSV_DEFAULT_SECURE_CALL_BASE FixedPcdGet32 (PcdCsvDefaultSecureCallBase) + %define CSV_DEFAULT_SECURE_CALL_SIZE FixedPcdGet32 (PcdCsvDefaultSecureCallSize) ++ %define CSV_CPUID_TABLE_BASE FixedPcdGet32 (PcdOvmfCsvCpuidBase) ++ %define CSV_CPUID_TABLE_SIZE FixedPcdGet32 (PcdOvmfCsvCpuidSize) + + %include "X64/IntelTdxMetadata.asm" + %include "Ia32/Flat32ToFlat64.asm" +-- +2.17.1 + diff --git a/0039-OvmfPkg-BaseMemEncryptLib-Detect-SEV-live-migration-.patch b/0039-OvmfPkg-BaseMemEncryptLib-Detect-SEV-live-migration-.patch new file mode 100644 index 0000000..a8c2c34 --- /dev/null +++ b/0039-OvmfPkg-BaseMemEncryptLib-Detect-SEV-live-migration-.patch @@ -0,0 +1,325 @@ +From 118d8bd819dfd2300798481d8c89a9c37e54a32c Mon Sep 17 00:00:00 2001 +From: Ashish Kalra +Date: Thu, 19 Aug 2021 12:35:50 +0000 +Subject: [PATCH 39/46] OvmfPkg/BaseMemEncryptLib: Detect SEV live migration + feature. + +Add support to check if we are running inside KVM HVM and +KVM HVM supports SEV Live Migration feature. + +Cc: Jordan Justen +Cc: Ard Biesheuvel +Signed-off-by: Ashish Kalra +Change-Id: I29fa5047198c9c3c6965c36b5e221b48c277dfc9 +--- + OvmfPkg/Include/Library/MemEncryptSevLib.h | 12 ++++ + .../DxeMemEncryptSevLibInternal.c | 41 +++++++++++++ + .../PeiDxeMemEncryptSevLibInternal.c | 57 +++++++++++++++++++ + .../PeiDxeMemEncryptSevLibInternal.h | 31 ++++++++++ + .../PeiMemEncryptSevLibInternal.c | 41 +++++++++++++ + .../SecMemEncryptSevLibInternal.c | 18 ++++++ + 6 files changed, 200 insertions(+) + create mode 100644 OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.h + +diff --git a/OvmfPkg/Include/Library/MemEncryptSevLib.h b/OvmfPkg/Include/Library/MemEncryptSevLib.h +index adc490e..ea251f1 100644 +--- a/OvmfPkg/Include/Library/MemEncryptSevLib.h ++++ b/OvmfPkg/Include/Library/MemEncryptSevLib.h +@@ -71,6 +71,18 @@ MemEncryptSevIsEnabled ( + VOID + ); + ++/** ++ Returns a boolean to indicate whether SEV live migration is enabled. ++ ++ @retval TRUE SEV live migration is enabled ++ @retval FALSE SEV live migration is not enabled ++**/ ++BOOLEAN ++EFIAPI ++MemEncryptSevLiveMigrationIsEnabled ( ++ VOID ++ ); ++ + /** + This function clears memory encryption bit for the memory region specified by + BaseAddress and NumPages from the current page table context. +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c +index 2816f85..df73a83 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c +@@ -17,9 +17,13 @@ + #include + #include + ++#include "PeiDxeMemEncryptSevLibInternal.h" ++ + STATIC BOOLEAN mSevStatus = FALSE; + STATIC BOOLEAN mSevEsStatus = FALSE; + STATIC BOOLEAN mSevStatusChecked = FALSE; ++STATIC BOOLEAN mSevLiveMigrationStatus = FALSE; ++STATIC BOOLEAN mSevLiveMigrationStatusChecked = FALSE; + + STATIC UINT64 mSevEncryptionMask = 0; + STATIC BOOLEAN mSevEncryptionMaskSaved = FALSE; +@@ -106,6 +110,24 @@ MemEncryptSevEsIsEnabled ( + return mSevEsStatus; + } + ++/** ++ Figures out if we are running inside KVM HVM and ++ KVM HVM supports SEV Live Migration feature. ++**/ ++STATIC ++VOID ++EFIAPI ++InternalDetectSevLiveMigrationFeature ( ++ VOID ++ ) ++{ ++ if (KvmDetectSevLiveMigrationFeature ()) { ++ mSevLiveMigrationStatus = TRUE; ++ } ++ ++ mSevLiveMigrationStatusChecked = TRUE; ++} ++ + /** + Returns a boolean to indicate whether SEV is enabled. + +@@ -125,6 +147,25 @@ MemEncryptSevIsEnabled ( + return mSevStatus; + } + ++/** ++ Returns a boolean to indicate whether SEV live migration is enabled. ++ ++ @retval TRUE SEV live migration is enabled ++ @retval FALSE SEV live migration is not enabled ++**/ ++BOOLEAN ++EFIAPI ++MemEncryptSevLiveMigrationIsEnabled ( ++ VOID ++ ) ++{ ++ if (!mSevLiveMigrationStatusChecked) { ++ InternalDetectSevLiveMigrationFeature (); ++ } ++ ++ return mSevLiveMigrationStatus; ++} ++ + /** + Returns the SEV encryption mask. + +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c +index b4a9f46..30f2d90 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.c +@@ -16,6 +16,8 @@ + #include + #include + ++#include "PeiDxeMemEncryptSevLibInternal.h" ++ + /** + Locate the page range that covers the initial (pre-SMBASE-relocation) SMRAM + Save State Map. +@@ -61,3 +63,58 @@ MemEncryptSevLocateInitialSmramSaveStateMapPages ( + + return RETURN_SUCCESS; + } ++ ++/** ++ Figures out if we are running inside KVM HVM and ++ KVM HVM supports SEV Live Migration feature. ++ ++ @retval TRUE SEV live migration is supported. ++ @retval FALSE SEV live migration is not supported. ++**/ ++BOOLEAN ++EFIAPI ++KvmDetectSevLiveMigrationFeature ( ++ VOID ++ ) ++{ ++ CHAR8 Signature[13]; ++ UINT32 mKvmLeaf; ++ UINT32 RegEax; ++ UINT32 RegEbx; ++ UINT32 RegEcx; ++ UINT32 RegEdx; ++ ++ Signature[12] = '\0'; ++ for (mKvmLeaf = 0x40000000; mKvmLeaf < 0x40010000; mKvmLeaf += 0x100) { ++ AsmCpuid ( ++ mKvmLeaf, ++ NULL, ++ (UINT32 *) &Signature[0], ++ (UINT32 *) &Signature[4], ++ (UINT32 *) &Signature[8]); ++ ++ if (AsciiStrCmp (Signature, "KVMKVMKVM") == 0) { ++ DEBUG (( ++ DEBUG_INFO, ++ "%a: KVM Detected, signature = %a\n", ++ __FUNCTION__, ++ Signature ++ )); ++ ++ RegEax = mKvmLeaf + 1; ++ RegEcx = 0; ++ AsmCpuid (mKvmLeaf + 1, &RegEax, &RegEbx, &RegEcx, &RegEdx); ++ if ((RegEax & KVM_FEATURE_MIGRATION_CONTROL) != 0) { ++ DEBUG (( ++ DEBUG_INFO, ++ "%a: SEV Live Migration feature supported\n", ++ __FUNCTION__ ++ )); ++ ++ return TRUE; ++ } ++ } ++ } ++ ++ return FALSE; ++} +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.h b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.h +new file mode 100644 +index 0000000..30cf5de +--- /dev/null ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiDxeMemEncryptSevLibInternal.h +@@ -0,0 +1,31 @@ ++/** @file ++ ++ Secure Encrypted Virtualization (SEV) library helper function ++ ++ Copyright (c) 2021, AMD Incorporated. All rights reserved.
++ ++ SPDX-License-Identifier: BSD-2-Clause-Patent ++ ++**/ ++ ++#ifndef PEI_DXE_MEM_ENCRYPT_SEV_LIB_INTERNAL_H_ ++#define PEI_DXE_MEM_ENCRYPT_SEV_LIB_INTERNAL_H_ ++ ++#include ++ ++#define KVM_FEATURE_MIGRATION_CONTROL BIT17 ++ ++/** ++ Figures out if we are running inside KVM HVM and ++ KVM HVM supports SEV Live Migration feature. ++ ++ @retval TRUE SEV live migration is supported. ++ @retval FALSE SEV live migration is not supported. ++**/ ++BOOLEAN ++EFIAPI ++KvmDetectSevLiveMigrationFeature( ++ VOID ++ ); ++ ++#endif // PEI_DXE_MEM_ENCRYPT_SEV_LIB_INTERNAL_H_ +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c +index e2fd109..9293b56 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c +@@ -17,9 +17,13 @@ + #include + #include + ++#include "PeiDxeMemEncryptSevLibInternal.h" ++ + STATIC BOOLEAN mSevStatus = FALSE; + STATIC BOOLEAN mSevEsStatus = FALSE; + STATIC BOOLEAN mSevStatusChecked = FALSE; ++STATIC BOOLEAN mSevLiveMigrationStatus = FALSE; ++STATIC BOOLEAN mSevLiveMigrationStatusChecked = FALSE; + + STATIC UINT64 mSevEncryptionMask = 0; + STATIC BOOLEAN mSevEncryptionMaskSaved = FALSE; +@@ -87,6 +91,24 @@ InternalMemEncryptSevStatus ( + mSevStatusChecked = TRUE; + } + ++/** ++ Figures out if we are running inside KVM HVM and ++ KVM HVM supports SEV Live Migration feature. ++**/ ++STATIC ++VOID ++EFIAPI ++InternalDetectSevLiveMigrationFeature ( ++ VOID ++ ) ++{ ++ if (KvmDetectSevLiveMigrationFeature ()) { ++ mSevLiveMigrationStatus = TRUE; ++ } ++ ++ mSevLiveMigrationStatusChecked = TRUE; ++} ++ + /** + Returns a boolean to indicate whether SEV-ES is enabled. + +@@ -125,6 +147,25 @@ MemEncryptSevIsEnabled ( + return mSevStatus; + } + ++/** ++ Returns a boolean to indicate whether SEV live migration is enabled. ++ ++ @retval TRUE SEV live migration is enabled ++ @retval FALSE SEV live migration is not enabled ++**/ ++BOOLEAN ++EFIAPI ++MemEncryptSevLiveMigrationIsEnabled ( ++ VOID ++ ) ++{ ++ if (!mSevLiveMigrationStatusChecked) { ++ InternalDetectSevLiveMigrationFeature (); ++ } ++ ++ return mSevLiveMigrationStatus; ++} ++ + /** + Returns the SEV encryption mask. + +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c +index 56d8f3f..d9f7bef 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c +@@ -100,6 +100,24 @@ MemEncryptSevIsEnabled ( + return Msr.Bits.SevBit ? TRUE : FALSE; + } + ++/** ++ Returns a boolean to indicate whether SEV live migration is enabled. ++ ++ @retval TRUE SEV live migration is enabled ++ @retval FALSE SEV live migration is not enabled ++**/ ++BOOLEAN ++EFIAPI ++MemEncryptSevLiveMigrationIsEnabled ( ++ VOID ++ ) ++{ ++ // ++ // Not used in SEC phase. ++ // ++ return FALSE; ++} ++ + /** + Returns the SEV encryption mask. + +-- +2.17.1 + diff --git a/0040-OvmfPkg-BaseMemEncryptLib-Hypercall-API-for-page-enc.patch b/0040-OvmfPkg-BaseMemEncryptLib-Hypercall-API-for-page-enc.patch new file mode 100644 index 0000000..205c5b1 --- /dev/null +++ b/0040-OvmfPkg-BaseMemEncryptLib-Hypercall-API-for-page-enc.patch @@ -0,0 +1,298 @@ +From f622069729e0abc9b676af25a90b9e142419cf1a Mon Sep 17 00:00:00 2001 +From: Ashish Kalra +Date: Thu, 19 Aug 2021 13:03:00 +0000 +Subject: [PATCH 40/46] OvmfPkg/BaseMemEncryptLib: Hypercall API for page + encryption state change + +Add API to issue hypercall on page encryption state change. + +By default all the SEV guest memory regions are considered encrypted, +if a guest changes the encryption attribute of the page (e.g mark a +page as decrypted) then notify hypervisor. Hypervisor will need to +track the unencrypted pages. The information will be used during +guest live migration, guest page migration and guest debugging. + +This hypercall is used to notify hypervisor when the page's +encryption state changes. + +Cc: Jordan Justen +Cc: Ard Biesheuvel +Signed-off-by: Brijesh Singh +Signed-off-by: Ashish Kalra +Change-Id: Ic0dcf854947f35f633137d2bb052dc79d111971f +--- + OvmfPkg/Include/Library/MemEncryptSevLib.h | 52 +++++++++++++++ + .../DxeMemEncryptSevLib.inf | 1 + + .../Ia32/MemEncryptSevLib.c | 27 ++++++++ + .../PeiMemEncryptSevLib.inf | 1 + + .../SecMemEncryptSevLibInternal.c | 20 ++++++ + .../X64/AsmHelperStub.nasm | 33 ++++++++++ + .../X64/MemEncryptSevLib.c | 64 +++++++++++++++++++ + 7 files changed, 198 insertions(+) + create mode 100644 OvmfPkg/Library/BaseMemEncryptSevLib/X64/AsmHelperStub.nasm + +diff --git a/OvmfPkg/Include/Library/MemEncryptSevLib.h b/OvmfPkg/Include/Library/MemEncryptSevLib.h +index ea251f1..8ed6242 100644 +--- a/OvmfPkg/Include/Library/MemEncryptSevLib.h ++++ b/OvmfPkg/Include/Library/MemEncryptSevLib.h +@@ -215,4 +215,56 @@ MemEncryptSevClearMmioPageEncMask ( + IN UINTN NumPages + ); + ++/** ++ This hypercall is used to notify hypervisor when the page's encryption ++ state changes. ++ ++ @param[in] PhysicalAddress The physical address that is the start address ++ of a memory region. ++ @param[in] Pages Number of pages in memory region. ++ @param[in] IsEncrypted Encrypted or Decrypted. ++ ++ @retval RETURN_SUCCESS Hypercall returned success. ++ @retval RETURN_UNSUPPORTED Hypercall not supported. ++ @retval RETURN_NO_MAPPING Hypercall returned error. ++**/ ++RETURN_STATUS ++EFIAPI ++SetMemoryEncDecHypercall3 ( ++ IN UINTN PhysicalAddress, ++ IN UINTN Pages, ++ IN BOOLEAN IsEncrypted ++ ); ++ ++#define KVM_HC_MAP_GPA_RANGE 12 ++#define KVM_MAP_GPA_RANGE_PAGE_SZ_4K 0 ++#define KVM_MAP_GPA_RANGE_PAGE_SZ_2M BIT0 ++#define KVM_MAP_GPA_RANGE_PAGE_SZ_1G BIT1 ++#define KVM_MAP_GPA_RANGE_ENC_STATE(n) ((n) << 4) ++#define KVM_MAP_GPA_RANGE_ENCRYPTED KVM_MAP_GPA_RANGE_ENC_STATE(1) ++#define KVM_MAP_GPA_RANGE_DECRYPTED KVM_MAP_GPA_RANGE_ENC_STATE(0) ++ ++/** ++ Interface exposed by the ASM implementation of the core hypercall ++ ++ @param[in] HypercallNum KVM_HC_MAP_GPA_RANGE hypercall. ++ @param[in] PhysicalAddress The physical address that is the start address ++ of a memory region. ++ @param[in] Pages Number of pages in memory region. ++ @param[in] Attributes Bits 3:0 - preferred page size encoding, ++ 0 = 4kb, 1 = 2mb, 2 = 1gb, etc... ++ Bit 4 - plaintext = 0, encrypted = 1 ++ Bits 63:5 - reserved (must be zero) ++ ++ @retval Hypercall returned status. ++**/ ++UINTN ++EFIAPI ++SetMemoryEncDecHypercall3AsmStub ( ++ IN UINTN HypercallNum, ++ IN UINTN PhysicalAddress, ++ IN UINTN Pages, ++ IN UINTN Attributes ++ ); ++ + #endif // _MEM_ENCRYPT_SEV_LIB_H_ +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf +index dc32929..8ea8d3a 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf +@@ -38,6 +38,7 @@ + X64/PeiDxeVirtualMemory.c + X64/VirtualMemory.c + X64/VirtualMemory.h ++ X64/AsmHelperStub.nasm + + [Sources.IA32] + Ia32/MemEncryptSevLib.c +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/Ia32/MemEncryptSevLib.c b/OvmfPkg/Library/BaseMemEncryptSevLib/Ia32/MemEncryptSevLib.c +index be260e0..516d639 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/Ia32/MemEncryptSevLib.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/Ia32/MemEncryptSevLib.c +@@ -136,3 +136,30 @@ MemEncryptSevClearMmioPageEncMask ( + // + return RETURN_UNSUPPORTED; + } ++ ++/** ++ This hyercall is used to notify hypervisor when the page's encryption ++ state changes. ++ ++ @param[in] PhysicalAddress The physical address that is the start address ++ of a memory region. ++ @param[in] Pages Number of Pages in the memory region. ++ @param[in] IsEncrypted Encrypted or Decrypted. ++ ++ @retval RETURN_SUCCESS Hypercall returned success. ++ @retval RETURN_UNSUPPORTED Hypercall not supported. ++ @retval RETURN_NO_MAPPING Hypercall returned error. ++**/ ++RETURN_STATUS ++EFIAPI ++SetMemoryEncDecHypercall3 ( ++ IN UINTN PhysicalAddress, ++ IN UINTN Pages, ++ IN BOOLEAN IsEncrypted ++ ) ++{ ++ // ++ // Memory encryption bit is not accessible in 32-bit mode ++ // ++ return RETURN_UNSUPPORTED; ++} +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf +index 03a78c3..3233ca7 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf +@@ -38,6 +38,7 @@ + X64/PeiDxeVirtualMemory.c + X64/VirtualMemory.c + X64/VirtualMemory.h ++ X64/AsmHelperStub.nasm + + [Sources.IA32] + Ia32/MemEncryptSevLib.c +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c +index d9f7bef..ebb1c39 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/SecMemEncryptSevLibInternal.c +@@ -118,6 +118,26 @@ MemEncryptSevLiveMigrationIsEnabled ( + return FALSE; + } + ++/** ++ Interface exposed by the ASM implementation of the core hypercall ++ ++ @retval Hypercall returned status. ++**/ ++UINTN ++EFIAPI ++SetMemoryEncDecHypercall3AsmStub ( ++ IN UINTN HypercallNum, ++ IN UINTN PhysicalAddress, ++ IN UINTN Pages, ++ IN UINTN Attributes ++ ) ++{ ++ // ++ // Not used in SEC phase. ++ // ++ return RETURN_UNSUPPORTED; ++} ++ + /** + Returns the SEV encryption mask. + +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/AsmHelperStub.nasm b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/AsmHelperStub.nasm +new file mode 100644 +index 0000000..0ec35dd +--- /dev/null ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/AsmHelperStub.nasm +@@ -0,0 +1,33 @@ ++/** @file ++ ++ ASM helper stub to invoke hypercall ++ ++ Copyright (c) 2021, AMD Incorporated. All rights reserved.
++ ++ SPDX-License-Identifier: BSD-2-Clause-Patent ++ ++**/ ++ ++DEFAULT REL ++SECTION .text ++ ++; UINTN ++; EFIAPI ++; SetMemoryEncDecHypercall3AsmStub ( ++; IN UINTN HypercallNum, ++; IN UINTN Arg1, ++; IN UINTN Arg2, ++; IN UINTN Arg3 ++; ); ++global ASM_PFX(SetMemoryEncDecHypercall3AsmStub) ++ASM_PFX(SetMemoryEncDecHypercall3AsmStub): ++ ; UEFI calling conventions require RBX to ++ ; be nonvolatile/callee-saved. ++ push rbx ++ mov rax, rcx ; Copy HypercallNumber to rax ++ mov rbx, rdx ; Copy Arg1 to the register expected by KVM ++ mov rcx, r8 ; Copy Arg2 to register expected by KVM ++ mov rdx, r9 ; Copy Arg3 to register expected by KVM ++ vmmcall ; Call VMMCALL ++ pop rbx ++ ret +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c +index a57e8fd..a6246d4 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c +@@ -143,3 +143,67 @@ MemEncryptSevClearMmioPageEncMask ( + ); + + } ++ ++/** ++ This hyercall is used to notify hypervisor when the page's encryption ++ state changes. ++ ++ @param[in] PhysicalAddress The physical address that is the start address ++ of a memory region. ++ @param[in] Pages Number of Pages in the memory region. ++ @param[in] IsEncrypted Encrypted or Decrypted. ++ ++ @retval RETURN_SUCCESS Hypercall returned success. ++ @retval RETURN_UNSUPPORTED Hypercall not supported. ++ @retval RETURN_NO_MAPPING Hypercall returned error. ++**/ ++RETURN_STATUS ++EFIAPI ++SetMemoryEncDecHypercall3 ( ++ IN UINTN PhysicalAddress, ++ IN UINTN Pages, ++ IN BOOLEAN IsEncrypted ++ ) ++{ ++ RETURN_STATUS Ret; ++ UINTN Error; ++ UINTN EncryptState; ++ ++ Ret = RETURN_UNSUPPORTED; ++ ++ if (MemEncryptSevLiveMigrationIsEnabled ()) { ++ Ret = RETURN_SUCCESS; ++ // ++ // The encryption bit is set/clear on the smallest page size, hence ++ // use the 4k page size in MAP_GPA_RANGE hypercall below. ++ // ++ // Also, when the GCD map is being walked and the c-bit being cleared ++ // from MMIO and NonExistent memory spaces, the physical address ++ // range being passed may not be page-aligned and adding an assert ++ // here prevents booting. Hence, rounding it down when calling ++ // SetMemoryEncDecHypercall3AsmStub below. ++ // ++ ++ EncryptState = IsEncrypted ? KVM_MAP_GPA_RANGE_ENCRYPTED : ++ KVM_MAP_GPA_RANGE_DECRYPTED; ++ ++ Error = SetMemoryEncDecHypercall3AsmStub ( ++ KVM_HC_MAP_GPA_RANGE, ++ PhysicalAddress & ~EFI_PAGE_MASK, ++ Pages, ++ KVM_MAP_GPA_RANGE_PAGE_SZ_4K | EncryptState ++ ); ++ ++ if (Error != 0) { ++ DEBUG ((DEBUG_ERROR, ++ "SetMemoryEncDecHypercall3 failed, Phys = %x, Pages = %d, Err = %Ld\n", ++ PhysicalAddress, ++ Pages, ++ (INT64)Error)); ++ ++ Ret = RETURN_NO_MAPPING; ++ } ++ } ++ ++ return Ret; ++} +-- +2.17.1 + diff --git a/0041-OvmfPkg-BaseMemEncryptLib-Invoke-page-encryption-sta.patch b/0041-OvmfPkg-BaseMemEncryptLib-Invoke-page-encryption-sta.patch new file mode 100644 index 0000000..1c865a3 --- /dev/null +++ b/0041-OvmfPkg-BaseMemEncryptLib-Invoke-page-encryption-sta.patch @@ -0,0 +1,91 @@ +From ee0ca422f17da55350c4da25ef9ca38127d79e3f Mon Sep 17 00:00:00 2001 +From: Ashish Kalra +Date: Thu, 19 Aug 2021 13:04:56 +0000 +Subject: [PATCH 41/46] OvmfPkg/BaseMemEncryptLib: Invoke page encryption state + change hypercall + +Invoke the hypercall API to notify hypervisor when the page's +encryption state changes. + +Cc: Jordan Justen +Cc: Ard Biesheuvel +Signed-off-by: Brijesh Singh +Signed-off-by: Ashish Kalra +Change-Id: Ia61155777fe3bf66f1d059978c0e8b1d1c833ef7 +--- + .../X64/PeiDxeVirtualMemory.c | 20 +++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c +index 6726010..0b67577 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c +@@ -582,10 +582,13 @@ SetMemoryEncDec ( + PAGE_MAP_AND_DIRECTORY_POINTER *PageDirectoryPointerEntry; + PAGE_TABLE_1G_ENTRY *PageDirectory1GEntry; + PAGE_TABLE_ENTRY *PageDirectory2MEntry; ++ PHYSICAL_ADDRESS OrigPhysicalAddress; + PAGE_TABLE_4K_ENTRY *PageTableEntry; + UINT64 PgTableMask; + UINT64 AddressEncMask; + BOOLEAN IsWpEnabled; ++ BOOLEAN CBitChanged; ++ UINTN OrigLength; + RETURN_STATUS Status; + PHYSICAL_ADDRESS PageAddress; + UINTN PageNum; +@@ -642,6 +645,9 @@ SetMemoryEncDec ( + } + + Status = EFI_SUCCESS; ++ OrigLength = Length; ++ CBitChanged = FALSE; ++ OrigPhysicalAddress = PhysicalAddress; + + while (Length != 0) + { +@@ -702,6 +708,7 @@ SetMemoryEncDec ( + )); + PhysicalAddress += BIT30; + Length -= BIT30; ++ CBitChanged = TRUE; + } else { + // + // We must split the page +@@ -756,6 +763,7 @@ SetMemoryEncDec ( + SetOrClearCBit (&PageDirectory2MEntry->Uint64, Mode); + PhysicalAddress += BIT21; + Length -= BIT21; ++ CBitChanged = TRUE; + } else { + // + // We must split up this page into 4K pages +@@ -798,6 +806,7 @@ SetMemoryEncDec ( + SetOrClearCBit (&PageTableEntry->Uint64, Mode); + PhysicalAddress += EFI_PAGE_SIZE; + Length -= EFI_PAGE_SIZE; ++ CBitChanged = TRUE; + } + } + } +@@ -815,6 +824,17 @@ SetMemoryEncDec ( + // + CpuFlushTlb(); + ++ // ++ // Notify Hypervisor on C-bit status ++ // ++ if (CBitChanged) { ++ Status = SetMemoryEncDecHypercall3 ( ++ OrigPhysicalAddress, ++ EFI_SIZE_TO_PAGES (OrigLength), ++ (Mode == SetCBit) ? TRUE : FALSE ++ ); ++ } ++ + Done: + // + // Restore page table write protection, if any. +-- +2.17.1 + diff --git a/0042-OvmfPkg-VmgExitLib-Encryption-state-change-hypercall.patch b/0042-OvmfPkg-VmgExitLib-Encryption-state-change-hypercall.patch new file mode 100644 index 0000000..c37eb4a --- /dev/null +++ b/0042-OvmfPkg-VmgExitLib-Encryption-state-change-hypercall.patch @@ -0,0 +1,46 @@ +From b9e68850125194c9c183a0ab2239a6c73b1d67c3 Mon Sep 17 00:00:00 2001 +From: Ashish Kalra +Date: Thu, 19 Aug 2021 13:06:40 +0000 +Subject: [PATCH 42/46] OvmfPkg/VmgExitLib: Encryption state change hypercall + support in VC handler + +Make the #VC handler aware of the page encryption state +change hypercall by adding support to check KVM_HC_MAP_GPA_RANGE +hypercall and add the additional register values used by +hypercall in the GHCB. + +Cc: Jordan Justen +Cc: Ard Biesheuvel +Signed-off-by: Ashish Kalra +Change-Id: Iaab77f063455837393f290ee80962e6f3d2f5593 +--- + OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c b/OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c +index 41b0c8c..2d06343 100644 +--- a/OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c ++++ b/OvmfPkg/Library/VmgExitLib/VmgExitVcHandler.c +@@ -1171,6 +1171,19 @@ VmmCallExit ( + Ghcb->SaveArea.Cpl = (UINT8) (Regs->Cs & 0x3); + VmgSetOffsetValid (Ghcb, GhcbCpl); + ++ if (Regs->Rax == KVM_HC_MAP_GPA_RANGE) { ++ // ++ // KVM_HC_MAP_GPA_RANGE hypercall requires these ++ // extra registers. ++ // ++ Ghcb->SaveArea.Rbx = Regs->Rbx; ++ VmgSetOffsetValid (Ghcb, GhcbRbx); ++ Ghcb->SaveArea.Rcx = Regs->Rcx; ++ VmgSetOffsetValid (Ghcb, GhcbRcx); ++ Ghcb->SaveArea.Rdx = Regs->Rdx; ++ VmgSetOffsetValid (Ghcb, GhcbRdx); ++ } ++ + Status = VmgExit (Ghcb, SVM_EXIT_VMMCALL, 0, 0); + if (Status != 0) { + return Status; +-- +2.17.1 + diff --git a/0043-OvmfPkg-PlatformPei-Mark-SEC-GHCB-page-as-unencrypte.patch b/0043-OvmfPkg-PlatformPei-Mark-SEC-GHCB-page-as-unencrypte.patch new file mode 100644 index 0000000..dd2ca14 --- /dev/null +++ b/0043-OvmfPkg-PlatformPei-Mark-SEC-GHCB-page-as-unencrypte.patch @@ -0,0 +1,43 @@ +From 4f2273d02335039e85d8b47b1e43715e3db86c33 Mon Sep 17 00:00:00 2001 +From: Ashish Kalra +Date: Thu, 19 Aug 2021 13:09:07 +0000 +Subject: [PATCH 43/46] OvmfPkg/PlatformPei: Mark SEC GHCB page as unencrypted + via hypercall + +Mark the SEC GHCB page (that is mapped as unencrypted in +ResetVector code) in the hypervisor's guest page encryption +state tracking. + +Cc: Jordan Justen +Cc: Ard Biesheuvel +Signed-off-by: Ashish Kalra +Change-Id: Iedcde6367e12106e44e0cb1cc07a4ed386f67c19 +--- + OvmfPkg/PlatformPei/AmdSev.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/OvmfPkg/PlatformPei/AmdSev.c b/OvmfPkg/PlatformPei/AmdSev.c +index a8bf610..1d38056 100644 +--- a/OvmfPkg/PlatformPei/AmdSev.c ++++ b/OvmfPkg/PlatformPei/AmdSev.c +@@ -52,6 +52,17 @@ AmdSevEsInitialize ( + PcdStatus = PcdSetBoolS (PcdSevEsIsEnabled, TRUE); + ASSERT_RETURN_ERROR (PcdStatus); + ++ // ++ // The SEC Ghcb setup during reset-vector needs to be marked as ++ // decrypted in the hypervisor's guest page encryption state ++ // tracking. ++ // ++ SetMemoryEncDecHypercall3 ( ++ FixedPcdGet32 (PcdOvmfSecGhcbBase), ++ EFI_SIZE_TO_PAGES(FixedPcdGet32 (PcdOvmfSecGhcbSize)), ++ FALSE ++ ); ++ + // + // Allocate GHCB and per-CPU variable pages. + // Since the pages must survive across the UEFI to OS transition +-- +2.17.1 + diff --git a/0044-OvmfPkg-AmdSevDxe-Add-support-for-SEV-live-migration.patch b/0044-OvmfPkg-AmdSevDxe-Add-support-for-SEV-live-migration.patch new file mode 100644 index 0000000..edb8b39 --- /dev/null +++ b/0044-OvmfPkg-AmdSevDxe-Add-support-for-SEV-live-migration.patch @@ -0,0 +1,185 @@ +From f751df6533d370a14412fab4850ad05ce99b7b85 Mon Sep 17 00:00:00 2001 +From: Ashish Kalra +Date: Thu, 19 Aug 2021 13:14:31 +0000 +Subject: [PATCH 44/46] OvmfPkg/AmdSevDxe: Add support for SEV live migration. + +Check for SEV live migration feature support, if detected +setup a new UEFI enviroment variable to indicate OVMF +support for SEV live migration. + +This environment variable is created by UEFI but consumed +by the (guest) linux kernel. This is actually part of a +3-way negotiation of the live migration feature between +hypervisor, guest OVMF and guest kernel. Host indicates +support for live migration, which is detected by OVMF +and correspondingly OVMF sets this SetLiveMigrationEnabled +UEFI variable, which is read by the guest kernel and it +indicates to the guest kernel that both host and OVMF +support and have enabled the live migration feature. + +The new runtime UEFI environment variable is set via the +notification function registered for the +EFI_END_OF_DXE_EVENT_GROUP_GUID event in AmdSevDxe driver. + +AmdSevDxe module is an apriori driver so it gets loaded between PEI +and DXE phases and the SetVariable call will fail at the driver's +entry point as the Variable DXE module is still not loaded yet. +So we need to wait for an event notification which is signaled +after the Variable DXE module is loaded, hence, using the +EndOfDxe event notification to make this call. + +Signed-off-by: Ashish Kalra +Change-Id: Iff6eee8f56fd60d1aedf48a5253b7b09e9aa9c7e +--- + OvmfPkg/AmdSevDxe/AmdSevDxe.c | 64 ++++++++++++++++++++++ + OvmfPkg/AmdSevDxe/AmdSevDxe.inf | 4 ++ + OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h | 20 +++++++ + OvmfPkg/OvmfPkg.dec | 1 + + 4 files changed, 89 insertions(+) + create mode 100644 OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h + +diff --git a/OvmfPkg/AmdSevDxe/AmdSevDxe.c b/OvmfPkg/AmdSevDxe/AmdSevDxe.c +index c66c4e9..0750949 100644 +--- a/OvmfPkg/AmdSevDxe/AmdSevDxe.c ++++ b/OvmfPkg/AmdSevDxe/AmdSevDxe.c +@@ -15,10 +15,47 @@ + #include + #include + #include ++#include + #include + #include ++#include ++#include ++#include + #include + ++STATIC ++VOID ++EFIAPI ++AmdSevDxeOnEndOfDxe ( ++ IN EFI_EVENT Event, ++ IN VOID *EventToSignal ++ ) ++{ ++ EFI_STATUS Status; ++ BOOLEAN SevLiveMigrationEnabled; ++ ++ SevLiveMigrationEnabled = MemEncryptSevLiveMigrationIsEnabled (); ++ ++ if (SevLiveMigrationEnabled) { ++ Status = gRT->SetVariable ( ++ L"SevLiveMigrationEnabled", ++ &gAmdSevMemEncryptGuid, ++ EFI_VARIABLE_NON_VOLATILE | ++ EFI_VARIABLE_BOOTSERVICE_ACCESS | ++ EFI_VARIABLE_RUNTIME_ACCESS, ++ sizeof SevLiveMigrationEnabled, ++ &SevLiveMigrationEnabled ++ ); ++ ++ DEBUG (( ++ DEBUG_INFO, ++ "%a: Setting SevLiveMigrationEnabled variable, status = %lx\n", ++ __FUNCTION__, ++ Status ++ )); ++ } ++} ++ + EFI_STATUS + EFIAPI + AmdSevDxeEntryPoint ( +@@ -30,6 +67,7 @@ AmdSevDxeEntryPoint ( + EFI_GCD_MEMORY_SPACE_DESCRIPTOR *AllDescMap; + UINTN NumEntries; + UINTN Index; ++ EFI_EVENT Event; + + // + // Do nothing when SEV is not enabled +@@ -130,5 +168,31 @@ AmdSevDxeEntryPoint ( + } + } + ++ // ++ // AmdSevDxe module is an apriori driver so it gets loaded between PEI ++ // and DXE phases and the SetVariable call will fail at the driver's ++ // entry point as the Variable DXE module is still not loaded yet. ++ // So we need to wait for an event notification which is signaled ++ // after the Variable DXE module is loaded, hence, using the ++ // EndOfDxe event notification to make this call. ++ // ++ // Register EFI_END_OF_DXE_EVENT_GROUP_GUID event. ++ // The notification function sets the runtime variable indicating OVMF ++ // support for SEV live migration. ++ // ++ Status = gBS->CreateEventEx ( ++ EVT_NOTIFY_SIGNAL, ++ TPL_CALLBACK, ++ AmdSevDxeOnEndOfDxe, ++ NULL, ++ &gEfiEndOfDxeEventGroupGuid, ++ &Event ++ ); ++ ++ if (EFI_ERROR (Status)) { ++ DEBUG ((DEBUG_ERROR, "%a: CreateEventEx(): %r\n", ++ __FUNCTION__, Status)); ++ } ++ + return EFI_SUCCESS; + } +diff --git a/OvmfPkg/AmdSevDxe/AmdSevDxe.inf b/OvmfPkg/AmdSevDxe/AmdSevDxe.inf +index 0676fcc..2ad1fb8 100644 +--- a/OvmfPkg/AmdSevDxe/AmdSevDxe.inf ++++ b/OvmfPkg/AmdSevDxe/AmdSevDxe.inf +@@ -45,3 +45,7 @@ + + [Pcd] + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId ++ ++[Guids] ++ gAmdSevMemEncryptGuid ++ gEfiEndOfDxeEventGroupGuid ## CONSUMES ## Event +diff --git a/OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h b/OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h +new file mode 100644 +index 0000000..1c948fb +--- /dev/null ++++ b/OvmfPkg/Include/Guid/AmdSevMemEncryptLib.h +@@ -0,0 +1,20 @@ ++/** @file ++ ++ AMD Memory Encryption GUID, define a new GUID for defining ++ new UEFI environment variables assocaiated with SEV Memory Encryption. ++ ++ Copyright (c) 2021, AMD Inc. All rights reserved.
++ ++ SPDX-License-Identifier: BSD-2-Clause-Patent ++ ++**/ ++ ++#ifndef __AMD_SEV_MEMENCRYPT_LIB_H__ ++#define __AMD_SEV_MEMENCRYPT_LIB_H__ ++ ++#define AMD_SEV_MEMENCRYPT_GUID \ ++{0x0cf29b71, 0x9e51, 0x433a, {0xa3, 0xb7, 0x81, 0xf3, 0xab, 0x16, 0xb8, 0x75}} ++ ++extern EFI_GUID gAmdSevMemEncryptGuid; ++ ++#endif +diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec +index 7e6a6a2..b6f88e0 100644 +--- a/OvmfPkg/OvmfPkg.dec ++++ b/OvmfPkg/OvmfPkg.dec +@@ -128,6 +128,7 @@ + gQemuKernelLoaderFsMediaGuid = {0x1428f772, 0xb64a, 0x441e, {0xb8, 0xc3, 0x9e, 0xbd, 0xd7, 0xf8, 0x93, 0xc7}} + gGrubFileGuid = {0xb5ae312c, 0xbc8a, 0x43b1, {0x9c, 0x62, 0xeb, 0xb8, 0x26, 0xdd, 0x5d, 0x07}} + gConfidentialComputingSecretGuid = {0xadf956ad, 0xe98c, 0x484c, {0xae, 0x11, 0xb5, 0x1c, 0x7d, 0x33, 0x64, 0x47}} ++ gAmdSevMemEncryptGuid = {0x0cf29b71, 0x9e51, 0x433a, {0xa3, 0xb7, 0x81, 0xf3, 0xab, 0x16, 0xb8, 0x75}} + + [Ppis] + # PPI whose presence in the PPI database signals that the TPM base address +-- +2.17.1 + diff --git a/0045-anolis-OvmfPkg-BaseMemcryptSevLib-Correct-the-calcul.patch b/0045-anolis-OvmfPkg-BaseMemcryptSevLib-Correct-the-calcul.patch new file mode 100644 index 0000000..d152d63 --- /dev/null +++ b/0045-anolis-OvmfPkg-BaseMemcryptSevLib-Correct-the-calcul.patch @@ -0,0 +1,35 @@ +From 1f244d5fec68cbd76fd902819d906c5222577a69 Mon Sep 17 00:00:00 2001 +From: hanliyang +Date: Mon, 17 Jan 2022 01:19:21 -0500 +Subject: [PATCH 45/46] anolis: OvmfPkg/BaseMemcryptSevLib: Correct the + calculation of page range that notified to hypervisor + +Correct the calculation of page range that notified to hypervisor. + +Change-Id: Ie2ac4a4e894095ea9ae3b1d44afed04681b9d491 +--- + .../Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c +index 0b67577..4dbf829 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c +@@ -828,9 +828,13 @@ SetMemoryEncDec ( + // Notify Hypervisor on C-bit status + // + if (CBitChanged) { ++ UINTN StartPfn = OrigPhysicalAddress >> EFI_PAGE_SHIFT; ++ UINTN EndPfn = (OrigPhysicalAddress + OrigLength + ++ ((1 << EFI_PAGE_SHIFT) - 1)) >> EFI_PAGE_SHIFT; ++ + Status = SetMemoryEncDecHypercall3 ( + OrigPhysicalAddress, +- EFI_SIZE_TO_PAGES (OrigLength), ++ (EndPfn - StartPfn), + (Mode == SetCBit) ? TRUE : FALSE + ); + } +-- +2.17.1 + diff --git a/0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch b/0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch new file mode 100644 index 0000000..5da0f2b --- /dev/null +++ b/0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch @@ -0,0 +1,36 @@ +From 901330a9161de852bf99ad7b2c629bae00af2b7a Mon Sep 17 00:00:00 2001 +From: hanliyang +Date: Sun, 19 Jun 2022 18:12:35 +0800 +Subject: [PATCH 46/46] anolis: OvmfPkg/BaseMemEncryptLib: Return SUCCESS if + not support SEV live migration + +Add this change to avoid trigger 'ASSERT_EFI_ERROR (Status = Unsupported)' +when QEMU doesn't support SEV live migration. + +Change-Id: I48066d6cf1b4357c984496bcb6450be4d35b7e16 +--- + OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c +index a6246d4..e50231c 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/MemEncryptSevLib.c +@@ -169,10 +169,12 @@ SetMemoryEncDecHypercall3 ( + UINTN Error; + UINTN EncryptState; + +- Ret = RETURN_UNSUPPORTED; ++ // ++ // Return success if not support migration. ++ // ++ Ret = RETURN_SUCCESS; + + if (MemEncryptSevLiveMigrationIsEnabled ()) { +- Ret = RETURN_SUCCESS; + // + // The encryption bit is set/clear on the smallest page size, hence + // use the 4k page size in MAP_GPA_RANGE hypercall below. +-- +2.17.1 + diff --git a/edk2.spec b/edk2.spec index e8fb9bb..c538903 100644 --- a/edk2.spec +++ b/edk2.spec @@ -1,3 +1,4 @@ +%define anolis_release .0.1 ExclusiveArch: x86_64 aarch64 %define GITDATE 20220126 @@ -7,7 +8,7 @@ ExclusiveArch: x86_64 aarch64 Name: edk2 Version: %{GITDATE}git%{GITCOMMIT} -Release: 13%{?dist}.2 +Release: 13%{anolis_release}%{?dist}.2 Summary: UEFI firmware for 64-bit virtual machines Group: Applications/Emulators License: BSD-2-Clause-Patent and OpenSSL and MIT @@ -385,6 +386,26 @@ Patch114: edk2-NetworkPkg-TcpDxe-SECURITY-PATCH-CVE-2023-45236.patch # For RHEL-40099 - CVE-2024-1298 edk2: Temporary DoS vulnerability [rhel-8.10.z] Patch115: edk2-NetworkPkg-TcpDxe-Fixed-system-stuck-on-PXE-boot-flo.patch +# Support hygon csv3 feature +Patch1000: 0029-anolis-UefiCpuPkg-Add-StandardSignatureIsHygonGenuin.patch +Patch1001: 0030-anolis-UefiCpuPkg-LocalApicLib-Exclude-second-SendIp.patch +Patch1002: 0031-anolis-OvmfPkg-Add-CSV-secure-call-library-on-Hygon-.patch +Patch1003: 0032-anolis-OvmfPkg-Tcg-Add-CsvLib-for-TpmMmioSevDecryptP.patch +Patch1004: 0033-anolis-OvmfPkg-ResetVector-Support-CSV-in-ResetVecto.patch +Patch1005: 0034-anolis-OvmfPkg-PlatformPei-Initialize-CSV-VM-s-memor.patch +Patch1006: 0035-anolis-OvmfPkg-BaseMemcryptSevLib-update-page-status.patch +Patch1007: 0036-anolis-OvmfPkg-Add-CsvDxe-driver.patch +Patch1008: 0037-anolis-OvmfPkg-IoMmuDxe-Add-CsvIoMmu-protocol.patch +Patch1009: 0038-anolis-OvmfPkg-Reserve-a-CPUID-table-page-for-CSV-gu.patch +# Support SEV live migration +Patch1010: 0039-OvmfPkg-BaseMemEncryptLib-Detect-SEV-live-migration-.patch +Patch1011: 0040-OvmfPkg-BaseMemEncryptLib-Hypercall-API-for-page-enc.patch +Patch1012: 0041-OvmfPkg-BaseMemEncryptLib-Invoke-page-encryption-sta.patch +Patch1013: 0042-OvmfPkg-VmgExitLib-Encryption-state-change-hypercall.patch +Patch1014: 0043-OvmfPkg-PlatformPei-Mark-SEC-GHCB-page-as-unencrypte.patch +Patch1015: 0044-OvmfPkg-AmdSevDxe-Add-support-for-SEV-live-migration.patch +Patch1016: 0045-anolis-OvmfPkg-BaseMemcryptSevLib-Correct-the-calcul.patch +Patch1017: 0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch # python3-devel and libuuid-devel are required for building tools. # python3-devel is also needed for varstore template generation and @@ -830,6 +851,10 @@ true %endif %changelog +* Tue Aug 27 2024 Jiang Xin - 20220126gitbb1bba3d77-13.0.1.2 +- Support hygon CSV3 feature +- Support SEV live migration + * Wed Jul 10 2024 Jon Maloy - 20220126gitbb1bba3d77-13.el8_10.2 * Wed Jul 03 2024 Miroslav Rezanina - 20220126gitbb1bba3d77-13.el8_10.1 -- Gitee From d55f85b537e7d7e76ff94a771b8069fb053efc05 Mon Sep 17 00:00:00 2001 From: Xin Jiang Date: Fri, 12 Jan 2024 10:57:05 +0800 Subject: [PATCH 3/4] anolis: OvmfPkg/BaseMemEncryptLib: Save memory encrypt status in reserved memory The MMIO routine of VC handler will get memory encrypt status to validate MMIO address. MemEncryptSevGetEncryptionMask() will enable interrupt while interrupt must be disabled during VC. During DXE stage, VC routine as below: CcExitHandleVc->MemEncryptSevGetAddressRangeState-> MemEncryptSevGetEncryptionMask->PcdGet64(PcdPteMemoryEncryptionAddressOrMask) Unfortunately, PcdGet64() will enable interrupt in VC context. Signed-off-by: Xin Jiang --- ...aseMemEncryptLib-Save-memory-encrypt.patch | 144 ++++++++++++++++++ edk2.spec | 4 + 2 files changed, 148 insertions(+) create mode 100644 0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch diff --git a/0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch b/0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch new file mode 100644 index 0000000..00380bc --- /dev/null +++ b/0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch @@ -0,0 +1,144 @@ +From 644748015685d9a13e43d7e689f1e7379adcc959 Mon Sep 17 00:00:00 2001 +From: Xin Jiang +Date: Fri, 12 Jan 2024 10:39:28 +0800 +Subject: [PATCH] anolis: OvmfPkg/BaseMemEncryptLib: Save memory encrypt status + in reserved memory + +The MMIO routine of VC handler will get memory encrypt status to +validate MMIO address. MemEncryptSevGetEncryptionMask() will enable +interrupt while interrupt must be disabled during VC. + +During DXE stage, VC routine as below: +CcExitHandleVc->MemEncryptSevGetAddressRangeState-> +MemEncryptSevGetEncryptionMask->PcdGet64(PcdPteMemoryEncryptionAddressOrMask) + +Unfortunately, PcdGet64() will enable interrupt in VC context. + +Change-Id: I89aedeac4a90ec79f9acb35daf638b7fb507f24c +Signed-off-by: Xin Jiang +--- + .../BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf | 4 ++++ + .../BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c | 10 ++-------- + OvmfPkg/OvmfPkg.dec | 4 ++++ + OvmfPkg/OvmfPkgX64.fdf | 5 ++++- + OvmfPkg/PlatformPei/AmdSev.c | 2 ++ + OvmfPkg/PlatformPei/Csv.c | 6 ++++++ + OvmfPkg/PlatformPei/PlatformPei.inf | 2 ++ + 7 files changed, 24 insertions(+), 9 deletions(-) + +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf +index 8ea8d3a..55e75ef 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf +@@ -57,3 +57,7 @@ + + [Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask ++ ++[FixedPcd] ++ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusBase ++ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusSize +diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c +index df73a83..44d9ad1 100644 +--- a/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c ++++ b/OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c +@@ -25,9 +25,6 @@ STATIC BOOLEAN mSevStatusChecked = FALSE; + STATIC BOOLEAN mSevLiveMigrationStatus = FALSE; + STATIC BOOLEAN mSevLiveMigrationStatusChecked = FALSE; + +-STATIC UINT64 mSevEncryptionMask = 0; +-STATIC BOOLEAN mSevEncryptionMaskSaved = FALSE; +- + /** + Reads and sets the status of SEV features. + +@@ -177,10 +174,7 @@ MemEncryptSevGetEncryptionMask ( + VOID + ) + { +- if (!mSevEncryptionMaskSaved) { +- mSevEncryptionMask = PcdGet64 (PcdPteMemoryEncryptionAddressOrMask); +- mSevEncryptionMaskSaved = TRUE; +- } ++ UINT64 *MemEncryptStatus = (UINT64 *)(UINT64)FixedPcdGet32 (PcdMemEncrpytStatusBase); + +- return mSevEncryptionMask; ++ return *MemEncryptStatus; + } +diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec +index b6f88e0..2c09ad4 100644 +--- a/OvmfPkg/OvmfPkg.dec ++++ b/OvmfPkg/OvmfPkg.dec +@@ -364,6 +364,10 @@ + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase|0|UINT32|0x60 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize|0|UINT32|0x61 + ++ ## the base address of memory encryption status.^M ++ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusBase|0|UINT32|0x62 ++ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusSize|0|UINT32|0x63 ++ + [PcdsDynamic, PcdsDynamicEx] + gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10 +diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf +index 04efa62..0cc12b8 100644 +--- a/OvmfPkg/OvmfPkgX64.fdf ++++ b/OvmfPkg/OvmfPkgX64.fdf +@@ -94,7 +94,10 @@ gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallBase|gUefiOvmfPkgTokenSpaceGui + 0x00F000|0x001000 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize + +-0x010000|0x010000 ++0x010000|0x001000 ++gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusBase|gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusSize ++ ++0x011000|0x00F000 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize + + 0x020000|0x0E0000 +diff --git a/OvmfPkg/PlatformPei/AmdSev.c b/OvmfPkg/PlatformPei/AmdSev.c +index 1d38056..33fc83a 100644 +--- a/OvmfPkg/PlatformPei/AmdSev.c ++++ b/OvmfPkg/PlatformPei/AmdSev.c +@@ -167,6 +167,8 @@ AmdSevInitialize ( + PcdStatus = PcdSet64S (PcdPteMemoryEncryptionAddressOrMask, EncryptionMask); + ASSERT_RETURN_ERROR (PcdStatus); + ++ *(UINT64 *)(UINT64)FixedPcdGet32 (PcdMemEncrpytStatusBase) = EncryptionMask; ++ + DEBUG ((DEBUG_INFO, "SEV is enabled (mask 0x%lx)\n", EncryptionMask)); + + // +diff --git a/OvmfPkg/PlatformPei/Csv.c b/OvmfPkg/PlatformPei/Csv.c +index f7c87ac..f8293ab 100644 +--- a/OvmfPkg/PlatformPei/Csv.c ++++ b/OvmfPkg/PlatformPei/Csv.c +@@ -32,6 +32,12 @@ CsvInitializeMemInfo ( + UINT64 LowerMemorySize; + UINT64 UpperMemorySize; + ++ BuildMemoryAllocationHob ( ++ (EFI_PHYSICAL_ADDRESS)(UINTN) FixedPcdGet32 (PcdMemEncrpytStatusBase), ++ (UINT64)(UINTN) FixedPcdGet32 (PcdMemEncrpytStatusSize), ++ EfiReservedMemoryType ++ ); ++ + if (!CsvIsEnabled ()) { + return ; + } +diff --git a/OvmfPkg/PlatformPei/PlatformPei.inf b/OvmfPkg/PlatformPei/PlatformPei.inf +index bed4dcf..7bf667c 100644 +--- a/OvmfPkg/PlatformPei/PlatformPei.inf ++++ b/OvmfPkg/PlatformPei/PlatformPei.inf +@@ -125,6 +125,8 @@ + gUefiOvmfPkgTokenSpaceGuid.PcdCsvDefaultSecureCallSize + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidBase + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfCsvCpuidSize ++ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusBase ++ gUefiOvmfPkgTokenSpaceGuid.PcdMemEncrpytStatusSize + + [FeaturePcd] + gUefiOvmfPkgTokenSpaceGuid.PcdCsmEnable +-- +2.17.1 + diff --git a/edk2.spec b/edk2.spec index c538903..2f7e33d 100644 --- a/edk2.spec +++ b/edk2.spec @@ -406,6 +406,8 @@ Patch1014: 0043-OvmfPkg-PlatformPei-Mark-SEC-GHCB-page-as-unencrypte.patch Patch1015: 0044-OvmfPkg-AmdSevDxe-Add-support-for-SEV-live-migration.patch Patch1016: 0045-anolis-OvmfPkg-BaseMemcryptSevLib-Correct-the-calcul.patch Patch1017: 0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch +# Fix the isue that interrupt is enabled in MMIO VC handler +Patch1018: 0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch # python3-devel and libuuid-devel are required for building tools. # python3-devel is also needed for varstore template generation and @@ -854,6 +856,8 @@ true * Tue Aug 27 2024 Jiang Xin - 20220126gitbb1bba3d77-13.0.1.2 - Support hygon CSV3 feature - Support SEV live migration +- 0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch +- Fix the isue that interrupt is enabled in MMIO VC handler * Wed Jul 10 2024 Jon Maloy - 20220126gitbb1bba3d77-13.el8_10.2 -- Gitee From bddf37898ef84e8fbe5053fb2cdee546252b5271 Mon Sep 17 00:00:00 2001 From: fangbaoshun Date: Wed, 24 Jan 2024 13:49:51 +0800 Subject: [PATCH 4/4] Commit 079a582 ("OvmfPkg/AmdSev/SecretPei: Mark SEV launch secret area as reserved") marked the launch secret area itself (1 page) as reserved so the guest OS can use it during the lifetime of the OS. However, the address and size of the secret area held in the CONFIDENTIAL_COMPUTING_SECRET_LOCATION struct are declared as STATIC in OVMF (in AmdSev/SecretDxe); therefore there's no guarantee that it will not be written over by OS data. Fix this by allocating the memory for the CONFIDENTIAL_COMPUTING_SECRET_LOCATION struct with the EfiACPIReclaimMemory memory type to ensure the guest OS will not reuse this memory. Fixes: 079a582 ("OvmfPkg/AmdSev/SecretPei: Mark SEV launch secret ...") Signed-off-by: fangbaoshun --- ...ecretDxe-Allocate-secret-location-as.patch | 73 +++++++++++++++++++ edk2.spec | 4 + 2 files changed, 77 insertions(+) create mode 100644 0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch diff --git a/0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch b/0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch new file mode 100644 index 0000000..e80d369 --- /dev/null +++ b/0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch @@ -0,0 +1,73 @@ +From 02916fa2f7b92b060bbdc70b2083d0fcf6139624 Mon Sep 17 00:00:00 2001 +From: Dov Murik +Date: Thu, 15 Dec 2022 13:11:51 +0000 +Subject: [PATCH] OvmfPkg/AmdSev/SecretDxe: Allocate secret location as + EfiACPIReclaimMemory + +BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4186 + +Commit 079a58276b98 ("OvmfPkg/AmdSev/SecretPei: Mark SEV launch secret +area as reserved") marked the launch secret area itself (1 page) as +reserved so the guest OS can use it during the lifetime of the OS. +However, the address and size of the secret area held in the +CONFIDENTIAL_COMPUTING_SECRET_LOCATION struct are declared as STATIC in +OVMF (in AmdSev/SecretDxe); therefore there's no guarantee that it will +not be written over by OS data. + +Fix this by allocating the memory for the +CONFIDENTIAL_COMPUTING_SECRET_LOCATION struct with the +EfiACPIReclaimMemory memory type to ensure the guest OS will not reuse +this memory. + +Fixes: 079a58276b98 ("OvmfPkg/AmdSev/SecretPei: Mark SEV launch secret ...") +Signed-off-by: Dov Murik +Reviewed-by: Tom Lendacky +Reviewed-by: Ard Biesheuvel +--- + OvmfPkg/AmdSev/SecretDxe/SecretDxe.c | 22 ++++++++++++++++------ + 1 file changed, 16 insertions(+), 6 deletions(-) + +diff --git a/OvmfPkg/AmdSev/SecretDxe/SecretDxe.c b/OvmfPkg/AmdSev/SecretDxe/SecretDxe.c +index 934ad20..c851176 100644 +--- a/OvmfPkg/AmdSev/SecretDxe/SecretDxe.c ++++ b/OvmfPkg/AmdSev/SecretDxe/SecretDxe.c +@@ -8,11 +8,6 @@ + #include + #include + +-STATIC CONFIDENTIAL_COMPUTING_SECRET_LOCATION mSecretDxeTable = { +- FixedPcdGet32 (PcdSevLaunchSecretBase), +- FixedPcdGet32 (PcdSevLaunchSecretSize), +-}; +- + EFI_STATUS + EFIAPI + InitializeSecretDxe( +@@ -20,8 +15,23 @@ InitializeSecretDxe( + IN EFI_SYSTEM_TABLE *SystemTable + ) + { ++ EFI_STATUS Status; ++ CONFIDENTIAL_COMPUTING_SECRET_LOCATION *SecretDxeTable; ++ ++ Status = gBS->AllocatePool ( ++ EfiACPIReclaimMemory, ++ sizeof (CONFIDENTIAL_COMPUTING_SECRET_LOCATION), ++ (VOID **)&SecretDxeTable ++ ); ++ if (EFI_ERROR (Status)) { ++ return Status; ++ } ++ ++ SecretDxeTable->Base = FixedPcdGet32 (PcdSevLaunchSecretBase); ++ SecretDxeTable->Size = FixedPcdGet32 (PcdSevLaunchSecretSize); ++ + return gBS->InstallConfigurationTable ( + &gConfidentialComputingSecretGuid, +- &mSecretDxeTable ++ SecretDxeTable + ); + } +-- +2.41.0 + diff --git a/edk2.spec b/edk2.spec index 2f7e33d..76d2fac 100644 --- a/edk2.spec +++ b/edk2.spec @@ -409,6 +409,8 @@ Patch1017: 0046-anolis-OvmfPkg-BaseMemEncryptLib-Return-SUCCESS-if-n.patch # Fix the isue that interrupt is enabled in MMIO VC handler Patch1018: 0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch +Patch1019: 0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch + # python3-devel and libuuid-devel are required for building tools. # python3-devel is also needed for varstore template generation and # verification with "ovmf-vars-generator". @@ -858,6 +860,8 @@ true - Support SEV live migration - 0047-anolis-OvmfPkg-BaseMemEncryptLib-Save-memory-encrypt.patch - Fix the isue that interrupt is enabled in MMIO VC handler +- 0048-OvmfPkg-AmdSev-SecretDxe-Allocate-secret-location-as.patch (fangbaoshun@hygon.cn) +- Resolves: bz#8033 * Wed Jul 10 2024 Jon Maloy - 20220126gitbb1bba3d77-13.el8_10.2 -- Gitee