OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
DebugSmbios.c
Go to the documentation of this file.
1
15#include <Base.h>
16
18
19#include <Library/DebugLib.h>
20#include <Library/UefiLib.h>
21
22#include "DebugSmbios.h"
23#include "SmbiosInternal.h"
24
25//
26// String Conversion Lookup Table
27//
28GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *SlotDataWidthStrings[] = {
29 "",
30 "Other",
31 "Unknown",
32 "8Bit",
33 "16Bit",
34 "32Bit",
35 "64Bit",
36 "128Bit",
37 "1X",
38 "2X",
39 "4X",
40 "8X",
41 "12X",
42 "16X",
43 "32X"
44};
45
46STATIC
47VOID
50 )
51{
53 (
54 DEBUG_INFO,
55 "Handle 0x%02X Type %d Length 0x%02X\n",
56 Record.Standard.Hdr->Handle,
57 Record.Standard.Hdr->Type,
58 Record.Standard.Hdr->Length
59 )
60 );
61}
62
63STATIC
64VOID
67 )
68{
69 SmbiosDebugGeneric (Record);
70
72 (
73 DEBUG_INFO,
74 " %-16a %a\n",
75 "Vendor",
76 SmbiosGetString (Record, Record.Standard.Type0->Vendor)
77 )
78 );
79
81 (
82 DEBUG_INFO,
83 " %-16a %a\n",
84 "BiosVersion",
85 SmbiosGetString (Record, Record.Standard.Type0->BiosVersion)
86 )
87 );
88
90 (
91 DEBUG_INFO,
92 " %-16a %a\n",
93 "BiosReleaseDate",
94 SmbiosGetString (Record, Record.Standard.Type0->BiosReleaseDate)
95 )
96 );
97}
98
99STATIC
100VOID
103 )
104{
105 SmbiosDebugGeneric (Record);
106
108 (
109 DEBUG_INFO,
110 " %-16a %a\n",
111 "Manufacturer",
112 SmbiosGetString (Record, Record.Standard.Type1->Manufacturer)
113 )
114 );
115
117 (
118 DEBUG_INFO,
119 " %-16a %a\n",
120 "ProductName",
121 SmbiosGetString (Record, Record.Standard.Type1->ProductName)
122 )
123 );
124
126 (
127 DEBUG_INFO,
128 " %-16a %a\n",
129 "Version",
130 SmbiosGetString (Record, Record.Standard.Type1->Version)
131 )
132 );
133
135 (
136 DEBUG_INFO,
137 " %-16a %a\n",
138 "SerialNumber",
139 SmbiosGetString (Record, Record.Standard.Type1->SerialNumber)
140 )
141 );
142
144 (
145 DEBUG_INFO,
146 " %-16a %g\n",
147 "Uuid",
148 &Record.Standard.Type1->Uuid
149 )
150 );
151
153 (
154 DEBUG_INFO,
155 " %-16a %a\n",
156 "SKUNumber",
157 SmbiosGetString (Record, Record.Standard.Type1->SKUNumber)
158 )
159 );
160
162 (
163 DEBUG_INFO,
164 " %-16a %a\n",
165 "Family",
166 SmbiosGetString (Record, Record.Standard.Type1->Family)
167 )
168 );
169}
170
171STATIC
172VOID
175 )
176{
177 SmbiosDebugGeneric (Record);
178
180 (
181 DEBUG_INFO,
182 " %-16a %a\n",
183 "Manufacturer",
184 SmbiosGetString (Record, Record.Standard.Type2->Manufacturer)
185 )
186 );
187
189 (
190 DEBUG_INFO,
191 " %-16a %a\n",
192 "ProductName",
193 SmbiosGetString (Record, Record.Standard.Type2->ProductName)
194 )
195 );
196
198 (
199 DEBUG_INFO,
200 " %-16a %a\n",
201 "Version",
202 SmbiosGetString (Record, Record.Standard.Type2->Version)
203 )
204 );
205
207 (
208 DEBUG_INFO,
209 " %-16a %a\n",
210 "SerialNumber",
211 SmbiosGetString (Record, Record.Standard.Type2->SerialNumber)
212 )
213 );
214
216 (
217 DEBUG_INFO,
218 " %-16a %a\n",
219 "Location",
220 SmbiosGetString (Record, Record.Standard.Type2->LocationInChassis)
221 )
222 );
223}
224
225STATIC
226VOID
229 )
230{
231 SmbiosDebugGeneric (Record);
232
234 (
235 DEBUG_INFO,
236 " %-16a %a\n",
237 "Manufacturer",
238 SmbiosGetString (Record, Record.Standard.Type3->Manufacturer)
239 )
240 );
241
243 (
244 DEBUG_INFO,
245 " %-16a %a\n",
246 "Version",
247 SmbiosGetString (Record, Record.Standard.Type3->Version)
248 )
249 );
250
252 (
253 DEBUG_INFO,
254 " %-16a %a\n",
255 "SerialNumber",
256 SmbiosGetString (Record, Record.Standard.Type3->SerialNumber)
257 )
258 );
259
261 (
262 DEBUG_INFO,
263 " %-16a %a\n",
264 "AssetTag",
265 SmbiosGetString (Record, Record.Standard.Type3->AssetTag)
266 )
267 );
268
270 (
271 DEBUG_INFO,
272 " %-16a %a\n",
273 "SKUNumber",
275 Record,
276 *(Record.Raw +
277 MultU64x32 (
278 Record.Standard.Type3->ContainedElementCount,
279 Record.Standard.Type3->ContainedElementRecordLength
280 ) + 0x15)
281 )
282 )
283 );
284}
285
286STATIC
287VOID
290 )
291{
292 SmbiosDebugGeneric (Record);
293
295 (
296 DEBUG_INFO,
297 " %-16a %a\n",
298 "Socket",
299 SmbiosGetString (Record, Record.Standard.Type4->Socket)
300 )
301 );
302
304 (
305 DEBUG_INFO,
306 " %-16a %a\n",
307 "Manufacturer",
308 SmbiosGetString (Record, Record.Standard.Type4->ProcessorManufacturer)
309 )
310 );
311
313 (
314 DEBUG_INFO,
315 " %-16a %a\n",
316 "Version",
317 SmbiosGetString (Record, Record.Standard.Type4->ProcessorVersion)
318 )
319 );
320
322 (
323 DEBUG_INFO,
324 " %-16a %d MHz\n",
325 "External Clock",
326 Record.Standard.Type4->ExternalClock
327 )
328 );
329
331 (
332 DEBUG_INFO,
333 " %-16a %d MHz\n",
334 "Max Speed",
335 Record.Standard.Type4->MaxSpeed
336 )
337 );
338
340 (
341 DEBUG_INFO,
342 " %-16a %d MHz\n",
343 "Current Speed",
344 Record.Standard.Type4->CurrentSpeed
345 )
346 );
347
349 (
350 DEBUG_INFO,
351 " %-16a 0x%02X\n",
352 "Family",
353 Record.Standard.Type4->ProcessorFamily
354 )
355 );
356
358 (
359 DEBUG_INFO,
360 " %-16a 0x%02X\n",
361 "Family2",
362 Record.Standard.Type4->ProcessorFamily2
363 )
364 );
365}
366
367STATIC
368VOID
371 )
372{
373 SmbiosDebugGeneric (Record);
374
376 (
377 DEBUG_INFO,
378 " %-16a %a\n",
379 "Internal",
380 SmbiosGetString (Record, Record.Standard.Type8->InternalReferenceDesignator)
381 )
382 );
383
385 (
386 DEBUG_INFO,
387 " %-16a %X\n",
388 "Type",
389 Record.Standard.Type8->InternalConnectorType
390 )
391 );
392
394 (
395 DEBUG_INFO,
396 " %-16a %a\n",
397 "External",
398 SmbiosGetString (Record, Record.Standard.Type8->ExternalReferenceDesignator)
399 )
400 );
401
403 (
404 DEBUG_INFO,
405 " %-16a %X\n",
406 "Type",
407 Record.Standard.Type8->ExternalConnectorType
408 )
409 );
410
412 (
413 DEBUG_INFO,
414 " %-16a %X\n",
415 "Port Type",
416 Record.Standard.Type8->PortType
417 )
418 );
419}
420
421STATIC
422VOID
425 )
426{
427 SmbiosDebugGeneric (Record);
428
430 (
431 DEBUG_INFO,
432 " %-16a %a\n",
433 "Socket",
434 SmbiosGetString (Record, Record.Standard.Type7->SocketDesignation)
435 )
436 );
437
439 (
440 DEBUG_INFO,
441 " %-16a %d KB\n",
442 "Maximum Size",
443 Record.Standard.Type7->MaximumCacheSize
444 )
445 );
446
448 (
449 DEBUG_INFO,
450 " %-16a %d KB\n",
451 "Installed Size",
452 Record.Standard.Type7->InstalledSize
453 )
454 );
455
457 (
458 DEBUG_INFO,
459 " %-16a %d\n",
460 "Associativity",
461 Record.Standard.Type7->Associativity
462 )
463 );
464}
465
466STATIC
467VOID
470 )
471{
472 SmbiosDebugGeneric (Record);
473
475 (
476 DEBUG_INFO,
477 " %-16a %a\n",
478 "Designation",
479 SmbiosGetString (Record, Record.Standard.Type9->SlotDesignation)
480 )
481 );
482
484 (
485 DEBUG_INFO,
486 " %-16a %X\n",
487 "Type",
488 Record.Standard.Type9->SlotType
489 )
490 );
491
493 (
494 DEBUG_INFO,
495 " %-16a %u %a\n",
496 "DataBus Width",
497 Record.Standard.Type9->SlotDataBusWidth,
498 Record.Standard.Type9->SlotDataBusWidth < ARRAY_SIZE (SlotDataWidthStrings)
499 ? SlotDataWidthStrings[Record.Standard.Type9->SlotDataBusWidth] : "Invalid"
500 )
501 );
502
504 (
505 DEBUG_INFO,
506 " %-16a %a\n",
507 "Current Usage",
508 (Record.Standard.Type9->CurrentUsage == SlotUsageAvailable ? "Free" : "InUse")
509 )
510 );
511
513 (
514 DEBUG_INFO,
515 " %-16a %a\n",
516 "Length",
517 (Record.Standard.Type9->SlotLength == SlotLengthShort ? "Short" : "Long")
518 )
519 );
520
522 (
523 DEBUG_INFO,
524 " %-16a %X\n",
525 "Id",
526 Record.Standard.Type9->SlotID
527 )
528 );
529}
530
531STATIC
532VOID
535 )
536{
537 SmbiosDebugGeneric (Record);
538
540 (
541 DEBUG_INFO,
542 " %-16a %d\n",
543 "Location",
544 Record.Standard.Type16->Location
545 )
546 );
547
549 (
550 DEBUG_INFO,
551 " %-16a %d\n",
552 "Use",
553 Record.Standard.Type16->Use
554 )
555 );
556
558 (
559 DEBUG_INFO,
560 " %-16a %d\n",
561 "ErrorCorrection",
562 Record.Standard.Type16->MemoryErrorCorrection
563 )
564 );
565
567 (
568 DEBUG_INFO,
569 " %-16a %d GB\n",
570 "Maximum Capacity",
571 (Record.Standard.Type16->MaximumCapacity >> 20)
572 )
573 );
574
576 (
577 DEBUG_INFO,
578 " %-16a %d\n",
579 "No Of Devices",
580 Record.Standard.Type16->NumberOfMemoryDevices
581 )
582 );
583}
584
585STATIC
586VOID
589 )
590{
591 SmbiosDebugGeneric (Record);
592
594 (
595 DEBUG_INFO,
596 " %-16a %a\n",
597 "DeviceLocator",
598 SmbiosGetString (Record, Record.Standard.Type17->DeviceLocator)
599 )
600 );
601
603 (
604 DEBUG_INFO,
605 " %-16a %a\n",
606 "BankLocator",
607 SmbiosGetString (Record, Record.Standard.Type17->BankLocator)
608 )
609 );
610
612 (
613 DEBUG_INFO,
614 " %-16a %d Bits\n",
615 "TotalWidth",
616 Record.Standard.Type17->TotalWidth
617 )
618 );
619
621 (
622 DEBUG_INFO,
623 " %-16a %d Bits\n",
624 "DataWidth",
625 Record.Standard.Type17->DataWidth
626 )
627 );
628
630 (
631 DEBUG_INFO,
632 " %-16a %d MB\n",
633 "Size", Record.Standard.Type17->Size
634 )
635 );
636
638 (
639 DEBUG_INFO,
640 " %-16a %d MHz\n",
641 "Speed", Record.Standard.Type17->Speed
642 )
643 );
644
646 (
647 DEBUG_INFO,
648 " %-16a %a\n",
649 "Manufacturer",
650 SmbiosGetString (Record, Record.Standard.Type17->Manufacturer)
651 )
652 );
653
655 (
656 DEBUG_INFO,
657 " %-16a %a\n",
658 "SerialNumber",
659 SmbiosGetString (Record, Record.Standard.Type17->SerialNumber)
660 )
661 );
662
664 (
665 DEBUG_INFO,
666 " %-16a %a\n",
667 "AssetTag",
668 SmbiosGetString (Record, Record.Standard.Type17->AssetTag)
669 )
670 );
671
673 (
674 DEBUG_INFO,
675 " %-16a %a\n",
676 "PartNumber",
677 SmbiosGetString (Record, Record.Standard.Type17->PartNumber)
678 )
679 );
680}
681
682STATIC
683VOID
686 )
687{
688 SmbiosDebugGeneric (Record);
689
691 (
692 DEBUG_INFO,
693 " %-16a 0x%08X\n",
694 "Starting Address",
695 Record.Standard.Type19->StartingAddress
696 )
697 );
698
700 (
701 DEBUG_INFO,
702 " %-16a 0x%08X\n",
703 "Ending Address",
704 Record.Standard.Type19->EndingAddress
705 )
706 );
707
709 (
710 DEBUG_INFO,
711 " %-16a 0x%04X\n",
712 "Array Handle",
713 Record.Standard.Type19->MemoryArrayHandle
714 )
715 );
716
718 (
719 DEBUG_INFO,
720 " %-16a %d\n",
721 "Partition Width",
722 Record.Standard.Type19->PartitionWidth
723 )
724 );
725}
726
727STATIC
728VOID
731 )
732{
733 SmbiosDebugGeneric (Record);
734
736 (
737 DEBUG_INFO,
738 " %-16a 0x%08X\n",
739 "Starting Address",
740 Record.Standard.Type20->StartingAddress
741 )
742 );
743
745 (
746 DEBUG_INFO,
747 " %-16a 0x%08X\n",
748 "Ending Address",
749 Record.Standard.Type20->EndingAddress
750 )
751 );
752
754 (
755 DEBUG_INFO,
756 " %-16a 0x%02X\n",
757 "Device Handle",
758 Record.Standard.Type20->MemoryDeviceHandle
759 )
760 );
761
763 (
764 DEBUG_INFO,
765 " %-16a 0x%04X\n",
766 "Array Handle",
767 Record.Standard.Type20->MemoryArrayMappedAddressHandle
768 )
769 );
770
772 (
773 DEBUG_INFO,
774 " %-16a %d\n",
775 "Row Position",
776 Record.Standard.Type20->PartitionRowPosition
777 )
778 );
779
781 (
782 DEBUG_INFO,
783 " %-16a %d\n",
784 "Data Depth",
785 Record.Standard.Type20->InterleavedDataDepth
786 )
787 );
788
790 (
791 DEBUG_INFO,
792 " %-16a %d\n",
793 "Interleave Position",
794 Record.Standard.Type20->InterleavePosition
795 )
796 );
797}
798
799STATIC
800VOID
803 )
804{
805 SmbiosDebugGeneric (Record);
806
808 (
809 DEBUG_INFO,
810 " %-16a %a\n",
811 "Location",
812 SmbiosGetString (Record, Record.Standard.Type22->Location)
813 )
814 );
815
817 (
818 DEBUG_INFO,
819 " %-16a %a\n",
820 "Manufacturer",
821 SmbiosGetString (Record, Record.Standard.Type22->Manufacturer)
822 )
823 );
824
826 (
827 DEBUG_INFO,
828 " %-16a %a\n",
829 "Serial Number",
830 SmbiosGetString (Record, Record.Standard.Type22->SerialNumber)
831 )
832 );
833
835 (
836 DEBUG_INFO,
837 " %-16a %a\n",
838 "Device Name",
839 SmbiosGetString (Record, Record.Standard.Type22->DeviceName)
840 )
841 );
842
844 (
845 DEBUG_INFO,
846 " %-16a %a\n",
847 "SBDS Version",
848 SmbiosGetString (Record, Record.Standard.Type22->SBDSVersionNumber)
849 )
850 );
851
853 (
854 DEBUG_INFO,
855 " %-16a %a\n",
856 "SBDS Chemistry",
857 SmbiosGetString (Record, Record.Standard.Type22->SBDSDeviceChemistry)
858 )
859 );
860}
861
862STATIC
863VOID
866 )
867{
868 SmbiosDebugGeneric (Record);
869
871 (
872 DEBUG_INFO,
873 " %-16a 0x%02X\n",
874 "BootStatus",
875 Record.Standard.Type32->BootStatus
876 )
877 );
878}
879
880STATIC
881VOID
884 )
885{
886 SmbiosDebugGeneric (Record);
887
889 (
890 DEBUG_INFO,
891 " %-16a 0x%08X\n",
892 "Features",
893 Record.Type128->FirmwareFeatures
894 )
895 );
896
898 (
899 DEBUG_INFO,
900 " %-16a 0x%08X\n",
901 "Features Mask",
902 Record.Type128->FirmwareFeaturesMask
903 )
904 );
905}
906
907STATIC
908VOID
911 )
912{
913 SmbiosDebugGeneric (Record);
914
916 (
917 DEBUG_INFO,
918 " %-16a %04X\n",
919 "Cpu Type",
920 Record.Type131->ProcessorType
921 )
922 );
923}
924
925STATIC
926VOID
929 )
930{
931 SmbiosDebugGeneric (Record);
932
934 (
935 DEBUG_INFO,
936 " %-16a %d\n",
937 "Cpu Bus Speed",
938 Record.Type132->ProcessorBusSpeed
939 )
940 );
941}
942
943VOID
946 )
947{
948 switch (Record.Standard.Hdr->Type) {
949 case SMBIOS_TYPE_BIOS_INFORMATION:
951 return;
952 case SMBIOS_TYPE_SYSTEM_INFORMATION:
954 return;
955 case SMBIOS_TYPE_BASEBOARD_INFORMATION:
957 return;
958 case SMBIOS_TYPE_SYSTEM_ENCLOSURE:
960 return;
961 case SMBIOS_TYPE_PROCESSOR_INFORMATION:
963 return;
964 case SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION:
965 SmbiosDebugSystemPorts (Record);
966 return;
967 case SMBIOS_TYPE_CACHE_INFORMATION:
969 return;
970 case SMBIOS_TYPE_SYSTEM_SLOTS:
971 SmbiosDebugSystemSlots (Record);
972 return;
973 case SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY:
975 return;
976 case SMBIOS_TYPE_MEMORY_DEVICE:
978 return;
979 case SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS:
981 return;
982 case SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS:
984 return;
985 case SMBIOS_TYPE_PORTABLE_BATTERY:
987 return;
988 case SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION:
990 return;
993 return;
996 return;
999 return;
1000 default:
1001 SmbiosDebugGeneric (Record);
1002 }
1003}
#define ARRAY_SIZE(Array)
Definition AppleMacEfi.h:34
#define APPLE_SMBIOS_TYPE_PROCESSOR_BUS_SPEED
Definition AppleSmBios.h:23
#define APPLE_SMBIOS_TYPE_FIRMWARE_INFORMATION
Definition AppleSmBios.h:20
#define APPLE_SMBIOS_TYPE_PROCESSOR_TYPE
Definition AppleSmBios.h:22
STATIC VOID SmbiosDebugSystemInformation(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugMemoryMappedAddress(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
VOID SmbiosDebugAnyStructure(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugCacheInformation(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugBaseboardInformation(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugGeneric(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
Definition DebugSmbios.c:48
STATIC VOID SmbiosDebugPhysicalMemoryArray(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugAppleProcessorType(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 * SlotDataWidthStrings[]
Definition DebugSmbios.c:28
STATIC VOID SmbiosDebugSystemEnclosure(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugProcessorInformation(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugMemoryMappedDevice(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugPortableBatteryDevice(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugMemoryDevice(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugBiosInformation(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
Definition DebugSmbios.c:65
STATIC VOID SmbiosDebugBootInformation(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugSystemSlots(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugAppleFirmwareVolume(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugSystemPorts(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
STATIC VOID SmbiosDebugAppleProcessorSpeed(IN APPLE_SMBIOS_STRUCTURE_POINTER Record)
#define DEBUG_SMBIOS(arg)
Definition DebugSmbios.h:26
CHAR8 * SmbiosGetString(IN APPLE_SMBIOS_STRUCTURE_POINTER SmbiosTable, IN SMBIOS_TABLE_STRING String)
UINT64 EFIAPI MultU64x32(IN UINT64 Multiplicand, IN UINT32 Multiplier)
Definition UserMath.c:96