diff --git a/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c b/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c
index b399f1c..eb36d6f 100644
--- a/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c
+++ b/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c
@@ -290,6 +290,13 @@
 
   SaveCpuMpData (CpuMpData);
 
+  if (CpuMpData->CpuCount == 1) {
+    //
+    // If only BSP exists, return
+    //
+    return;
+  }
+
   //
   // Avoid APs access invalid buff data which allocated by BootServices,
   // so we will allocate reserved data for AP loop code.
diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c
index 56b870e..a0edc55 100644
--- a/UefiCpuPkg/Library/MpInitLib/MpLib.c
+++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c
@@ -1143,6 +1143,7 @@
   } else {
     MaxLogicalProcessorNumber = OldCpuMpData->CpuCount;
   }
+  ASSERT (MaxLogicalProcessorNumber != 0);
 
   AsmGetAddressMap (&AddressMap);
   ApResetVectorSize = AddressMap.RendezvousFunnelSize + sizeof (MP_CPU_EXCHANGE_INFO);
@@ -1209,10 +1210,12 @@
   MtrrGetAllMtrrs (&CpuMpData->MtrrTable);
 
   if (OldCpuMpData == NULL) {
-    //
-    // Wakeup all APs and calculate the processor count in system
-    //
-    CollectProcessorCount (CpuMpData);
+    if (MaxLogicalProcessorNumber > 1) {
+      //
+      // Wakeup all APs and calculate the processor count in system
+      //
+      CollectProcessorCount (CpuMpData);
+    }
   } else {
     //
     // APs have been wakeup before, just get the CPU Information
@@ -1238,19 +1241,21 @@
         sizeof (CPU_VOLATILE_REGISTERS)
         );
     }
-    //
-    // Wakeup APs to do some AP initialize sync
-    //
-    WakeUpAP (CpuMpData, TRUE, 0, ApInitializeSync, CpuMpData);
-    //
-    // Wait for all APs finished initialization
-    //
-    while (CpuMpData->FinishedCount < (CpuMpData->CpuCount - 1)) {
-      CpuPause ();
-    }
-    CpuMpData->InitFlag = ApInitDone;
-    for (Index = 0; Index < CpuMpData->CpuCount; Index++) {
-      SetApState (&CpuMpData->CpuData[Index], CpuStateIdle);
+    if (MaxLogicalProcessorNumber > 1) {
+      //
+      // Wakeup APs to do some AP initialize sync
+      //
+      WakeUpAP (CpuMpData, TRUE, 0, ApInitializeSync, CpuMpData);
+      //
+      // Wait for all APs finished initialization
+      //
+      while (CpuMpData->FinishedCount < (CpuMpData->CpuCount - 1)) {
+        CpuPause ();
+      }
+      CpuMpData->InitFlag = ApInitDone;
+      for (Index = 0; Index < CpuMpData->CpuCount; Index++) {
+        SetApState (&CpuMpData->CpuData[Index], CpuStateIdle);
+      }
     }
   }
 
diff --git a/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
index e242d37..1f2fcb8 100644
--- a/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
+++ b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
@@ -321,6 +321,14 @@
   EFI_STATUS      Status;
 
   SaveCpuMpData (CpuMpData);
+
+  if (CpuMpData->CpuCount == 1) {
+    //
+    // If only BSP exists, return
+    //
+    return;
+  }
+
   //
   // Register an event for EndOfPei
   //
