From 22c45b7c52ecfab8840be05323094a389ade3553 Mon Sep 17 00:00:00 2001 From: Rohit Mathew Date: Fri, 22 Jul 2022 18:02:57 +0100 Subject: [PATCH] ArmPlatformPkg/PrePeiCore: Invoke constructors for SEC phase On platforms that do not have the serial console port pre-initialized prior to the SEC phase and due to the absence of a call to "SerialPortInitialize", this results in missing debug logs. So, call the auto-generated "ProcessLibraryConstructorList" function from SEC phase to have all the dependent library constructors called (this includes a call to "SerialPortInitialize"). Signed-off-by: Rohit Mathew Reviewed-by: Sami Mujawar --- ArmPlatformPkg/PrePeiCore/PrePeiCore.c | 6 +++++- ArmPlatformPkg/PrePeiCore/PrePeiCore.h | 12 +++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ArmPlatformPkg/PrePeiCore/PrePeiCore.c b/ArmPlatformPkg/PrePeiCore/PrePeiCore.c index 6dd9bcdea2..9c4b25df95 100644 --- a/ArmPlatformPkg/PrePeiCore/PrePeiCore.c +++ b/ArmPlatformPkg/PrePeiCore/PrePeiCore.c @@ -1,7 +1,7 @@ /** @file Main file supporting the transition to PEI Core in Normal World for Versatile Express - Copyright (c) 2011-2014, ARM Limited. All rights reserved. + Copyright (c) 2011 - 2022, ARM Limited. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent @@ -90,6 +90,10 @@ CEntryPoint ( // If not primary Jump to Secondary Main if (ArmPlatformIsPrimaryCore (MpId)) { + // Invoke "ProcessLibraryConstructorList" to have all library constructors + // called. + ProcessLibraryConstructorList (); + // Initialize the Debug Agent for Source Level Debugging InitializeDebugAgent (DEBUG_AGENT_INIT_POSTMEM_SEC, NULL, NULL); SaveAndSetDebugTimerInterrupt (TRUE); diff --git a/ArmPlatformPkg/PrePeiCore/PrePeiCore.h b/ArmPlatformPkg/PrePeiCore/PrePeiCore.h index 0345dd7bdd..c1e13e23e1 100644 --- a/ArmPlatformPkg/PrePeiCore/PrePeiCore.h +++ b/ArmPlatformPkg/PrePeiCore/PrePeiCore.h @@ -1,7 +1,7 @@ /** @file Main file supporting the transition to PEI Core in Normal World for Versatile Express - Copyright (c) 2011, ARM Limited. All rights reserved. + Copyright (c) 2011 - 2022, ARM Limited. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent @@ -73,4 +73,14 @@ PeiCommonExceptionEntry ( IN UINTN LR ); +/* + * Autogenerated function that calls the library constructors for all of the + * module's dependent libraries. + */ +VOID +EFIAPI +ProcessLibraryConstructorList ( + VOID + ); + #endif