public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-devel] [PATCH v2 1/1] UefiCpuPkg/MpInitLib: add struct MP_HAND_OFF_CONFIG
@ 2024-02-28 11:48 Gerd Hoffmann
  2024-02-29  8:52 ` Laszlo Ersek
  2024-02-29 10:22 ` Laszlo Ersek
  0 siblings, 2 replies; 3+ messages in thread
From: Gerd Hoffmann @ 2024-02-28 11:48 UTC (permalink / raw)
  To: devel; +Cc: Rahul Kumar, Ray Ni, Laszlo Ersek, Oliver Steffen, Gerd Hoffmann

Move the WaitLoopExecutionMode and StartupSignalValue fields to a
separate HOB with the new struct.

WaitLoopExecutionMode and StartupSignalValue are independent of
processor index ranges; they are global to MpInitLib (i.e., the entire
system). Therefore they shouldn't be repeated in every MpHandOff GUID
HOB.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 UefiCpuPkg/Library/MpInitLib/MpHandOff.h | 13 ++++++-
 UefiCpuPkg/Library/MpInitLib/MpLib.h     |  3 +-
 UefiCpuPkg/Library/MpInitLib/MpLib.c     | 47 +++++++++++++++++++++---
 UefiCpuPkg/Library/MpInitLib/PeiMpLib.c  | 34 ++++++++++-------
 4 files changed, 75 insertions(+), 22 deletions(-)

diff --git a/UefiCpuPkg/Library/MpInitLib/MpHandOff.h b/UefiCpuPkg/Library/MpInitLib/MpHandOff.h
index 77854d6a81f8..ae93b7e3d7c9 100644
--- a/UefiCpuPkg/Library/MpInitLib/MpHandOff.h
+++ b/UefiCpuPkg/Library/MpInitLib/MpHandOff.h
@@ -15,7 +15,13 @@
     0x11e2bd88, 0xed38, 0x4abd, {0xa3, 0x99, 0x21, 0xf2, 0x5f, 0xd0, 0x7a, 0x60 } \
   }
 
+#define MP_HANDOFF_CONFIG_GUID \
+  { \
+    0xdabbd793, 0x7b46, 0x4144, {0x8a, 0xd4, 0x10, 0x1c, 0x7c, 0x08, 0xeb, 0xfa } \
+  }
+
 extern EFI_GUID  mMpHandOffGuid;
+extern EFI_GUID  mMpHandOffConfigGuid;
 
 //
 // The information required to transfer from the PEI phase to the
@@ -43,8 +49,11 @@ typedef struct {
   //
   UINT32                ProcessorIndex;
   UINT32                CpuCount;
-  UINT32                WaitLoopExecutionMode;
-  UINT32                StartupSignalValue;
   PROCESSOR_HAND_OFF    Info[];
 } MP_HAND_OFF;
+
+typedef struct {
+  UINT32    WaitLoopExecutionMode;
+  UINT32    StartupSignalValue;
+} MP_HAND_OFF_CONFIG;
 #endif
diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h b/UefiCpuPkg/Library/MpInitLib/MpLib.h
index 3a7b9896cff4..d26035559f22 100644
--- a/UefiCpuPkg/Library/MpInitLib/MpLib.h
+++ b/UefiCpuPkg/Library/MpInitLib/MpLib.h
@@ -482,7 +482,8 @@ GetWakeupBuffer (
 **/
 VOID
 SwitchApContext (
-  IN CONST MP_HAND_OFF  *FirstMpHandOff
+  IN CONST MP_HAND_OFF_CONFIG  *MpHandOffConfig,
+  IN CONST MP_HAND_OFF         *FirstMpHandOff
   );
 
 /**
diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c
index 8c186211fb38..9bac62f289e0 100644
--- a/UefiCpuPkg/Library/MpInitLib/MpLib.c
+++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c
@@ -15,6 +15,7 @@
 
 EFI_GUID  mCpuInitMpLibHobGuid = CPU_INIT_MP_LIB_HOB_GUID;
 EFI_GUID  mMpHandOffGuid       = MP_HANDOFF_GUID;
+EFI_GUID  mMpHandOffConfigGuid = MP_HANDOFF_CONFIG_GUID;
 
 /**
   Save the volatile registers required to be restored following INIT IPI.
@@ -1935,11 +1936,13 @@ GetBspNumber (
   This procedure allows the AP to switch to another section of
   memory and continue its loop there.
 
-  @param[in] FirstMpHandOff  Pointer to first MP hand-off HOB body.
+  @param[in] MpHandOffConfig  Pointer to MP hand-off config HOB body.
+  @param[in] FirstMpHandOff   Pointer to first MP hand-off HOB body.
 **/
 VOID
 SwitchApContext (
-  IN CONST MP_HAND_OFF  *FirstMpHandOff
+  IN CONST MP_HAND_OFF_CONFIG  *MpHandOffConfig,
+  IN CONST MP_HAND_OFF         *FirstMpHandOff
   )
 {
   UINTN              Index;
@@ -1955,7 +1958,7 @@ SwitchApContext (
     for (Index = 0; Index < MpHandOff->CpuCount; Index++) {
       if (MpHandOff->ProcessorIndex + Index != BspNumber) {
         *(UINTN *)(UINTN)MpHandOff->Info[Index].StartupProcedureAddress = (UINTN)SwitchContextPerAp;
-        *(UINT32 *)(UINTN)MpHandOff->Info[Index].StartupSignalAddress   = MpHandOff->StartupSignalValue;
+        *(UINT32 *)(UINTN)MpHandOff->Info[Index].StartupSignalAddress   = MpHandOffConfig->StartupSignalValue;
       }
     }
   }
@@ -1975,6 +1978,26 @@ SwitchApContext (
   }
 }
 
+/**
+  Get pointer to MP_HAND_OFF_CONFIG GUIDed HOB body.
+
+  @return  The pointer to MP_HAND_OFF_CONFIG structure.
+**/
+MP_HAND_OFF_CONFIG *
+GetMpHandOffConfigHob (
+  VOID
+  )
+{
+  EFI_HOB_GUID_TYPE  *GuidHob;
+
+  GuidHob = GetFirstGuidHob (&mMpHandOffConfigGuid);
+  if (GuidHob == NULL) {
+    return NULL;
+  }
+
+  return (MP_HAND_OFF_CONFIG *)GET_GUID_HOB_DATA (GuidHob);
+}
+
 /**
   Get pointer to next MP_HAND_OFF GUIDed HOB body.
 
@@ -2022,6 +2045,7 @@ MpInitLibInitialize (
   VOID
   )
 {
+  MP_HAND_OFF_CONFIG       *MpHandOffConfig;
   MP_HAND_OFF              *FirstMpHandOff;
   MP_HAND_OFF              *MpHandOff;
   CPU_INFO_IN_HOB          *CpuInfoInHob;
@@ -2239,13 +2263,24 @@ MpInitLibInitialize (
       }
     }
 
+    MpHandOffConfig = GetMpHandOffConfigHob ();
+    if (MpHandOffConfig == NULL) {
+      DEBUG ((
+        DEBUG_ERROR,
+        "%a: at least one MpHandOff HOB, but no MpHandOffConfig HOB\n",
+        __func__
+        ));
+      ASSERT (MpHandOffConfig != NULL);
+      CpuDeadLoop ();
+    }
+
     DEBUG ((
       DEBUG_INFO,
       "FirstMpHandOff->WaitLoopExecutionMode: %04d, sizeof (VOID *): %04d\n",
-      FirstMpHandOff->WaitLoopExecutionMode,
+      MpHandOffConfig->WaitLoopExecutionMode,
       sizeof (VOID *)
       ));
-    if (FirstMpHandOff->WaitLoopExecutionMode == sizeof (VOID *)) {
+    if (MpHandOffConfig->WaitLoopExecutionMode == sizeof (VOID *)) {
       ASSERT (CpuMpData->ApLoopMode != ApInHltLoop);
 
       CpuMpData->FinishedCount                        = 0;
@@ -2261,7 +2296,7 @@ MpInitLibInitialize (
       // enables the APs to switch to a different memory section and continue their
       // looping process there.
       //
-      SwitchApContext (FirstMpHandOff);
+      SwitchApContext (MpHandOffConfig, FirstMpHandOff);
       //
       // Wait for all APs finished initialization
       //
diff --git a/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
index ec1aa666923d..4d3acb491f36 100644
--- a/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
+++ b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
@@ -126,14 +126,15 @@ SaveCpuMpData (
   IN CPU_MP_DATA  *CpuMpData
   )
 {
-  UINT32           MaxCpusPerHob;
-  UINT32           CpusInHob;
-  UINT64           Data64;
-  UINT32           Index;
-  UINT32           HobBase;
-  CPU_INFO_IN_HOB  *CpuInfoInHob;
-  MP_HAND_OFF      *MpHandOff;
-  UINTN            MpHandOffSize;
+  UINT32              MaxCpusPerHob;
+  UINT32              CpusInHob;
+  UINT64              Data64;
+  UINT32              Index;
+  UINT32              HobBase;
+  CPU_INFO_IN_HOB     *CpuInfoInHob;
+  MP_HAND_OFF         *MpHandOff;
+  MP_HAND_OFF_CONFIG  MpHandOffConfig;
+  UINTN               MpHandOffSize;
 
   MaxCpusPerHob = (0xFFF8 - sizeof (EFI_HOB_GUID_TYPE) - sizeof (MP_HAND_OFF)) / sizeof (PROCESSOR_HAND_OFF);
 
@@ -155,11 +156,6 @@ SaveCpuMpData (
 
       MpHandOff->ProcessorIndex = HobBase;
       MpHandOff->CpuCount       = CpusInHob;
-
-      if (CpuMpData->ApLoopMode != ApInHltLoop) {
-        MpHandOff->StartupSignalValue    = MP_HAND_OFF_SIGNAL;
-        MpHandOff->WaitLoopExecutionMode = sizeof (VOID *);
-      }
     }
 
     MpHandOff->Info[Index-HobBase].ApicId = CpuInfoInHob[Index].ApicId;
@@ -170,6 +166,18 @@ SaveCpuMpData (
     }
   }
 
+  ZeroMem (&MpHandOffConfig, sizeof (MpHandOffConfig));
+  if (CpuMpData->ApLoopMode != ApInHltLoop) {
+    MpHandOffConfig.StartupSignalValue    = MP_HAND_OFF_SIGNAL;
+    MpHandOffConfig.WaitLoopExecutionMode = sizeof (VOID *);
+  }
+
+  BuildGuidDataHob (
+    &mMpHandOffConfigGuid,
+    (VOID *)&MpHandOffConfig,
+    sizeof (MpHandOffConfig)
+    );
+
   //
   // Build location of CPU MP DATA buffer in HOB
   //
-- 
2.44.0



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116115): https://edk2.groups.io/g/devel/message/116115
Mute This Topic: https://groups.io/mt/104621270/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [edk2-devel] [PATCH v2 1/1] UefiCpuPkg/MpInitLib: add struct MP_HAND_OFF_CONFIG
  2024-02-28 11:48 [edk2-devel] [PATCH v2 1/1] UefiCpuPkg/MpInitLib: add struct MP_HAND_OFF_CONFIG Gerd Hoffmann
@ 2024-02-29  8:52 ` Laszlo Ersek
  2024-02-29 10:22 ` Laszlo Ersek
  1 sibling, 0 replies; 3+ messages in thread
From: Laszlo Ersek @ 2024-02-29  8:52 UTC (permalink / raw)
  To: devel, kraxel; +Cc: Rahul Kumar, Ray Ni, Oliver Steffen

On 2/28/24 12:48, Gerd Hoffmann wrote:
> Move the WaitLoopExecutionMode and StartupSignalValue fields to a
> separate HOB with the new struct.
> 
> WaitLoopExecutionMode and StartupSignalValue are independent of
> processor index ranges; they are global to MpInitLib (i.e., the entire
> system). Therefore they shouldn't be repeated in every MpHandOff GUID
> HOB.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  UefiCpuPkg/Library/MpInitLib/MpHandOff.h | 13 ++++++-
>  UefiCpuPkg/Library/MpInitLib/MpLib.h     |  3 +-
>  UefiCpuPkg/Library/MpInitLib/MpLib.c     | 47 +++++++++++++++++++++---
>  UefiCpuPkg/Library/MpInitLib/PeiMpLib.c  | 34 ++++++++++-------
>  4 files changed, 75 insertions(+), 22 deletions(-)
> 
> diff --git a/UefiCpuPkg/Library/MpInitLib/MpHandOff.h b/UefiCpuPkg/Library/MpInitLib/MpHandOff.h
> index 77854d6a81f8..ae93b7e3d7c9 100644
> --- a/UefiCpuPkg/Library/MpInitLib/MpHandOff.h
> +++ b/UefiCpuPkg/Library/MpInitLib/MpHandOff.h
> @@ -15,7 +15,13 @@
>      0x11e2bd88, 0xed38, 0x4abd, {0xa3, 0x99, 0x21, 0xf2, 0x5f, 0xd0, 0x7a, 0x60 } \
>    }
>  
> +#define MP_HANDOFF_CONFIG_GUID \
> +  { \
> +    0xdabbd793, 0x7b46, 0x4144, {0x8a, 0xd4, 0x10, 0x1c, 0x7c, 0x08, 0xeb, 0xfa } \
> +  }
> +
>  extern EFI_GUID  mMpHandOffGuid;
> +extern EFI_GUID  mMpHandOffConfigGuid;
>  
>  //
>  // The information required to transfer from the PEI phase to the
> @@ -43,8 +49,11 @@ typedef struct {
>    //
>    UINT32                ProcessorIndex;
>    UINT32                CpuCount;
> -  UINT32                WaitLoopExecutionMode;
> -  UINT32                StartupSignalValue;
>    PROCESSOR_HAND_OFF    Info[];
>  } MP_HAND_OFF;
> +
> +typedef struct {
> +  UINT32    WaitLoopExecutionMode;
> +  UINT32    StartupSignalValue;
> +} MP_HAND_OFF_CONFIG;
>  #endif
> diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h b/UefiCpuPkg/Library/MpInitLib/MpLib.h
> index 3a7b9896cff4..d26035559f22 100644
> --- a/UefiCpuPkg/Library/MpInitLib/MpLib.h
> +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.h
> @@ -482,7 +482,8 @@ GetWakeupBuffer (
>  **/
>  VOID
>  SwitchApContext (
> -  IN CONST MP_HAND_OFF  *FirstMpHandOff
> +  IN CONST MP_HAND_OFF_CONFIG  *MpHandOffConfig,
> +  IN CONST MP_HAND_OFF         *FirstMpHandOff
>    );
>  
>  /**
> diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c
> index 8c186211fb38..9bac62f289e0 100644
> --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c
> +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c
> @@ -15,6 +15,7 @@
>  
>  EFI_GUID  mCpuInitMpLibHobGuid = CPU_INIT_MP_LIB_HOB_GUID;
>  EFI_GUID  mMpHandOffGuid       = MP_HANDOFF_GUID;
> +EFI_GUID  mMpHandOffConfigGuid = MP_HANDOFF_CONFIG_GUID;
>  
>  /**
>    Save the volatile registers required to be restored following INIT IPI.
> @@ -1935,11 +1936,13 @@ GetBspNumber (
>    This procedure allows the AP to switch to another section of
>    memory and continue its loop there.
>  
> -  @param[in] FirstMpHandOff  Pointer to first MP hand-off HOB body.
> +  @param[in] MpHandOffConfig  Pointer to MP hand-off config HOB body.
> +  @param[in] FirstMpHandOff   Pointer to first MP hand-off HOB body.
>  **/
>  VOID
>  SwitchApContext (
> -  IN CONST MP_HAND_OFF  *FirstMpHandOff
> +  IN CONST MP_HAND_OFF_CONFIG  *MpHandOffConfig,
> +  IN CONST MP_HAND_OFF         *FirstMpHandOff
>    )
>  {
>    UINTN              Index;
> @@ -1955,7 +1958,7 @@ SwitchApContext (
>      for (Index = 0; Index < MpHandOff->CpuCount; Index++) {
>        if (MpHandOff->ProcessorIndex + Index != BspNumber) {
>          *(UINTN *)(UINTN)MpHandOff->Info[Index].StartupProcedureAddress = (UINTN)SwitchContextPerAp;
> -        *(UINT32 *)(UINTN)MpHandOff->Info[Index].StartupSignalAddress   = MpHandOff->StartupSignalValue;
> +        *(UINT32 *)(UINTN)MpHandOff->Info[Index].StartupSignalAddress   = MpHandOffConfig->StartupSignalValue;
>        }
>      }
>    }
> @@ -1975,6 +1978,26 @@ SwitchApContext (
>    }
>  }
>  
> +/**
> +  Get pointer to MP_HAND_OFF_CONFIG GUIDed HOB body.
> +
> +  @return  The pointer to MP_HAND_OFF_CONFIG structure.
> +**/
> +MP_HAND_OFF_CONFIG *
> +GetMpHandOffConfigHob (
> +  VOID
> +  )
> +{
> +  EFI_HOB_GUID_TYPE  *GuidHob;
> +
> +  GuidHob = GetFirstGuidHob (&mMpHandOffConfigGuid);
> +  if (GuidHob == NULL) {
> +    return NULL;
> +  }
> +
> +  return (MP_HAND_OFF_CONFIG *)GET_GUID_HOB_DATA (GuidHob);
> +}
> +
>  /**
>    Get pointer to next MP_HAND_OFF GUIDed HOB body.
>  
> @@ -2022,6 +2045,7 @@ MpInitLibInitialize (
>    VOID
>    )
>  {
> +  MP_HAND_OFF_CONFIG       *MpHandOffConfig;
>    MP_HAND_OFF              *FirstMpHandOff;
>    MP_HAND_OFF              *MpHandOff;
>    CPU_INFO_IN_HOB          *CpuInfoInHob;
> @@ -2239,13 +2263,24 @@ MpInitLibInitialize (
>        }
>      }
>  
> +    MpHandOffConfig = GetMpHandOffConfigHob ();
> +    if (MpHandOffConfig == NULL) {
> +      DEBUG ((
> +        DEBUG_ERROR,
> +        "%a: at least one MpHandOff HOB, but no MpHandOffConfig HOB\n",
> +        __func__
> +        ));
> +      ASSERT (MpHandOffConfig != NULL);
> +      CpuDeadLoop ();
> +    }
> +
>      DEBUG ((
>        DEBUG_INFO,
>        "FirstMpHandOff->WaitLoopExecutionMode: %04d, sizeof (VOID *): %04d\n",
> -      FirstMpHandOff->WaitLoopExecutionMode,
> +      MpHandOffConfig->WaitLoopExecutionMode,
>        sizeof (VOID *)
>        ));
> -    if (FirstMpHandOff->WaitLoopExecutionMode == sizeof (VOID *)) {
> +    if (MpHandOffConfig->WaitLoopExecutionMode == sizeof (VOID *)) {
>        ASSERT (CpuMpData->ApLoopMode != ApInHltLoop);
>  
>        CpuMpData->FinishedCount                        = 0;
> @@ -2261,7 +2296,7 @@ MpInitLibInitialize (
>        // enables the APs to switch to a different memory section and continue their
>        // looping process there.
>        //
> -      SwitchApContext (FirstMpHandOff);
> +      SwitchApContext (MpHandOffConfig, FirstMpHandOff);
>        //
>        // Wait for all APs finished initialization
>        //
> diff --git a/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
> index ec1aa666923d..4d3acb491f36 100644
> --- a/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
> +++ b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
> @@ -126,14 +126,15 @@ SaveCpuMpData (
>    IN CPU_MP_DATA  *CpuMpData
>    )
>  {
> -  UINT32           MaxCpusPerHob;
> -  UINT32           CpusInHob;
> -  UINT64           Data64;
> -  UINT32           Index;
> -  UINT32           HobBase;
> -  CPU_INFO_IN_HOB  *CpuInfoInHob;
> -  MP_HAND_OFF      *MpHandOff;
> -  UINTN            MpHandOffSize;
> +  UINT32              MaxCpusPerHob;
> +  UINT32              CpusInHob;
> +  UINT64              Data64;
> +  UINT32              Index;
> +  UINT32              HobBase;
> +  CPU_INFO_IN_HOB     *CpuInfoInHob;
> +  MP_HAND_OFF         *MpHandOff;
> +  MP_HAND_OFF_CONFIG  MpHandOffConfig;
> +  UINTN               MpHandOffSize;
>  
>    MaxCpusPerHob = (0xFFF8 - sizeof (EFI_HOB_GUID_TYPE) - sizeof (MP_HAND_OFF)) / sizeof (PROCESSOR_HAND_OFF);
>  
> @@ -155,11 +156,6 @@ SaveCpuMpData (
>  
>        MpHandOff->ProcessorIndex = HobBase;
>        MpHandOff->CpuCount       = CpusInHob;
> -
> -      if (CpuMpData->ApLoopMode != ApInHltLoop) {
> -        MpHandOff->StartupSignalValue    = MP_HAND_OFF_SIGNAL;
> -        MpHandOff->WaitLoopExecutionMode = sizeof (VOID *);
> -      }
>      }
>  
>      MpHandOff->Info[Index-HobBase].ApicId = CpuInfoInHob[Index].ApicId;
> @@ -170,6 +166,18 @@ SaveCpuMpData (
>      }
>    }
>  
> +  ZeroMem (&MpHandOffConfig, sizeof (MpHandOffConfig));
> +  if (CpuMpData->ApLoopMode != ApInHltLoop) {
> +    MpHandOffConfig.StartupSignalValue    = MP_HAND_OFF_SIGNAL;
> +    MpHandOffConfig.WaitLoopExecutionMode = sizeof (VOID *);
> +  }
> +
> +  BuildGuidDataHob (
> +    &mMpHandOffConfigGuid,
> +    (VOID *)&MpHandOffConfig,
> +    sizeof (MpHandOffConfig)
> +    );
> +
>    //
>    // Build location of CPU MP DATA buffer in HOB
>    //

Reviewed-by: Laszlo Ersek <lersek@redhat.com>



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116139): https://edk2.groups.io/g/devel/message/116139
Mute This Topic: https://groups.io/mt/104621270/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [edk2-devel] [PATCH v2 1/1] UefiCpuPkg/MpInitLib: add struct MP_HAND_OFF_CONFIG
  2024-02-28 11:48 [edk2-devel] [PATCH v2 1/1] UefiCpuPkg/MpInitLib: add struct MP_HAND_OFF_CONFIG Gerd Hoffmann
  2024-02-29  8:52 ` Laszlo Ersek
@ 2024-02-29 10:22 ` Laszlo Ersek
  1 sibling, 0 replies; 3+ messages in thread
From: Laszlo Ersek @ 2024-02-29 10:22 UTC (permalink / raw)
  To: devel, kraxel; +Cc: Rahul Kumar, Ray Ni, Oliver Steffen

On 2/28/24 12:48, Gerd Hoffmann wrote:
> Move the WaitLoopExecutionMode and StartupSignalValue fields to a
> separate HOB with the new struct.
> 
> WaitLoopExecutionMode and StartupSignalValue are independent of
> processor index ranges; they are global to MpInitLib (i.e., the entire
> system). Therefore they shouldn't be repeated in every MpHandOff GUID
> HOB.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  UefiCpuPkg/Library/MpInitLib/MpHandOff.h | 13 ++++++-
>  UefiCpuPkg/Library/MpInitLib/MpLib.h     |  3 +-
>  UefiCpuPkg/Library/MpInitLib/MpLib.c     | 47 +++++++++++++++++++++---
>  UefiCpuPkg/Library/MpInitLib/PeiMpLib.c  | 34 ++++++++++-------
>  4 files changed, 75 insertions(+), 22 deletions(-)

Merged as commit dc7cfa9bab74, via
<https://github.com/tianocore/edk2/pull/5424>.



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116159): https://edk2.groups.io/g/devel/message/116159
Mute This Topic: https://groups.io/mt/104621270/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-02-29 10:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-28 11:48 [edk2-devel] [PATCH v2 1/1] UefiCpuPkg/MpInitLib: add struct MP_HAND_OFF_CONFIG Gerd Hoffmann
2024-02-29  8:52 ` Laszlo Ersek
2024-02-29 10:22 ` Laszlo Ersek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox