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

Reply via email to