UefiCpuPkg/PiSmmCpuDxeSmm: Consume SmmCpuSyncLib
There is the SmmCpuSyncLib Library class define the SMM CPU sync flow, which is aligned with existing SMM CPU driver sync behavior. This patch is to consume SmmCpuSyncLib instance directly. With this change, SMM CPU Sync flow/logic can be customized with different implementation no matter for any purpose, e.g. performance tuning, handle specific register, etc. Cc: Laszlo Ersek <lersek@redhat.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Zeng Star <star.zeng@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
@@ -54,6 +54,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#include <Library/PerformanceLib.h>
|
||||
#include <Library/CpuPageTableLib.h>
|
||||
#include <Library/MmSaveStateLib.h>
|
||||
#include <Library/SmmCpuSyncLib.h>
|
||||
|
||||
#include <AcpiCpuData.h>
|
||||
#include <CpuHotPlugData.h>
|
||||
@@ -405,7 +406,6 @@ typedef struct {
|
||||
SPIN_LOCK *Busy;
|
||||
volatile EFI_AP_PROCEDURE2 Procedure;
|
||||
volatile VOID *Parameter;
|
||||
volatile UINT32 *Run;
|
||||
volatile BOOLEAN *Present;
|
||||
PROCEDURE_TOKEN *Token;
|
||||
EFI_STATUS *Status;
|
||||
@@ -423,7 +423,6 @@ typedef struct {
|
||||
// so that UC cache-ability can be set together.
|
||||
//
|
||||
SMM_CPU_DATA_BLOCK *CpuData;
|
||||
volatile UINT32 *Counter;
|
||||
volatile UINT32 BspIndex;
|
||||
volatile BOOLEAN *InsideSmm;
|
||||
volatile BOOLEAN *AllCpusInSync;
|
||||
@@ -433,6 +432,7 @@ typedef struct {
|
||||
volatile BOOLEAN AllApArrivedWithException;
|
||||
EFI_AP_PROCEDURE StartupProcedure;
|
||||
VOID *StartupProcArgs;
|
||||
SMM_CPU_SYNC_CONTEXT *SyncContext;
|
||||
} SMM_DISPATCHER_MP_SYNC_DATA;
|
||||
|
||||
#define SMM_PSD_OFFSET 0xfb00
|
||||
@@ -441,7 +441,6 @@ typedef struct {
|
||||
/// All global semaphores' pointer
|
||||
///
|
||||
typedef struct {
|
||||
volatile UINT32 *Counter;
|
||||
volatile BOOLEAN *InsideSmm;
|
||||
volatile BOOLEAN *AllCpusInSync;
|
||||
SPIN_LOCK *PFLock;
|
||||
@@ -453,7 +452,6 @@ typedef struct {
|
||||
///
|
||||
typedef struct {
|
||||
SPIN_LOCK *Busy;
|
||||
volatile UINT32 *Run;
|
||||
volatile BOOLEAN *Present;
|
||||
SPIN_LOCK *Token;
|
||||
} SMM_CPU_SEMAPHORE_CPU;
|
||||
|
Reference in New Issue
Block a user