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
);
182 ShellPrintHiiEx(-1,-1,NULL
,
183 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_OEM_RESERVED
),
184 gShellDebug1HiiHandle
,
185 Header
->OEMReserved
[0],
186 Header
->OEMReserved
[1],
187 Header
->OEMReserved
[2],
188 Header
->OEMReserved
[3],
189 Header
->OEMReserved
[4]
191 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_TIME
), gShellDebug1HiiHandle
, Header
->Metw
);
192 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_COUNT
), gShellDebug1HiiHandle
, Header
->Meci
);
193 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_ADDRESS
), gShellDebug1HiiHandle
, Header
->CMOSAddress
);
194 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_INDEX
), gShellDebug1HiiHandle
, Header
->CMOSBitIndex
);
195 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUM_STARTING_OFF
), gShellDebug1HiiHandle
, Header
->StartingOffset
);
196 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUN_BYTE_COUNT
), gShellDebug1HiiHandle
, Header
->ChecksumOffset
);
197 ShellPrintHiiEx(-1,-1,NULL
,
198 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_RESERVED
),
199 gShellDebug1HiiHandle
,
200 Header
->OEMReserved
[0],
201 Header
->OEMReserved
[1],
202 Header
->OEMReserved
[2]
204 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_HEADER_REVISION
), gShellDebug1HiiHandle
, Header
->HeaderRevision
);
208 Function to display system event log header information.
210 @param[in] LogHeaderFormat Format identifier.
211 @param[in] LogHeader Format informcation.
214 DisplaySysEventLogHeader (
215 UINT8 LogHeaderFormat
,
222 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER
), gShellDebug1HiiHandle
);
227 if (LogHeaderFormat
== 0x00) {
228 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_HEADER
), gShellDebug1HiiHandle
);
229 } else if (LogHeaderFormat
== 0x01) {
230 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TYPE_LOG_HEADER
), gShellDebug1HiiHandle
);
231 DisplaySysEventLogHeaderType1 (LogHeader
);
232 } else if (LogHeaderFormat
<= 0x7f) {
233 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FUTURE_ASSIGN
), gShellDebug1HiiHandle
);
235 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR
), gShellDebug1HiiHandle
);
240 Display the El Vdf information.
242 @param[in] ElVdfType The information type.
243 @param[in] VarData The information buffer.
257 DisplaySELVarDataFormatType (ElVdfType
, SHOW_DETAIL
);
260 // Display Type description
264 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_STD_FORMAT
), gShellDebug1HiiHandle
);
268 Word
= (UINT16
*) (VarData
+ 1);
269 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC
), gShellDebug1HiiHandle
);
270 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE
), gShellDebug1HiiHandle
, *Word
);
274 Dword
= (UINT32
*) (VarData
+ 1);
275 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
279 Word
= (UINT16
*) (VarData
+ 1);
280 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC
), gShellDebug1HiiHandle
);
281 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE
), gShellDebug1HiiHandle
, *Word
);
283 // Followed by a multiple-event counter
285 Dword
= (UINT32
*) (VarData
+ 1);
286 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
290 Dword
= (UINT32
*) (VarData
+ 1);
291 DisplayPostResultsBitmapDw1 (*Dword
, SHOW_DETAIL
);
293 DisplayPostResultsBitmapDw2 (*Dword
, SHOW_DETAIL
);
297 Dword
= (UINT32
*) (VarData
+ 1);
298 DisplaySELSysManagementTypes (*Dword
, SHOW_DETAIL
);
302 Dword
= (UINT32
*) (VarData
+ 1);
303 DisplaySELSysManagementTypes (*Dword
, SHOW_DETAIL
);
305 // Followed by a multiple-event counter
307 Dword
= (UINT32
*) (VarData
+ 1);
308 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
312 if (ElVdfType
<= 0x7F) {
313 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_UNUSED_AVAIL_FOR_ASSIGN
), gShellDebug1HiiHandle
);
315 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_SYSTEM
), gShellDebug1HiiHandle
);
321 Function to display system event log data.
323 @param[in] LogData The data information.
324 @param[in] LogAreaLength Length of the data.
327 DisplaySysEventLogData (
332 LOG_RECORD_FORMAT
*Log
;
335 // Event Log Variable Data Format Types
342 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SYSTEM_EVENT_LOG_2
), gShellDebug1HiiHandle
);
348 Log
= (LOG_RECORD_FORMAT
*) LogData
;
349 while (Log
!= NULL
&& Log
->Type
!= END_OF_LOG
&& Offset
< LogAreaLength
) {
353 // Display Event Log Record Information
355 DisplaySELTypes (Log
->Type
, SHOW_DETAIL
);
356 DisplaySELLogHeaderLen (Log
->Length
, SHOW_DETAIL
);
358 Offset
+= Log
->Length
;
360 // Display Log Header Date/Time Fields
361 // These fields contain the BCD representation of the date and time
362 // (as read from CMOS) of the occurrence of the event
363 // So Print as hex and represent decimal
365 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_DATE
), gShellDebug1HiiHandle
);
366 if (Log
!= NULL
&& Log
->Year
>= 80 && Log
->Year
<= 99) {
368 } else if (Log
!= NULL
&& Log
->Year
<= 79) {
371 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ERROR
), gShellDebug1HiiHandle
);
373 // Get a Event Log Record
375 Log
= (LOG_RECORD_FORMAT
*) (LogData
+ Offset
);
379 ShellPrintHiiEx(-1,-1,NULL
,
380 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TIME_SIX_VARS
),
381 gShellDebug1HiiHandle
,
391 // Display Variable Data Format
393 if (Log
->Length
<= (sizeof (LOG_RECORD_FORMAT
) - 1)) {
395 // Get a Event Log Record
397 Log
= (LOG_RECORD_FORMAT
*) (LogData
+ Offset
);
401 ElVdfType
= Log
->LogVariableData
[0];
402 DisplayElVdfInfo (ElVdfType
, Log
->LogVariableData
);
404 // Get a Event Log Record
406 Log
= (LOG_RECORD_FORMAT
*) (LogData
+ Offset
);