From 39a999eb1decf486c615489174912f2d278636d1 Mon Sep 17 00:00:00 2001 From: Oliver Smith-Denny Date: Wed, 21 Aug 2024 13:59:15 -0700 Subject: ArmPlatformPkg: Initialize Serial Port Before Writing PrePeiCore and Sec directly write the firmware version to the serial port. They relies on another component to initialize the serial port, however in certain configurations (such as release builds that don't use a DebugLib that initializes the serial port), the serial port can be uninitialized at this point, causing a crash when SerialPortWrite is called here. This patch updates PrePeiCore and Sec to call SerialPortInitialize before calling SerialPortWrite directly, which follows the pattern of other serial port writes. It is accepted to call the initialization routine multiple times, it is supposed to dump out if the serial port is already initialized. Signed-off-by: Oliver Smith-Denny --- ArmPlatformPkg/PrePeiCore/PrePeiCore.c | 4 ++++ ArmPlatformPkg/Sec/Sec.c | 4 ++++ 2 files changed, 8 insertions(+) (limited to 'ArmPlatformPkg') diff --git a/ArmPlatformPkg/PrePeiCore/PrePeiCore.c b/ArmPlatformPkg/PrePeiCore/PrePeiCore.c index cbaccbbad9..5911c3a08a 100644 --- a/ArmPlatformPkg/PrePeiCore/PrePeiCore.c +++ b/ArmPlatformPkg/PrePeiCore/PrePeiCore.c @@ -76,6 +76,10 @@ PrintFirmwareVersion ( __TIME__, __DATE__ ); + + // Because we are directly bit banging the serial port instead of going through the DebugLib, we need to make sure + // the serial port is initialized before we write to it + SerialPortInitialize (); SerialPortWrite ((UINT8 *)Buffer, CharCount); } diff --git a/ArmPlatformPkg/Sec/Sec.c b/ArmPlatformPkg/Sec/Sec.c index 482e68ad42..9a700e5ef2 100644 --- a/ArmPlatformPkg/Sec/Sec.c +++ b/ArmPlatformPkg/Sec/Sec.c @@ -139,6 +139,10 @@ PrintFirmwareVersion ( __TIME__, __DATE__ ); + + // Because we are directly bit banging the serial port instead of going through the DebugLib, we need to make sure + // the serial port is initialized before we write to it + SerialPortInitialize (); SerialPortWrite ((UINT8 *)Buffer, CharCount); } -- cgit v1.2.3