2 Publishes ESRT table from Firmware Management Protocol instances
4 Copyright (c) 2016, Microsoft Corporation
5 Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
8 SPDX-License-Identifier: BSD-2-Clause-Patent
13 #include <Library/BaseLib.h>
14 #include <Library/BaseMemoryLib.h>
15 #include <Library/DebugLib.h>
16 #include <Protocol/FirmwareManagement.h>
17 #include <Guid/SystemResourceTable.h>
20 Function to print a single ESRT Entry (ESRE) to the debug console.
23 | 00000000-0000-0000-0000-000000000000 | SSSSSSSSSSSS | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 |
25 @param[in] Entry - Pointer to an ESRE entry
32 IN EFI_SYSTEM_RESOURCE_ENTRY
*Entry
36 DEBUG ((DEBUG_INFO
, "| ERROR: Invalid resource entry pointer "));
37 DEBUG ((DEBUG_INFO
, " |\n"));
38 return EFI_INVALID_PARAMETER
;
42 // GUID FW Class (36 chars plus table formatting)
44 DEBUG ((DEBUG_INFO
, "| %g |", &Entry
->FwClass
));
47 // Entry Type (12 chars plus table formatting)
49 switch (Entry
->FwType
) {
50 case (ESRT_FW_TYPE_SYSTEMFIRMWARE
):
51 DEBUG ((DEBUG_INFO
, " System FW |"));
53 case (ESRT_FW_TYPE_DEVICEFIRMWARE
):
54 DEBUG ((DEBUG_INFO
, " Device FW |"));
56 case (ESRT_FW_TYPE_UEFIDRIVER
):
57 DEBUG ((DEBUG_INFO
, " Uefi Driver |"));
59 case (ESRT_FW_TYPE_UNKNOWN
):
60 DEBUG ((DEBUG_INFO
, " Unknown Type |"));
63 DEBUG ((DEBUG_INFO
, " ? 0x%8X |", Entry
->FwType
));
68 // FW Version (10 char UINT32 string plus table formatting)
69 // Lowest Supported Version (10 char UINT32 string plus table formatting)
70 // Capsule Flags (10 char UINT32 string plus table formatting)
71 // Last Attempt Version (10 char UINT32 string plus table formatting)
72 // Last Attempt Status (10 char UINT32 string plus table formatting)
76 " 0x%8X | 0x%8X | 0x%8X | 0x%8X | 0x%8X |\n",
78 Entry
->LowestSupportedFwVersion
,
80 Entry
->LastAttemptVersion
,
81 Entry
->LastAttemptStatus
88 Function to print the ESRT table to the debug console.
90 @param[in] Table - Pointer to the ESRT table
95 IN EFI_SYSTEM_RESOURCE_TABLE
*Table
98 EFI_SYSTEM_RESOURCE_ENTRY
*Entry
;
101 Entry
= (EFI_SYSTEM_RESOURCE_ENTRY
*)(((UINT8
*)Table
) + sizeof (EFI_SYSTEM_RESOURCE_TABLE
));
104 // Print ESRT table information
106 DEBUG ((DEBUG_INFO
, "ESRT Table Information:\n"));
108 DEBUG ((DEBUG_INFO
, "ERROR: Invalid table pointer\n"));
112 DEBUG ((DEBUG_INFO
, "+--------------------------------------------------------+\n"));
113 DEBUG ((DEBUG_INFO
, "| Firmware Resource Count : 0x%08x |\n", Table
->FwResourceCount
));
114 DEBUG ((DEBUG_INFO
, "| Firmware Resource Count Max : 0x%08x |\n", Table
->FwResourceCountMax
));
115 DEBUG ((DEBUG_INFO
, "| Firmware Resource Entry Version : 0x%016x |\n", Table
->FwResourceVersion
));
116 DEBUG ((DEBUG_INFO
, "+--------------------------------------------------------+\n"));
119 // Print table entry information
121 DEBUG ((DEBUG_INFO
, "ESRT Table Entries:\n"));
122 if (Table
->FwResourceVersion
!= EFI_SYSTEM_RESOURCE_TABLE_FIRMWARE_RESOURCE_VERSION
) {
123 DEBUG ((DEBUG_INFO
, "ERROR: Unsupported Resource Entry Version\n"));
127 DEBUG ((DEBUG_INFO
, "+--------------------------------------+--------------+------------"));
128 DEBUG ((DEBUG_INFO
, "+------------+------------+------------+------------+\n"));
129 DEBUG ((DEBUG_INFO
, "| | | "));
130 DEBUG ((DEBUG_INFO
, "| Lowest | | Last | Last |\n"));
131 DEBUG ((DEBUG_INFO
, "| | Firmware | "));
132 DEBUG ((DEBUG_INFO
, "| Supported | Capsule | Attempted | Attempted |\n"));
133 DEBUG ((DEBUG_INFO
, "| CLASS GUID | Type | Version "));
134 DEBUG ((DEBUG_INFO
, "| Version | Flags | Version | Status |\n"));
135 DEBUG ((DEBUG_INFO
, "+--------------------------------------+--------------+------------"));
136 DEBUG ((DEBUG_INFO
, "+------------+------------+------------+------------+\n"));
138 for (Index
= 0; Index
< Table
->FwResourceCount
; Index
++) {
139 PrintOutEsrtEntry (&(Entry
[Index
]));
142 DEBUG ((DEBUG_INFO
, "+--------------------------------------+--------------+------------"));
143 DEBUG ((DEBUG_INFO
, "+------------+------------+------------+------------+\n"));