[PATCH v1 2/2] UefiCpuPkg/Test: develop UEFI App and dynamic cmd for MP services UT


Jason Lou
 

From: Jason Lou <yun.lou@...>

The code changes develop UEFI application and dynamic command for
EfiMpServiceProtocol unit tests based on current UnitTestFramework.

Signed-off-by: Jason Lou <yun.lou@...>
Reviewed-by: Ray Ni <ray.ni@...>
Cc: Eric Dong <eric.dong@...>
Cc: Laszlo Ersek <lersek@...>
Cc: Rahul Kumar <rahul1.kumar@...>
Cc: Zhiguang Liu <zhiguang.liu@...>
Cc: Dun Tan <dun.tan@...>
---
UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDyna=
micCmdUnitTest.c | 129 ++++++++++++++++++++
UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDyna=
micCmdUnitTest.inf | 45 +++++++
UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolShel=
lUnitTest.inf | 43 +++++++
UefiCpuPkg/UefiCpuPkg.dsc =
| 8 ++
4 files changed, 225 insertions(+)

diff --git a/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpService=
ProtocolDynamicCmdUnitTest.c b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiPro=
tocol/EfiMpServiceProtocolDynamicCmdUnitTest.c
new file mode 100644
index 0000000000..be65c3d678
--- /dev/null
+++ b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtoco=
lDynamicCmdUnitTest.c
@@ -0,0 +1,129 @@
+/** @file=0D
+ Produce "MpProtocolUnitTest" shell dynamic command.=0D
+=0D
+ Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>=0D
+=0D
+ SPDX-License-Identifier: BSD-2-Clause-Patent=0D
+=0D
+**/=0D
+=0D
+#include <Library/UefiBootServicesTableLib.h>=0D
+#include <Protocol/ShellDynamicCommand.h>=0D
+#include "EfiMpServicesUnitTestCommom.h"=0D
+=0D
+CHAR16 *mMpProtocolUnitTestCommandHelp =3D L".TH MpProtocolUnitTest 0\r\n=
.SH NAME\r\nDisplay unit test results of EFI MP services protocol.\r\n";=0D
+=0D
+EFI_STATUS=0D
+EFIAPI=0D
+EfiMpServiceProtocolUnitTest (=0D
+ VOID=0D
+ );=0D
+=0D
+/**=0D
+ This is the shell command handler function pointer callback type. This=
=0D
+ function handles the command when it is invoked in the shell.=0D
+=0D
+ @param[in] This The instance of the EFI_SHELL_DYNAMIC_=
COMMAND_PROTOCOL.=0D
+ @param[in] SystemTable The pointer to the system table.=0D
+ @param[in] ShellParameters The parameters associated with the com=
mand.=0D
+ @param[in] Shell The instance of the shell protocol use=
d in the context=0D
+ of processing this command.=0D
+=0D
+ @return EFI_SUCCESS the operation was successful=0D
+ @return other the operation failed.=0D
+**/=0D
+SHELL_STATUS=0D
+EFIAPI=0D
+MpProtocolUnitTestCommandHandler (=0D
+ IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,=0D
+ IN EFI_SYSTEM_TABLE *SystemTable,=0D
+ IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,=0D
+ IN EFI_SHELL_PROTOCOL *Shell=0D
+ )=0D
+{=0D
+ return EfiMpServiceProtocolUnitTest ();=0D
+}=0D
+=0D
+/**=0D
+ This is the command help handler function pointer callback type. This=0D
+ function is responsible for displaying help information for the associat=
ed=0D
+ command.=0D
+=0D
+ @param[in] This The instance of the EFI_SHELL_DYNAMIC_=
COMMAND_PROTOCOL.=0D
+ @param[in] Language The pointer to the language string to =
use.=0D
+=0D
+ @return string Pool allocated help string, must be fr=
eed by caller=0D
+**/=0D
+CHAR16 *=0D
+EFIAPI=0D
+MpProtocolUnitTestCommandGetHelp (=0D
+ IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,=0D
+ IN CONST CHAR8 *Language=0D
+ )=0D
+{=0D
+ return AllocateCopyPool (StrSize (mMpProtocolUnitTestCommandHelp), mMpPr=
otocolUnitTestCommandHelp);=0D
+}=0D
+=0D
+EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mMpProtocolUnitTestDynamicCommand =3D =
{=0D
+ L"MpProtocolUnitTest",=0D
+ MpProtocolUnitTestCommandHandler,=0D
+ MpProtocolUnitTestCommandGetHelp=0D
+};=0D
+=0D
+/**=0D
+ Entry point of MpProtocolUnitTest Dynamic Command.=0D
+=0D
+ Produce the DynamicCommand protocol to handle "MpProtocolUnitTest" comma=
nd.=0D
+=0D
+ @param ImageHandle The image handle of the process.=0D
+ @param SystemTable The EFI System Table pointer.=0D
+=0D
+ @retval EFI_SUCCESS Tftp command is executed successfully.=0D
+ @retval EFI_ABORTED HII package was failed to initialize.=0D
+ @retval others Other errors when executing MpProtocolUnit=
Test command.=0D
+**/=0D
+EFI_STATUS=0D
+EFIAPI=0D
+MpProtocolUnitTestCommandInitialize (=0D
+ IN EFI_HANDLE ImageHandle,=0D
+ IN EFI_SYSTEM_TABLE *SystemTable=0D
+ )=0D
+{=0D
+ EFI_STATUS Status;=0D
+=0D
+ Status =3D gBS->InstallProtocolInterface (=0D
+ &ImageHandle,=0D
+ &gEfiShellDynamicCommandProtocolGuid,=0D
+ EFI_NATIVE_INTERFACE,=0D
+ &mMpProtocolUnitTestDynamicCommand=0D
+ );=0D
+ ASSERT_EFI_ERROR (Status);=0D
+=0D
+ return Status;=0D
+}=0D
+=0D
+/**=0D
+ Driver unload handler.=0D
+=0D
+ @param ImageHandle The image handle of the process.=0D
+=0D
+ @retval EFI_SUCCESS The image is unloaded.=0D
+ @retval Others Failed to unload the image.=0D
+**/=0D
+EFI_STATUS=0D
+EFIAPI=0D
+MpProtocolUnitTestUnload (=0D
+ IN EFI_HANDLE ImageHandle=0D
+ )=0D
+{=0D
+ EFI_STATUS Status;=0D
+=0D
+ Status =3D gBS->UninstallProtocolInterface (=0D
+ ImageHandle,=0D
+ &gEfiShellDynamicCommandProtocolGuid,=0D
+ &mMpProtocolUnitTestDynamicCommand=0D
+ );=0D
+ ASSERT_EFI_ERROR (Status);=0D
+=0D
+ return Status;=0D
+}=0D
diff --git a/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpService=
ProtocolDynamicCmdUnitTest.inf b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiP=
rotocol/EfiMpServiceProtocolDynamicCmdUnitTest.inf
new file mode 100644
index 0000000000..3fa287d1ae
--- /dev/null
+++ b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtoco=
lDynamicCmdUnitTest.inf
@@ -0,0 +1,45 @@
+## @file=0D
+# DXE driver that provides Shell 'MpProtocolUnitTest' dynamic command to t=
est EfiMpServiceProtocol.=0D
+#=0D
+# Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>=0D
+# SPDX-License-Identifier: BSD-2-Clause-Patent=0D
+#=0D
+##=0D
+=0D
+[Defines]=0D
+ INF_VERSION =3D 0x00010005=0D
+ BASE_NAME =3D EfiMpServiceProtocolDynamicCmdUnitTest=0D
+ FILE_GUID =3D 8C4624B1-58CC-4DF6-9E6D-09B38D67DFA6=0D
+ MODULE_TYPE =3D DXE_DRIVER=0D
+ VERSION_STRING =3D 1.0=0D
+ ENTRY_POINT =3D MpProtocolUnitTestCommandInitialize=0D
+ UNLOAD_IMAGE =3D MpProtocolUnitTestUnload=0D
+=0D
+[Sources]=0D
+ EfiMpServicesUnitTestCommom.c=0D
+ EfiMpServicesUnitTestCommom.h=0D
+ EfiMpServiceProtocolUnitTest.c=0D
+ EfiMpServiceProtocolDynamicCmdUnitTest.c=0D
+=0D
+[Packages]=0D
+ MdePkg/MdePkg.dec=0D
+ MdeModulePkg/MdeModulePkg.dec=0D
+ UefiCpuPkg/UefiCpuPkg.dec=0D
+=0D
+[LibraryClasses]=0D
+ BaseLib=0D
+ DebugLib=0D
+ BaseMemoryLib=0D
+ MemoryAllocationLib=0D
+ UefiDriverEntryPoint=0D
+ UefiBootServicesTableLib=0D
+ UefiLib=0D
+ UnitTestPersistenceLib=0D
+ UnitTestLib=0D
+=0D
+[Protocols]=0D
+ gEfiMpServiceProtocolGuid ## CONSUMES=0D
+ gEfiShellDynamicCommandProtocolGuid ## PRODUCES=0D
+=0D
+[Depex]=0D
+ TRUE=0D
diff --git a/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpService=
ProtocolShellUnitTest.inf b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtoc=
ol/EfiMpServiceProtocolShellUnitTest.inf
new file mode 100644
index 0000000000..34c1ea96a6
--- /dev/null
+++ b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtoco=
lShellUnitTest.inf
@@ -0,0 +1,43 @@
+## @file=0D
+# UEFI application that tests EfiMpServiceProtocol in Shell.=0D
+#=0D
+# Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>=0D
+# SPDX-License-Identifier: BSD-2-Clause-Patent=0D
+#=0D
+##=0D
+=0D
+[Defines]=0D
+ INF_VERSION =3D 0x00010005=0D
+ BASE_NAME =3D MpProtocolUnitTest=0D
+ FILE_GUID =3D 4CEE6399-A22C-4FFD-B148-3A56B1DD83F1=0D
+ MODULE_TYPE =3D UEFI_APPLICATION=0D
+ VERSION_STRING =3D 1.0=0D
+ ENTRY_POINT =3D DxeEntryPoint=0D
+=0D
+#=0D
+# The following information is for reference only and not required by the =
build tools.=0D
+#=0D
+# VALID_ARCHITECTURES =3D IA32 X64=0D
+#=0D
+=0D
+[Sources]=0D
+ EfiMpServicesUnitTestCommom.c=0D
+ EfiMpServicesUnitTestCommom.h=0D
+ EfiMpServiceProtocolUnitTest.c=0D
+=0D
+[Packages]=0D
+ MdePkg/MdePkg.dec=0D
+ UefiCpuPkg/UefiCpuPkg.dec=0D
+=0D
+[LibraryClasses]=0D
+ BaseLib=0D
+ DebugLib=0D
+ BaseMemoryLib=0D
+ MemoryAllocationLib=0D
+ UefiApplicationEntryPoint=0D
+ UefiBootServicesTableLib=0D
+ UnitTestPersistenceLib=0D
+ UnitTestLib=0D
+=0D
+[Protocols]=0D
+ gEfiMpServiceProtocolGuid ## CONSUMES=0D
diff --git a/UefiCpuPkg/UefiCpuPkg.dsc b/UefiCpuPkg/UefiCpuPkg.dsc
index 67b0ce46e4..f9a46089d2 100644
--- a/UefiCpuPkg/UefiCpuPkg.dsc
+++ b/UefiCpuPkg/UefiCpuPkg.dsc
@@ -183,6 +183,14 @@
UefiCpuPkg/Library/CpuExceptionHandlerLib/UnitTest/PeiCpuExceptionHandle=
rLibUnitTest.inf=0D
UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EdkiiPeiMpServices2Ppi=
PeiUnitTest.inf=0D
UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDx=
eUnitTest.inf=0D
+ UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDy=
namicCmdUnitTest.inf {=0D
+ <LibraryClasses>=0D
+ UnitTestResultReportLib|UnitTestFrameworkPkg/Library/UnitTestResultR=
eportLib/UnitTestResultReportLibConOut.inf=0D
+ }=0D
+ UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolSh=
ellUnitTest.inf {=0D
+ <LibraryClasses>=0D
+ UnitTestResultReportLib|UnitTestFrameworkPkg/Library/UnitTestResultR=
eportLib/UnitTestResultReportLibConOut.inf=0D
+ }=0D
=0D
[Components.X64]=0D
UefiCpuPkg/Library/CpuExceptionHandlerLib/UnitTest/DxeCpuExceptionHandle=
rLibUnitTest.inf=0D
--=20
2.28.0.windows.1


Zhiguang Liu
 

Reviewed-by: Zhiguang Liu <zhiguang.liu@...>


duntan
 

Reviewed-by: Dun Tan <dun.tan@...>

-----Original Message-----
From: Lou, Yun <yun.lou@...>
Sent: Thursday, November 24, 2022 8:12 PM
To: devel@edk2.groups.io
Cc: Lou, Yun <yun.lou@...>; Ni, Ray <ray.ni@...>; Dong, Eric <eric.dong@...>; Laszlo Ersek <lersek@...>; Kumar, Rahul R <rahul.r.kumar@...>; Liu, Zhiguang <zhiguang.liu@...>; Tan, Dun <dun.tan@...>
Subject: [PATCH v1 2/2] UefiCpuPkg/Test: develop UEFI App and dynamic cmd for MP services UT

From: Jason Lou <yun.lou@...>

The code changes develop UEFI application and dynamic command for EfiMpServiceProtocol unit tests based on current UnitTestFramework.

Signed-off-by: Jason Lou <yun.lou@...>
Reviewed-by: Ray Ni <ray.ni@...>
Cc: Eric Dong <eric.dong@...>
Cc: Laszlo Ersek <lersek@...>
Cc: Rahul Kumar <rahul1.kumar@...>
Cc: Zhiguang Liu <zhiguang.liu@...>
Cc: Dun Tan <dun.tan@...>
---
UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDynamicCmdUnitTest.c | 129 ++++++++++++++++++++
UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDynamicCmdUnitTest.inf | 45 +++++++
UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolShellUnitTest.inf | 43 +++++++
UefiCpuPkg/UefiCpuPkg.dsc | 8 ++
4 files changed, 225 insertions(+)

