Re: [edk2-devel] [PATCH v3] UefiCpuPkg/PiSmmCpuDxeSmm: Use NonSmm BSP as default SMM BSP.

2023-11-28 Thread Ni, Ray
Reviewed-by: Ray Ni 

Thanks,
Ray
> -Original Message-
> From: Liu, Zhiguang 
> Sent: Thursday, November 23, 2023 11:23 AM
> To: devel@edk2.groups.io
> Cc: Liu, Zhiguang ; Ni, Ray ;
> Kumar, Rahul R ; Gerd Hoffmann
> ; Laszlo Ersek 
> Subject: [PATCH v3] UefiCpuPkg/PiSmmCpuDxeSmm: Use NonSmm BSP as
> default SMM BSP.
> 
> Currently, if BSP election is not enabled, will use Core0 as SMM BSP.
> However, Core0 does not always have the highest performance.
> So, we can used NonSmm BSP as default BSP.
> This will take effect in normal SMM init flow and S3 boot flow.
> In normal SMM flow, the code is executed in Non-SMM mode.
> In S3 flow, the code is executed in Non-SMM BSP's first SMI, where the
> gSmmCpuPrivate keeps the data from last boot.
> 
> V3:
> Add more commit message explaining S3 flow.
> 
> Cc: Ray Ni 
> Cc: Rahul Kumar 
> Cc: Gerd Hoffmann 
> Cc: Laszlo Ersek 
> Signed-off-by: Zhiguang Liu 
> ---
>  UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 10 ++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
> b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
> index 25d058c5b9..b279f5dfcc 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
> @@ -1953,6 +1953,16 @@ InitializeMpSyncData (
>// Enable BSP election by setting BspIndex to -1
>//
>mSmmMpSyncData->BspIndex = (UINT32)-1;
> +} else {
> +  //
> +  // Use NonSMM BSP as SMM BSP
> +  //
> +  for (CpuIndex = 0; CpuIndex <
> gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus; CpuIndex++) {
> +if (GetApicId () ==
> gSmmCpuPrivate->ProcessorInfo[CpuIndex].ProcessorId) {
> +  mSmmMpSyncData->BspIndex = (UINT32)CpuIndex;
> +  break;
> +}
> +  }
>  }
> 
>  mSmmMpSyncData->EffectiveSyncMode = mCpuSmmSyncMode;
> --
> 2.31.1.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#111802): https://edk2.groups.io/g/devel/message/111802
Mute This Topic: https://groups.io/mt/102761712/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: 
https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-




[edk2-devel] [PATCH v3] UefiCpuPkg/PiSmmCpuDxeSmm: Use NonSmm BSP as default SMM BSP.

2023-11-22 Thread Zhiguang Liu
Currently, if BSP election is not enabled, will use Core0 as SMM BSP.
However, Core0 does not always have the highest performance.
So, we can used NonSmm BSP as default BSP.
This will take effect in normal SMM init flow and S3 boot flow.
In normal SMM flow, the code is executed in Non-SMM mode.
In S3 flow, the code is executed in Non-SMM BSP's first SMI, where the
gSmmCpuPrivate keeps the data from last boot.

V3:
Add more commit message explaining S3 flow.

Cc: Ray Ni 
Cc: Rahul Kumar 
Cc: Gerd Hoffmann 
Cc: Laszlo Ersek 
Signed-off-by: Zhiguang Liu 
---
 UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 10 ++
 1 file changed, 10 insertions(+)

diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c 
b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
index 25d058c5b9..b279f5dfcc 100644
--- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
+++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
@@ -1953,6 +1953,16 @@ InitializeMpSyncData (
   // Enable BSP election by setting BspIndex to -1
   //
   mSmmMpSyncData->BspIndex = (UINT32)-1;
+} else {
+  //
+  // Use NonSMM BSP as SMM BSP
+  //
+  for (CpuIndex = 0; CpuIndex < 
gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus; CpuIndex++) {
+if (GetApicId () == 
gSmmCpuPrivate->ProcessorInfo[CpuIndex].ProcessorId) {
+  mSmmMpSyncData->BspIndex = (UINT32)CpuIndex;
+  break;
+}
+  }
 }
 
 mSmmMpSyncData->EffectiveSyncMode = mCpuSmmSyncMode;
-- 
2.31.1.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#111645): https://edk2.groups.io/g/devel/message/111645
Mute This Topic: https://groups.io/mt/102761712/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-