On 07/20/16 01:38, Michael Kinney wrote: > From: Jeff Fan <[email protected]> > > The commit 8b9311 changed the zeroing of mSmmMpSyncData of type > SMM_DISPATCHER_MP_SYNC_DATA by the following patch. > - ZeroMem (mSmmMpSyncData, mSmmMpSyncDataSize); > + mSmmMpSyncData->SwitchBsp = FALSE; > > mSmmMpSyncDataSize not only includes SMM_DISPATCHER_MP_SYNC_DATA, but > also includes the SMM_CPU_DATA_BLOCK array and one BOOLEAN variable > array as shown here: > > mSmmMpSyncDataSize = sizeof (SMM_DISPATCHER_MP_SYNC_DATA) + > (sizeof (SMM_CPU_DATA_BLOCK) + sizeof (BOOLEAN)) * > gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus; > > This patch restores the original ZeroMem() to clear all CPU Sync data. > The commit 8b9311 may cause unexpected behavior. > > v2: > Mentioned CandidateBsp array in comments to make it more accurate. > > Cc: Laszlo Ersek <[email protected]> > Cc: Feng Tian <[email protected]> > Cc: Michael Kinney <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Jeff Fan <[email protected]> > Reviewed-by: Feng Tian <[email protected]> > --- > UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c > b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c > index 5ba0514..12466ef 100644 > --- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c > +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c > @@ -1276,7 +1276,11 @@ InitializeMpSyncData ( > UINTN CpuIndex; > > if (mSmmMpSyncData != NULL) { > - mSmmMpSyncData->SwitchBsp = FALSE; > + // > + // mSmmMpSyncDataSize includes one structure of > SMM_DISPATCHER_MP_SYNC_DATA, one > + // CpuData array of SMM_CPU_DATA_BLOCK and one CandidateBsp array of > BOOLEAN. > + // > + ZeroMem (mSmmMpSyncData, mSmmMpSyncDataSize); > mSmmMpSyncData->CpuData = (SMM_CPU_DATA_BLOCK *)((UINT8 *)mSmmMpSyncData > + sizeof (SMM_DISPATCHER_MP_SYNC_DATA)); > mSmmMpSyncData->CandidateBsp = (BOOLEAN *)(mSmmMpSyncData->CpuData + > gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus); > if (FeaturePcdGet (PcdCpuSmmEnableBspElection)) { >
Reviewed-by: Laszlo Ersek <[email protected]> Thanks! Laszlo _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

