Reviewed-by: Ray Ni <ray...@intel.com> > -----Original Message----- > From: Wu, Jiaxin <jiaxin...@intel.com> > Sent: Monday, February 13, 2023 4:44 PM > To: devel@edk2.groups.io > Cc: Dong, Eric <eric.d...@intel.com>; Ni, Ray <ray...@intel.com>; Zeng, Star > <star.z...@intel.com>; Laszlo Ersek <ler...@redhat.com>; Gerd Hoffmann > <kra...@redhat.com>; Kumar, Rahul R <rahul.r.ku...@intel.com> > Subject: [PATCH v6 2/6] UefiCpuPkg/PiSmmCpuDxeSmm: Replace mIsBsp by > mBspApicId > > This patch is to replace mIsBsp by mBspApicId. > > Cc: Eric Dong <eric.d...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Cc: Zeng Star <star.z...@intel.com> > Cc: Laszlo Ersek <ler...@redhat.com> > Cc: Gerd Hoffmann <kra...@redhat.com> > Cc: Rahul Kumar <rahul1.ku...@intel.com> > Signed-off-by: Jiaxin Wu <jiaxin...@intel.com> > --- > UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c | 23 ++++++++++++- > ---------- > 1 file changed, 12 insertions(+), 11 deletions(-) > > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c > b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c > index 2ac655d032..6e795d1756 100644 > --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c > +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c > @@ -57,11 +57,10 @@ SMM_CPU_PRIVATE_DATA *gSmmCpuPrivate = > &mSmmCpuPrivateData; > > // > // SMM Relocation variables > // > volatile BOOLEAN *mRebased; > -volatile BOOLEAN mIsBsp; > > /// > /// Handle for the SMM CPU Protocol > /// > EFI_HANDLE mSmmCpuHandle = NULL; > @@ -83,10 +82,12 @@ EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL > mSmmMemoryAttribute = { > EdkiiSmmClearMemoryAttributes > }; > > EFI_CPU_INTERRUPT_HANDLER > mExternalVectorTable[EXCEPTION_VECTOR_NUMBER]; > > +UINT32 mBspApicId = 0; > + > // > // SMM stack information > // > UINTN mSmmStackArrayBase; > UINTN mSmmStackArrayEnd; > @@ -341,39 +342,42 @@ VOID > EFIAPI > SmmInitHandler ( > VOID > ) > { > - UINT32 ApicId; > - UINTN Index; > + UINT32 ApicId; > + UINTN Index; > + BOOLEAN IsBsp; > > // > // Update SMM IDT entries' code segment and load IDT > // > AsmWriteIdtr (&gcSmiIdtr); > ApicId = GetApicId (); > > + IsBsp = (BOOLEAN)(mBspApicId == ApicId); > + > ASSERT (mNumberOfCpus <= mMaxNumberOfCpus); > > for (Index = 0; Index < mNumberOfCpus; Index++) { > if (ApicId == (UINT32)gSmmCpuPrivate->ProcessorInfo[Index].ProcessorId) > { > // > // Initialize SMM specific features on the currently executing CPU > // > SmmCpuFeaturesInitializeProcessor ( > Index, > - mIsBsp, > + IsBsp, > gSmmCpuPrivate->ProcessorInfo, > &mCpuHotPlugData > ); > > if (!mSmmS3Flag) { > // > // Check XD and BTS features on each processor on normal boot > // > CheckFeatureSupported (); > - } else if (mIsBsp) { > + } else if (IsBsp) { > // > // BSP rebase is already done above. > // Initialize private data during S3 resume > // > InitializeMpSyncData (); > @@ -405,11 +409,10 @@ SmmRelocateBases ( > { > UINT8 BakBuf[BACK_BUF_SIZE]; > SMRAM_SAVE_STATE_MAP BakBuf2; > SMRAM_SAVE_STATE_MAP *CpuStatePtr; > UINT8 *U8Ptr; > - UINT32 ApicId; > UINTN Index; > UINTN BspIndex; > > // > // Make sure the reserved size is large enough for procedure > SmmInitTemplate. > @@ -446,21 +449,20 @@ SmmRelocateBases ( > CopyMem (U8Ptr, gcSmmInitTemplate, gcSmmInitSize); > > // > // Retrieve the local APIC ID of current processor > // > - ApicId = GetApicId (); > + mBspApicId = GetApicId (); > > // > // Relocate SM bases for all APs > // This is APs' 1st SMI - rebase will be done here, and APs' default SMI > handler will be overridden by gcSmmInitTemplate > // > - mIsBsp = FALSE; > BspIndex = (UINTN)-1; > for (Index = 0; Index < mNumberOfCpus; Index++) { > mRebased[Index] = FALSE; > - if (ApicId != (UINT32)gSmmCpuPrivate->ProcessorInfo[Index].ProcessorId) > { > + if (mBspApicId != (UINT32)gSmmCpuPrivate- > >ProcessorInfo[Index].ProcessorId) { > SendSmiIpi ((UINT32)gSmmCpuPrivate- > >ProcessorInfo[Index].ProcessorId); > // > // Wait for this AP to finish its 1st SMI > // > while (!mRebased[Index]) { > @@ -475,12 +477,11 @@ SmmRelocateBases ( > > // > // Relocate BSP's SMM base > // > ASSERT (BspIndex != (UINTN)-1); > - mIsBsp = TRUE; > - SendSmiIpi (ApicId); > + SendSmiIpi (mBspApicId); > // > // Wait for the BSP to finish its 1st SMI > // > while (!mRebased[BspIndex]) { > } > -- > 2.16.2.windows.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#100069): https://edk2.groups.io/g/devel/message/100069 Mute This Topic: https://groups.io/mt/96932000/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-