1 /** @file 2 Module for clarifying the content of the smbios structure element information. 3 4 Copyright (c) 2005 - 2016, Intel Corporation. All rights reserved.<BR> 5 (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR> 6 (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR> 7 This program and the accompanying materials 8 are licensed and made available under the terms and conditions of the BSD License 9 which accompanies this distribution. The full text of the license may be found at 10 http://opensource.org/licenses/bsd-license.php 11 12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 14 15 **/ 16 17 #include "../UefiShellDebug1CommandsLib.h" 18 #include "PrintInfo.h" 19 #include "LibSmbiosView.h" 20 #include "QueryTable.h" 21 #include "EventLogInfo.h" 22 23 24 // 25 // Get the certain bit of 'value' 26 // 27 #define BIT(value, bit) ((value) & ((UINT64) 1) << (bit)) 28 29 // 30 // Check if above or equal to version 31 // 32 #define AE_SMBIOS_VERSION(MajorVersion, MinorVersion) \ 33 (SmbiosMajorVersion > (MajorVersion) || (SmbiosMajorVersion == (MajorVersion) && SmbiosMinorVersion >= (MinorVersion))) 34 35 // 36 ////////////////////////////////////////////////////////// 37 // Macros of print structure element, simplify coding. 38 // 39 #define PRINT_PENDING_STRING(pStruct, type, element) \ 40 do { \ 41 CHAR8 *StringBuf; \ 42 StringBuf = LibGetSmbiosString ((pStruct), (pStruct->type->element)); \ 43 ShellPrintEx(-1,-1,L"%a",#element); \ 44 ShellPrintEx(-1,-1,L": %a\n", (StringBuf != NULL) ? StringBuf: ""); \ 45 } while (0); 46 47 #define PRINT_SMBIOS_STRING(pStruct, stringnumber, element) \ 48 do { \ 49 CHAR8 *StringBuf; \ 50 StringBuf = LibGetSmbiosString ((pStruct), (stringnumber)); \ 51 ShellPrintEx(-1,-1,L"%a",#element); \ 52 ShellPrintEx(-1,-1,L": %a\n", (StringBuf != NULL) ? StringBuf: ""); \ 53 } while (0); 54 55 #define PRINT_STRUCT_VALUE(pStruct, type, element) \ 56 do { \ 57 ShellPrintEx(-1,-1,L"%a",#element); \ 58 ShellPrintEx(-1,-1,L": %d\n", (pStruct->type->element)); \ 59 } while (0); 60 61 #define PRINT_STRUCT_VALUE_H(pStruct, type, element) \ 62 do { \ 63 ShellPrintEx(-1,-1,L"%a",#element); \ 64 ShellPrintEx(-1,-1,L": 0x%x\n", (pStruct->type->element)); \ 65 } while (0); 66 67 #define PRINT_STRUCT_VALUE_LH(pStruct, type, element) \ 68 do { \ 69 ShellPrintEx(-1,-1,L"%a",#element); \ 70 ShellPrintEx(-1,-1,L": 0x%lx\n", (pStruct->type->element)); \ 71 } while (0); 72 73 #define PRINT_BIT_FIELD(pStruct, type, element, size) \ 74 do { \ 75 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DUMP), gShellDebug1HiiHandle); \ 76 ShellPrintEx(-1,-1,L"%a",#element); \ 77 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SIZE), gShellDebug1HiiHandle, size); \ 78 DumpHex (0, 0, size, &(pStruct->type->element)); \ 79 } while (0); 80 81 #define PRINT_SMBIOS_BIT_FIELD(pStruct, startaddress, element, size) \ 82 do { \ 83 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DUMP), gShellDebug1HiiHandle); \ 84 ShellPrintEx(-1,-1,L"%a",#element); \ 85 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SIZE), gShellDebug1HiiHandle, size); \ 86 DumpHex (0, 0, size, startaddress); \ 87 } while (0); 88 89 // 90 ///////////////////////////////////////// 91 // 92 93 /** 94 Copy Length of Src buffer to Dest buffer, 95 add a NULL termination to Dest buffer. 96 97 @param[in, out] Dest Destination buffer head. 98 @param[in] Src Source buffer head. 99 @param[in] Length Length of buffer to be copied. 100 **/ 101 VOID 102 MemToString ( 103 IN OUT VOID *Dest, 104 IN VOID *Src, 105 IN UINTN Length 106 ) 107 { 108 UINT8 *SrcBuffer; 109 UINT8 *DestBuffer; 110 SrcBuffer = (UINT8 *) Src; 111 DestBuffer = (UINT8 *) Dest; 112 // 113 // copy byte by byte 114 // 115 while ((Length--)!=0) { 116 *DestBuffer++ = *SrcBuffer++; 117 } 118 // 119 // append a NULL terminator 120 // 121 *DestBuffer = '\0'; 122 } 123 124 // 125 ////////////////////////////////////////////// 126 // 127 // Functions below is to show the information 128 // 129 130 /** 131 Print the info of EPS(Entry Point Structure). 132 133 @param[in] SmbiosTable Pointer to the SMBIOS table entry point. 134 @param[in] Option Display option. 135 **/ 136 VOID 137 SmbiosPrintEPSInfo ( 138 IN SMBIOS_TABLE_ENTRY_POINT *SmbiosTable, 139 IN UINT8 Option 140 ) 141 { 142 UINT8 Anchor[5]; 143 UINT8 InAnchor[6]; 144 145 if (SmbiosTable == NULL) { 146 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SMBIOSTABLE_NULL), gShellDebug1HiiHandle); 147 return ; 148 } 149 150 if (Option == SHOW_NONE) { 151 return ; 152 } 153 154 if (Option >= SHOW_NORMAL) { 155 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_SIGN), gShellDebug1HiiHandle); 156 MemToString (Anchor, SmbiosTable->AnchorString, 4); 157 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ANCHOR_STR), gShellDebug1HiiHandle, Anchor); 158 ShellPrintHiiEx(-1,-1,NULL, 159 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EPS_CHECKSUM), 160 gShellDebug1HiiHandle, 161 SmbiosTable->EntryPointStructureChecksum 162 ); 163 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_LEN), gShellDebug1HiiHandle, SmbiosTable->EntryPointLength); 164 ShellPrintHiiEx(-1,-1,NULL, 165 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VERSION), 166 gShellDebug1HiiHandle, 167 SmbiosTable->MajorVersion, 168 SmbiosTable->MinorVersion 169 ); 170 ShellPrintHiiEx(-1,-1,NULL, 171 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NUMBER_STRUCT), 172 gShellDebug1HiiHandle, 173 SmbiosTable->NumberOfSmbiosStructures 174 ); 175 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MAX_STRUCT_SIZE), gShellDebug1HiiHandle, SmbiosTable->MaxStructureSize); 176 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TABLE_ADDR), gShellDebug1HiiHandle, SmbiosTable->TableAddress); 177 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TABLE_LENGTH), gShellDebug1HiiHandle, SmbiosTable->TableLength); 178 179 } 180 // 181 // If SHOW_ALL, also print followings. 182 // 183 if (Option >= SHOW_DETAIL) { 184 ShellPrintHiiEx(-1,-1,NULL, 185 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_REVISION), 186 gShellDebug1HiiHandle, 187 SmbiosTable->EntryPointRevision 188 ); 189 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BCD_REVISION), gShellDebug1HiiHandle, SmbiosTable->SmbiosBcdRevision); 190 // 191 // Since raw data is not string, add a NULL terminater. 192 // 193 MemToString (InAnchor, SmbiosTable->IntermediateAnchorString, 5); 194 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTER_ACHOR), gShellDebug1HiiHandle, InAnchor); 195 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTER_CHECKSUM), gShellDebug1HiiHandle, SmbiosTable->IntermediateChecksum); 196 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FORMATTED_AREA), gShellDebug1HiiHandle); 197 DumpHex (2, 0, 5, SmbiosTable->FormattedArea); 198 } 199 200 Print (L"\n"); 201 } 202 203 /** 204 Print the info of 64-bit EPS(Entry Point Structure). 205 206 @param[in] SmbiosTable Pointer to the SMBIOS table entry point. 207 @param[in] Option Display option. 208 **/ 209 VOID 210 Smbios64BitPrintEPSInfo ( 211 IN SMBIOS_TABLE_3_0_ENTRY_POINT *SmbiosTable, 212 IN UINT8 Option 213 ) 214 { 215 UINT8 Anchor[5]; 216 217 if (SmbiosTable == NULL) { 218 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SMBIOSTABLE_NULL), gShellDebug1HiiHandle); 219 return ; 220 } 221 222 if (Option == SHOW_NONE) { 223 return ; 224 } 225 226 if (Option >= SHOW_NORMAL) { 227 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_64_BIT_ENTRY_POINT_SIGN), gShellDebug1HiiHandle); 228 229 MemToString (Anchor, SmbiosTable->AnchorString, 5); 230 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ANCHOR_STR), gShellDebug1HiiHandle, Anchor); 231 232 ShellPrintHiiEx(-1,-1,NULL, 233 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EPS_CHECKSUM), 234 gShellDebug1HiiHandle, 235 SmbiosTable->EntryPointStructureChecksum 236 ); 237 238 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_LEN), gShellDebug1HiiHandle, SmbiosTable->EntryPointLength); 239 240 ShellPrintHiiEx(-1,-1,NULL, 241 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VERSION), 242 gShellDebug1HiiHandle, 243 SmbiosTable->MajorVersion, 244 SmbiosTable->MinorVersion 245 ); 246 247 ShellPrintHiiEx(-1,-1,NULL, 248 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DOCREV), 249 gShellDebug1HiiHandle, 250 SmbiosTable->DocRev 251 ); 252 253 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TABLE_MAX_SIZE), gShellDebug1HiiHandle, SmbiosTable->TableMaximumSize); 254 255 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TABLE_ADDR), gShellDebug1HiiHandle, SmbiosTable->TableAddress); 256 257 } 258 // 259 // If SHOW_ALL, also print followings. 260 // 261 if (Option >= SHOW_DETAIL) { 262 ShellPrintHiiEx(-1,-1,NULL, 263 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_REVISION), 264 gShellDebug1HiiHandle, 265 SmbiosTable->EntryPointRevision 266 ); 267 } 268 269 Print (L"\n"); 270 } 271 272 /** 273 This function print the content of the structure pointed by Struct. 274 275 @param[in] Struct Point to the structure to be printed. 276 @param[in] Option Print option of information detail. 277 278 @retval EFI_SUCCESS Successfully Printing this function. 279 @retval EFI_INVALID_PARAMETER Invalid Structure. 280 @retval EFI_UNSUPPORTED Unsupported. 281 **/ 282 EFI_STATUS 283 SmbiosPrintStructure ( 284 IN SMBIOS_STRUCTURE_POINTER *Struct, 285 IN UINT8 Option 286 ) 287 { 288 UINT8 Index; 289 UINT8 *Buffer; 290 291 if (Struct == NULL) { 292 return EFI_INVALID_PARAMETER; 293 } 294 295 if (Option == SHOW_NONE) { 296 return EFI_SUCCESS; 297 } 298 299 Buffer = (UINT8 *) (UINTN) (Struct->Raw); 300 301 // 302 // Display structure header 303 // 304 DisplayStructureTypeInfo (Struct->Hdr->Type, SHOW_DETAIL); 305 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FORMAT_PART_LEN), gShellDebug1HiiHandle, Struct->Hdr->Length); 306 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STRUCT_HANDLE), gShellDebug1HiiHandle, Struct->Hdr->Handle); 307 308 if (Option == SHOW_OUTLINE) { 309 return EFI_SUCCESS; 310 } 311 312 switch (Struct->Hdr->Type) { 313 // 314 // BIOS Information (Type 0) 315 // 316 case 0: 317 PRINT_PENDING_STRING (Struct, Type0, Vendor); 318 PRINT_PENDING_STRING (Struct, Type0, BiosVersion); 319 PRINT_STRUCT_VALUE (Struct, Type0, BiosSegment); 320 PRINT_PENDING_STRING (Struct, Type0, BiosReleaseDate); 321 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_SIZE), gShellDebug1HiiHandle, 64 * (Struct->Type0->BiosSize + 1)); 322 323 DisplayBiosCharacteristics (ReadUnaligned64 ((UINT64 *) (UINTN) &(Struct->Type0->BiosCharacteristics)), Option); 324 325 if (Struct->Hdr->Length > 0x12) { 326 DisplayBiosCharacteristicsExt1 (Struct->Type0->BIOSCharacteristicsExtensionBytes[0], Option); 327 } 328 if (Struct->Hdr->Length > 0x13) { 329 DisplayBiosCharacteristicsExt2 (Struct->Type0->BIOSCharacteristicsExtensionBytes[1], Option); 330 } 331 332 if (AE_SMBIOS_VERSION (0x2, 0x4) && (Struct->Hdr->Length > 0x14)) { 333 PRINT_STRUCT_VALUE (Struct, Type0, SystemBiosMajorRelease); 334 PRINT_STRUCT_VALUE (Struct, Type0, SystemBiosMinorRelease); 335 PRINT_STRUCT_VALUE (Struct, Type0, EmbeddedControllerFirmwareMajorRelease); 336 PRINT_STRUCT_VALUE (Struct, Type0, EmbeddedControllerFirmwareMinorRelease); 337 } 338 339 break; 340 341 // 342 // System Information (Type 1) 343 // 344 case 1: 345 PRINT_PENDING_STRING (Struct, Type1, Manufacturer); 346 PRINT_PENDING_STRING (Struct, Type1, ProductName); 347 PRINT_PENDING_STRING (Struct, Type1, Version); 348 PRINT_PENDING_STRING (Struct, Type1, SerialNumber); 349 PRINT_BIT_FIELD (Struct, Type1, Uuid, 16); 350 DisplaySystemWakeupType (Struct->Type1->WakeUpType, Option); 351 if (AE_SMBIOS_VERSION (0x2, 0x4) && (Struct->Hdr->Length > 0x19)) { 352 PRINT_PENDING_STRING (Struct, Type1, SKUNumber); 353 PRINT_PENDING_STRING (Struct, Type1, Family); 354 } 355 356 break; 357 358 // 359 // Baseboard Information (Type 2) 360 // 361 case 2: 362 PRINT_PENDING_STRING (Struct, Type2, Manufacturer); 363 PRINT_PENDING_STRING (Struct, Type2, ProductName); 364 PRINT_PENDING_STRING (Struct, Type2, Version); 365 PRINT_PENDING_STRING (Struct, Type2, SerialNumber); 366 if (Struct->Hdr->Length > 0x8) { 367 PRINT_PENDING_STRING (Struct, Type2, AssetTag); 368 DisplayBaseBoardFeatureFlags (*(UINT8 *) &Struct->Type2->FeatureFlag, Option); 369 PRINT_PENDING_STRING (Struct, Type2, LocationInChassis); 370 PRINT_STRUCT_VALUE_H (Struct, Type2, ChassisHandle); 371 DisplayBaseBoardBoardType (Struct->Type2->BoardType, Option); 372 } 373 break; 374 375 // 376 // System Enclosure (Type 3) 377 // 378 case 3: 379 PRINT_PENDING_STRING (Struct, Type3, Manufacturer); 380 PRINT_STRUCT_VALUE (Struct, Type3, Type); 381 DisplaySystemEnclosureType (Struct->Type3->Type, Option); 382 PRINT_PENDING_STRING (Struct, Type3, Version); 383 PRINT_PENDING_STRING (Struct, Type3, SerialNumber); 384 PRINT_PENDING_STRING (Struct, Type3, AssetTag); 385 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOTUP_STATE), gShellDebug1HiiHandle); 386 DisplaySystemEnclosureStatus (Struct->Type3->BootupState, Option); 387 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_STATE), gShellDebug1HiiHandle); 388 DisplaySystemEnclosureStatus (Struct->Type3->PowerSupplyState, Option); 389 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_THERMAL_STATE), gShellDebug1HiiHandle); 390 DisplaySystemEnclosureStatus (Struct->Type3->ThermalState, Option); 391 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SECURITY_STATUS), gShellDebug1HiiHandle); 392 DisplaySESecurityStatus (Struct->Type3->SecurityStatus, Option); 393 if (AE_SMBIOS_VERSION (0x2, 0x3) && (Struct->Hdr->Length > 0xD)) { 394 PRINT_BIT_FIELD (Struct, Type3, OemDefined, 4); 395 } 396 break; 397 398 // 399 // Processor Information (Type 4) 400 // 401 case 4: 402 PRINT_SMBIOS_STRING (Struct, Struct->Type4->Socket, SocketDesignation) 403 DisplayProcessorType (Struct->Type4->ProcessorType, Option); 404 if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0x28) && 405 (Struct->Type4->ProcessorFamily == 0xFE)) { 406 // 407 // Get family from ProcessorFamily2 field 408 // 409 DisplayProcessorFamily2 (Struct->Type4->ProcessorFamily2, Option); 410 } else { 411 DisplayProcessorFamily (Struct->Type4->ProcessorFamily, Option); 412 } 413 PRINT_PENDING_STRING (Struct, Type4, ProcessorManufacture); 414 PRINT_BIT_FIELD (Struct, Type4, ProcessorId, 8); 415 PRINT_PENDING_STRING (Struct, Type4, ProcessorVersion); 416 DisplayProcessorVoltage (*(UINT8 *) &(Struct->Type4->Voltage), Option); 417 PRINT_STRUCT_VALUE (Struct, Type4, ExternalClock); 418 PRINT_STRUCT_VALUE (Struct, Type4, MaxSpeed); 419 PRINT_STRUCT_VALUE (Struct, Type4, CurrentSpeed); 420 DisplayProcessorStatus (Struct->Type4->Status, Option); 421 DisplayProcessorUpgrade (Struct->Type4->ProcessorUpgrade, Option); 422 PRINT_STRUCT_VALUE_H (Struct, Type4, L1CacheHandle); 423 PRINT_STRUCT_VALUE_H (Struct, Type4, L2CacheHandle); 424 PRINT_STRUCT_VALUE_H (Struct, Type4, L3CacheHandle); 425 if (AE_SMBIOS_VERSION (0x2, 0x3) && (Struct->Hdr->Length > 0x20)) { 426 PRINT_PENDING_STRING (Struct, Type4, SerialNumber); 427 PRINT_PENDING_STRING (Struct, Type4, AssetTag); 428 PRINT_PENDING_STRING (Struct, Type4, PartNumber); 429 } 430 if (AE_SMBIOS_VERSION (0x2, 0x5) && (Struct->Hdr->Length > 0x23)) { 431 PRINT_STRUCT_VALUE (Struct, Type4, CoreCount); 432 PRINT_STRUCT_VALUE (Struct, Type4, EnabledCoreCount); 433 PRINT_STRUCT_VALUE (Struct, Type4, ThreadCount); 434 DisplayProcessorCharacteristics (Struct->Type4->ProcessorCharacteristics, Option); 435 } 436 if ((SmbiosMajorVersion >= 0x3) && (Struct->Hdr->Length > 0x2A)) { 437 PRINT_STRUCT_VALUE (Struct, Type4, CoreCount2); 438 PRINT_STRUCT_VALUE (Struct, Type4, EnabledCoreCount2); 439 PRINT_STRUCT_VALUE (Struct, Type4, ThreadCount2); 440 } 441 break; 442 443 // 444 // Memory Controller Information (Type 5) 445 // 446 case 5: 447 { 448 UINT8 SlotNum; 449 SlotNum = Struct->Type5->AssociatedMemorySlotNum; 450 451 DisplayMcErrorDetectMethod (Struct->Type5->ErrDetectMethod, Option); 452 DisplayMcErrorCorrectCapability (*(UINT8 *) &(Struct->Type5->ErrCorrectCapability), Option); 453 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SUPOPRT), gShellDebug1HiiHandle); 454 DisplayMcInterleaveSupport (Struct->Type5->SupportInterleave, Option); 455 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CURRENT), gShellDebug1HiiHandle); 456 DisplayMcInterleaveSupport (Struct->Type5->CurrentInterleave, Option); 457 DisplayMaxMemoryModuleSize (Struct->Type5->MaxMemoryModuleSize, SlotNum, Option); 458 DisplayMcMemorySpeeds (*(UINT16 *) &(Struct->Type5->SupportSpeed), Option); 459 DisplayMmMemoryType (Struct->Type5->SupportMemoryType, Option); 460 DisplayMemoryModuleVoltage (Struct->Type5->MemoryModuleVoltage, Option); 461 PRINT_STRUCT_VALUE (Struct, Type5, AssociatedMemorySlotNum); 462 // 463 // According to SMBIOS Specification, offset 0x0F 464 // 465 DisplayMemoryModuleConfigHandles ((UINT16 *) (&Buffer[0x0F]), SlotNum, Option); 466 DisplayMcErrorCorrectCapability (Buffer[0x0F + 2 * SlotNum], Option); 467 } 468 break; 469 470 // 471 // Memory Module Information (Type 6) 472 // 473 case 6: 474 PRINT_PENDING_STRING (Struct, Type6, SocketDesignation); 475 DisplayMmBankConnections (Struct->Type6->BankConnections, Option); 476 PRINT_STRUCT_VALUE (Struct, Type6, CurrentSpeed); 477 DisplayMmMemoryType (*(UINT16 *) &(Struct->Type6->CurrentMemoryType), Option); 478 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INSTALLED), gShellDebug1HiiHandle); 479 DisplayMmMemorySize (*(UINT8 *) &(Struct->Type6->InstalledSize), Option); 480 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED), gShellDebug1HiiHandle); 481 DisplayMmMemorySize (*(UINT8 *) &(Struct->Type6->EnabledSize), Option); 482 DisplayMmErrorStatus (Struct->Type6->ErrorStatus, Option); 483 break; 484 485 // 486 // Cache Information (Type 7) 487 // 488 case 7: 489 PRINT_PENDING_STRING (Struct, Type7, SocketDesignation); 490 DisplayCacheConfiguration (Struct->Type7->CacheConfiguration, Option); 491 PRINT_STRUCT_VALUE_H (Struct, Type7, MaximumCacheSize); 492 PRINT_STRUCT_VALUE_H (Struct, Type7, InstalledSize); 493 PRINT_STRUCT_VALUE_H (Struct, Type7, SupportedSRAMType); 494 PRINT_STRUCT_VALUE_H (Struct, Type7, CurrentSRAMType); 495 DisplayCacheSRAMType (ReadUnaligned16 ((UINT16 *) (UINTN) &(Struct->Type7->CurrentSRAMType)), Option); 496 PRINT_STRUCT_VALUE_H (Struct, Type7, CacheSpeed); 497 DisplayCacheErrCorrectingType (Struct->Type7->ErrorCorrectionType, Option); 498 DisplayCacheSystemCacheType (Struct->Type7->SystemCacheType, Option); 499 DisplayCacheAssociativity (Struct->Type7->Associativity, Option); 500 break; 501 502 // 503 // Port Connector Information (Type 8) 504 // 505 case 8: 506 PRINT_PENDING_STRING (Struct, Type8, InternalReferenceDesignator); 507 Print (L"Internal "); 508 DisplayPortConnectorType (Struct->Type8->InternalConnectorType, Option); 509 PRINT_PENDING_STRING (Struct, Type8, ExternalReferenceDesignator); 510 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EXTERNAL), gShellDebug1HiiHandle); 511 DisplayPortConnectorType (Struct->Type8->ExternalConnectorType, Option); 512 DisplayPortType (Struct->Type8->PortType, Option); 513 break; 514 515 // 516 // System Slots (Type 9) 517 // 518 case 9: 519 PRINT_PENDING_STRING (Struct, Type9, SlotDesignation); 520 DisplaySystemSlotType (Struct->Type9->SlotType, Option); 521 DisplaySystemSlotDataBusWidth (Struct->Type9->SlotDataBusWidth, Option); 522 DisplaySystemSlotCurrentUsage (Struct->Type9->CurrentUsage, Option); 523 DisplaySystemSlotLength (Struct->Type9->SlotLength, Option); 524 DisplaySystemSlotId ( 525 Struct->Type9->SlotID, 526 Struct->Type9->SlotType, 527 Option 528 ); 529 DisplaySlotCharacteristics1 (*(UINT8 *) &(Struct->Type9->SlotCharacteristics1), Option); 530 DisplaySlotCharacteristics2 (*(UINT8 *) &(Struct->Type9->SlotCharacteristics2), Option); 531 if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0xD)) { 532 PRINT_STRUCT_VALUE_H (Struct, Type9, SegmentGroupNum); 533 PRINT_STRUCT_VALUE_H (Struct, Type9, BusNum); 534 PRINT_STRUCT_VALUE_H (Struct, Type9, DevFuncNum); 535 } 536 break; 537 538 // 539 // On Board Devices Information (Type 10) 540 // 541 case 10: 542 { 543 UINTN NumOfDevice; 544 NumOfDevice = (Struct->Type10->Hdr.Length - sizeof (SMBIOS_STRUCTURE)) / (2 * sizeof (UINT8)); 545 for (Index = 0; Index < NumOfDevice; Index++) { 546 DisplayOnboardDeviceTypes (Struct->Type10->Device[Index].DeviceType, Option); 547 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DESC_STRING), gShellDebug1HiiHandle); 548 ShellPrintEx(-1,-1,L"%a\n",LibGetSmbiosString (Struct, Struct->Type10->Device[Index].DescriptionString)); 549 } 550 } 551 break; 552 553 // 554 // Oem Strings (Type 11) 555 // 556 case 11: 557 PRINT_STRUCT_VALUE (Struct, Type11, StringCount); 558 for (Index = 1; Index <= Struct->Type11->StringCount; Index++) { 559 ShellPrintEx(-1,-1,L"%a\n", LibGetSmbiosString (Struct, Index)); 560 } 561 break; 562 563 // 564 // System Configuration Options (Type 12) 565 // 566 case 12: 567 PRINT_STRUCT_VALUE (Struct, Type12, StringCount); 568 for (Index = 1; Index <= Struct->Type12->StringCount; Index++) { 569 ShellPrintEx(-1,-1,L"%a\n", LibGetSmbiosString (Struct, Index)); 570 } 571 break; 572 573 // 574 // BIOS Language Information (Type 13) 575 // 576 case 13: 577 PRINT_STRUCT_VALUE (Struct, Type13, InstallableLanguages); 578 PRINT_STRUCT_VALUE (Struct, Type13, Flags); 579 PRINT_BIT_FIELD (Struct, Type13, Reserved, 15); 580 PRINT_PENDING_STRING (Struct, Type13, CurrentLanguages); 581 break; 582 583 // 584 // Group Associations (Type 14) 585 // 586 case 14: 587 { 588 UINT8 NumOfItem; 589 NumOfItem = (Struct->Type14->Hdr.Length - 5) / 3; 590 PRINT_PENDING_STRING (Struct, Type14, GroupName); 591 for (Index = 0; Index < NumOfItem; Index++) { 592 ShellPrintEx(-1,-1,L"ItemType %d: %d\n", Index + 1, Struct->Type14->Group[Index].ItemType); 593 ShellPrintEx(-1,-1,L"ItemHandle %d: %d\n", Index + 1, Struct->Type14->Group[Index].ItemHandle); 594 } 595 } 596 break; 597 598 // 599 // System Event Log (Type 15) 600 // 601 case 15: 602 { 603 EVENT_LOG_TYPE *Ptr; 604 UINT8 Count; 605 UINT8 *AccessMethodAddress; 606 607 PRINT_STRUCT_VALUE_H (Struct, Type15, LogAreaLength); 608 PRINT_STRUCT_VALUE_H (Struct, Type15, LogHeaderStartOffset); 609 PRINT_STRUCT_VALUE_H (Struct, Type15, LogDataStartOffset); 610 DisplaySELAccessMethod (Struct->Type15->AccessMethod, Option); 611 PRINT_STRUCT_VALUE_H (Struct, Type15, AccessMethodAddress); 612 DisplaySELLogStatus (Struct->Type15->LogStatus, Option); 613 PRINT_STRUCT_VALUE_H (Struct, Type15, LogChangeToken); 614 DisplaySysEventLogHeaderFormat (Struct->Type15->LogHeaderFormat, Option); 615 PRINT_STRUCT_VALUE_H (Struct, Type15, NumberOfSupportedLogTypeDescriptors); 616 PRINT_STRUCT_VALUE_H (Struct, Type15, LengthOfLogTypeDescriptor); 617 618 Count = Struct->Type15->NumberOfSupportedLogTypeDescriptors; 619 if (Count > 0) { 620 Ptr = Struct->Type15->EventLogTypeDescriptors; 621 622 // 623 // Display all Event Log type descriptors supported by system 624 // 625 for (Index = 0; Index < Count; Index++, Ptr++) { 626 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SUPOPRTED_EVENT), gShellDebug1HiiHandle, Index + 1); 627 DisplaySELTypes (Ptr->LogType, Option); 628 DisplaySELVarDataFormatType (Ptr->DataFormatType, Option); 629 } 630 631 if (Option >= SHOW_DETAIL) { 632 switch (Struct->Type15->AccessMethod) { 633 case 03: 634 AccessMethodAddress = (UINT8 *) (UINTN) (Struct->Type15->AccessMethodAddress); 635 break; 636 637 case 00: 638 case 01: 639 case 02: 640 case 04: 641 default: 642 ShellPrintHiiEx(-1,-1,NULL, 643 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ACCESS_METHOD_NOT_SUPOPRTED), 644 gShellDebug1HiiHandle, 645 Struct->Type15->AccessMethod 646 ); 647 return EFI_UNSUPPORTED; 648 } 649 // 650 // Display Event Log Header 651 // 652 // Starting offset (or index) within the nonvolatile storage 653 // of the event-log's header, from the Access Method Address 654 // 655 DisplaySysEventLogHeader ( 656 Struct->Type15->LogHeaderFormat, 657 AccessMethodAddress + Struct->Type15->LogHeaderStartOffset 658 ); 659 660 // 661 // Display all Event Log data 662 // 663 // Starting offset (or index) within the nonvolatile storage 664 // of the event-log's first data byte, from the Access Method Address(0x14) 665 // 666 DisplaySysEventLogData ( 667 AccessMethodAddress + Struct->Type15->LogDataStartOffset, 668 (UINT16) 669 ( 670 Struct->Type15->LogAreaLength - 671 (Struct->Type15->LogDataStartOffset - Struct->Type15->LogHeaderStartOffset) 672 ) 673 ); 674 } 675 676 } 677 } 678 break; 679 680 // 681 // Physical Memory Array (Type 16) 682 // 683 case 16: 684 DisplayPMALocation (Struct->Type16->Location, Option); 685 DisplayPMAUse (Struct->Type16->Use, Option); 686 DisplayPMAErrorCorrectionTypes ( 687 Struct->Type16->MemoryErrorCorrection, 688 Option 689 ); 690 PRINT_STRUCT_VALUE_H (Struct, Type16, MaximumCapacity); 691 PRINT_STRUCT_VALUE_H (Struct, Type16, MemoryErrorInformationHandle); 692 PRINT_STRUCT_VALUE_H (Struct, Type16, NumberOfMemoryDevices); 693 if (AE_SMBIOS_VERSION (0x2, 0x7) && Struct->Hdr->Length > 0xF) { 694 PRINT_STRUCT_VALUE_LH (Struct, Type16, ExtendedMaximumCapacity); 695 } 696 break; 697 698 // 699 // Memory Device (Type 17) 700 // 701 case 17: 702 PRINT_STRUCT_VALUE_H (Struct, Type17, MemoryArrayHandle); 703 PRINT_STRUCT_VALUE_H (Struct, Type17, MemoryErrorInformationHandle); 704 PRINT_STRUCT_VALUE (Struct, Type17, TotalWidth); 705 PRINT_STRUCT_VALUE (Struct, Type17, DataWidth); 706 PRINT_STRUCT_VALUE (Struct, Type17, Size); 707 DisplayMemoryDeviceFormFactor (Struct->Type17->FormFactor, Option); 708 PRINT_STRUCT_VALUE_H (Struct, Type17, DeviceSet); 709 PRINT_PENDING_STRING (Struct, Type17, DeviceLocator); 710 PRINT_PENDING_STRING (Struct, Type17, BankLocator); 711 DisplayMemoryDeviceType (Struct->Type17->MemoryType, Option); 712 DisplayMemoryDeviceTypeDetail (ReadUnaligned16 ((UINT16 *) (UINTN) &(Struct->Type17->TypeDetail)), Option); 713 PRINT_STRUCT_VALUE_H (Struct, Type17, Speed); 714 PRINT_PENDING_STRING (Struct, Type17, Manufacturer); 715 PRINT_PENDING_STRING (Struct, Type17, SerialNumber); 716 PRINT_PENDING_STRING (Struct, Type17, AssetTag); 717 PRINT_PENDING_STRING (Struct, Type17, PartNumber); 718 if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0x1B)) { 719 PRINT_STRUCT_VALUE_H (Struct, Type17, Attributes); 720 } 721 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0x1C)) { 722 PRINT_STRUCT_VALUE (Struct, Type17, ExtendedSize); 723 PRINT_STRUCT_VALUE (Struct, Type17, ConfiguredMemoryClockSpeed); 724 } 725 if (AE_SMBIOS_VERSION (0x2, 0x8) && (Struct->Hdr->Length > 0x22)) { 726 PRINT_STRUCT_VALUE (Struct, Type17, MinimumVoltage); 727 PRINT_STRUCT_VALUE (Struct, Type17, MaximumVoltage); 728 PRINT_STRUCT_VALUE (Struct, Type17, ConfiguredVoltage); 729 } 730 break; 731 732 // 733 // 32-bit Memory Error Information (Type 18) 734 // 735 case 18: 736 DisplayMemoryErrorType (Struct->Type18->ErrorType, Option); 737 DisplayMemoryErrorGranularity ( 738 Struct->Type18->ErrorGranularity, 739 Option 740 ); 741 DisplayMemoryErrorOperation (Struct->Type18->ErrorOperation, Option); 742 PRINT_STRUCT_VALUE_H (Struct, Type18, VendorSyndrome); 743 PRINT_STRUCT_VALUE_H (Struct, Type18, MemoryArrayErrorAddress); 744 PRINT_STRUCT_VALUE_H (Struct, Type18, DeviceErrorAddress); 745 PRINT_STRUCT_VALUE_H (Struct, Type18, ErrorResolution); 746 break; 747 748 // 749 // Memory Array Mapped Address (Type 19) 750 // 751 case 19: 752 PRINT_STRUCT_VALUE_H (Struct, Type19, StartingAddress); 753 PRINT_STRUCT_VALUE_H (Struct, Type19, EndingAddress); 754 PRINT_STRUCT_VALUE_H (Struct, Type19, MemoryArrayHandle); 755 PRINT_STRUCT_VALUE_H (Struct, Type19, PartitionWidth); 756 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0xF)) { 757 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedStartingAddress); 758 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedEndingAddress); 759 } 760 break; 761 762 // 763 // Memory Device Mapped Address (Type 20) 764 // 765 case 20: 766 PRINT_STRUCT_VALUE_H (Struct, Type20, StartingAddress); 767 PRINT_STRUCT_VALUE_H (Struct, Type20, EndingAddress); 768 PRINT_STRUCT_VALUE_H (Struct, Type20, MemoryDeviceHandle); 769 PRINT_STRUCT_VALUE_H (Struct, Type20, MemoryArrayMappedAddressHandle); 770 PRINT_STRUCT_VALUE_H (Struct, Type20, PartitionRowPosition); 771 PRINT_STRUCT_VALUE_H (Struct, Type20, InterleavePosition); 772 PRINT_STRUCT_VALUE_H (Struct, Type20, InterleavedDataDepth); 773 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0x13)) { 774 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedStartingAddress); 775 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedEndingAddress); 776 } 777 break; 778 779 // 780 // Built-in Pointing Device (Type 21) 781 // 782 case 21: 783 DisplayPointingDeviceType (Struct->Type21->Type, Option); 784 DisplayPointingDeviceInterface (Struct->Type21->Interface, Option); 785 PRINT_STRUCT_VALUE (Struct, Type21, NumberOfButtons); 786 break; 787 788 // 789 // Portable Battery (Type 22) 790 // 791 case 22: 792 PRINT_PENDING_STRING (Struct, Type22, Location); 793 PRINT_PENDING_STRING (Struct, Type22, Manufacturer); 794 PRINT_PENDING_STRING (Struct, Type22, ManufactureDate); 795 PRINT_PENDING_STRING (Struct, Type22, SerialNumber); 796 PRINT_PENDING_STRING (Struct, Type22, DeviceName); 797 DisplayPBDeviceChemistry ( 798 Struct->Type22->DeviceChemistry, 799 Option 800 ); 801 PRINT_STRUCT_VALUE_H (Struct, Type22, DeviceCapacity); 802 PRINT_STRUCT_VALUE_H (Struct, Type22, DesignVoltage); 803 PRINT_PENDING_STRING (Struct, Type22, SBDSVersionNumber); 804 PRINT_STRUCT_VALUE_H (Struct, Type22, MaximumErrorInBatteryData); 805 PRINT_STRUCT_VALUE_H (Struct, Type22, SBDSSerialNumber); 806 DisplaySBDSManufactureDate ( 807 Struct->Type22->SBDSManufactureDate, 808 Option 809 ); 810 PRINT_PENDING_STRING (Struct, Type22, SBDSDeviceChemistry); 811 PRINT_STRUCT_VALUE_H (Struct, Type22, DesignCapacityMultiplier); 812 PRINT_STRUCT_VALUE_H (Struct, Type22, OEMSpecific); 813 break; 814 815 // 816 // System Reset (Type 23) 817 // 818 case 23: 819 DisplaySystemResetCapabilities ( 820 Struct->Type23->Capabilities, 821 Option 822 ); 823 PRINT_STRUCT_VALUE_H (Struct, Type23, ResetCount); 824 PRINT_STRUCT_VALUE_H (Struct, Type23, ResetLimit); 825 PRINT_STRUCT_VALUE_H (Struct, Type23, TimerInterval); 826 PRINT_STRUCT_VALUE_H (Struct, Type23, Timeout); 827 break; 828 829 // 830 // Hardware Security (Type 24) 831 // 832 case 24: 833 DisplayHardwareSecuritySettings ( 834 Struct->Type24->HardwareSecuritySettings, 835 Option 836 ); 837 break; 838 839 // 840 // System Power Controls (Type 25) 841 // 842 case 25: 843 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnMonth); 844 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnDayOfMonth); 845 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnHour); 846 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnMinute); 847 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnSecond); 848 break; 849 850 // 851 // Voltage Probe (Type 26) 852 // 853 case 26: 854 PRINT_PENDING_STRING (Struct, Type26, Description); 855 DisplayVPLocation (*(UINT8 *) &(Struct->Type26->LocationAndStatus), Option); 856 DisplayVPStatus (*(UINT8 *) &(Struct->Type26->LocationAndStatus), Option); 857 PRINT_STRUCT_VALUE_H (Struct, Type26, MaximumValue); 858 PRINT_STRUCT_VALUE_H (Struct, Type26, MinimumValue); 859 PRINT_STRUCT_VALUE_H (Struct, Type26, Resolution); 860 PRINT_STRUCT_VALUE_H (Struct, Type26, Tolerance); 861 PRINT_STRUCT_VALUE_H (Struct, Type26, Accuracy); 862 PRINT_STRUCT_VALUE_H (Struct, Type26, OEMDefined); 863 PRINT_STRUCT_VALUE_H (Struct, Type26, NominalValue); 864 break; 865 866 // 867 // Cooling Device (Type 27) 868 // 869 case 27: 870 PRINT_STRUCT_VALUE_H (Struct, Type27, TemperatureProbeHandle); 871 DisplayCoolingDeviceStatus (*(UINT8 *) &(Struct->Type27->DeviceTypeAndStatus), Option); 872 DisplayCoolingDeviceType (*(UINT8 *) &(Struct->Type27->DeviceTypeAndStatus), Option); 873 PRINT_STRUCT_VALUE_H (Struct, Type27, CoolingUnitGroup); 874 PRINT_STRUCT_VALUE_H (Struct, Type27, OEMDefined); 875 PRINT_STRUCT_VALUE_H (Struct, Type27, NominalSpeed); 876 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0xE)) { 877 PRINT_PENDING_STRING (Struct, Type27, Description); 878 } 879 break; 880 881 // 882 // Temperature Probe (Type 28) 883 // 884 case 28: 885 PRINT_PENDING_STRING (Struct, Type28, Description); 886 DisplayTemperatureProbeStatus (*(UINT8 *) &(Struct->Type28->LocationAndStatus), Option); 887 DisplayTemperatureProbeLoc (*(UINT8 *) &(Struct->Type28->LocationAndStatus), Option); 888 PRINT_STRUCT_VALUE_H (Struct, Type28, MaximumValue); 889 PRINT_STRUCT_VALUE_H (Struct, Type28, MinimumValue); 890 PRINT_STRUCT_VALUE_H (Struct, Type28, Resolution); 891 PRINT_STRUCT_VALUE_H (Struct, Type28, Tolerance); 892 PRINT_STRUCT_VALUE_H (Struct, Type28, Accuracy); 893 PRINT_STRUCT_VALUE_H (Struct, Type28, OEMDefined); 894 PRINT_STRUCT_VALUE_H (Struct, Type28, NominalValue); 895 break; 896 897 // 898 // Electrical Current Probe (Type 29) 899 // 900 case 29: 901 PRINT_PENDING_STRING (Struct, Type29, Description); 902 DisplayECPStatus (*(UINT8 *) &(Struct->Type29->LocationAndStatus), Option); 903 DisplayECPLoc (*(UINT8 *) &(Struct->Type29->LocationAndStatus), Option); 904 PRINT_STRUCT_VALUE_H (Struct, Type29, MaximumValue); 905 PRINT_STRUCT_VALUE_H (Struct, Type29, MinimumValue); 906 PRINT_STRUCT_VALUE_H (Struct, Type29, Resolution); 907 PRINT_STRUCT_VALUE_H (Struct, Type29, Tolerance); 908 PRINT_STRUCT_VALUE_H (Struct, Type29, Accuracy); 909 PRINT_STRUCT_VALUE_H (Struct, Type29, OEMDefined); 910 PRINT_STRUCT_VALUE_H (Struct, Type29, NominalValue); 911 break; 912 913 // 914 // Out-of-Band Remote Access (Type 30) 915 // 916 case 30: 917 PRINT_PENDING_STRING (Struct, Type30, ManufacturerName); 918 DisplayOBRAConnections (Struct->Type30->Connections, Option); 919 break; 920 921 // 922 // Boot Integrity Services (BIS) Entry Point (Type 31) 923 // 924 case 31: 925 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STRUCT_TYPE31), gShellDebug1HiiHandle); 926 break; 927 928 // 929 // System Boot Information (Type 32) 930 // 931 case 32: 932 PRINT_BIT_FIELD (Struct, Type32, Reserved, 6); 933 DisplaySystemBootStatus (Struct->Type32->BootStatus, Option); 934 break; 935 936 // 937 // 64-Bit Memory Error Information (Type 33) 938 // 939 case 33: 940 DisplayMemoryErrorType (Struct->Type33->ErrorType, Option); 941 DisplayMemoryErrorGranularity ( 942 Struct->Type33->ErrorGranularity, 943 Option 944 ); 945 DisplayMemoryErrorOperation (Struct->Type33->ErrorOperation, Option); 946 PRINT_STRUCT_VALUE_H (Struct, Type33, VendorSyndrome); 947 PRINT_STRUCT_VALUE_LH (Struct, Type33, MemoryArrayErrorAddress); 948 PRINT_STRUCT_VALUE_LH (Struct, Type33, DeviceErrorAddress); 949 PRINT_STRUCT_VALUE_H (Struct, Type33, ErrorResolution); 950 break; 951 952 // 953 // Management Device (Type 34) 954 // 955 case 34: 956 PRINT_PENDING_STRING (Struct, Type34, Description); 957 DisplayMDType (Struct->Type34->Type, Option); 958 PRINT_STRUCT_VALUE_H (Struct, Type34, Address); 959 DisplayMDAddressType (Struct->Type34->AddressType, Option); 960 break; 961 962 // 963 // Management Device Component (Type 35) 964 // 965 case 35: 966 PRINT_PENDING_STRING (Struct, Type35, Description); 967 PRINT_STRUCT_VALUE_H (Struct, Type35, ManagementDeviceHandle); 968 PRINT_STRUCT_VALUE_H (Struct, Type35, ComponentHandle); 969 PRINT_STRUCT_VALUE_H (Struct, Type35, ThresholdHandle); 970 break; 971 972 // 973 // Management Device Threshold Data (Type 36) 974 // 975 case 36: 976 PRINT_STRUCT_VALUE_H (Struct, Type36, LowerThresholdNonCritical); 977 PRINT_STRUCT_VALUE_H (Struct, Type36, UpperThresholdNonCritical); 978 PRINT_STRUCT_VALUE_H (Struct, Type36, LowerThresholdCritical); 979 PRINT_STRUCT_VALUE_H (Struct, Type36, UpperThresholdCritical); 980 PRINT_STRUCT_VALUE_H (Struct, Type36, LowerThresholdNonRecoverable); 981 PRINT_STRUCT_VALUE_H (Struct, Type36, UpperThresholdNonRecoverable); 982 break; 983 984 // 985 // Memory Channel (Type 37) 986 // 987 case 37: 988 { 989 UINT8 Count; 990 MEMORY_DEVICE *Ptr; 991 DisplayMemoryChannelType (Struct->Type37->ChannelType, Option); 992 PRINT_STRUCT_VALUE_H (Struct, Type37, MaximumChannelLoad); 993 PRINT_STRUCT_VALUE_H (Struct, Type37, MemoryDeviceCount); 994 995 Count = Struct->Type37->MemoryDeviceCount; 996 Ptr = Struct->Type37->MemoryDevice; 997 for (Index = 0; Index < Count; Index++) { 998 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_DEVICE), gShellDebug1HiiHandle, Index + 1); 999 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DEV_LOAD), gShellDebug1HiiHandle, Ptr[Index].DeviceLoad); 1000 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DEV_HANDLE), gShellDebug1HiiHandle, Ptr[Index].DeviceHandle); 1001 } 1002 } 1003 break; 1004 1005 // 1006 // IPMI Device Information (Type 38) 1007 // 1008 case 38: 1009 DisplayIPMIDIBMCInterfaceType (Struct->Type38->InterfaceType, Option); 1010 PRINT_STRUCT_VALUE_H (Struct, Type38, IPMISpecificationRevision); 1011 PRINT_STRUCT_VALUE_H (Struct, Type38, I2CSlaveAddress); 1012 PRINT_STRUCT_VALUE_H (Struct, Type38, NVStorageDeviceAddress); 1013 PRINT_STRUCT_VALUE_LH (Struct, Type38, BaseAddress); 1014 break; 1015 1016 // 1017 // System Power Supply (Type 39) 1018 // 1019 case 39: 1020 PRINT_STRUCT_VALUE_H (Struct, Type39, PowerUnitGroup); 1021 PRINT_PENDING_STRING (Struct, Type39, Location); 1022 PRINT_PENDING_STRING (Struct, Type39, DeviceName); 1023 PRINT_PENDING_STRING (Struct, Type39, Manufacturer); 1024 PRINT_PENDING_STRING (Struct, Type39, SerialNumber); 1025 PRINT_PENDING_STRING (Struct, Type39, AssetTagNumber); 1026 PRINT_PENDING_STRING (Struct, Type39, ModelPartNumber); 1027 PRINT_PENDING_STRING (Struct, Type39, RevisionLevel); 1028 PRINT_STRUCT_VALUE_H (Struct, Type39, MaxPowerCapacity); 1029 DisplaySPSCharacteristics ( 1030 *(UINT16 *) &(Struct->Type39->PowerSupplyCharacteristics), 1031 Option 1032 ); 1033 PRINT_STRUCT_VALUE_H (Struct, Type39, InputVoltageProbeHandle); 1034 PRINT_STRUCT_VALUE_H (Struct, Type39, CoolingDeviceHandle); 1035 PRINT_STRUCT_VALUE_H (Struct, Type39, InputCurrentProbeHandle); 1036 break; 1037 1038 // 1039 // Additional Information (Type 40) 1040 // 1041 case 40: 1042 { 1043 UINT8 NumberOfEntries; 1044 UINT8 EntryLength; 1045 ADDITIONAL_INFORMATION_ENTRY *Entries; 1046 1047 EntryLength = 0; 1048 Entries = Struct->Type40->AdditionalInfoEntries; 1049 NumberOfEntries = Struct->Type40->NumberOfAdditionalInformationEntries; 1050 1051 PRINT_STRUCT_VALUE_H (Struct, Type40, NumberOfAdditionalInformationEntries); 1052 1053 for (Index = 0; Index < NumberOfEntries; Index++) { 1054 EntryLength = Entries->EntryLength; 1055 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_ENTRYLEN), gShellDebug1HiiHandle, EntryLength); 1056 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_REFERENCEDHANDLE), gShellDebug1HiiHandle, Entries->ReferencedHandle); 1057 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_REFERENCEDOFFSET), gShellDebug1HiiHandle, Entries->ReferencedOffset); 1058 PRINT_SMBIOS_STRING (Struct, Entries->EntryString, String); 1059 PRINT_SMBIOS_BIT_FIELD (Struct, Entries->Value, Value, EntryLength - 5); 1060 Entries = (ADDITIONAL_INFORMATION_ENTRY *) ((UINT8 *)Entries + EntryLength); 1061 } 1062 } 1063 break; 1064 1065 // 1066 // Onboard Devices Extended Information (Type 41) 1067 // 1068 case 41: 1069 PRINT_PENDING_STRING (Struct, Type41, ReferenceDesignation); 1070 ShellPrintEx(-1,-1,(((Struct->Type41->DeviceType) & 0x80) != 0) ? L"Device Enabled\n": L"Device Disabled\n"); 1071 DisplayOnboardDeviceTypes ((Struct->Type41->DeviceType) & 0x7F, Option); 1072 PRINT_STRUCT_VALUE_H (Struct, Type41, DeviceTypeInstance); 1073 PRINT_STRUCT_VALUE_H (Struct, Type41, SegmentGroupNum); 1074 PRINT_STRUCT_VALUE_H (Struct, Type41, BusNum); 1075 PRINT_STRUCT_VALUE_H (Struct, Type41, DevFuncNum); 1076 break; 1077 1078 // 1079 // Management Controller Host Interface (Type 42) 1080 // 1081 case 42: 1082 PRINT_STRUCT_VALUE_H (Struct, Type42, InterfaceType); 1083 break; 1084 1085 // 1086 // Inactive (Type 126) 1087 // 1088 case 126: 1089 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INACTIVE_STRUCT), gShellDebug1HiiHandle); 1090 break; 1091 1092 // 1093 // End-of-Table (Type 127) 1094 // 1095 case 127: 1096 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_THIS_STRUCT_END_TABLE), gShellDebug1HiiHandle); 1097 break; 1098 1099 default: 1100 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STRUCT_TYPE_UNDEFINED), gShellDebug1HiiHandle); 1101 break; 1102 } 1103 1104 return EFI_SUCCESS; 1105 } 1106 1107 /** 1108 Display BIOS Information (Type 0) information. 1109 1110 @param[in] Chara The information bits. 1111 @param[in] Option The optional information. 1112 **/ 1113 VOID 1114 DisplayBiosCharacteristics ( 1115 IN UINT64 Chara, 1116 IN UINT8 Option 1117 ) 1118 { 1119 // 1120 // Print header 1121 // 1122 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR), gShellDebug1HiiHandle); 1123 // 1124 // print option 1125 // 1126 PRINT_INFO_OPTION (Chara, Option); 1127 1128 // 1129 // Check all the bits and print information 1130 // This function does not use Table because table of bits 1131 // are designed not to deal with UINT64 1132 // 1133 if (BIT (Chara, 0) != 0) { 1134 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle); 1135 } 1136 1137 if (BIT (Chara, 1) != 0) { 1138 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle); 1139 } 1140 1141 if (BIT (Chara, 2) != 0) { 1142 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN_BIT), gShellDebug1HiiHandle); 1143 } 1144 1145 if (BIT (Chara, 3) != 0) { 1146 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR_NOT_SUPPORTED), gShellDebug1HiiHandle); 1147 } 1148 1149 if (BIT (Chara, 4) != 0) { 1150 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ISA_SUPPORTED), gShellDebug1HiiHandle); 1151 } 1152 1153 if (BIT (Chara, 5) != 0) { 1154 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MSA_SUPPORTED), gShellDebug1HiiHandle); 1155 } 1156 1157 if (BIT (Chara, 6) != 0) { 1158 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EISA_SUPPORTED), gShellDebug1HiiHandle); 1159 } 1160 1161 if (BIT (Chara, 7) != 0) { 1162 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PCI_SUPPORTED), gShellDebug1HiiHandle); 1163 } 1164 1165 if (BIT (Chara, 8) != 0) { 1166 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PC_CARD_SUPPORTED), gShellDebug1HiiHandle); 1167 } 1168 1169 if (BIT (Chara, 9) != 0) { 1170 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PLUG_PLAY_SUPPORTED), gShellDebug1HiiHandle); 1171 } 1172 1173 if (BIT (Chara, 10) != 0) { 1174 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_APM_SUPPORTED), gShellDebug1HiiHandle); 1175 } 1176 1177 if (BIT (Chara, 11) != 0) { 1178 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_UPGRADEABLE), gShellDebug1HiiHandle); 1179 } 1180 1181 if (BIT (Chara, 12) != 0) { 1182 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_SHADOWING), gShellDebug1HiiHandle); 1183 } 1184 1185 if (BIT (Chara, 13) != 0) { 1186 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VESA_SUPPORTED), gShellDebug1HiiHandle); 1187 } 1188 1189 if (BIT (Chara, 14) != 0) { 1190 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ECSD_SUPPORT), gShellDebug1HiiHandle); 1191 } 1192 1193 if (BIT (Chara, 15) != 0) { 1194 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_FORM_CD_SUPPORTED), gShellDebug1HiiHandle); 1195 } 1196 1197 if (BIT (Chara, 16) != 0) { 1198 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SELECTED_BOOT_SUPPORTED), gShellDebug1HiiHandle); 1199 } 1200 1201 if (BIT (Chara, 17) != 0) { 1202 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_ROM_SOCKETED), gShellDebug1HiiHandle); 1203 } 1204 1205 if (BIT (Chara, 18) != 0) { 1206 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_FROM_PC_CARD), gShellDebug1HiiHandle); 1207 } 1208 1209 if (BIT (Chara, 19) != 0) { 1210 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EDD_ENHANCED_DRIVER), gShellDebug1HiiHandle); 1211 } 1212 1213 if (BIT (Chara, 20) != 0) { 1214 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_JAPANESE_FLOPPY_NEC), gShellDebug1HiiHandle); 1215 } 1216 1217 if (BIT (Chara, 21) != 0) { 1218 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_JAPANESE_FLOPPY_TOSHIBA), gShellDebug1HiiHandle); 1219 } 1220 1221 if (BIT (Chara, 22) != 0) { 1222 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FLOPPY_SERVICES_SUPPORTED), gShellDebug1HiiHandle); 1223 } 1224 1225 if (BIT (Chara, 23) != 0) { 1226 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_POINT_TWO_MB), gShellDebug1HiiHandle); 1227 } 1228 1229 if (BIT (Chara, 24) != 0) { 1230 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_720_KB), gShellDebug1HiiHandle); 1231 } 1232 1233 if (BIT (Chara, 25) != 0) { 1234 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TWO_POINT_EIGHT_EIGHT_MB), gShellDebug1HiiHandle); 1235 } 1236 1237 if (BIT (Chara, 26) != 0) { 1238 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PRINT_SCREEN_SUPPORT), gShellDebug1HiiHandle); 1239 } 1240 1241 if (BIT (Chara, 27) != 0) { 1242 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_KEYBOARD_SERV_SUPPORT), gShellDebug1HiiHandle); 1243 } 1244 1245 if (BIT (Chara, 28) != 0) { 1246 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SERIAL_SERVICES_SUPPORT), gShellDebug1HiiHandle); 1247 } 1248 1249 if (BIT (Chara, 29) != 0) { 1250 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PRINTER_SERVICES_SUPPORT), gShellDebug1HiiHandle); 1251 } 1252 1253 if (BIT (Chara, 30) != 0) { 1254 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MONO_VIDEO_SUPPORT), gShellDebug1HiiHandle); 1255 } 1256 1257 if (BIT (Chara, 31) != 0) { 1258 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NEC_PC_98), gShellDebug1HiiHandle); 1259 } 1260 // 1261 // Just print the Reserved 1262 // 1263 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_32_47), gShellDebug1HiiHandle); 1264 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_48_64), gShellDebug1HiiHandle); 1265 } 1266 1267 /** 1268 Display Bios Characteristice extensions1 information. 1269 1270 @param[in] Byte1 The information. 1271 @param[in] Option The optional information. 1272 **/ 1273 VOID 1274 DisplayBiosCharacteristicsExt1 ( 1275 IN UINT8 Byte1, 1276 IN UINT8 Option 1277 ) 1278 { 1279 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR_EXTENSION), gShellDebug1HiiHandle); 1280 // 1281 // Print option 1282 // 1283 PRINT_INFO_OPTION (Byte1, Option); 1284 1285 // 1286 // check bit and print 1287 // 1288 if (BIT (Byte1, 0) != 0) { 1289 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ACPI_SUPPORTED), gShellDebug1HiiHandle); 1290 } 1291 1292 if (BIT (Byte1, 1) != 0) { 1293 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_USB_LEGACY_SUPPORTED), gShellDebug1HiiHandle); 1294 } 1295 1296 if (BIT (Byte1, 2) != 0) { 1297 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AGP_SUPPORTED), gShellDebug1HiiHandle); 1298 } 1299 1300 if (BIT (Byte1, 3) != 0) { 1301 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_I2O_BOOT_SUPPORTED), gShellDebug1HiiHandle); 1302 } 1303 1304 if (BIT (Byte1, 4) != 0) { 1305 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LS_120_BOOT_SUPPORTED), gShellDebug1HiiHandle); 1306 } 1307 1308 if (BIT (Byte1, 5) != 0) { 1309 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ATAPI_ZIP_DRIVE), gShellDebug1HiiHandle); 1310 } 1311 1312 if (BIT (Byte1, 6) != 0) { 1313 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_1394_BOOT_SUPPORTED), gShellDebug1HiiHandle); 1314 } 1315 1316 if (BIT (Byte1, 7) != 0) { 1317 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SMART_BATTERY_SUPPORTED), gShellDebug1HiiHandle); 1318 } 1319 } 1320 1321 /** 1322 Display Bios Characteristice extensions2 information. 1323 1324 @param[in] byte2 The information. 1325 @param[in] Option The optional information. 1326 **/ 1327 VOID 1328 DisplayBiosCharacteristicsExt2 ( 1329 IN UINT8 byte2, 1330 IN UINT8 Option 1331 ) 1332 { 1333 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR_EXTENSION_2), gShellDebug1HiiHandle); 1334 // 1335 // Print option 1336 // 1337 PRINT_INFO_OPTION (byte2, Option); 1338 1339 if (BIT (byte2, 0) != 0) { 1340 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_BOOT_SPEC_SUPP), gShellDebug1HiiHandle); 1341 } 1342 1343 if (BIT (byte2, 1) != 0) { 1344 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FUNCTION_KEY_INIT), gShellDebug1HiiHandle); 1345 } 1346 1347 if (AE_SMBIOS_VERSION (0x2, 0x4)) { 1348 if (BIT (byte2, 2) != 0) { 1349 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLE_TAR_CONT_DIST), gShellDebug1HiiHandle); 1350 } 1351 if (AE_SMBIOS_VERSION (0x2, 0x7)) { 1352 if (BIT (byte2, 3) != 0) { 1353 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UEFI_SPEC_SUPPORT), gShellDebug1HiiHandle); 1354 } 1355 if (BIT (byte2, 4) != 0) { 1356 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VIRTUAL_MACHINE), gShellDebug1HiiHandle); 1357 } 1358 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RSVD_FOR_FUTURE), gShellDebug1HiiHandle, 5); 1359 } else { 1360 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RSVD_FOR_FUTURE), gShellDebug1HiiHandle, 3); 1361 } 1362 } else { 1363 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RSVD_FOR_FUTURE), gShellDebug1HiiHandle, 2); 1364 } 1365 } 1366 1367 /** 1368 Display Processor Information (Type 4) information. 1369 1370 @param[in] Family The family value. 1371 @param[in] Option The option value. 1372 **/ 1373 VOID 1374 DisplayProcessorFamily ( 1375 UINT8 Family, 1376 UINT8 Option 1377 ) 1378 { 1379 // 1380 // Print prompt message 1381 // 1382 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY), gShellDebug1HiiHandle); 1383 // 1384 // Print option 1385 // 1386 PRINT_INFO_OPTION (Family, Option); 1387 1388 // 1389 // Use switch to check 1390 // 1391 switch (Family) { 1392 case 0x01: 1393 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER), gShellDebug1HiiHandle); 1394 break; 1395 1396 case 0x02: 1397 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle); 1398 break; 1399 1400 case 0x03: 1401 Print (L"8086\n"); 1402 break; 1403 1404 case 0x04: 1405 Print (L"80286\n"); 1406 break; 1407 1408 case 0x05: 1409 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL386_PROCESSOR), gShellDebug1HiiHandle); 1410 break; 1411 1412 case 0x06: 1413 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL486_PROCESSOR), gShellDebug1HiiHandle); 1414 break; 1415 1416 case 0x07: 1417 Print (L"8087\n"); 1418 break; 1419 1420 case 0x08: 1421 Print (L"80287\n"); 1422 break; 1423 1424 case 0x09: 1425 Print (L"80387\n"); 1426 break; 1427 1428 case 0x0A: 1429 Print (L"80487\n"); 1430 break; 1431 1432 case 0x0B: 1433 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_PROC_FAMILY), gShellDebug1HiiHandle); 1434 break; 1435 1436 case 0x0C: 1437 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_PRO_PROC), gShellDebug1HiiHandle); 1438 break; 1439 1440 case 0x0D: 1441 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_II_PROC), gShellDebug1HiiHandle); 1442 break; 1443 1444 case 0x0E: 1445 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_PROC_MMX), gShellDebug1HiiHandle); 1446 break; 1447 1448 case 0x0F: 1449 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CELERON_PROC), gShellDebug1HiiHandle); 1450 break; 1451 1452 case 0x10: 1453 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_XEON_PROC), gShellDebug1HiiHandle); 1454 break; 1455 1456 case 0x11: 1457 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_III_PROC), gShellDebug1HiiHandle); 1458 break; 1459 1460 case 0x12: 1461 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_M1_FAMILY), gShellDebug1HiiHandle); 1462 break; 1463 1464 case 0x13: 1465 Print (L"M2 Family\n"); 1466 break; 1467 1468 case 0x14: 1469 Print (L"Intel Celeron M\n"); 1470 break; 1471 1472 case 0x15: 1473 Print (L"Intel Pentium 4 HT\n"); 1474 break; 1475 1476 case 0x18: 1477 Print (L"AMD Duron\n"); 1478 break; 1479 1480 case 0x19: 1481 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_K5_FAMILY), gShellDebug1HiiHandle); 1482 break; 1483 1484 case 0x1A: 1485 Print (L"K6 Family\n"); 1486 break; 1487 1488 case 0x1B: 1489 Print (L"K6-2\n"); 1490 break; 1491 1492 case 0x1C: 1493 Print (L"K6-3\n"); 1494 break; 1495 1496 case 0x1D: 1497 Print (L"AMD Althon Processor Family\n"); 1498 break; 1499 1500 case 0x1E: 1501 Print (L"AMD 29000 Family\n"); 1502 break; 1503 1504 case 0x1F: 1505 Print (L"K6-2+\n"); 1506 break; 1507 1508 case 0x20: 1509 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_FAMILY), gShellDebug1HiiHandle); 1510 break; 1511 1512 case 0x21: 1513 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_601), gShellDebug1HiiHandle); 1514 break; 1515 1516 case 0x22: 1517 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_603), gShellDebug1HiiHandle); 1518 break; 1519 1520 case 0x23: 1521 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_603_PLUS), gShellDebug1HiiHandle); 1522 break; 1523 1524 case 0x24: 1525 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_604), gShellDebug1HiiHandle); 1526 break; 1527 1528 case 0x25: 1529 Print (L"Power PC 620\n"); 1530 break; 1531 1532 case 0x26: 1533 Print (L"Power PC 704\n"); 1534 break; 1535 1536 case 0x27: 1537 Print (L"Power PC 750\n"); 1538 break; 1539 1540 case 0x28: 1541 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_DUO), gShellDebug1HiiHandle); 1542 break; 1543 1544 case 0x29: 1545 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_DUO_MOBILE), gShellDebug1HiiHandle); 1546 break; 1547 1548 case 0x2A: 1549 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_SOLO_MOBILE), gShellDebug1HiiHandle); 1550 break; 1551 1552 case 0x2B: 1553 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_ATOM), gShellDebug1HiiHandle); 1554 break; 1555 1556 case 0x30: 1557 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ALPHA_FAMILY_2), gShellDebug1HiiHandle); 1558 break; 1559 1560 case 0x31: 1561 Print (L"Alpha 21064\n"); 1562 break; 1563 1564 case 0x32: 1565 Print (L"Alpha 21066\n"); 1566 break; 1567 1568 case 0x33: 1569 Print (L"Alpha 21164\n"); 1570 break; 1571 1572 case 0x34: 1573 Print (L"Alpha 21164PC\n"); 1574 break; 1575 1576 case 0x35: 1577 Print (L"Alpha 21164a\n"); 1578 break; 1579 1580 case 0x36: 1581 Print (L"Alpha 21264\n"); 1582 break; 1583 1584 case 0x37: 1585 Print (L"Alpha 21364\n"); 1586 break; 1587 1588 case 0x38: 1589 Print (L"AMD Turion II Ultra Dual-Core Mobile M Processor Family\n"); 1590 break; 1591 1592 case 0x39: 1593 Print (L"AMD Turion II Dual-Core Mobile M Processor Family\n"); 1594 break; 1595 1596 case 0x3A: 1597 Print (L"AMD Althon II Dual-Core M Processor Family\n"); 1598 break; 1599 1600 case 0x3B: 1601 Print (L"AMD Opteron 6100 Series Processor\n"); 1602 break; 1603 1604 case 0x3C: 1605 Print (L"AMD Opteron 4100 Series Processor\n"); 1606 break; 1607 1608 case 0x3D: 1609 Print (L"AMD Opteron 6200 Series Processor\n"); 1610 break; 1611 1612 case 0x3E: 1613 Print (L"AMD Opteron 4200 Series Processor\n"); 1614 break; 1615 1616 case 0x3F: 1617 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_FX_SERIES), gShellDebug1HiiHandle); 1618 break; 1619 1620 case 0x40: 1621 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MIPS_FAMILY), gShellDebug1HiiHandle); 1622 break; 1623 1624 case 0x41: 1625 Print (L"MIPS R4000\n"); 1626 break; 1627 1628 case 0x42: 1629 Print (L"MIPS R4200\n"); 1630 break; 1631 1632 case 0x43: 1633 Print (L"MIPS R4400\n"); 1634 break; 1635 1636 case 0x44: 1637 Print (L"MIPS R4600\n"); 1638 break; 1639 1640 case 0x45: 1641 Print (L"MIPS R10000\n"); 1642 break; 1643 1644 case 0x46: 1645 Print (L"AMD C-Series Processor\n"); 1646 break; 1647 1648 case 0x47: 1649 Print (L"AMD E-Series Processor\n"); 1650 break; 1651 1652 case 0x48: 1653 Print (L"AMD A-Series Processor\n"); 1654 break; 1655 1656 case 0x49: 1657 Print (L"AMD G-Series Processor\n"); 1658 break; 1659 1660 case 0x4A: 1661 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_Z_SERIES), gShellDebug1HiiHandle); 1662 break; 1663 1664 case 0x4B: 1665 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_R_SERIES), gShellDebug1HiiHandle); 1666 break; 1667 1668 case 0x4C: 1669 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_4300_SERIES), gShellDebug1HiiHandle); 1670 break; 1671 1672 case 0x4D: 1673 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_6300_SERIES), gShellDebug1HiiHandle); 1674 break; 1675 1676 case 0x4E: 1677 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_3300_SERIES), gShellDebug1HiiHandle); 1678 break; 1679 1680 case 0x4F: 1681 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_FIREPRO_SERIES), gShellDebug1HiiHandle); 1682 break; 1683 1684 case 0x50: 1685 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SPARC_FAMILY), gShellDebug1HiiHandle); 1686 break; 1687 1688 case 0x51: 1689 Print (L"SuperSparc\n"); 1690 break; 1691 1692 case 0x52: 1693 Print (L"microSparc II\n"); 1694 break; 1695 1696 case 0x53: 1697 Print (L"microSparc IIep\n"); 1698 break; 1699 1700 case 0x54: 1701 Print (L"UltraSparc\n"); 1702 break; 1703 1704 case 0x55: 1705 Print (L"UltraSparc II\n"); 1706 break; 1707 1708 case 0x56: 1709 Print (L"UltraSparcIIi\n"); 1710 break; 1711 1712 case 0x57: 1713 Print (L"UltraSparcIII\n"); 1714 break; 1715 1716 case 0x58: 1717 Print (L"UltraSparcIIIi\n"); 1718 break; 1719 1720 case 0x60: 1721 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_68040_FAMILY), gShellDebug1HiiHandle); 1722 break; 1723 1724 case 0x61: 1725 Print (L"68xx\n"); 1726 break; 1727 1728 case 0x62: 1729 Print (L"68000\n"); 1730 break; 1731 1732 case 0x63: 1733 Print (L"68010\n"); 1734 break; 1735 1736 case 0x64: 1737 Print (L"68020\n"); 1738 break; 1739 1740 case 0x65: 1741 Print (L"68030\n"); 1742 break; 1743 1744 case 0x70: 1745 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HOBBIT_FAMILY), gShellDebug1HiiHandle); 1746 break; 1747 1748 case 0x78: 1749 Print (L"Crusoe TM5000\n"); 1750 break; 1751 1752 case 0x79: 1753 Print (L"Crusoe TM3000\n"); 1754 break; 1755 1756 case 0x7A: 1757 Print (L"Efficeon TM8000\n"); 1758 break; 1759 1760 case 0x80: 1761 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WEITEK), gShellDebug1HiiHandle); 1762 break; 1763 1764 case 0x82: 1765 Print (L"Itanium\n"); 1766 break; 1767 1768 case 0x83: 1769 Print (L"AMD Athlon64\n"); 1770 break; 1771 1772 case 0x84: 1773 Print (L"AMD Opteron\n"); 1774 break; 1775 1776 case 0x85: 1777 Print (L"AMD Sempron\n"); 1778 break; 1779 1780 case 0x86: 1781 Print (L"AMD Turion64 Mobile\n"); 1782 break; 1783 1784 case 0x87: 1785 Print (L"Dual-Core AMD Opteron\n"); 1786 break; 1787 1788 case 0x88: 1789 Print (L"AMD Athlon 64X2 DualCore\n"); 1790 break; 1791 1792 case 0x89: 1793 Print (L"AMD Turion 64X2 Mobile\n"); 1794 break; 1795 1796 case 0x8A: 1797 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_QUAD_CORE), gShellDebug1HiiHandle); 1798 break; 1799 1800 case 0x8B: 1801 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_THIRD_GENERATION), gShellDebug1HiiHandle); 1802 break; 1803 1804 case 0x8C: 1805 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_FX_QUAD_CORE), gShellDebug1HiiHandle); 1806 break; 1807 1808 case 0x8D: 1809 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_X4_QUAD_CORE), gShellDebug1HiiHandle); 1810 break; 1811 1812 case 0x8E: 1813 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_X2_DUAL_CORE), gShellDebug1HiiHandle); 1814 break; 1815 1816 case 0x8F: 1817 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_ATHLON_X2_DUAL_CORE), gShellDebug1HiiHandle); 1818 break; 1819 1820 case 0x90: 1821 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PA_RISC_FAMILY), gShellDebug1HiiHandle); 1822 break; 1823 1824 case 0x91: 1825 Print (L"PA-RISC 8500\n"); 1826 break; 1827 1828 case 0x92: 1829 Print (L"PA-RISC 8000\n"); 1830 break; 1831 1832 case 0x93: 1833 Print (L"PA-RISC 7300LC\n"); 1834 break; 1835 1836 case 0x94: 1837 Print (L"PA-RISC 7200\n"); 1838 break; 1839 1840 case 0x95: 1841 Print (L"PA-RISC 7100LC\n"); 1842 break; 1843 1844 case 0x96: 1845 Print (L"PA-RISC 7100\n"); 1846 break; 1847 1848 case 0xA0: 1849 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_V30_FAMILY), gShellDebug1HiiHandle); 1850 break; 1851 1852 case 0xA1: 1853 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3200_SERIES_QUAD_CORE), gShellDebug1HiiHandle); 1854 break; 1855 1856 case 0xA2: 1857 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3000_SERIES_DUAL_CORE), gShellDebug1HiiHandle); 1858 break; 1859 1860 case 0xA3: 1861 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5300_SERIES_QUAD_CORE), gShellDebug1HiiHandle); 1862 break; 1863 1864 case 0xA4: 1865 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5100_SERIES_DUAL_CORE), gShellDebug1HiiHandle); 1866 break; 1867 1868 case 0xA5: 1869 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5000_SERIES_DUAL_CORE), gShellDebug1HiiHandle); 1870 break; 1871 1872 case 0xA6: 1873 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_LV_DUAL_CORE), gShellDebug1HiiHandle); 1874 break; 1875 1876 case 0xA7: 1877 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_ULV_DUAL_CORE), gShellDebug1HiiHandle); 1878 break; 1879 1880 case 0xA8: 1881 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7100_SERIES_DUAL_CORE), gShellDebug1HiiHandle); 1882 break; 1883 1884 case 0xA9: 1885 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5400_SERIES_QUAD_CORE), gShellDebug1HiiHandle); 1886 break; 1887 1888 case 0xAA: 1889 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_QUAD_CORE), gShellDebug1HiiHandle); 1890 break; 1891 1892 case 0xAB: 1893 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5200_SERIES_DUAL_CORE), gShellDebug1HiiHandle); 1894 break; 1895 1896 case 0xAC: 1897 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7200_SERIES_DUAL_CORE), gShellDebug1HiiHandle); 1898 break; 1899 1900 case 0xAD: 1901 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7300_SERIES_QUAD_CORE), gShellDebug1HiiHandle); 1902 break; 1903 1904 case 0xAE: 1905 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7400_SERIES_QUAD_CORE), gShellDebug1HiiHandle); 1906 break; 1907 1908 case 0xAF: 1909 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7400_SERIES_MULTI_CORE), gShellDebug1HiiHandle); 1910 break; 1911 1912 case 0xB0: 1913 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_III_XEON), gShellDebug1HiiHandle); 1914 break; 1915 1916 case 0xB1: 1917 Print (L"Pentium III Processorwith Intel SpeedStep Technology\n"); 1918 break; 1919 1920 case 0xB2: 1921 Print (L"Pentium 4 processor\n"); 1922 break; 1923 1924 case 0xB3: 1925 Print (L"Intel Xeon Processor\n"); 1926 break; 1927 1928 case 0xB4: 1929 Print (L"AS400 Family\n"); 1930 break; 1931 1932 case 0xB5: 1933 Print (L"Intel Xeon processor MP\n"); 1934 break; 1935 1936 case 0xB6: 1937 Print (L"AMD Althon XP Processor Family\n"); 1938 break; 1939 1940 case 0xB7: 1941 Print (L"AMD Althon MP Promcessor Family\n"); 1942 break; 1943 1944 case 0xB8: 1945 Print (L"Intel Itanium 2 processor\n"); 1946 break; 1947 1948 case 0xB9: 1949 Print (L"Intel Penium M processor\n"); 1950 break; 1951 1952 case 0xBA: 1953 Print (L"Intel Celeron D processor\n"); 1954 break; 1955 1956 case 0xBB: 1957 Print (L"Intel Pentium D processor\n"); 1958 break; 1959 1960 case 0xBC: 1961 Print (L"Intel Pentium Processor Extreme Edition\n"); 1962 break; 1963 1964 case 0xBD: 1965 Print (L"Intel Core Solo Processor\n"); 1966 break; 1967 1968 case 0xBF: 1969 Print (L"Intel Core 2 Duo Processor\n"); 1970 break; 1971 1972 case 0xC0: 1973 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_SOLO), gShellDebug1HiiHandle); 1974 break; 1975 1976 case 0xC1: 1977 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_EXTREME), gShellDebug1HiiHandle); 1978 break; 1979 1980 case 0xC2: 1981 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_QUAD), gShellDebug1HiiHandle); 1982 break; 1983 1984 case 0xC3: 1985 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_EXTREME), gShellDebug1HiiHandle); 1986 break; 1987 1988 case 0xC4: 1989 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_DUO_MOBILE), gShellDebug1HiiHandle); 1990 break; 1991 1992 case 0xC5: 1993 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_SOLO_MOBILE), gShellDebug1HiiHandle); 1994 break; 1995 1996 case 0xC6: 1997 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_I7), gShellDebug1HiiHandle); 1998 break; 1999 2000 case 0xC7: 2001 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CELERON_DUAL_CORE), gShellDebug1HiiHandle); 2002 break; 2003 2004 case 0xC8: 2005 Print (L"IBM 390\n"); 2006 break; 2007 2008 case 0xC9: 2009 Print (L"G4\n"); 2010 break; 2011 2012 case 0xCA: 2013 Print (L"G5\n"); 2014 break; 2015 2016 case 0xCB: 2017 Print (L"G6\n"); 2018 break; 2019 2020 case 0xCC: 2021 Print (L"zArchitecture\n"); 2022 break; 2023 2024 case 0xCD: 2025 Print (L"Intel Core i5 processor\n"); 2026 break; 2027 2028 case 0xCE: 2029 Print (L"Intel Core i3 processor\n"); 2030 break; 2031 2032 case 0xD2: 2033 Print (L"ViaC7M\n"); 2034 break; 2035 2036 case 0xD3: 2037 Print (L"ViaC7D\n"); 2038 break; 2039 2040 case 0xD4: 2041 Print (L"ViaC7\n"); 2042 break; 2043 2044 case 0xD5: 2045 Print (L"Eden\n"); 2046 break; 2047 2048 case 0xD6: 2049 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_MULTI_CORE), gShellDebug1HiiHandle); 2050 break; 2051 2052 case 0xD7: 2053 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3_SERIES_DUAL_CORE), gShellDebug1HiiHandle); 2054 break; 2055 2056 case 0xD8: 2057 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3_SERIES_QUAD_CORE), gShellDebug1HiiHandle); 2058 break; 2059 2060 case 0xDA: 2061 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5_SERIES_DUAL_CORE), gShellDebug1HiiHandle); 2062 break; 2063 2064 case 0xDB: 2065 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5_SERIES_QUAD_CORE), gShellDebug1HiiHandle); 2066 break; 2067 2068 case 0xDD: 2069 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7_SERIES_DUAL_CORE), gShellDebug1HiiHandle); 2070 break; 2071 2072 case 0xDE: 2073 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7_SERIES_QUAD_CORE), gShellDebug1HiiHandle); 2074 break; 2075 2076 case 0xDF: 2077 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7_SERIES_MULTI_CORE), gShellDebug1HiiHandle); 2078 break; 2079 2080 case 0xE0: 2081 Print (L"Multi-Core Intel Xeon processor 3400 Series\n"); 2082 break; 2083 2084 case 0xE4: 2085 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_3000_SERIES), gShellDebug1HiiHandle); 2086 break; 2087 2088 case 0xE5: 2089 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_SEMPRON_II), gShellDebug1HiiHandle); 2090 break; 2091 2092 2093 case 0xE6: 2094 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_EMBEDDED_OPTERON_QUAD_CORE), gShellDebug1HiiHandle); 2095 break; 2096 2097 case 0xE7: 2098 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_TRIPLE_CORE), gShellDebug1HiiHandle); 2099 break; 2100 2101 case 0xE8: 2102 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_TURION_ULTRA_DUAL_CORE_MOBILE), gShellDebug1HiiHandle); 2103 break; 2104 2105 case 0xE9: 2106 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_TURION_DUAL_CORE_MOBILE), gShellDebug1HiiHandle); 2107 break; 2108 2109 case 0xEA: 2110 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_ATHLON_DUAL_CORE), gShellDebug1HiiHandle); 2111 break; 2112 2113 case 0xEB: 2114 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_SEMPRON_SI), gShellDebug1HiiHandle); 2115 break; 2116 2117 case 0xEC: 2118 Print (L"AMD Phenom II Processor Family\n"); 2119 break; 2120 2121 case 0xED: 2122 Print (L"AMD Althon II Processor Family\n"); 2123 break; 2124 2125 case 0xEE: 2126 Print (L"Six-Core AMD Opteron Processor Family\n"); 2127 break; 2128 2129 case 0xEF: 2130 Print (L"AMD Sempron M Processor Family\n"); 2131 break; 2132 2133 case 0xFA: 2134 Print (L"i860\n"); 2135 break; 2136 2137 case 0xFB: 2138 Print (L"i960\n"); 2139 break; 2140 2141 default: 2142 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_PROC_FAMILY), gShellDebug1HiiHandle); 2143 } 2144 // 2145 // end switch 2146 // 2147 } 2148 2149 /** 2150 Display processor family information. 2151 2152 @param[in] Family2 The family value. 2153 @param[in] Option The option value. 2154 **/ 2155 VOID 2156 DisplayProcessorFamily2 ( 2157 IN UINT16 Family2, 2158 IN UINT8 Option 2159 ) 2160 { 2161 // 2162 // Print prompt message 2163 // 2164 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY), gShellDebug1HiiHandle); 2165 2166 // 2167 // Print option 2168 // 2169 PRINT_INFO_OPTION (Family2, Option); 2170 2171 // 2172 // Use switch to check 2173 // 2174 switch (Family2) { 2175 case 0x104: 2176 Print (L"SH-3\n"); 2177 break; 2178 2179 case 0x105: 2180 Print (L"SH-4\n"); 2181 break; 2182 2183 case 0x118: 2184 Print (L"ARM\n"); 2185 break; 2186 2187 case 0x119: 2188 Print (L"StrongARM\n"); 2189 break; 2190 2191 case 0x12C: 2192 Print (L"6x86\n"); 2193 break; 2194 2195 case 0x12D: 2196 Print (L"MediaGX\n"); 2197 break; 2198 2199 case 0x12E: 2200 Print (L"MII\n"); 2201 break; 2202 2203 case 0x140: 2204 Print (L"WinChip\n"); 2205 break; 2206 2207 case 0x15E: 2208 Print (L"DSP\n"); 2209 break; 2210 2211 case 0x1F4: 2212 Print (L"Video Processor\n"); 2213 break; 2214 2215 default: 2216 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_PROC_FAMILY), gShellDebug1HiiHandle); 2217 } 2218 2219 } 2220 2221 /** 2222 Display processor voltage information. 2223 2224 @param[in] Voltage The Voltage. 2225 Bit 7 Set to 0, indicating 'legacy' mode for processor voltage 2226 Bits 6:4 Reserved, must be zero 2227 Bits 3:0 Voltage Capability. 2228 A Set bit indicates that the voltage is supported. 2229 Bit 0 - 5V 2230 Bit 1 - 3.3V 2231 Bit 2 - 2.9V 2232 Bit 3 - Reserved, must be zero. 2233 2234 Note: 2235 Setting of multiple bits indicates the socket is configurable 2236 If bit 7 is set to 1, the remaining seven bits of the field are set to 2237 contain the processor's current voltage times 10. 2238 For example, the field value for a processor voltage of 1.8 volts would be 2239 92h = 80h + (1.8 * 10) = 80h + 18 = 80h +12h. 2240 2241 @param[in] Option The option. 2242 **/ 2243 VOID 2244 DisplayProcessorVoltage ( 2245 IN UINT8 Voltage, 2246 IN UINT8 Option 2247 ) 2248 { 2249 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROC_INFO), gShellDebug1HiiHandle); 2250 // 2251 // Print option 2252 // 2253 PRINT_INFO_OPTION (Voltage, Option); 2254 2255 if (BIT (Voltage, 7) != 0) { 2256 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROC_CURRENT_VOLTAGE), gShellDebug1HiiHandle, (Voltage - 0x80)); 2257 } else { 2258 if (BIT (Voltage, 0) != 0) { 2259 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_5V_SUPOPRTED), gShellDebug1HiiHandle); 2260 } 2261 2262 if (BIT (Voltage, 1) != 0) { 2263 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_33V_SUPPORTED), gShellDebug1HiiHandle); 2264 } 2265 2266 if (BIT (Voltage, 2) != 0) { 2267 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_29V_SUPPORTED), gShellDebug1HiiHandle); 2268 } 2269 // 2270 // check the reserved zero bits: 2271 // 2272 if (BIT (Voltage, 3) != 0) { 2273 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT3_NOT_ZERO), gShellDebug1HiiHandle); 2274 } 2275 2276 if (BIT (Voltage, 4) != 0) { 2277 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT4_NOT_ZERO), gShellDebug1HiiHandle); 2278 } 2279 2280 if (BIT (Voltage, 5) != 0) { 2281 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT5_NOT_ZERO), gShellDebug1HiiHandle); 2282 } 2283 2284 if (BIT (Voltage, 6) != 0) { 2285 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT6_NOT_ZERO), gShellDebug1HiiHandle); 2286 } 2287 } 2288 } 2289 2290 /** 2291 Display processor information. 2292 2293 @param[in] Status The status. 2294 Bit 7 Reserved, must be 0 2295 Bit 6 CPU Socket Populated 2296 1 - CPU Socket Populated 2297 0 - CPU Socket Unpopulated 2298 Bits 5:3 Reserved, must be zero 2299 Bits 2:0 CPU Status 2300 0h - Unknown 2301 1h - CPU Enabled 2302 2h - CPU Disabled by User via BIOS Setup 2303 3h - CPU Disabled By BIOS (POST Error) 2304 4h - CPU is Idle, waiting to be enabled. 2305 5-6h - Reserved 2306 7h - Other 2307 2308 @param[in] Option The option 2309 **/ 2310 VOID 2311 DisplayProcessorStatus ( 2312 IN UINT8 Status, 2313 IN UINT8 Option 2314 ) 2315 { 2316 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROC_STATUS), gShellDebug1HiiHandle); 2317 PRINT_INFO_OPTION (Status, Option); 2318 2319 if (BIT (Status, 7) != 0) { 2320 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT7_NOT_ZERO), gShellDebug1HiiHandle); 2321 } else if (BIT (Status, 5) != 0) { 2322 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT5_NOT_ZERO), gShellDebug1HiiHandle); 2323 } else if (BIT (Status, 4) != 0) { 2324 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT4_NOT_ZERO), gShellDebug1HiiHandle); 2325 } else if (BIT (Status, 3) != 0) { 2326 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT3_NOT_ZERO), gShellDebug1HiiHandle); 2327 } 2328 // 2329 // Check BIT 6 2330 // 2331 if (BIT (Status, 6) != 0) { 2332 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_SOCKET_POPULATED), gShellDebug1HiiHandle); 2333 } else { 2334 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_SOCKET_UNPOPULATED), gShellDebug1HiiHandle); 2335 } 2336 // 2337 // Check BITs 2:0 2338 // 2339 switch (Status & 0x07) { 2340 case 0: 2341 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle); 2342 break; 2343 2344 case 1: 2345 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_ENABLED), gShellDebug1HiiHandle); 2346 break; 2347 2348 case 2: 2349 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_DISABLED_BY_USER), gShellDebug1HiiHandle); 2350 break; 2351 2352 case 3: 2353 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_DIABLED_BY_BIOS), gShellDebug1HiiHandle); 2354 break; 2355 2356 case 4: 2357 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_IDLE), gShellDebug1HiiHandle); 2358 break; 2359 2360 case 7: 2361 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHERS), gShellDebug1HiiHandle); 2362 break; 2363 2364 default: 2365 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle); 2366 } 2367 } 2368 2369 /** 2370 Display information about Memory Controller Information (Type 5). 2371 2372 @param[in] Size Memory size. 2373 @param[in] SlotNum Which slot is this about. 2374 @param[in] Option Option for the level of detail output required. 2375 **/ 2376 VOID 2377 DisplayMaxMemoryModuleSize ( 2378 IN UINT8 Size, 2379 IN UINT8 SlotNum, 2380 IN UINT8 Option 2381 ) 2382 { 2383 UINTN MaxSize; 2384 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SIZE_LARGEST_MEM), gShellDebug1HiiHandle); 2385 // 2386 // MaxSize is determined by follow formula 2387 // 2388 MaxSize = (UINTN) 1 << Size; 2389 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_MB), gShellDebug1HiiHandle, MaxSize); 2390 2391 if (Option >= SHOW_DETAIL) { 2392 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MAX_AMOUNT_MEM), gShellDebug1HiiHandle); 2393 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_MB), gShellDebug1HiiHandle, MaxSize, SlotNum, MaxSize * SlotNum); 2394 } 2395 } 2396 2397 /** 2398 Display information about memory configuration handles. 2399 2400 @param[in] Handles The buffer of handles to output info on. 2401 @param[in] SlotNum The number of handles in the above buffer. 2402 @param[in] Option Option for the level of detail output required. 2403 **/ 2404 VOID 2405 DisplayMemoryModuleConfigHandles ( 2406 IN UINT16 *Handles, 2407 IN UINT8 SlotNum, 2408 IN UINT8 Option 2409 ) 2410 { 2411 UINT8 Index; 2412 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HANDLES_CONTROLLED), gShellDebug1HiiHandle, SlotNum); 2413 2414 if (Option >= SHOW_DETAIL) { 2415 // 2416 // No handle, Handles is INVALID. 2417 // 2418 if (SlotNum == 0) { 2419 return ; 2420 } 2421 2422 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HANDLES_LIST_CONTROLLED), gShellDebug1HiiHandle); 2423 for (Index = 0; Index < SlotNum; Index++) { 2424 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HANDLE), gShellDebug1HiiHandle, Index + 1, Handles[Index]); 2425 } 2426 } 2427 } 2428 2429 /** 2430 Display Memory Module Information (Type 6). 2431 2432 @param[in] BankConnections 2433 @param[in] Option 2434 **/ 2435 VOID 2436 DisplayMmBankConnections ( 2437 IN UINT8 BankConnections, 2438 IN UINT8 Option 2439 ) 2440 { 2441 UINT8 High; 2442 UINT8 Low; 2443 2444 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_CONNECTIONS), gShellDebug1HiiHandle); 2445 // 2446 // Print option 2447 // 2448 PRINT_INFO_OPTION (BankConnections, Option); 2449 2450 // 2451 // Divide it to high and low 2452 // 2453 High = (UINT8) (BankConnections & 0xF0); 2454 Low = (UINT8) (BankConnections & 0x0F); 2455 if (High != 0xF) { 2456 if (Low != 0xF) { 2457 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_RAS), gShellDebug1HiiHandle, High, Low, High, Low); 2458 } else { 2459 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_RAS_2), gShellDebug1HiiHandle, High, High); 2460 } 2461 } else { 2462 if (Low != 0xF) { 2463 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_RAS_2), gShellDebug1HiiHandle, Low, Low); 2464 } else { 2465 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NO_BANKS_CONNECTED), gShellDebug1HiiHandle); 2466 } 2467 } 2468 } 2469 2470 /** 2471 Display memory informcation. 2472 2473 Bits 0:6 Size (n), 2474 where 2**n is the size in MB with three special-case values: 2475 7Dh Not determinable (Installed Size only) 2476 7Eh Module is installed, but no memory has been enabled 2477 7Fh Not installed 2478 Bit 7 Defines whether the memory module has a single- (0) 2479 or double-bank (1) connection. 2480 2481 @param[in] Size - The size 2482 @param[in] Option - The option 2483 **/ 2484 VOID 2485 DisplayMmMemorySize ( 2486 IN UINT8 Size, 2487 IN UINT8 Option 2488 ) 2489 { 2490 UINT8 Value; 2491 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEMORY_SIZE), gShellDebug1HiiHandle); 2492 // 2493 // Print option 2494 // 2495 PRINT_INFO_OPTION (Size, Option); 2496 2497 // 2498 // Get the low bits(0-6 bit) 2499 // 2500 Value = (UINT8) (Size & 0x7F); 2501 if (Value == 0x7D) { 2502 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_SIZE_NOT_DETERMINABLE), gShellDebug1HiiHandle); 2503 } else if (Value == 0x7E) { 2504 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MODULE_INSTALLED), gShellDebug1HiiHandle); 2505 } else if (Value == 0x7F) { 2506 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_INSTALLED), gShellDebug1HiiHandle); 2507 } else { 2508 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_SIZE), gShellDebug1HiiHandle, 1 << Value); 2509 } 2510 2511 if (BIT (Size, 7) != 0) { 2512 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_MODULE_DOUBLE_BANK), gShellDebug1HiiHandle); 2513 } else { 2514 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_MODULE_SINGLE_BANK), gShellDebug1HiiHandle); 2515 } 2516 } 2517 2518 /** 2519 Display Cache Configuration. 2520 2521 @param[in] CacheConfiguration Cache Configuration. 2522 Bits 15:10 Reserved, must be 0 2523 Bits 9:8 Operational Mode 2524 0h - Write Through 2525 1h - Write Back 2526 2h - Varies with Memory Address 2527 3h - Unknown 2528 Bit 7 Enabled/Disabled 2529 1 - Enabled 2530 0 - Disabled 2531 Bits 6:5 Location 2532 0h - Internal 2533 1h - External 2534 2h - Reserved 2535 3h - Unknown 2536 Bit 4 Reserved, must be zero 2537 Bit 3 Cache Socketed 2538 1 - Socketed 2539 0 - Unsocketed 2540 Bits 2:0 Cache Level 2541 1 through 8 (For example, an L1 cache would 2542 use value 000b and an L3 cache would use 010b.) 2543 2544 @param[in] Option The option 2545 **/ 2546 VOID 2547 DisplayCacheConfiguration ( 2548 IN UINT16 CacheConfiguration, 2549 IN UINT8 Option 2550 ) 2551 { 2552 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_CONFIGURATION), gShellDebug1HiiHandle); 2553 PRINT_INFO_OPTION (CacheConfiguration, Option); 2554 2555 if (BIT (CacheConfiguration, 15) != 0) { 2556 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT15_NOT_ZERO), gShellDebug1HiiHandle); 2557 } else if (BIT (CacheConfiguration, 14) != 0) { 2558 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT14_NOT_ZERO), gShellDebug1HiiHandle); 2559 } else if (BIT (CacheConfiguration, 13) != 0) { 2560 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT13_NOT_ZERO), gShellDebug1HiiHandle); 2561 } else if (BIT (CacheConfiguration, 12) != 0) { 2562 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT12_NOT_ZERO), gShellDebug1HiiHandle); 2563 } else if (BIT (CacheConfiguration, 11) != 0) { 2564 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT11_NOT_ZERO), gShellDebug1HiiHandle); 2565 } else if (BIT (CacheConfiguration, 10) != 0) { 2566 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT10_NOT_ZERO), gShellDebug1HiiHandle); 2567 } else if (BIT (CacheConfiguration, 4) != 0) { 2568 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT4_NOT_ZERO), gShellDebug1HiiHandle); 2569 } 2570 2571 // 2572 // Check BITs 9:8 2573 // 2574 switch ((CacheConfiguration & 0x300) >> 8) { 2575 case 0: 2576 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_WRITE_THROUGH), gShellDebug1HiiHandle); 2577 break; 2578 2579 case 1: 2580 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_WRITE_BACK), gShellDebug1HiiHandle); 2581 break; 2582 2583 case 2: 2584 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_VARIES_WITH_MEM_ADDR), gShellDebug1HiiHandle); 2585 break; 2586 2587 case 3: 2588 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle); 2589 break; 2590 } 2591 2592 // 2593 // Check BIT 7 2594 // 2595 if (BIT (CacheConfiguration, 7) != 0) { 2596 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED), gShellDebug1HiiHandle); 2597 } else { 2598 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle); 2599 } 2600 2601 // 2602 // Check BITs 6:5 2603 // 2604 switch ((CacheConfiguration & 0x60) >> 5) { 2605 case 0: 2606 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_INTERNAL), gShellDebug1HiiHandle); 2607 break; 2608 2609 case 1: 2610 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_EXTERNAL), gShellDebug1HiiHandle); 2611 break; 2612 2613 case 2: 2614 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle); 2615 break; 2616 2617 case 3: 2618 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle); 2619 break; 2620 } 2621 2622 // 2623 // Check BIT 3 2624 // 2625 if (BIT (CacheConfiguration, 3) != 0) { 2626 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_SOCKETED), gShellDebug1HiiHandle); 2627 } else { 2628 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_NOT_SOCKETED), gShellDebug1HiiHandle); 2629 } 2630 2631 2632 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_LEVEL), gShellDebug1HiiHandle, (CacheConfiguration & 0x07) + 1); 2633 } 2634 2635 /** 2636 The Slot ID field of the System Slot structure provides a mechanism to 2637 correlate the physical attributes of the slot to its logical access method 2638 (which varies based on the Slot Type field). 2639 2640 @param[in] SlotId - The slot ID 2641 @param[in] SlotType - The slot type 2642 @param[in] Option - The Option 2643 **/ 2644 VOID 2645 DisplaySystemSlotId ( 2646 IN UINT16 SlotId, 2647 IN UINT8 SlotType, 2648 IN UINT8 Option 2649 ) 2650 { 2651 // 2652 // Display slot type first 2653 // 2654 DisplaySystemSlotType (SlotType, Option); 2655 2656 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SLOT_ID), gShellDebug1HiiHandle); 2657 // 2658 // print option 2659 // 2660 PRINT_INFO_OPTION (SlotType, Option); 2661 2662 switch (SlotType) { 2663 // 2664 // Slot Type: MCA 2665 // 2666 case 0x04: 2667 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LOGICAL_MICRO_CHAN), gShellDebug1HiiHandle); 2668 if (SlotId > 0 && SlotId < 15) { 2669 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_D), gShellDebug1HiiHandle, SlotId); 2670 } else { 2671 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ERROR_NOT_1_15), gShellDebug1HiiHandle); 2672 } 2673 break; 2674 2675 // 2676 // EISA 2677 // 2678 case 0x05: 2679 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LOGICAL_EISA_NUM), gShellDebug1HiiHandle); 2680 if (SlotId > 0 && SlotId < 15) { 2681 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_D), gShellDebug1HiiHandle, SlotId); 2682 } else { 2683 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ERROR_NOT_1_15), gShellDebug1HiiHandle); 2684 } 2685 break; 2686 2687 // 2688 // Slot Type: PCI 2689 // 2690 case 0x06: 2691 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VALUE_PRESENT), gShellDebug1HiiHandle, SlotId); 2692 break; 2693 2694 // 2695 // PCMCIA 2696 // 2697 case 0x07: 2698 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_IDENTIFIES_ADAPTER_NUM), gShellDebug1HiiHandle, SlotId); 2699 break; 2700 2701 // 2702 // Slot Type: PCI-E 2703 // 2704 case 0xA5: 2705 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VALUE_PRESENT), gShellDebug1HiiHandle, SlotId); 2706 break; 2707 2708 default: 2709 if ((SlotType >= 0x0E && SlotType <= 0x12) || (SlotType >= 0xA6 && SlotType <= 0xB6)){ 2710 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VALUE_PRESENT), gShellDebug1HiiHandle, SlotId); 2711 } else { 2712 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_SLOT_ID), gShellDebug1HiiHandle); 2713 } 2714 } 2715 } 2716 2717 /** 2718 Display System Boot Information (Type 32) information. 2719 2720 @param[in] Parameter The parameter. 2721 @param[in] Option The options. 2722 **/ 2723 VOID 2724 DisplaySystemBootStatus ( 2725 IN UINT8 Parameter, 2726 IN UINT8 Option 2727 ) 2728 { 2729 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_BOOT_STATUS), gShellDebug1HiiHandle); 2730 // 2731 // Print option 2732 // 2733 PRINT_INFO_OPTION (Parameter, Option); 2734 2735 // 2736 // Check value and print 2737 // 2738 if (Parameter == 0) { 2739 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NO_ERRORS_DETECTED), gShellDebug1HiiHandle); 2740 } else if (Parameter == 1) { 2741 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NO_BOOTABLE_MEDIA), gShellDebug1HiiHandle); 2742 } else if (Parameter == 2) { 2743 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NORMAL_OP_SYSTEM), gShellDebug1HiiHandle); 2744 } else if (Parameter == 3) { 2745 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FIRMWARE_DETECTED), gShellDebug1HiiHandle); 2746 } else if (Parameter == 4) { 2747 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OP_SYSTEM), gShellDebug1HiiHandle); 2748 } else if (Parameter == 5) { 2749 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_USER_REQUESTED_BOOT), gShellDebug1HiiHandle); 2750 } else if (Parameter == 6) { 2751 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_SECURITY_VIOLATION), gShellDebug1HiiHandle); 2752 } else if (Parameter == 7) { 2753 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PREV_REQ_IMAGE), gShellDebug1HiiHandle); 2754 } else if (Parameter == 8) { 2755 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WATCHDOG_TIMER), gShellDebug1HiiHandle); 2756 } else if (Parameter >= 9 && Parameter <= 127) { 2757 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RSVD_FUTURE_ASSIGNMENT), gShellDebug1HiiHandle); 2758 } else if (Parameter >= 128 && Parameter <= 191) { 2759 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VENDOR_OEM_SPECIFIC), gShellDebug1HiiHandle); 2760 } else if (Parameter >= 192) { 2761 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PRODUCT_SPEC_IMPLMENTATION), gShellDebug1HiiHandle); 2762 } else { 2763 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ERROR_VALUE), gShellDebug1HiiHandle); 2764 } 2765 } 2766 2767 /** 2768 Display Portable Battery (Type 22) information. 2769 2770 The date the cell pack was manufactured, in packed format: 2771 Bits 15:9 Year, biased by 1980, in the range 0 to 127. 2772 Bits 8:5 Month, in the range 1 to 12. 2773 Bits 4:0 Date, in the range 1 to 31. 2774 For example, 01 February 2000 would be identified as 2775 0010 1000 0100 0001b (0x2841). 2776 2777 @param[in] Date The date 2778 @param[in] Option The option 2779 **/ 2780 VOID 2781 DisplaySBDSManufactureDate ( 2782 IN UINT16 Date, 2783 IN UINT8 Option 2784 ) 2785 { 2786 UINTN Day; 2787 UINTN Month; 2788 UINTN Year; 2789 2790 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SBDS_MANUFACTURE_DATE), gShellDebug1HiiHandle); 2791 PRINT_INFO_OPTION (Date, Option); 2792 // 2793 // Print date 2794 // 2795 Day = Date & 0x001F; 2796 Month = (Date & 0x01E0) >> 5; 2797 Year = ((Date & 0xFE00) >> 9) + 1980; 2798 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MONTH_DAY_YEAR), gShellDebug1HiiHandle, Day, Month, Year); 2799 2800 } 2801 2802 /** 2803 Display System Reset (Type 23) information. 2804 2805 2806 Identifies the system-reset capabilities for the system. 2807 Bits 7:6 Reserved for future assignment via this specification, set to 00b. 2808 Bit 5 System contains a watchdog timer, either True (1) or False (0). 2809 Bits 4:3 Boot Option on Limit. 2810 Identifies the system action to be taken when the Reset Limit is reached, one of: 2811 00b Reserved, do not use. 2812 01b Operating system 2813 10b System utilities 2814 11b Do not rebootBits 2815 2:1 Boot Option. Indicates the action to be taken following a watchdog reset, one of: 2816 00b Reserved, do not use. 2817 01b Operating system 2818 10b System utilities 2819 11b Do not reboot 2820 Bit 0 Status. 2821 1b The system reset is enabled by the user 2822 0b The system reset is not enabled by the user 2823 2824 @param[in] Reset Reset 2825 @param[in] Option The option 2826 **/ 2827 VOID 2828 DisplaySystemResetCapabilities ( 2829 IN UINT8 Reset, 2830 IN UINT8 Option 2831 ) 2832 { 2833 UINTN Temp; 2834 2835 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_RESET_CAPABILITIES), gShellDebug1HiiHandle); 2836 PRINT_INFO_OPTION (Reset, Option); 2837 2838 // 2839 // Check reserved bits 7:6 2840 // 2841 if ((Reset & 0xC0) != 0) { 2842 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RESERVED_ZERO), gShellDebug1HiiHandle); 2843 } 2844 // 2845 // Watch dog 2846 // 2847 if (BIT (Reset, 5) != 0) { 2848 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WATCHDOG_TIMER_2), gShellDebug1HiiHandle); 2849 } else { 2850 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_NOT_CONTAIN_TIMER), gShellDebug1HiiHandle); 2851 } 2852 // 2853 // Boot Option on Limit 2854 // 2855 Temp = (Reset & 0x18) >> 3; 2856 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_OPTION_LIMIT), gShellDebug1HiiHandle); 2857 switch (Temp) { 2858 case 0: 2859 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle); 2860 break; 2861 2862 case 1: 2863 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OP_SYSTEM_2), gShellDebug1HiiHandle); 2864 break; 2865 2866 case 2: 2867 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_UTIL), gShellDebug1HiiHandle); 2868 break; 2869 2870 case 3: 2871 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DO_NOT_REBOOT_BITS), gShellDebug1HiiHandle); 2872 break; 2873 } 2874 // 2875 // Boot Option 2876 // 2877 Temp = (Reset & 0x06) >> 1; 2878 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_OPTION), gShellDebug1HiiHandle); 2879 switch (Temp) { 2880 case 0: 2881 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle); 2882 break; 2883 2884 case 1: 2885 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OP_SYSTEM_2), gShellDebug1HiiHandle); 2886 break; 2887 2888 case 2: 2889 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_UTIL), gShellDebug1HiiHandle); 2890 break; 2891 2892 case 3: 2893 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DO_NOT_REBOOT), gShellDebug1HiiHandle); 2894 break; 2895 } 2896 // 2897 // Reset enable flag 2898 // 2899 if ((Reset & 0x01) != 0) { 2900 Print (L"The system reset is enabled by the user\n"); 2901 } else { 2902 Print (L"The system reset is disabled by the user\n"); 2903 } 2904 } 2905 2906 /** 2907 Display Hardware Security (Type 24) information. 2908 2909 2910 Identifies the password and reset status for the system: 2911 2912 Bits 7:6 Power-on Password Status, one of: 2913 00b Disabled 2914 01b Enabled 2915 10b Not Implemented 2916 11b Unknown 2917 Bits 5:4 Keyboard Password Status, one of: 2918 00b Disabled 2919 01b Enabled 2920 10b Not Implemented 2921 11b Unknown 2922 Bits 3:2 Administrator Password Status, one of: 2923 00b Disabled 2924 01b Enabled 2925 10b Not Implemented 2926 11b Unknown 2927 Bits 1:0 Front Panel Reset Status, one of: 2928 00b Disabled 2929 01b Enabled 2930 10b Not Implemented 2931 11b Unknown 2932 2933 @param[in] Settings The device settings. 2934 @param[in] Option The device options. 2935 **/ 2936 VOID 2937 DisplayHardwareSecuritySettings ( 2938 IN UINT8 Settings, 2939 IN UINT8 Option 2940 ) 2941 { 2942 UINTN Temp; 2943 2944 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HARDWARE_SECURITY_SET), gShellDebug1HiiHandle); 2945 PRINT_INFO_OPTION (Settings, Option); 2946 2947 // 2948 // Power-on Password Status 2949 // 2950 Temp = (Settings & 0xC0) >> 6; 2951 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_ON_PASSWORD), gShellDebug1HiiHandle); 2952 switch (Temp) { 2953 case 0: 2954 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle); 2955 break; 2956 2957 case 1: 2958 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle); 2959 break; 2960 2961 case 2: 2962 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle); 2963 break; 2964 2965 case 3: 2966 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle); 2967 break; 2968 } 2969 // 2970 // Keyboard Password Status 2971 // 2972 Temp = (Settings & 0x30) >> 4; 2973 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_KEYBOARD_PASSWORD), gShellDebug1HiiHandle); 2974 switch (Temp) { 2975 case 0: 2976 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle); 2977 break; 2978 2979 case 1: 2980 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle); 2981 break; 2982 2983 case 2: 2984 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle); 2985 break; 2986 2987 case 3: 2988 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle); 2989 break; 2990 } 2991 // 2992 // Administrator Password Status 2993 // 2994 Temp = (Settings & 0x0C) >> 2; 2995 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ADMIN_PASSWORD_STATUS), gShellDebug1HiiHandle); 2996 switch (Temp) { 2997 case 0: 2998 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle); 2999 break; 3000 3001 case 1: 3002 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle); 3003 break; 3004 3005 case 2: 3006 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle); 3007 break; 3008 3009 case 3: 3010 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle); 3011 break; 3012 } 3013 // 3014 // Front Panel Reset Status 3015 // 3016 Temp = Settings & 0x3; 3017 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FRONT_PANEL_RESET), gShellDebug1HiiHandle); 3018 switch (Temp) { 3019 case 0: 3020 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle); 3021 break; 3022 3023 case 1: 3024 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle); 3025 break; 3026 3027 case 2: 3028 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle); 3029 break; 3030 3031 case 3: 3032 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle); 3033 break; 3034 } 3035 } 3036 3037 /** 3038 Display Out-of-Band Remote Access (Type 30) information. 3039 3040 @param[in] Connections The device characteristics. 3041 @param[in] Option The device options. 3042 **/ 3043 VOID 3044 DisplayOBRAConnections ( 3045 IN UINT8 Connections, 3046 IN UINT8 Option 3047 ) 3048 { 3049 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CONNECTIONS), gShellDebug1HiiHandle); 3050 PRINT_INFO_OPTION (Connections, Option); 3051 3052 // 3053 // Check reserved bits 7:2 3054 // 3055 if ((Connections & 0xFC) != 0) { 3056 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RESERVED_ZERO_2), gShellDebug1HiiHandle); 3057 } 3058 // 3059 // Outbound Connection 3060 // 3061 if (BIT (Connections, 1) != 0) { 3062 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OUTBOUND_CONN_ENABLED), gShellDebug1HiiHandle); 3063 } else { 3064 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTUBOUND_CONN_DISABLED), gShellDebug1HiiHandle); 3065 } 3066 // 3067 // Inbound Connection 3068 // 3069 if (BIT (Connections, 0) != 0) { 3070 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INBOIUND_CONN_ENABLED), gShellDebug1HiiHandle); 3071 } else { 3072 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INBOUND_CONN_DISABLED), gShellDebug1HiiHandle); 3073 } 3074 } 3075 3076 /** 3077 Display System Power Supply (Type 39) information. 3078 3079 @param[in] Characteristics The device characteristics. 3080 @param[in] Option The device options. 3081 **/ 3082 VOID 3083 DisplaySPSCharacteristics ( 3084 IN UINT16 Characteristics, 3085 IN UINT8 Option 3086 ) 3087 { 3088 UINTN Temp; 3089 3090 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_CHAR), gShellDebug1HiiHandle); 3091 PRINT_INFO_OPTION (Characteristics, Option); 3092 3093 // 3094 // Check reserved bits 15:14 3095 // 3096 if ((Characteristics & 0xC000) != 0) { 3097 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_15_14_RSVD), gShellDebug1HiiHandle); 3098 } 3099 // 3100 // Bits 13:10 - DMTF Power Supply Type 3101 // 3102 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TYPE), gShellDebug1HiiHandle); 3103 Temp = (Characteristics & 0x1C00) >> 10; 3104 switch (Temp) { 3105 case 1: 3106 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle); 3107 break; 3108 3109 case 2: 3110 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle); 3111 break; 3112 3113 case 3: 3114 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LINEAR), gShellDebug1HiiHandle); 3115 break; 3116 3117 case 4: 3118 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SWITCHING), gShellDebug1HiiHandle); 3119 break; 3120 3121 case 5: 3122 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BATTERY), gShellDebug1HiiHandle); 3123 break; 3124 3125 case 6: 3126 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UPS), gShellDebug1HiiHandle); 3127 break; 3128 3129 case 7: 3130 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CONVERTER), gShellDebug1HiiHandle); 3131 break; 3132 3133 case 8: 3134 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_REGULATOR), gShellDebug1HiiHandle); 3135 break; 3136 3137 default: 3138 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_2), gShellDebug1HiiHandle); 3139 } 3140 // 3141 // Bits 9:7 - Status 3142 // 3143 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STATUS_DASH), gShellDebug1HiiHandle); 3144 Temp = (Characteristics & 0x380) >> 7; 3145 switch (Temp) { 3146 case 1: 3147 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle); 3148 break; 3149 3150 case 2: 3151 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle); 3152 break; 3153 3154 case 3: 3155 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OK), gShellDebug1HiiHandle); 3156 break; 3157 3158 case 4: 3159 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NON_CRITICAL), gShellDebug1HiiHandle); 3160 break; 3161 3162 case 5: 3163 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CRITICAL_POWER_SUPPLY), gShellDebug1HiiHandle); 3164 break; 3165 3166 default: 3167 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED), gShellDebug1HiiHandle); 3168 } 3169 // 3170 // Bits 6:3 - DMTF Input Voltage Range Switching 3171 // 3172 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INPUT_VOLTAGE_RANGE), gShellDebug1HiiHandle); 3173 Temp = (Characteristics & 0x78) >> 3; 3174 switch (Temp) { 3175 case 1: 3176 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle); 3177 break; 3178 3179 case 2: 3180 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle); 3181 break; 3182 3183 case 3: 3184 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MANUAL), gShellDebug1HiiHandle); 3185 break; 3186 3187 case 4: 3188 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AUTO_SWITCH), gShellDebug1HiiHandle); 3189 break; 3190 3191 case 5: 3192 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WIDE_RANGE), gShellDebug1HiiHandle); 3193 break; 3194 3195 case 6: 3196 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_APPLICABLE), gShellDebug1HiiHandle); 3197 break; 3198 3199 default: 3200 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_3), gShellDebug1HiiHandle); 3201 break; 3202 } 3203 // 3204 // Power supply is unplugged from the wall 3205 // 3206 if (BIT (Characteristics, 2) != 0) { 3207 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_UNPLUGGED), gShellDebug1HiiHandle); 3208 } else { 3209 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_PLUGGED), gShellDebug1HiiHandle); 3210 } 3211 // 3212 // Power supply is present 3213 // 3214 if (BIT (Characteristics, 1) != 0) { 3215 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_PRESENT), gShellDebug1HiiHandle); 3216 } else { 3217 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_NOT_PRESENT), gShellDebug1HiiHandle); 3218 } 3219 // 3220 // hot replaceable 3221 // 3222 if (BIT (Characteristics, 0) != 0) { 3223 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_REPLACE), gShellDebug1HiiHandle); 3224 } else { 3225 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_NOT_REPLACE), gShellDebug1HiiHandle); 3226 } 3227 } 3228