2 Status Code Handler Driver which produces general handlers and hook them
3 onto the SMM status code router.
5 Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
10 #include "StatusCodeHandlerSmm.h"
12 EFI_SMM_RSC_HANDLER_PROTOCOL
*mRscHandlerProtocol
= NULL
;
16 Dispatch initialization request to sub status code devices based on
17 customized feature flags.
21 InitializationDispatcherWorker (
28 // If enable UseSerial, then initialize serial port.
29 // if enable UseRuntimeMemory, then initialize runtime memory status code worker.
31 if (FeaturePcdGet (PcdStatusCodeUseSerial
)) {
33 // Call Serial Port Lib API to initialize serial port.
35 Status
= SerialPortInitialize ();
36 ASSERT_EFI_ERROR (Status
);
38 if (FeaturePcdGet (PcdStatusCodeUseMemory
)) {
39 Status
= MemoryStatusCodeInitializeWorker ();
40 ASSERT_EFI_ERROR (Status
);
45 Entry point of SMM Status Code Driver.
47 This function is the entry point of SMM Status Code Driver.
49 @param ImageHandle The firmware allocated handle for the EFI image.
50 @param SystemTable A pointer to the EFI System Table.
52 @retval EFI_SUCCESS The entry point is executed successfully.
57 StatusCodeHandlerSmmEntry (
58 IN EFI_HANDLE ImageHandle
,
59 IN EFI_SYSTEM_TABLE
*SystemTable
64 Status
= gSmst
->SmmLocateProtocol (
65 &gEfiSmmRscHandlerProtocolGuid
,
67 (VOID
**) &mRscHandlerProtocol
69 ASSERT_EFI_ERROR (Status
);
72 // Dispatch initialization request to supported devices
74 InitializationDispatcherWorker ();
76 if (FeaturePcdGet (PcdStatusCodeUseSerial
)) {
77 mRscHandlerProtocol
->Register (SerialStatusCodeReportWorker
);
79 if (FeaturePcdGet (PcdStatusCodeUseMemory
)) {
80 mRscHandlerProtocol
->Register (MemoryStatusCodeReportWorker
);