]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiCpuPkg/PiSmmCpuDxeSmm: Move forward MP sync data initialization
authorJeff Fan <jeff.fan@intel.com>
Tue, 22 Mar 2016 02:08:03 +0000 (10:08 +0800)
committerMichael Kinney <michael.d.kinney@intel.com>
Tue, 24 May 2016 22:19:55 +0000 (15:19 -0700)
Move MP sync data initialization in front of the place that initialize
page table, because the page fault spin lock is allocated in
InitializeMpSyncData() while it is initialized in SmmInitPageTable().

Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Feng Tian <feng.tian@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c

index aa25f3ea4751b7fb96e8e53ff63172865824ccda..68ef0a34272de1d74391428597a77a2cf69ebbc4 100644 (file)
@@ -1284,6 +1284,15 @@ InitializeMpServiceData (
   UINT8                     *GdtTssTables;\r
   UINTN                     GdtTableStepSize;\r
 \r
+  //\r
+  // Initialize mSmmMpSyncData\r
+  //\r
+  mSmmMpSyncDataSize = sizeof (SMM_DISPATCHER_MP_SYNC_DATA) +\r
+                       (sizeof (SMM_CPU_DATA_BLOCK) + sizeof (BOOLEAN)) * gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus;\r
+  mSmmMpSyncData = (SMM_DISPATCHER_MP_SYNC_DATA*) AllocatePages (EFI_SIZE_TO_PAGES (mSmmMpSyncDataSize));\r
+  ASSERT (mSmmMpSyncData != NULL);\r
+  InitializeMpSyncData ();\r
+\r
   //\r
   // Initialize physical address mask\r
   // NOTE: Physical memory above virtual address limit is not supported !!!\r
@@ -1324,15 +1333,6 @@ InitializeMpServiceData (
       );\r
   }\r
 \r
-  //\r
-  // Initialize mSmmMpSyncData\r
-  //\r
-  mSmmMpSyncDataSize = sizeof (SMM_DISPATCHER_MP_SYNC_DATA) +\r
-                       (sizeof (SMM_CPU_DATA_BLOCK) + sizeof (BOOLEAN)) * gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus;\r
-  mSmmMpSyncData = (SMM_DISPATCHER_MP_SYNC_DATA*) AllocatePages (EFI_SIZE_TO_PAGES (mSmmMpSyncDataSize));\r
-  ASSERT (mSmmMpSyncData != NULL);\r
-  InitializeMpSyncData ();\r
-\r
   //\r
   // Record current MTRR settings\r
   //\r