]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.c
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Universal / StatusCodeHandler / Smm / StatusCodeHandlerSmm.c
CommitLineData
3af9b388 1/** @file\r
2 Status Code Handler Driver which produces general handlers and hook them\r
3 onto the SMM status code router.\r
4\r
d1102dba 5 Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
9d510e61 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
3af9b388 7\r
8**/\r
9\r
10#include "StatusCodeHandlerSmm.h"\r
11\r
12EFI_SMM_RSC_HANDLER_PROTOCOL *mRscHandlerProtocol = NULL;\r
13\r
14\r
15/**\r
d1102dba 16 Dispatch initialization request to sub status code devices based on\r
3af9b388 17 customized feature flags.\r
d1102dba 18\r
3af9b388 19**/\r
20VOID\r
21InitializationDispatcherWorker (\r
22 VOID\r
23 )\r
24{\r
25 EFI_STATUS Status;\r
26\r
27 //\r
28 // If enable UseSerial, then initialize serial port.\r
29 // if enable UseRuntimeMemory, then initialize runtime memory status code worker.\r
30 //\r
31 if (FeaturePcdGet (PcdStatusCodeUseSerial)) {\r
32 //\r
33 // Call Serial Port Lib API to initialize serial port.\r
34 //\r
35 Status = SerialPortInitialize ();\r
36 ASSERT_EFI_ERROR (Status);\r
37 }\r
38 if (FeaturePcdGet (PcdStatusCodeUseMemory)) {\r
39 Status = MemoryStatusCodeInitializeWorker ();\r
40 ASSERT_EFI_ERROR (Status);\r
41 }\r
42}\r
43\r
44/**\r
45 Entry point of SMM Status Code Driver.\r
46\r
47 This function is the entry point of SMM Status Code Driver.\r
48\r
49 @param ImageHandle The firmware allocated handle for the EFI image.\r
50 @param SystemTable A pointer to the EFI System Table.\r
d1102dba 51\r
3af9b388 52 @retval EFI_SUCCESS The entry point is executed successfully.\r
53\r
54**/\r
55EFI_STATUS\r
56EFIAPI\r
57StatusCodeHandlerSmmEntry (\r
58 IN EFI_HANDLE ImageHandle,\r
59 IN EFI_SYSTEM_TABLE *SystemTable\r
60 )\r
61{\r
62 EFI_STATUS Status;\r
63\r
64 Status = gSmst->SmmLocateProtocol (\r
65 &gEfiSmmRscHandlerProtocolGuid,\r
66 NULL,\r
67 (VOID **) &mRscHandlerProtocol\r
68 );\r
69 ASSERT_EFI_ERROR (Status);\r
70\r
71 //\r
72 // Dispatch initialization request to supported devices\r
73 //\r
74 InitializationDispatcherWorker ();\r
75\r
76 if (FeaturePcdGet (PcdStatusCodeUseSerial)) {\r
77 mRscHandlerProtocol->Register (SerialStatusCodeReportWorker);\r
78 }\r
79 if (FeaturePcdGet (PcdStatusCodeUseMemory)) {\r
80 mRscHandlerProtocol->Register (MemoryStatusCodeReportWorker);\r
81 }\r
82\r
83 return EFI_SUCCESS;\r
84}\r