diff --git a/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDynamicCmdUnitTest.c b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDynamicCmdUnitTest.c
new file mode 100644
index 0000000000..be65c3d678
--- /dev/null
+++ b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProt
+++ ocolDynamicCmdUnitTest.c
@@ -0,0 +1,129 @@
+/** @file+ Produce "MpProtocolUnitTest" shell dynamic command.++ Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>++ SPDX-License-Identifier: BSD-2-Clause-Patent++**/++#include <Library/UefiBootServicesTableLib.h>+#include <Protocol/ShellDynamicCommand.h>+#include "EfiMpServicesUnitTestCommom.h"++CHAR16 *mMpProtocolUnitTestCommandHelp = L".TH MpProtocolUnitTest 0\r\n.SH NAME\r\nDisplay unit test results of EFI MP services protocol.\r\n";++EFI_STATUS+EFIAPI+EfiMpServiceProtocolUnitTest (+ VOID+ );++/**+ This is the shell command handler function pointer callback type. This+ function handles the command when it is invoked in the shell.++ @param[in] This The instance of the EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL.+ @param[in] SystemTable The pointer to the system table.+ @param[in] ShellParameters The parameters associated with the command.+ @param[in] Shell The instance of the shell protocol used in the context+ of processing this command.++ @return EFI_SUCCESS the operation was successful+ @return other the operation failed.+**/+SHELL_STATUS+EFIAPI+MpProtocolUnitTestCommandHandler (+ IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,+ IN EFI_SYSTEM_TABLE *SystemTable,+ IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,+ IN EFI_SHELL_PROTOCOL *Shell+ )+{+ return EfiMpServiceProtocolUnitTest ();+}++/**+ This is the command help handler function pointer callback type. This+ function is responsible for displaying help information for the associated+ command.++ @param[in] This The instance of the EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL.+ @param[in] Language The pointer to the language string to use.++ @return string Pool allocated help string, must be freed by caller+**/+CHAR16 *+EFIAPI+MpProtocolUnitTestCommandGetHelp (+ IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,+ IN CONST CHAR8 *Language+ )+{+ return AllocateCopyPool (StrSize (mMpProtocolUnitTestCommandHelp), mMpProtocolUnitTestCommandHelp);+}++EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mMpProtocolUnitTestDynamicCommand = {+ L"MpProtocolUnitTest",+ MpProtocolUnitTestCommandHandler,+ MpProtocolUnitTestCommandGetHelp+};++/**+ Entry point of MpProtocolUnitTest Dynamic Command.++ Produce the DynamicCommand protocol to handle "MpProtocolUnitTest" command.++ @param ImageHandle The image handle of the process.+ @param SystemTable The EFI System Table pointer.++ @retval EFI_SUCCESS Tftp command is executed successfully.+ @retval EFI_ABORTED HII package was failed to initialize.+ @retval others Other errors when executing MpProtocolUnitTest command.+**/+EFI_STATUS+EFIAPI+MpProtocolUnitTestCommandInitialize (+ IN EFI_HANDLE ImageHandle,+ IN EFI_SYSTEM_TABLE *SystemTable+ )+{+ EFI_STATUS Status;++ Status = gBS->InstallProtocolInterface (+ &ImageHandle,+ &gEfiShellDynamicCommandProtocolGuid,+ EFI_NATIVE_INTERFACE,+ &mMpProtocolUnitTestDynamicCommand+ );+ ASSERT_EFI_ERROR (Status);++ return Status;+}++/**+ Driver unload handler.++ @param ImageHandle The image handle of the process.++ @retval EFI_SUCCESS The image is unloaded.+ @retval Others Failed to unload the image.+**/+EFI_STATUS+EFIAPI+MpProtocolUnitTestUnload (+ IN EFI_HANDLE ImageHandle+ )+{+ EFI_STATUS Status;++ Status = gBS->UninstallProtocolInterface (+ ImageHandle,+ &gEfiShellDynamicCommandProtocolGuid,+ &mMpProtocolUnitTestDynamicCommand+ );+ ASSERT_EFI_ERROR (Status);++ return Status;+}diff --git a/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDynamicCmdUnitTest.inf b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDynamicCmdUnitTest.inf
new file mode 100644
index 0000000000..3fa287d1ae
--- /dev/null
+++ b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProt
+++ ocolDynamicCmdUnitTest.inf
@@ -0,0 +1,45 @@
+## @file+# DXE driver that provides Shell 'MpProtocolUnitTest' dynamic command to test EfiMpServiceProtocol.+#+# Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>+# SPDX-License-Identifier: BSD-2-Clause-Patent+#+##++[Defines]+ INF_VERSION = 0x00010005+ BASE_NAME = EfiMpServiceProtocolDynamicCmdUnitTest+ FILE_GUID = 8C4624B1-58CC-4DF6-9E6D-09B38D67DFA6+ MODULE_TYPE = DXE_DRIVER+ VERSION_STRING = 1.0+ ENTRY_POINT = MpProtocolUnitTestCommandInitialize+ UNLOAD_IMAGE = MpProtocolUnitTestUnload++[Sources]+ EfiMpServicesUnitTestCommom.c+ EfiMpServicesUnitTestCommom.h+ EfiMpServiceProtocolUnitTest.c+ EfiMpServiceProtocolDynamicCmdUnitTest.c++[Packages]+ MdePkg/MdePkg.dec+ MdeModulePkg/MdeModulePkg.dec+ UefiCpuPkg/UefiCpuPkg.dec++[LibraryClasses]+ BaseLib+ DebugLib+ BaseMemoryLib+ MemoryAllocationLib+ UefiDriverEntryPoint+ UefiBootServicesTableLib+ UefiLib+ UnitTestPersistenceLib+ UnitTestLib++[Protocols]+ gEfiMpServiceProtocolGuid ## CONSUMES+ gEfiShellDynamicCommandProtocolGuid ## PRODUCES++[Depex]+ TRUEdiff --git a/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolShellUnitTest.inf b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolShellUnitTest.inf
new file mode 100644
index 0000000000..34c1ea96a6
--- /dev/null
+++ b/UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProt
+++ ocolShellUnitTest.inf
@@ -0,0 +1,43 @@
+## @file+# UEFI application that tests EfiMpServiceProtocol in Shell.+#+# Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>+# SPDX-License-Identifier: BSD-2-Clause-Patent+#+##++[Defines]+ INF_VERSION = 0x00010005+ BASE_NAME = MpProtocolUnitTest+ FILE_GUID = 4CEE6399-A22C-4FFD-B148-3A56B1DD83F1+ MODULE_TYPE = UEFI_APPLICATION+ VERSION_STRING = 1.0+ ENTRY_POINT = DxeEntryPoint++#+# The following information is for reference only and not required by the build tools.+#+# VALID_ARCHITECTURES = IA32 X64+#++[Sources]+ EfiMpServicesUnitTestCommom.c+ EfiMpServicesUnitTestCommom.h+ EfiMpServiceProtocolUnitTest.c++[Packages]+ MdePkg/MdePkg.dec+ UefiCpuPkg/UefiCpuPkg.dec++[LibraryClasses]+ BaseLib+ DebugLib+ BaseMemoryLib+ MemoryAllocationLib+ UefiApplicationEntryPoint+ UefiBootServicesTableLib+ UnitTestPersistenceLib+ UnitTestLib++[Protocols]+ gEfiMpServiceProtocolGuid ## CONSUMESdiff --git a/UefiCpuPkg/UefiCpuPkg.dsc b/UefiCpuPkg/UefiCpuPkg.dsc
index 67b0ce46e4..f9a46089d2 100644
--- a/UefiCpuPkg/UefiCpuPkg.dsc
+++ b/UefiCpuPkg/UefiCpuPkg.dsc
@@ -183,6 +183,14 @@
UefiCpuPkg/Library/CpuExceptionHandlerLib/UnitTest/PeiCpuExceptionHandlerLibUnitTest.inf UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EdkiiPeiMpServices2PpiPeiUnitTest.inf UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDxeUnitTest.inf+ UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolDynamicCmdUnitTest.inf {+ <LibraryClasses>+ UnitTestResultReportLib|UnitTestFrameworkPkg/Library/UnitTestResultReportLib/UnitTestResultReportLibConOut.inf+ }+ UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol/EfiMpServiceProtocolShellUnitTest.inf {+ <LibraryClasses>+ UnitTestResultReportLib|UnitTestFrameworkPkg/Library/UnitTestResultReportLib/UnitTestResultReportLibConOut.inf+ } [Components.X64] UefiCpuPkg/Library/CpuExceptionHandlerLib/UnitTest/DxeCpuExceptionHandlerLibUnitTest.inf--
2.28.0.windows.1