2 Module for clarifying the content of the smbios structure element info.
4 Copyright (c) 2005 - 2019, Intel Corporation. All rights reserved. <BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
9 #include "UefiShellDebug1CommandsLib.h"
10 #include "PrintInfo.h"
11 #include "QueryTable.h"
12 #include "EventLogInfo.h"
15 Function to display system event log access information.
17 @param[in] Key Additional information to print.
18 @param[in] Option Whether to print the additional information.
21 DisplaySELAccessMethod (
29 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ACCESS_METHOD
), gShellDebug1HiiHandle
);
30 PRINT_INFO_OPTION (Key
, Option
);
37 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_EIGHT_BIT
), gShellDebug1HiiHandle
);
41 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TWO_EIGHT_BITS
), gShellDebug1HiiHandle
);
45 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_SIXTEEN_BIT
), gShellDebug1HiiHandle
);
49 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MEM_MAPPED_PHYS
), gShellDebug1HiiHandle
);
53 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_VIA_GENERAL
), gShellDebug1HiiHandle
);
58 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_FUTURE_ASSIGN
), gShellDebug1HiiHandle
);
60 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR_OEM
), gShellDebug1HiiHandle
);
66 Function to display system event log status information.
68 @param[in] Key Additional information to print.
69 @param[in] Option Whether to print the additional information.
80 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_STATUS
), gShellDebug1HiiHandle
);
81 PRINT_INFO_OPTION (Key
, Option
);
86 if ((Key
& 0x01) != 0) {
87 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_VALID
), gShellDebug1HiiHandle
);
89 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_VALID
), gShellDebug1HiiHandle
);
92 if ((Key
& 0x02) != 0) {
93 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_FULL
), gShellDebug1HiiHandle
);
95 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_NOT_FULL
), gShellDebug1HiiHandle
);
98 if ((Key
& 0xFC) != 0) {
99 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_RES_BITS_NOT_ZERO
), gShellDebug1HiiHandle
, Key
& 0xFC);
104 Function to display system event log header format information.
106 @param[in] Key Additional information to print.
107 @param[in] Option Whether to print the additional information.
110 DisplaySysEventLogHeaderFormat (
118 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER_FORMAT
), gShellDebug1HiiHandle
);
119 PRINT_INFO_OPTION (Key
, Option
);
125 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_HEADER
), gShellDebug1HiiHandle
);
126 } else if (Key
== 0x01) {
127 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TYPE_LOG_HEADER
), gShellDebug1HiiHandle
);
128 } else if (Key
<= 0x7f) {
129 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_FUTURE
), gShellDebug1HiiHandle
);
131 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR
), gShellDebug1HiiHandle
);
136 Display the header information for SEL log items.
138 @param[in] Key The information key.
139 @param[in] Option The option index.
142 DisplaySELLogHeaderLen (
147 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER_LEN
), gShellDebug1HiiHandle
);
148 PRINT_INFO_OPTION (Key
, Option
);
150 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_VAR_D
), gShellDebug1HiiHandle
, Key
& 0x7F);
153 // The most-significant bit of the field specifies
154 // whether (0) or not (1) the record has been read
156 if ((Key
& 0x80) != 0) {
157 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_THIS_RECORD_READ
), gShellDebug1HiiHandle
);
159 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_THIS_RECORD_NOT_READ
), gShellDebug1HiiHandle
);
164 Display the header information for type 1 items.
166 @param[in] LogHeader The buffer with the information.
169 DisplaySysEventLogHeaderType1 (
173 LOG_HEADER_TYPE1_FORMAT
*Header
;
175 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SYSTEM_EVENT_LOG
), gShellDebug1HiiHandle
);
178 // Print Log Header Type1 Format info
180 Header
= (LOG_HEADER_TYPE1_FORMAT
*)(LogHeader
);
186 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_OEM_RESERVED
),
187 gShellDebug1HiiHandle
,
188 Header
->OEMReserved
[0],
189 Header
->OEMReserved
[1],
190 Header
->OEMReserved
[2],
191 Header
->OEMReserved
[3],
192 Header
->OEMReserved
[4]
194 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_TIME
), gShellDebug1HiiHandle
, Header
->Metw
);
195 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_COUNT
), gShellDebug1HiiHandle
, Header
->Meci
);
196 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_ADDRESS
), gShellDebug1HiiHandle
, Header
->CMOSAddress
);
197 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_INDEX
), gShellDebug1HiiHandle
, Header
->CMOSBitIndex
);
198 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUM_STARTING_OFF
), gShellDebug1HiiHandle
, Header
->StartingOffset
);
199 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUN_BYTE_COUNT
), gShellDebug1HiiHandle
, Header
->ChecksumOffset
);
204 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_RESERVED
),
205 gShellDebug1HiiHandle
,
206 Header
->OEMReserved
[0],
207 Header
->OEMReserved
[1],
208 Header
->OEMReserved
[2]
210 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_HEADER_REVISION
), gShellDebug1HiiHandle
, Header
->HeaderRevision
);
214 Function to display system event log header information.
216 @param[in] LogHeaderFormat Format identifier.
217 @param[in] LogHeader Format informcation.
220 DisplaySysEventLogHeader (
221 UINT8 LogHeaderFormat
,
228 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER
), gShellDebug1HiiHandle
);
233 if (LogHeaderFormat
== 0x00) {
234 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_HEADER
), gShellDebug1HiiHandle
);
235 } else if (LogHeaderFormat
== 0x01) {
236 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TYPE_LOG_HEADER
), gShellDebug1HiiHandle
);
237 DisplaySysEventLogHeaderType1 (LogHeader
);
238 } else if (LogHeaderFormat
<= 0x7f) {
239 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FUTURE_ASSIGN
), gShellDebug1HiiHandle
);
241 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR
), gShellDebug1HiiHandle
);
246 Display the El Vdf information.
248 @param[in] ElVdfType The information type.
249 @param[in] VarData The information buffer.
263 DisplaySELVarDataFormatType (ElVdfType
, SHOW_DETAIL
);
266 // Display Type description
270 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_STD_FORMAT
), gShellDebug1HiiHandle
);
274 Word
= (UINT16
*)(VarData
+ 1);
275 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC
), gShellDebug1HiiHandle
);
276 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE
), gShellDebug1HiiHandle
, *Word
);
280 Dword
= (UINT32
*)(VarData
+ 1);
281 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
285 Word
= (UINT16
*)(VarData
+ 1);
286 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC
), gShellDebug1HiiHandle
);
287 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE
), gShellDebug1HiiHandle
, *Word
);
289 // Followed by a multiple-event counter
291 Dword
= (UINT32
*)(VarData
+ 1);
292 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
296 Dword
= (UINT32
*)(VarData
+ 1);
297 DisplayPostResultsBitmapDw1 (*Dword
, SHOW_DETAIL
);
299 DisplayPostResultsBitmapDw2 (*Dword
, SHOW_DETAIL
);
303 Dword
= (UINT32
*)(VarData
+ 1);
304 DisplaySELSysManagementTypes (*Dword
, SHOW_DETAIL
);
308 Dword
= (UINT32
*)(VarData
+ 1);
309 DisplaySELSysManagementTypes (*Dword
, SHOW_DETAIL
);
311 // Followed by a multiple-event counter
313 Dword
= (UINT32
*)(VarData
+ 1);
314 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
318 if (ElVdfType
<= 0x7F) {
319 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_UNUSED_AVAIL_FOR_ASSIGN
), gShellDebug1HiiHandle
);
321 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_SYSTEM
), gShellDebug1HiiHandle
);
327 Function to display system event log data.
329 @param[in] LogData The data information.
330 @param[in] LogAreaLength Length of the data.
333 DisplaySysEventLogData (
338 LOG_RECORD_FORMAT
*Log
;
341 // Event Log Variable Data Format Types
348 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SYSTEM_EVENT_LOG_2
), gShellDebug1HiiHandle
);
354 Log
= (LOG_RECORD_FORMAT
*)LogData
;
355 while (Log
!= NULL
&& Log
->Type
!= END_OF_LOG
&& Offset
< LogAreaLength
) {
358 // Display Event Log Record Information
360 DisplaySELTypes (Log
->Type
, SHOW_DETAIL
);
361 DisplaySELLogHeaderLen (Log
->Length
, SHOW_DETAIL
);
363 Offset
+= Log
->Length
;
365 // Display Log Header Date/Time Fields
366 // These fields contain the BCD representation of the date and time
367 // (as read from CMOS) of the occurrence of the event
368 // So Print as hex and represent decimal
370 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_DATE
), gShellDebug1HiiHandle
);
371 if ((Log
!= NULL
) && (Log
->Year
>= 80) && (Log
->Year
<= 99)) {
373 } else if ((Log
!= NULL
) && (Log
->Year
<= 79)) {
376 ShellPrintHiiEx (-1, -1, NULL
, STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ERROR
), gShellDebug1HiiHandle
);
378 // Get a Event Log Record
380 Log
= (LOG_RECORD_FORMAT
*)(LogData
+ Offset
);
388 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TIME_SIX_VARS
),
389 gShellDebug1HiiHandle
,
399 // Display Variable Data Format
401 if (Log
->Length
<= (sizeof (LOG_RECORD_FORMAT
) - 1)) {
403 // Get a Event Log Record
405 Log
= (LOG_RECORD_FORMAT
*)(LogData
+ Offset
);
409 ElVdfType
= Log
->LogVariableData
[0];
410 DisplayElVdfInfo (ElVdfType
, Log
->LogVariableData
);
412 // Get a Event Log Record
414 Log
= (LOG_RECORD_FORMAT
*)(LogData
+ Offset
);