1 /*
2  * Copyright 2015 OmniTI Computer Consulting, Inc.  All rights reserved.
3  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
4  * Use is subject to license terms.
5  */
6 
7 #include <smbios.h>
8 
9 const char *
10 smbios_bboard_flag_name(uint_t x)
11 {
12 	switch (x) {
13 	case SMB_BBFL_MOTHERBOARD: return ("SMB_BBFL_MOTHERBOARD");
14 	case SMB_BBFL_NEEDAUX: return ("SMB_BBFL_NEEDAUX");
15 	case SMB_BBFL_REMOVABLE: return ("SMB_BBFL_REMOVABLE");
16 	case SMB_BBFL_REPLACABLE: return ("SMB_BBFL_REPLACABLE");
17 	case SMB_BBFL_HOTSWAP: return ("SMB_BBFL_HOTSWAP");
18 	}
19 	return (NULL);
20 }
21 
22 const char *
23 smbios_bios_flag_name(uint64_t x)
24 {
25 	switch (x) {
26 	case SMB_BIOSFL_RSV0: return ("SMB_BIOSFL_RSV0");
27 	case SMB_BIOSFL_RSV1: return ("SMB_BIOSFL_RSV1");
28 	case SMB_BIOSFL_UNKNOWN: return ("SMB_BIOSFL_UNKNOWN");
29 	case SMB_BIOSFL_BCNOTSUP: return ("SMB_BIOSFL_BCNOTSUP");
30 	case SMB_BIOSFL_ISA: return ("SMB_BIOSFL_ISA");
31 	case SMB_BIOSFL_MCA: return ("SMB_BIOSFL_MCA");
32 	case SMB_BIOSFL_EISA: return ("SMB_BIOSFL_EISA");
33 	case SMB_BIOSFL_PCI: return ("SMB_BIOSFL_PCI");
34 	case SMB_BIOSFL_PCMCIA: return ("SMB_BIOSFL_PCMCIA");
35 	case SMB_BIOSFL_PLUGNPLAY: return ("SMB_BIOSFL_PLUGNPLAY");
36 	case SMB_BIOSFL_APM: return ("SMB_BIOSFL_APM");
37 	case SMB_BIOSFL_FLASH: return ("SMB_BIOSFL_FLASH");
38 	case SMB_BIOSFL_SHADOW: return ("SMB_BIOSFL_SHADOW");
39 	case SMB_BIOSFL_VLVESA: return ("SMB_BIOSFL_VLVESA");
40 	case SMB_BIOSFL_ESCD: return ("SMB_BIOSFL_ESCD");
41 	case SMB_BIOSFL_CDBOOT: return ("SMB_BIOSFL_CDBOOT");
42 	case SMB_BIOSFL_SELBOOT: return ("SMB_BIOSFL_SELBOOT");
43 	case SMB_BIOSFL_ROMSOCK: return ("SMB_BIOSFL_ROMSOCK");
44 	case SMB_BIOSFL_PCMBOOT: return ("SMB_BIOSFL_PCMBOOT");
45 	case SMB_BIOSFL_EDD: return ("SMB_BIOSFL_EDD");
46 	case SMB_BIOSFL_NEC9800: return ("SMB_BIOSFL_NEC9800");
47 	case SMB_BIOSFL_TOSHIBA: return ("SMB_BIOSFL_TOSHIBA");
48 	case SMB_BIOSFL_525_360K: return ("SMB_BIOSFL_525_360K");
49 	case SMB_BIOSFL_525_12M: return ("SMB_BIOSFL_525_12M");
50 	case SMB_BIOSFL_35_720K: return ("SMB_BIOSFL_35_720K");
51 	case SMB_BIOSFL_35_288M: return ("SMB_BIOSFL_35_288M");
52 	case SMB_BIOSFL_I5_PRINT: return ("SMB_BIOSFL_I5_PRINT");
53 	case SMB_BIOSFL_I9_KBD: return ("SMB_BIOSFL_I9_KBD");
54 	case SMB_BIOSFL_I14_SER: return ("SMB_BIOSFL_I14_SER");
55 	case SMB_BIOSFL_I17_PRINTER: return ("SMB_BIOSFL_I17_PRINTER");
56 	case SMB_BIOSFL_I10_CGA: return ("SMB_BIOSFL_I10_CGA");
57 	case SMB_BIOSFL_NEC_PC98: return ("SMB_BIOSFL_NEC_PC98");
58 	}
59 	return (NULL);
60 }
61 
62 const char *
63 smbios_bios_xb1_name(uint_t x)
64 {
65 	switch (x) {
66 	case SMB_BIOSXB1_ACPI: return ("SMB_BIOSXB1_ACPI");
67 	case SMB_BIOSXB1_USBL: return ("SMB_BIOSXB1_USBL");
68 	case SMB_BIOSXB1_AGP: return ("SMB_BIOSXB1_AGP");
69 	case SMB_BIOSXB1_I20: return ("SMB_BIOSXB1_I20");
70 	case SMB_BIOSXB1_LS120: return ("SMB_BIOSXB1_LS120");
71 	case SMB_BIOSXB1_ATZIP: return ("SMB_BIOSXB1_ATZIP");
72 	case SMB_BIOSXB1_1394: return ("SMB_BIOSXB1_1394");
73 	case SMB_BIOSXB1_SMBAT: return ("SMB_BIOSXB1_SMBAT");
74 	}
75 	return (NULL);
76 }
77 
78 const char *
79 smbios_bios_xb2_name(uint_t x)
80 {
81 	switch (x) {
82 	case SMB_BIOSXB2_BBOOT: return ("SMB_BIOSXB2_BBOOT");
83 	case SMB_BIOSXB2_FKNETSVC: return ("SMB_BIOSXB2_FKNETSVC");
84 	case SMB_BIOSXB2_ETCDIST: return ("SMB_BIOSXB2_ETCDIST");
85 	case SMB_BIOSXB2_UEFI: return ("SMB_BIOSXB2_UEFI");
86 	case SMB_BIOSXB2_VM: return ("SMB_BIOSXB2_VM");
87 	}
88 	return (NULL);
89 }
90 
91 const char *
92 smbios_cache_ctype_name(uint_t x)
93 {
94 	switch (x) {
95 	case SMB_CAT_OTHER: return ("SMB_CAT_OTHER");
96 	case SMB_CAT_UNKNOWN: return ("SMB_CAT_UNKNOWN");
97 	case SMB_CAT_NONBURST: return ("SMB_CAT_NONBURST");
98 	case SMB_CAT_BURST: return ("SMB_CAT_BURST");
99 	case SMB_CAT_PBURST: return ("SMB_CAT_PBURST");
100 	case SMB_CAT_SYNC: return ("SMB_CAT_SYNC");
101 	case SMB_CAT_ASYNC: return ("SMB_CAT_ASYNC");
102 	}
103 	return (NULL);
104 }
105 
106 const char *
107 smbios_cache_flag_name(uint_t x)
108 {
109 	switch (x) {
110 	case SMB_CAF_ENABLED: return ("SMB_CAF_ENABLED");
111 	case SMB_CAF_SOCKETED: return ("SMB_CAF_SOCKETED");
112 	}
113 	return (NULL);
114 }
115 
116 const char *
117 smbios_evlog_flag_name(uint_t x)
118 {
119 	switch (x) {
120 	case SMB_EVFL_VALID: return ("SMB_EVFL_VALID");
121 	case SMB_EVFL_FULL: return ("SMB_EVFL_FULL");
122 	}
123 	return (NULL);
124 }
125 
126 const char *
127 smbios_ipmi_flag_name(uint_t x)
128 {
129 	switch (x) {
130 	case SMB_IPMI_F_IOADDR: return ("SMB_IPMI_F_IOADDR");
131 	case SMB_IPMI_F_INTRSPEC: return ("SMB_IPMI_F_INTRSPEC");
132 	case SMB_IPMI_F_INTRHIGH: return ("SMB_IPMI_F_INTRHIGH");
133 	case SMB_IPMI_F_INTREDGE: return ("SMB_IPMI_F_INTREDGE");
134 	}
135 	return (NULL);
136 }
137 
138 const char *
139 smbios_powersup_flag_name(uint_t x)
140 {
141 	switch (x) {
142 	case SMB_POWERSUP_F_HOT: return ("SMB_POWERSUP_F_HOT");
143 	case SMB_POWERSUP_F_PRESENT: return ("SMB_POWERSUP_F_PRESENT");
144 	case SMB_POWERSUP_F_UNPLUG: return ("SMB_POWERSUP_F_UNPLUG");
145 	}
146 	return (NULL);
147 }
148 
149 const char *
150 smbios_memdevice_op_capab_name(uint_t x)
151 {
152 	switch (x) {
153 	case SMB_MOMC_OTHER: return ("SMB_MOMC_OTHER");
154 	case SMB_MOMC_UNKNOWN: return ("SMB_MOMC_UNKNOWN");
155 	case SMB_MOMC_VOLATILE: return ("SMB_MOMC_VOLATILE");
156 	case SMB_MOMC_BYTE_PM: return ("SMB_MOMC_BYTE_PM");
157 	case SMB_MOMC_BLOCK_PM: return ("SMB_MOMC_BLOCK_PM");
158 	}
159 	return (NULL);
160 }
161 
162 const char *
163 smbios_memdevice_flag_name(uint_t x)
164 {
165 	switch (x) {
166 	case SMB_MDF_OTHER: return ("SMB_MDF_OTHER");
167 	case SMB_MDF_UNKNOWN: return ("SMB_MDF_UNKNOWN");
168 	case SMB_MDF_FASTPG: return ("SMB_MDF_FASTPG");
169 	case SMB_MDF_STATIC: return ("SMB_MDF_STATIC");
170 	case SMB_MDF_PSTATIC: return ("SMB_MDF_PSTATIC");
171 	case SMB_MDF_RAMBUS: return ("SMB_MDF_RAMBUS");
172 	case SMB_MDF_SYNC: return ("SMB_MDF_SYNC");
173 	case SMB_MDF_CMOS: return ("SMB_MDF_CMOS");
174 	case SMB_MDF_EDO: return ("SMB_MDF_EDO");
175 	case SMB_MDF_WDRAM: return ("SMB_MDF_WDRAM");
176 	case SMB_MDF_CDRAM: return ("SMB_MDF_CDRAM");
177 	case SMB_MDF_NV: return ("SMB_MDF_NV");
178 	case SMB_MDF_REG: return ("SMB_MDF_REG");
179 	case SMB_MDF_UNREG: return ("SMB_MDF_UNREG");
180 	case SMB_MDF_LRDIMM: return ("SMB_MDF_LRDIMM");
181 	}
182 	return (NULL);
183 }
184 
185 const char *
186 smbios_processor_core_flag_name(uint_t x)
187 {
188 	switch (x) {
189 	case SMB_PRC_RESERVED: return ("SMB_PRC_RESERVED");
190 	case SMB_PRC_UNKNOWN: return ("SMB_PRC_UNKNOWN");
191 	case SMB_PRC_64BIT: return ("SMB_PRC_64BIT");
192 	case SMB_PRC_MC: return ("SMB_PRC_MC");
193 	case SMB_PRC_HT: return ("SMB_PRC_HT");
194 	case SMB_PRC_NX: return ("SMB_PRC_NX");
195 	case SMB_PRC_VT: return ("SMB_PRC_VT");
196 	case SMB_PRC_PM: return ("SMB_PRC_PM");
197 	}
198 	return (NULL);
199 }
200 
201 const char *
202 smbios_type_name(uint_t x)
203 {
204 	switch (x) {
205 	case SMB_TYPE_BIOS: return ("SMB_TYPE_BIOS");
206 	case SMB_TYPE_SYSTEM: return ("SMB_TYPE_SYSTEM");
207 	case SMB_TYPE_BASEBOARD: return ("SMB_TYPE_BASEBOARD");
208 	case SMB_TYPE_CHASSIS: return ("SMB_TYPE_CHASSIS");
209 	case SMB_TYPE_PROCESSOR: return ("SMB_TYPE_PROCESSOR");
210 	case SMB_TYPE_MEMCTL: return ("SMB_TYPE_MEMCTL");
211 	case SMB_TYPE_MEMMOD: return ("SMB_TYPE_MEMMOD");
212 	case SMB_TYPE_CACHE: return ("SMB_TYPE_CACHE");
213 	case SMB_TYPE_PORT: return ("SMB_TYPE_PORT");
214 	case SMB_TYPE_SLOT: return ("SMB_TYPE_SLOT");
215 	case SMB_TYPE_OBDEVS: return ("SMB_TYPE_OBDEVS");
216 	case SMB_TYPE_OEMSTR: return ("SMB_TYPE_OEMSTR");
217 	case SMB_TYPE_SYSCONFSTR: return ("SMB_TYPE_SYSCONFSTR");
218 	case SMB_TYPE_LANG: return ("SMB_TYPE_LANG");
219 	case SMB_TYPE_GROUP: return ("SMB_TYPE_GROUP");
220 	case SMB_TYPE_EVENTLOG: return ("SMB_TYPE_EVENTLOG");
221 	case SMB_TYPE_MEMARRAY: return ("SMB_TYPE_MEMARRAY");
222 	case SMB_TYPE_MEMDEVICE: return ("SMB_TYPE_MEMDEVICE");
223 	case SMB_TYPE_MEMERR32: return ("SMB_TYPE_MEMERR32");
224 	case SMB_TYPE_MEMARRAYMAP: return ("SMB_TYPE_MEMARRAYMAP");
225 	case SMB_TYPE_MEMDEVICEMAP: return ("SMB_TYPE_MEMDEVICEMAP");
226 	case SMB_TYPE_POINTDEV: return ("SMB_TYPE_POINTDEV");
227 	case SMB_TYPE_BATTERY: return ("SMB_TYPE_BATTERY");
228 	case SMB_TYPE_RESET: return ("SMB_TYPE_RESET");
229 	case SMB_TYPE_SECURITY: return ("SMB_TYPE_SECURITY");
230 	case SMB_TYPE_POWERCTL: return ("SMB_TYPE_POWERCTL");
231 	case SMB_TYPE_VPROBE: return ("SMB_TYPE_VPROBE");
232 	case SMB_TYPE_COOLDEV: return ("SMB_TYPE_COOLDEV");
233 	case SMB_TYPE_TPROBE: return ("SMB_TYPE_TPROBE");
234 	case SMB_TYPE_IPROBE: return ("SMB_TYPE_IPROBE");
235 	case SMB_TYPE_OOBRA: return ("SMB_TYPE_OOBRA");
236 	case SMB_TYPE_BIS: return ("SMB_TYPE_BIS");
237 	case SMB_TYPE_BOOT: return ("SMB_TYPE_BOOT");
238 	case SMB_TYPE_MEMERR64: return ("SMB_TYPE_MEMERR64");
239 	case SMB_TYPE_MGMTDEV: return ("SMB_TYPE_MGMTDEV");
240 	case SMB_TYPE_MGMTDEVCP: return ("SMB_TYPE_MGMTDEVCP");
241 	case SMB_TYPE_MGMTDEVDATA: return ("SMB_TYPE_MGMTDEVDATA");
242 	case SMB_TYPE_MEMCHAN: return ("SMB_TYPE_MEMCHAN");
243 	case SMB_TYPE_IPMIDEV: return ("SMB_TYPE_IPMIDEV");
244 	case SMB_TYPE_POWERSUP: return ("SMB_TYPE_POWERSUP");
245 	case SMB_TYPE_ADDINFO: return ("SMB_TYPE_ADDINFO");
246 	case SMB_TYPE_OBDEVEXT: return ("SMB_TYPE_OBDEVEXT");
247 	case SMB_TYPE_MCHI: return ("SMB_TYPE_MCHI");
248 	case SMB_TYPE_TPM: return ("SMB_TYPE_TPM");
249 	case SMB_TYPE_INACTIVE: return ("SMB_TYPE_INACTIVE");
250 	case SMB_TYPE_EOT: return ("SMB_TYPE_EOT");
251 	case SMB_TYPE_OEM_LO: return ("SMB_TYPE_OEM_LO");
252 	case SMB_TYPE_OEM_HI: return ("SMB_TYPE_OEM_HI");
253 	}
254 	return (NULL);
255 }
256 
257 const char *
258 smbios_slot_ch1_name(uint_t x)
259 {
260 	switch (x) {
261 	case SMB_SLCH1_UNKNOWN: return ("SMB_SLCH1_UNKNOWN");
262 	case SMB_SLCH1_5V: return ("SMB_SLCH1_5V");
263 	case SMB_SLCH1_33V: return ("SMB_SLCH1_33V");
264 	case SMB_SLCH1_SHARED: return ("SMB_SLCH1_SHARED");
265 	case SMB_SLCH1_PC16: return ("SMB_SLCH1_PC16");
266 	case SMB_SLCH1_PCCB: return ("SMB_SLCH1_PCCB");
267 	case SMB_SLCH1_PCZV: return ("SMB_SLCH1_PCZV");
268 	case SMB_SLCH1_PCMRR: return ("SMB_SLCH1_PCMRR");
269 	}
270 	return (NULL);
271 }
272 
273 const char *
274 smbios_slot_ch2_name(uint_t x)
275 {
276 	switch (x) {
277 	case SMB_SLCH2_PME: return ("SMB_SLCH2_PME");
278 	case SMB_SLCH2_HOTPLUG: return ("SMB_SLCH2_HOTPLUG");
279 	case SMB_SLCH2_SMBUS: return ("SMB_SLCH2_SMBUS");
280 	case SMB_SLCH2_BIFUR: return ("SMB_SLCH2_BIFUR");
281 	}
282 	return (NULL);
283 }
284 
285 const char *
286 smbios_bboard_flag_desc(uint_t x)
287 {
288 	switch (x) {
289 	case SMB_BBFL_MOTHERBOARD: return ("board is a motherboard");
290 	case SMB_BBFL_NEEDAUX: return ("auxiliary card or daughter req'd");
291 	case SMB_BBFL_REMOVABLE: return ("board is removable");
292 	case SMB_BBFL_REPLACABLE: return ("board is field-replacable");
293 	case SMB_BBFL_HOTSWAP: return ("board is hot-swappable");
294 	}
295 	return (NULL);
296 }
297 
298 const char *
299 smbios_bboard_type_desc(uint_t x)
300 {
301 	switch (x) {
302 	case SMB_BBT_UNKNOWN: return ("unknown");
303 	case SMB_BBT_OTHER: return ("other");
304 	case SMB_BBT_SBLADE: return ("server blade");
305 	case SMB_BBT_CSWITCH: return ("connectivity switch");
306 	case SMB_BBT_SMM: return ("system management module");
307 	case SMB_BBT_PROC: return ("processor module");
308 	case SMB_BBT_IO: return ("i/o module");
309 	case SMB_BBT_MEM: return ("memory module");
310 	case SMB_BBT_DAUGHTER: return ("daughterboard");
311 	case SMB_BBT_MOTHER: return ("motherboard");
312 	case SMB_BBT_PROCMEM: return ("processor/memory module");
313 	case SMB_BBT_PROCIO: return ("processor/i/o module");
314 	case SMB_BBT_INTER: return ("interconnect board");
315 	}
316 	return (NULL);
317 }
318 
319 const char *
320 smbios_bios_flag_desc(uint64_t x)
321 {
322 	switch (x) {
323 	case SMB_BIOSFL_RSV0: return ("reserved bit zero");
324 	case SMB_BIOSFL_RSV1: return ("reserved bit one");
325 	case SMB_BIOSFL_UNKNOWN: return ("unknown");
326 	case SMB_BIOSFL_BCNOTSUP: return ("BIOS chars not supported");
327 	case SMB_BIOSFL_ISA: return ("ISA is supported");
328 	case SMB_BIOSFL_MCA: return ("MCA is supported");
329 	case SMB_BIOSFL_EISA: return ("EISA is supported");
330 	case SMB_BIOSFL_PCI: return ("PCI is supported");
331 	case SMB_BIOSFL_PCMCIA: return ("PCMCIA is supported");
332 	case SMB_BIOSFL_PLUGNPLAY: return ("Plug and Play is supported");
333 	case SMB_BIOSFL_APM: return ("APM is supported");
334 	case SMB_BIOSFL_FLASH: return ("BIOS is Flash Upgradeable");
335 	case SMB_BIOSFL_SHADOW: return ("BIOS shadowing is allowed");
336 	case SMB_BIOSFL_VLVESA: return ("VL-VESA is supported");
337 	case SMB_BIOSFL_ESCD: return ("ESCD support is available");
338 	case SMB_BIOSFL_CDBOOT: return ("Boot from CD is supported");
339 	case SMB_BIOSFL_SELBOOT: return ("Selectable Boot supported");
340 	case SMB_BIOSFL_ROMSOCK: return ("BIOS ROM is socketed");
341 	case SMB_BIOSFL_PCMBOOT: return ("Boot from PCMCIA supported");
342 	case SMB_BIOSFL_EDD: return ("EDD Spec is supported");
343 	case SMB_BIOSFL_NEC9800: return ("int 0x13 NEC 9800 floppy");
344 	case SMB_BIOSFL_TOSHIBA: return ("int 0x13 Toshiba floppy");
345 	case SMB_BIOSFL_525_360K: return ("int 0x13 5.25\" 360K floppy");
346 	case SMB_BIOSFL_525_12M: return ("int 0x13 5.25\" 1.2M floppy");
347 	case SMB_BIOSFL_35_720K: return ("int 0x13 3.5\" 720K floppy");
348 	case SMB_BIOSFL_35_288M: return ("int 0x13 3.5\" 2.88M floppy");
349 	case SMB_BIOSFL_I5_PRINT: return ("int 0x5 print screen svcs");
350 	case SMB_BIOSFL_I9_KBD: return ("int 0x9 8042 keyboard svcs");
351 	case SMB_BIOSFL_I14_SER: return ("int 0x14 serial svcs");
352 	case SMB_BIOSFL_I17_PRINTER: return ("int 0x17 printer svcs");
353 	case SMB_BIOSFL_I10_CGA: return ("int 0x10 CGA svcs");
354 	case SMB_BIOSFL_NEC_PC98: return ("NEC PC-98");
355 	}
356 	return (NULL);
357 }
358 
359 const char *
360 smbios_bios_xb1_desc(uint_t x)
361 {
362 	switch (x) {
363 	case SMB_BIOSXB1_ACPI: return ("ACPI is supported");
364 	case SMB_BIOSXB1_USBL: return ("USB legacy is supported");
365 	case SMB_BIOSXB1_AGP: return ("AGP is supported");
366 	case SMB_BIOSXB1_I20: return ("I2O boot is supported");
367 	case SMB_BIOSXB1_LS120: return ("LS-120 boot is supported");
368 	case SMB_BIOSXB1_ATZIP: return ("ATAPI ZIP drive boot is supported");
369 	case SMB_BIOSXB1_1394: return ("1394 boot is supported");
370 	case SMB_BIOSXB1_SMBAT: return ("Smart Battery is supported");
371 	}
372 	return (NULL);
373 }
374 
375 const char *
376 smbios_bios_xb2_desc(uint_t x)
377 {
378 	switch (x) {
379 	case SMB_BIOSXB2_BBOOT: return ("BIOS Boot Specification supported");
380 	case SMB_BIOSXB2_FKNETSVC: return ("F-key Network Svc boot supported");
381 	case SMB_BIOSXB2_ETCDIST: return ("Enable Targeted Content Distrib.");
382 	case SMB_BIOSXB2_UEFI: return ("UEFI Specification supported");
383 	case SMB_BIOSXB2_VM: return ("SMBIOS table describes a VM");
384 	}
385 	return (NULL);
386 }
387 
388 const char *
389 smbios_boot_desc(uint_t x)
390 {
391 	switch (x) {
392 	case SMB_BOOT_NORMAL: return ("no errors detected");
393 	case SMB_BOOT_NOMEDIA: return ("no bootable media");
394 	case SMB_BOOT_OSFAIL: return ("normal o/s failed to load");
395 	case SMB_BOOT_FWHWFAIL: return ("firmware-detected hardware failure");
396 	case SMB_BOOT_OSHWFAIL: return ("o/s-detected hardware failure");
397 	case SMB_BOOT_USERREQ: return ("user-requested boot (keystroke)");
398 	case SMB_BOOT_SECURITY: return ("system security violation");
399 	case SMB_BOOT_PREVREQ: return ("previously requested image (D)");
400 	case SMB_BOOT_WATCHDOG: return ("watchdog initiated reboot");
401 	case SMB_BOOT_RESV_LO: return ("low end of reserved range");
402 	case SMB_BOOT_RESV_HI: return ("high end of reserved range");
403 	case SMB_BOOT_OEM_LO: return ("low end of OEM-specific range");
404 	case SMB_BOOT_OEM_HI: return ("high end of OEM-specific range");
405 	case SMB_BOOT_PROD_LO: return ("low end of product-specific range");
406 	case SMB_BOOT_PROD_HI: return ("high end of product-specific range");
407 	}
408 	return (NULL);
409 }
410 
411 const char *
412 smbios_cache_assoc_desc(uint_t x)
413 {
414 	switch (x) {
415 	case SMB_CAA_OTHER: return ("other");
416 	case SMB_CAA_UNKNOWN: return ("unknown");
417 	case SMB_CAA_DIRECT: return ("direct mapped");
418 	case SMB_CAA_2WAY: return ("2-way set associative");
419 	case SMB_CAA_4WAY: return ("4-way set associative");
420 	case SMB_CAA_FULL: return ("fully associative");
421 	case SMB_CAA_8WAY: return ("8-way set associative");
422 	case SMB_CAA_16WAY: return ("16-way set associative");
423 	case SMB_CAA_12WAY: return ("12-way set associative");
424 	case SMB_CAA_24WAY: return ("24-way set associative");
425 	case SMB_CAA_32WAY: return ("32-way set associative");
426 	case SMB_CAA_48WAY: return ("48-way set associative");
427 	case SMB_CAA_64WAY: return ("64-way set associative");
428 	case SMB_CAA_20WAY: return ("20-way set associative");
429 	}
430 	return (NULL);
431 }
432 
433 const char *
434 smbios_cache_ctype_desc(uint_t x)
435 {
436 	switch (x) {
437 	case SMB_CAT_OTHER: return ("other");
438 	case SMB_CAT_UNKNOWN: return ("unknown");
439 	case SMB_CAT_NONBURST: return ("non-burst");
440 	case SMB_CAT_BURST: return ("burst");
441 	case SMB_CAT_PBURST: return ("pipeline burst");
442 	case SMB_CAT_SYNC: return ("synchronous");
443 	case SMB_CAT_ASYNC: return ("asynchronous");
444 	}
445 	return (NULL);
446 }
447 
448 const char *
449 smbios_cache_ecc_desc(uint_t x)
450 {
451 	switch (x) {
452 	case SMB_CAE_OTHER: return ("other");
453 	case SMB_CAE_UNKNOWN: return ("unknown");
454 	case SMB_CAE_NONE: return ("none");
455 	case SMB_CAE_PARITY: return ("parity");
456 	case SMB_CAE_SBECC: return ("single-bit ECC");
457 	case SMB_CAE_MBECC: return ("multi-bit ECC");
458 	}
459 	return (NULL);
460 }
461 
462 const char *
463 smbios_cache_flag_desc(uint_t x)
464 {
465 	switch (x) {
466 	case SMB_CAF_ENABLED: return ("enabled at boot time");
467 	case SMB_CAF_SOCKETED: return ("cache is socketed");
468 	}
469 	return (NULL);
470 }
471 
472 const char *
473 smbios_cache_loc_desc(uint_t x)
474 {
475 	switch (x) {
476 	case SMB_CAL_INTERNAL: return ("internal");
477 	case SMB_CAL_EXTERNAL: return ("external");
478 	case SMB_CAL_RESERVED: return ("reserved");
479 	case SMB_CAL_UNKNOWN: return ("unknown");
480 	}
481 	return (NULL);
482 }
483 
484 const char *
485 smbios_cache_logical_desc(uint_t x)
486 {
487 	switch (x) {
488 	case SMB_CAG_OTHER: return ("other");
489 	case SMB_CAG_UNKNOWN: return ("unknown");
490 	case SMB_CAG_INSTR: return ("instruction");
491 	case SMB_CAG_DATA: return ("data");
492 	case SMB_CAG_UNIFIED: return ("unified");
493 	}
494 	return (NULL);
495 }
496 
497 const char *
498 smbios_cache_mode_desc(uint_t x)
499 {
500 	switch (x) {
501 	case SMB_CAM_WT: return ("write-through");
502 	case SMB_CAM_WB: return ("write-back");
503 	case SMB_CAM_VARY: return ("varies by address");
504 	case SMB_CAM_UNKNOWN: return ("unknown");
505 	}
506 	return (NULL);
507 }
508 
509 const char *
510 smbios_chassis_state_desc(uint_t x)
511 {
512 	switch (x) {
513 	case SMB_CHST_OTHER: return ("other");
514 	case SMB_CHST_UNKNOWN: return ("unknown");
515 	case SMB_CHST_SAFE: return ("safe");
516 	case SMB_CHST_WARNING: return ("warning");
517 	case SMB_CHST_CRITICAL: return ("critical");
518 	case SMB_CHST_NONREC: return ("non-recoverable");
519 	}
520 	return (NULL);
521 }
522 
523 const char *
524 smbios_chassis_type_desc(uint_t x)
525 {
526 	switch (x) {
527 	case SMB_CHT_OTHER: return ("other");
528 	case SMB_CHT_UNKNOWN: return ("unknown");
529 	case SMB_CHT_DESKTOP: return ("desktop");
530 	case SMB_CHT_LPDESKTOP: return ("low-profile desktop");
531 	case SMB_CHT_PIZZA: return ("pizza box");
532 	case SMB_CHT_MINITOWER: return ("mini-tower");
533 	case SMB_CHT_TOWER: return ("tower");
534 	case SMB_CHT_PORTABLE: return ("portable");
535 	case SMB_CHT_LAPTOP: return ("laptop");
536 	case SMB_CHT_NOTEBOOK: return ("notebook");
537 	case SMB_CHT_HANDHELD: return ("hand-held");
538 	case SMB_CHT_DOCK: return ("docking station");
539 	case SMB_CHT_ALLIN1: return ("all-in-one");
540 	case SMB_CHT_SUBNOTE: return ("sub-notebook");
541 	case SMB_CHT_SPACESAVE: return ("space-saving");
542 	case SMB_CHT_LUNCHBOX: return ("lunchbox");
543 	case SMB_CHT_MAIN: return ("main server chassis");
544 	case SMB_CHT_EXPANSION: return ("expansion chassis");
545 	case SMB_CHT_SUB: return ("sub-chassis");
546 	case SMB_CHT_BUS: return ("bus expansion chassis");
547 	case SMB_CHT_PERIPHERAL: return ("peripheral chassis");
548 	case SMB_CHT_RAID: return ("raid chassis");
549 	case SMB_CHT_RACK: return ("rack mount chassis");
550 	case SMB_CHT_SEALED: return ("sealed case pc");
551 	case SMB_CHT_MULTI: return ("multi-system chassis");
552 	case SMB_CHT_CPCI: return ("compact PCI");
553 	case SMB_CHT_ATCA: return ("advanced TCA");
554 	case SMB_CHT_BLADE: return ("blade");
555 	case SMB_CHT_BLADEENC: return ("blade enclosure");
556 	case SMB_CHT_TABLET: return ("tablet");
557 	case SMB_CHT_CONVERTIBLE: return ("convertible");
558 	case SMB_CHT_DETACHABLE: return ("detachable");
559 	case SMB_CHT_IOTGW: return ("IoT Gateway");
560 	case SMB_CHT_EMBEDPC: return ("Embedded PC");
561 	case SMB_CHT_MINIPC: return ("Mini PC");
562 	case SMB_CHT_STICKPC: return ("Stick PC");
563 	}
564 	return (NULL);
565 }
566 
567 const char *
568 smbios_cooldev_status_desc(uint_t x)
569 {
570 	switch (x) {
571 	case SMB_COOLDEV_S_OTHER: return ("other");
572 	case SMB_COOLDEV_S_UNKNOWN: return ("unknown");
573 	case SMB_COOLDEV_S_OK: return ("OK");
574 	case SMB_COOLDEV_S_NONCRIT: return ("non-critical");
575 	case SMB_COOLDEV_S_CRIT: return ("critical");
576 	case SMB_COOLDEV_S_NONRECOV: return ("non-recoverable");
577 	}
578 	return (NULL);
579 }
580 
581 const char *
582 smbios_cooldev_type_desc(uint_t x)
583 {
584 	switch (x) {
585 	case SMB_COOLDEV_T_OTHER: return ("other");
586 	case SMB_COOLDEV_T_UNKNOWN: return ("unknown");
587 	case SMB_COOLDEV_T_FAN: return ("fan");
588 	case SMB_COOLDEV_T_BLOWER: return ("centrifugal blower");
589 	case SMB_COOLDEV_T_CHIPFAN: return ("chip fan");
590 	case SMB_COOLDEV_T_CABFAN: return ("cabinet fan");
591 	case SMB_COOLDEV_T_PSFAN: return ("power supply fan");
592 	case SMB_COOLDEV_T_HEATPIPE: return ("head pipe");
593 	case SMB_COOLDEV_T_IREFRIG: return ("integrated refrigeration");
594 	case SMB_COOLDEV_T_ACTCOOL: return ("active cooling");
595 	case SMB_COOLDEV_T_PASSCOOL: return ("passive cooling");
596 	}
597 	return (NULL);
598 }
599 
600 const char *
601 smbios_evlog_flag_desc(uint_t x)
602 {
603 	switch (x) {
604 	case SMB_EVFL_VALID: return ("log area valid");
605 	case SMB_EVFL_FULL: return ("log area full");
606 	}
607 	return (NULL);
608 }
609 
610 const char *
611 smbios_evlog_format_desc(uint_t x)
612 {
613 	switch (x) {
614 	case SMB_EVHF_NONE: return ("no log headers used");
615 	case SMB_EVHF_F1: return ("DMTF log header type 1");
616 	}
617 	return (NULL);
618 }
619 
620 const char *
621 smbios_evlog_method_desc(uint_t x)
622 {
623 	switch (x) {
624 	case SMB_EVM_1x1i_1x1d: return ("I/O: 1 1b idx port, 1 1b data port");
625 	case SMB_EVM_2x1i_1x1d: return ("I/O: 2 1b idx port, 1 1b data port");
626 	case SMB_EVM_1x2i_1x1d: return ("I/O: 1 2b idx port, 1 1b data port");
627 	case SMB_EVM_MEM32: return ("Memory-Mapped 32-bit Physical Addr");
628 	case SMB_EVM_GPNV: return ("GP Non-Volatile API Access");
629 	}
630 	return (NULL);
631 }
632 
633 const char *
634 smbios_hwsec_desc(uint_t x)
635 {
636 	switch (x) {
637 	case SMB_HWSEC_PS_DISABLED: return ("password disabled");
638 	case SMB_HWSEC_PS_ENABLED: return ("password enabled");
639 	case SMB_HWSEC_PS_NOTIMPL: return ("password not implemented");
640 	case SMB_HWSEC_PS_UNKNOWN: return ("password status unknown");
641 	}
642 	return (NULL);
643 }
644 
645 const char *
646 smbios_ipmi_flag_desc(uint_t x)
647 {
648 	switch (x) {
649 	case SMB_IPMI_F_IOADDR: return ("base address is in i/o space");
650 	case SMB_IPMI_F_INTRSPEC: return ("intr information is specified");
651 	case SMB_IPMI_F_INTRHIGH: return ("intr active high (else low)");
652 	case SMB_IPMI_F_INTREDGE: return ("intr is edge triggered (else lvl)");
653 	}
654 	return (NULL);
655 }
656 
657 const char *
658 smbios_ipmi_type_desc(uint_t x)
659 {
660 	switch (x) {
661 	case SMB_IPMI_T_UNKNOWN: return ("unknown");
662 	case SMB_IPMI_T_KCS: return ("KCS: Keyboard Controller Style");
663 	case SMB_IPMI_T_SMIC: return ("SMIC: Server Mgmt Interface Chip");
664 	case SMB_IPMI_T_BT: return ("BT: Block Transfer");
665 	case SMB_IPMI_T_SSIF: return ("SSIF: SMBus System Interface");
666 	}
667 	return (NULL);
668 }
669 
670 const char *
671 smbios_iprobe_loc_desc(uint_t x)
672 {
673 	switch (x) {
674 	case SMB_IPROBE_L_OTHER: return ("other");
675 	case SMB_IPROBE_L_UNKNOWN: return ("unknown");
676 	case SMB_IPROBE_L_PROC: return ("processor");
677 	case SMB_IPROBE_L_DISK: return ("disk");
678 	case SMB_IPROBE_L_PBAY: return ("peripheral bay");
679 	case SMB_IPROBE_L_MGMT: return ("system management module");
680 	case SMB_IPROBE_L_MOBO: return ("motherboard");
681 	case SMB_IPROBE_L_MEMMOD: return ("memory module");
682 	case SMB_IPROBE_L_PROCMOD: return ("processor module");
683 	case SMB_IPROBE_L_POWER: return ("power unit");
684 	case SMB_IPROBE_L_AIC: return ("add-in card");
685 	}
686 	return (NULL);
687 }
688 
689 const char *
690 smbios_iprobe_status_desc(uint_t x)
691 {
692 	switch (x) {
693 	case SMB_IPROBE_S_OTHER: return ("other");
694 	case SMB_IPROBE_S_UNKNOWN: return ("unknown");
695 	case SMB_IPROBE_S_OK: return ("OK");
696 	case SMB_IPROBE_S_NONCRIT: return ("non-critical");
697 	case SMB_IPROBE_S_CRIT: return ("critical");
698 	case SMB_IPROBE_S_NONRECOV: return ("non-recoverable");
699 	}
700 	return (NULL);
701 }
702 
703 const char *
704 smbios_powersup_flag_desc(uint_t x)
705 {
706 	switch (x) {
707 	case SMB_POWERSUP_F_HOT: return ("PSU is hot-replaceable");
708 	case SMB_POWERSUP_F_PRESENT: return ("PSU is present");
709 	case SMB_POWERSUP_F_UNPLUG: return ("PSU is unplugged from outlet");
710 	}
711 	return (NULL);
712 }
713 
714 const char *
715 smbios_powersup_input_desc(uint_t x)
716 {
717 	switch (x) {
718 	case SMB_POWERSUP_I_OTHER: return ("other");
719 	case SMB_POWERSUP_I_UNKNOWN: return ("unknown");
720 	case SMB_POWERSUP_I_MANUAL: return ("manual");
721 	case SMB_POWERSUP_I_AUTO: return ("auto-switch");
722 	case SMB_POWERSUP_I_WIDE: return ("wide range");
723 	case SMB_POWERSUP_I_NA: return ("not applicable");
724 	}
725 	return (NULL);
726 }
727 
728 const char *
729 smbios_powersup_status_desc(uint_t x)
730 {
731 	switch (x) {
732 	case SMB_POWERSUP_S_OTHER: return ("other");
733 	case SMB_POWERSUP_S_UNKNOWN: return ("unknown");
734 	case SMB_POWERSUP_S_OK: return ("OK");
735 	case SMB_POWERSUP_S_NONCRIT: return ("non-critical");
736 	case SMB_POWERSUP_S_CRIT: return ("critical; PSU failed");
737 	}
738 	return (NULL);
739 }
740 
741 const char *
742 smbios_powersup_type_desc(uint_t x)
743 {
744 	switch (x) {
745 	case SMB_POWERSUP_T_OTHER: return ("other");
746 	case SMB_POWERSUP_T_UNKNOWN: return ("unknown");
747 	case SMB_POWERSUP_T_LINEAR: return ("linear");
748 	case SMB_POWERSUP_T_SWITCH: return ("switching");
749 	case SMB_POWERSUP_T_BAT: return ("battery");
750 	case SMB_POWERSUP_T_UPS: return ("UPS");
751 	case SMB_POWERSUP_T_CONV: return ("converter");
752 	case SMB_POWERSUP_T_REGL: return ("regulator");
753 	}
754 	return (NULL);
755 }
756 
757 const char *
758 smbios_memarray_loc_desc(uint_t x)
759 {
760 	switch (x) {
761 	case SMB_MAL_OTHER: return ("other");
762 	case SMB_MAL_UNKNOWN: return ("unknown");
763 	case SMB_MAL_SYSMB: return ("system board or motherboard");
764 	case SMB_MAL_ISA: return ("ISA add-on card");
765 	case SMB_MAL_EISA: return ("EISA add-on card");
766 	case SMB_MAL_PCI: return ("PCI add-on card");
767 	case SMB_MAL_MCA: return ("MCA add-on card");
768 	case SMB_MAL_PCMCIA: return ("PCMCIA add-on card");
769 	case SMB_MAL_PROP: return ("proprietary add-on card");
770 	case SMB_MAL_NUBUS: return ("NuBus");
771 	case SMB_MAL_PC98C20: return ("PC-98/C20 add-on card");
772 	case SMB_MAL_PC98C24: return ("PC-98/C24 add-on card");
773 	case SMB_MAL_PC98E: return ("PC-98/E add-on card");
774 	case SMB_MAL_PC98LB: return ("PC-98/Local bus add-on card");
775 	}
776 	return (NULL);
777 }
778 
779 const char *
780 smbios_memarray_use_desc(uint_t x)
781 {
782 	switch (x) {
783 	case SMB_MAU_OTHER: return ("other");
784 	case SMB_MAU_UNKNOWN: return ("unknown");
785 	case SMB_MAU_SYSTEM: return ("system memory");
786 	case SMB_MAU_VIDEO: return ("video memory");
787 	case SMB_MAU_FLASH: return ("flash memory");
788 	case SMB_MAU_NVRAM: return ("non-volatile RAM");
789 	case SMB_MAU_CACHE: return ("cache memory");
790 	}
791 	return (NULL);
792 }
793 
794 const char *
795 smbios_memarray_ecc_desc(uint_t x)
796 {
797 	switch (x) {
798 	case SMB_MAE_OTHER: return ("other");
799 	case SMB_MAE_UNKNOWN: return ("unknown");
800 	case SMB_MAE_NONE: return ("none");
801 	case SMB_MAE_PARITY: return ("parity");
802 	case SMB_MAE_SECC: return ("single-bit ECC");
803 	case SMB_MAE_MECC: return ("multi-bit ECC");
804 	case SMB_MAE_CRC: return ("CRC");
805 	}
806 	return (NULL);
807 }
808 
809 const char *
810 smbios_memdevice_flag_desc(uint_t x)
811 {
812 	switch (x) {
813 	case SMB_MDF_OTHER: return ("other");
814 	case SMB_MDF_UNKNOWN: return ("unknown");
815 	case SMB_MDF_FASTPG: return ("fast-paged");
816 	case SMB_MDF_STATIC: return ("static column");
817 	case SMB_MDF_PSTATIC: return ("pseudo-static");
818 	case SMB_MDF_RAMBUS: return ("RAMBUS");
819 	case SMB_MDF_SYNC: return ("synchronous");
820 	case SMB_MDF_CMOS: return ("CMOS");
821 	case SMB_MDF_EDO: return ("EDO");
822 	case SMB_MDF_WDRAM: return ("Window DRAM");
823 	case SMB_MDF_CDRAM: return ("Cache DRAM");
824 	case SMB_MDF_NV: return ("non-volatile");
825 	case SMB_MDF_REG: return ("Registered (Buffered)");
826 	case SMB_MDF_UNREG: return ("Unregistered (Unbuffered)");
827 	case SMB_MDF_LRDIMM: return ("LRDIMM");
828 	}
829 	return (NULL);
830 }
831 
832 const char *
833 smbios_memdevice_form_desc(uint_t x)
834 {
835 	switch (x) {
836 	case SMB_MDFF_OTHER: return ("other");
837 	case SMB_MDFF_UNKNOWN: return ("unknown");
838 	case SMB_MDFF_SIMM: return ("SIMM");
839 	case SMB_MDFF_SIP: return ("SIP");
840 	case SMB_MDFF_CHIP: return ("chip");
841 	case SMB_MDFF_DIP: return ("DIP");
842 	case SMB_MDFF_ZIP: return ("ZIP");
843 	case SMB_MDFF_PROP: return ("proprietary card");
844 	case SMB_MDFF_DIMM: return ("DIMM");
845 	case SMB_MDFF_TSOP: return ("TSOP");
846 	case SMB_MDFF_CHIPROW: return ("row of chips");
847 	case SMB_MDFF_RIMM: return ("RIMM");
848 	case SMB_MDFF_SODIMM: return ("SODIMM");
849 	case SMB_MDFF_SRIMM: return ("SRIMM");
850 	case SMB_MDFF_FBDIMM: return ("FBDIMM");
851 	}
852 	return (NULL);
853 }
854 
855 const char *
856 smbios_memdevice_type_desc(uint_t x)
857 {
858 	switch (x) {
859 	case SMB_MDT_OTHER: return ("other");
860 	case SMB_MDT_UNKNOWN: return ("unknown");
861 	case SMB_MDT_DRAM: return ("DRAM");
862 	case SMB_MDT_EDRAM: return ("EDRAM");
863 	case SMB_MDT_VRAM: return ("VRAM");
864 	case SMB_MDT_SRAM: return ("SRAM");
865 	case SMB_MDT_RAM: return ("RAM");
866 	case SMB_MDT_ROM: return ("ROM");
867 	case SMB_MDT_FLASH: return ("FLASH");
868 	case SMB_MDT_EEPROM: return ("EEPROM");
869 	case SMB_MDT_FEPROM: return ("FEPROM");
870 	case SMB_MDT_EPROM: return ("EPROM");
871 	case SMB_MDT_CDRAM: return ("CDRAM");
872 	case SMB_MDT_3DRAM: return ("3DRAM");
873 	case SMB_MDT_SDRAM: return ("SDRAM");
874 	case SMB_MDT_SGRAM: return ("SGRAM");
875 	case SMB_MDT_RDRAM: return ("RDRAM");
876 	case SMB_MDT_DDR: return ("DDR");
877 	case SMB_MDT_DDR2: return ("DDR2");
878 	case SMB_MDT_DDR2FBDIMM: return ("DDR2 FBDIMM");
879 	case SMB_MDT_DDR3: return ("DDR3");
880 	case SMB_MDT_FBD2: return ("FBD2");
881 	case SMB_MDT_DDR4: return ("DDR4");
882 	case SMB_MDT_LPDDR: return ("LPDDR");
883 	case SMB_MDT_LPDDR2: return ("LPDDR2");
884 	case SMB_MDT_LPDDR3: return ("LPDDR3");
885 	case SMB_MDT_LPDDR4: return ("LPDDR4");
886 	case SMB_MDT_LOGNV: return ("Logical non-volatile device");
887 	}
888 	return (NULL);
889 }
890 
891 const char *
892 smbios_memdevice_rank_desc(uint_t x)
893 {
894 	switch (x) {
895 	case SMB_MDR_SINGLE: return ("single");
896 	case SMB_MDR_DUAL: return ("dual");
897 	case SMB_MDR_QUAD: return ("quad");
898 	case SMB_MDR_OCTAL: return ("octal");
899 	}
900 	return (NULL);
901 }
902 
903 const char *
904 smbios_memdevice_memtech_desc(uint_t x)
905 {
906 	switch (x) {
907 	case SMB_MTECH_OTHER: return ("other");
908 	case SMB_MTECH_UNKNOWN: return ("unknown");
909 	case SMB_MTECH_DRAM: return ("DRAM");
910 	case SMB_MTECH_NVDIMM_N: return ("NVDIMM-N");
911 	case SMB_MTECH_NVDIMM_F: return ("NVDIMM-F");
912 	case SMB_MTECH_NVDIMM_P: return ("NVDIMM-P");
913 	case SMB_MTECH_INTCPM: return ("Intel persistent memory");
914 	}
915 	return (NULL);
916 }
917 
918 const char *
919 smbios_memdevice_op_capab_desc(uint_t x)
920 {
921 	switch (x) {
922 	case SMB_MOMC_OTHER: return ("other");
923 	case SMB_MOMC_UNKNOWN: return ("unknown");
924 	case SMB_MOMC_VOLATILE: return ("Volatile memory");
925 	case SMB_MOMC_BYTE_PM: return ("Byte-accessible persistent memory");
926 	case SMB_MOMC_BLOCK_PM: return ("Block-accessible persistent memory");
927 	}
928 	return (NULL);
929 }
930 
931 const char *
932 smbios_onboard_type_desc(uint_t x)
933 {
934 	switch (x) {
935 	case SMB_OBT_OTHER: return ("other");
936 	case SMB_OBT_UNKNOWN: return ("unknown");
937 	case SMB_OBT_VIDEO: return ("video");
938 	case SMB_OBT_SCSI: return ("scsi");
939 	case SMB_OBT_ETHERNET: return ("ethernet");
940 	case SMB_OBT_TOKEN: return ("token ring");
941 	case SMB_OBT_SOUND: return ("sound");
942 	case SMB_OBT_PATA: return ("pata");
943 	case SMB_OBT_SATA: return ("sata");
944 	case SMB_OBT_SAS: return ("sas");
945 	}
946 	return (NULL);
947 }
948 
949 const char *
950 smbios_port_conn_desc(uint_t x)
951 {
952 	switch (x) {
953 	case SMB_POC_NONE: return ("none");
954 	case SMB_POC_CENT: return ("Centronics");
955 	case SMB_POC_MINICENT: return ("Mini-Centronics");
956 	case SMB_POC_PROPRIETARY: return ("proprietary");
957 	case SMB_POC_DB25M: return ("DB-25 pin male");
958 	case SMB_POC_DB25F: return ("DB-25 pin female");
959 	case SMB_POC_DB15M: return ("DB-15 pin male");
960 	case SMB_POC_DB15F: return ("DB-15 pin female");
961 	case SMB_POC_DB9M: return ("DB-9 pin male");
962 	case SMB_POC_DB9F: return ("DB-9 pin female");
963 	case SMB_POC_RJ11: return ("RJ-11");
964 	case SMB_POC_RJ45: return ("RJ-45");
965 	case SMB_POC_MINISCSI: return ("50-pin MiniSCSI");
966 	case SMB_POC_MINIDIN: return ("Mini-DIN");
967 	case SMB_POC_MICRODIN: return ("Micro-DIN");
968 	case SMB_POC_PS2: return ("PS/2");
969 	case SMB_POC_IR: return ("Infrared");
970 	case SMB_POC_HPHIL: return ("HP-HIL");
971 	case SMB_POC_USB: return ("USB");
972 	case SMB_POC_SSA: return ("SSA SCSI");
973 	case SMB_POC_DIN8M: return ("Circular DIN-8 male");
974 	case SMB_POC_DIN8F: return ("Circular DIN-8 female");
975 	case SMB_POC_OBIDE: return ("on-board IDE");
976 	case SMB_POC_OBFLOPPY: return ("on-board floppy");
977 	case SMB_POC_DI9: return ("9p dual inline (p10 cut)");
978 	case SMB_POC_DI25: return ("25p dual inline (p26 cut)");
979 	case SMB_POC_DI50: return ("50p dual inline");
980 	case SMB_POC_DI68: return ("68p dual inline");
981 	case SMB_POC_CDROM: return ("on-board sound from CDROM");
982 	case SMB_POC_MINI14: return ("Mini-Centronics Type 14");
983 	case SMB_POC_MINI26: return ("Mini-Centronics Type 26");
984 	case SMB_POC_MINIJACK: return ("Mini-jack (headphones)");
985 	case SMB_POC_BNC: return ("BNC");
986 	case SMB_POC_1394: return ("1394");
987 	case SMB_POC_SATA: return ("SAS/SATA plug receptacle");
988 	case SMB_POC_USB_C: return ("USB Type-C receptacle");
989 	case SMB_POC_PC98: return ("PC-98");
990 	case SMB_POC_PC98HR: return ("PC-98Hireso");
991 	case SMB_POC_PCH98: return ("PC-H98");
992 	case SMB_POC_PC98NOTE: return ("PC-98Note");
993 	case SMB_POC_PC98FULL: return ("PC-98Full");
994 	case SMB_POC_OTHER: return ("other");
995 	}
996 	return (NULL);
997 }
998 
999 const char *
1000 smbios_port_type_desc(uint_t x)
1001 {
1002 	switch (x) {
1003 	case SMB_POT_NONE: return ("none");
1004 	case SMB_POT_PP_XTAT: return ("Parallel Port XT/AT compat");
1005 	case SMB_POT_PP_PS2: return ("Parallel Port PS/2");
1006 	case SMB_POT_PP_ECP: return ("Parallel Port ECP");
1007 	case SMB_POT_PP_EPP: return ("Parallel Port EPP");
1008 	case SMB_POT_PP_ECPEPP: return ("Parallel Port ECP/EPP");
1009 	case SMB_POT_SP_XTAT: return ("Serial Port XT/AT compat");
1010 	case SMB_POT_SP_16450: return ("Serial Port 16450 compat");
1011 	case SMB_POT_SP_16550: return ("Serial Port 16550 compat");
1012 	case SMB_POT_SP_16550A: return ("Serial Port 16550A compat");
1013 	case SMB_POT_SCSI: return ("SCSI port");
1014 	case SMB_POT_MIDI: return ("MIDI port");
1015 	case SMB_POT_JOYSTICK: return ("Joystick port");
1016 	case SMB_POT_KEYBOARD: return ("Keyboard port");
1017 	case SMB_POT_MOUSE: return ("Mouse port");
1018 	case SMB_POT_SSA: return ("SSA SCSI");
1019 	case SMB_POT_USB: return ("USB");
1020 	case SMB_POT_FIREWIRE: return ("FireWrite (IEEE P1394)");
1021 	case SMB_POT_PCMII: return ("PCMCIA Type II");
1022 	case SMB_POT_PCMIIa: return ("PCMCIA Type II (alternate)");
1023 	case SMB_POT_PCMIII: return ("PCMCIA Type III");
1024 	case SMB_POT_CARDBUS: return ("Cardbus");
1025 	case SMB_POT_ACCESS: return ("Access Bus Port");
1026 	case SMB_POT_SCSI2: return ("SCSI II");
1027 	case SMB_POT_SCSIW: return ("SCSI Wide");
1028 	case SMB_POT_PC98: return ("PC-98");
1029 	case SMB_POT_PC98HR: return ("PC-98Hireso");
1030 	case SMB_POT_PCH98: return ("PC-H98");
1031 	case SMB_POT_VIDEO: return ("Video port");
1032 	case SMB_POT_AUDIO: return ("Audio port");
1033 	case SMB_POT_MODEM: return ("Modem port");
1034 	case SMB_POT_NETWORK: return ("Network port");
1035 	case SMB_POT_SATA: return ("SATA");
1036 	case SMB_POT_SAS: return ("SAS");
1037 	case SMB_POT_MFDP: return ("MFDP (Multi-Function Display Port)");
1038 	case SMB_POT_THUNDERBOLT: return ("Thunderbolt");
1039 	case SMB_POT_8251: return ("8251 compatible");
1040 	case SMB_POT_8251F: return ("8251 FIFO compatible");
1041 	case SMB_POT_OTHER: return ("other");
1042 	}
1043 	return (NULL);
1044 }
1045 
1046 const char *
1047 smbios_processor_core_flag_desc(uint_t x)
1048 {
1049 	switch (x) {
1050 	case SMB_PRC_RESERVED: return ("reserved");
1051 	case SMB_PRC_UNKNOWN: return ("unknown");
1052 	case SMB_PRC_64BIT: return ("64-bit capable");
1053 	case SMB_PRC_MC: return ("multi-core");
1054 	case SMB_PRC_HT: return ("hardware thread");
1055 	case SMB_PRC_NX: return ("execution protection");
1056 	case SMB_PRC_VT: return ("enhanced virtualization");
1057 	case SMB_PRC_PM: return ("power/performance control");
1058 	}
1059 	return (NULL);
1060 }
1061 
1062 const char *
1063 smbios_processor_family_desc(uint_t x)
1064 {
1065 	switch (x) {
1066 	case SMB_PRF_OTHER: return ("other");
1067 	case SMB_PRF_UNKNOWN: return ("unknown");
1068 	case SMB_PRF_8086: return ("8086");
1069 	case SMB_PRF_80286: return ("80286");
1070 	case SMB_PRF_I386: return ("Intel 386");
1071 	case SMB_PRF_I486: return ("Intel 486");
1072 	case SMB_PRF_8087: return ("8087");
1073 	case SMB_PRF_80287: return ("80287");
1074 	case SMB_PRF_80387: return ("80387");
1075 	case SMB_PRF_80487: return ("80487");
1076 	case SMB_PRF_PENTIUM: return ("Pentium Family");
1077 	case SMB_PRF_PENTIUMPRO: return ("Pentium Pro");
1078 	case SMB_PRF_PENTIUMII: return ("Pentium II");
1079 	case SMB_PRF_PENTIUM_MMX: return ("Pentium w/ MMX");
1080 	case SMB_PRF_CELERON: return ("Celeron");
1081 	case SMB_PRF_PENTIUMII_XEON: return ("Pentium II Xeon");
1082 	case SMB_PRF_PENTIUMIII: return ("Pentium III");
1083 	case SMB_PRF_M1: return ("M1");
1084 	case SMB_PRF_M2: return ("M2");
1085 	case SMB_PRF_CELERON_M: return ("Celeron M");
1086 	case SMB_PRF_PENTIUMIV_HT: return ("Pentium 4 HT");
1087 	case SMB_PRF_DURON: return ("AMD Duron");
1088 	case SMB_PRF_K5: return ("K5");
1089 	case SMB_PRF_K6: return ("K6");
1090 	case SMB_PRF_K6_2: return ("K6-2");
1091 	case SMB_PRF_K6_3: return ("K6-3");
1092 	case SMB_PRF_ATHLON: return ("Athlon");
1093 	case SMB_PRF_2900: return ("AMD 2900");
1094 	case SMB_PRF_K6_2PLUS: return ("K6-2+");
1095 	case SMB_PRF_PPC: return ("PowerPC");
1096 	case SMB_PRF_PPC_601: return ("PowerPC 601");
1097 	case SMB_PRF_PPC_603: return ("PowerPC 603");
1098 	case SMB_PRF_PPC_603PLUS: return ("PowerPC 603+");
1099 	case SMB_PRF_PPC_604: return ("PowerPC 604");
1100 	case SMB_PRF_PPC_620: return ("PowerPC 620");
1101 	case SMB_PRF_PPC_704: return ("PowerPC x704");
1102 	case SMB_PRF_PPC_750: return ("PowerPC 750");
1103 	case SMB_PRF_CORE_DUO: return ("Core Duo");
1104 	case SMB_PRF_CORE_DUO_M: return ("Core Duo mobile");
1105 	case SMB_PRF_CORE_SOLO_M: return ("Core Solo mobile");
1106 	case SMB_PRF_ATOM: return ("Intel Atom");
1107 	case SMB_PRF_CORE_M: return ("Intel Core M");
1108 	case SMB_PRF_CORE_M3: return ("Intel Core m3");
1109 	case SMB_PRF_CORE_M5: return ("Intel Core m5");
1110 	case SMB_PRF_CORE_M7: return ("Intel Core m7");
1111 	case SMB_PRF_ALPHA: return ("Alpha");
1112 	case SMB_PRF_ALPHA_21064: return ("Alpha 21064");
1113 	case SMB_PRF_ALPHA_21066: return ("Alpha 21066");
1114 	case SMB_PRF_ALPHA_21164: return ("Alpha 21164");
1115 	case SMB_PRF_ALPHA_21164PC: return ("Alpha 21164PC");
1116 	case SMB_PRF_ALPHA_21164A: return ("Alpha 21164a");
1117 	case SMB_PRF_ALPHA_21264: return ("Alpha 21264");
1118 	case SMB_PRF_ALPHA_21364: return ("Alpha 21364");
1119 	case SMB_PRF_TURION2_2C_MM: return ("AMD Turion II Dual-Core Mobile M");
1120 	case SMB_PRF_ATHLON2_2C_M: return ("AMD Athlon II Dual-Core M");
1121 	case SMB_PRF_OPTERON_6100: return ("AMD Opteron 6100 series");
1122 	case SMB_PRF_OPTERON_4100: return ("AMD Opteron 4100 series");
1123 	case SMB_PRF_OPTERON_6200: return ("AMD Opteron 6200 series");
1124 	case SMB_PRF_OPTERON_4200: return ("AMD Opteron 4200 series");
1125 	case SMB_PRF_AMD_FX: return ("AMD FX series");
1126 	case SMB_PRF_MIPS: return ("MIPS");
1127 	case SMB_PRF_MIPS_R4000: return ("MIPS R4000");
1128 	case SMB_PRF_MIPS_R4200: return ("MIPS R4200");
1129 	case SMB_PRF_MIPS_R4400: return ("MIPS R4400");
1130 	case SMB_PRF_MIPS_R4600: return ("MIPS R4600");
1131 	case SMB_PRF_MIPS_R10000: return ("MIPS R10000");
1132 	case SMB_PRF_AMD_C: return ("AMD C-series");
1133 	case SMB_PRF_AMD_E: return ("AMD E-series");
1134 	case SMB_PRF_AMD_A: return ("AMD A-series");
1135 	case SMB_PRF_AMD_G: return ("AMD G-series");
1136 	case SMB_PRF_AMD_Z: return ("AMD Z-series");
1137 	case SMB_PRF_AMD_R: return ("AMD R-series");
1138 	case SMB_PRF_OPTERON_4300: return ("AMD Opteron 4300 series");
1139 	case SMB_PRF_OPTERON_6300: return ("AMD Opteron 6300 series");
1140 	case SMB_PRF_OPTERON_3300: return ("AMD Opteron 3300 series");
1141 	case SMB_PRF_AMD_FIREPRO: return ("AMD FirePro series");
1142 	case SMB_PRF_SPARC: return ("SPARC");
1143 	case SMB_PRF_SUPERSPARC: return ("SuperSPARC");
1144 	case SMB_PRF_MICROSPARCII: return ("microSPARC II");
1145 	case SMB_PRF_MICROSPARCIIep: return ("microSPARC IIep");
1146 	case SMB_PRF_ULTRASPARC: return ("UltraSPARC");
1147 	case SMB_PRF_USII: return ("UltraSPARC II");
1148 	case SMB_PRF_USIIi: return ("UltraSPARC IIi");
1149 	case SMB_PRF_USIII: return ("UltraSPARC III");
1150 	case SMB_PRF_USIIIi: return ("UltraSPARC IIIi");
1151 	case SMB_PRF_68040: return ("68040");
1152 	case SMB_PRF_68XXX: return ("68XXX");
1153 	case SMB_PRF_68000: return ("68000");
1154 	case SMB_PRF_68010: return ("68010");
1155 	case SMB_PRF_68020: return ("68020");
1156 	case SMB_PRF_68030: return ("68030");
1157 	case SMB_PRF_ATHLON_X4: return ("AMD Athlon X4 Quad-Core");
1158 	case SMB_PRF_OPTERON_X1K: return ("AMD Opteron X1000");
1159 	case SMB_PRF_OPTERON_X2K: return ("AMD Opteron X2000 APU");
1160 	case SMB_PRF_OPTERON_A: return ("AMD Opteron A Series");
1161 	case SMB_PRF_OPTERON_X3K: return ("AMD Opteron X3000 APU");
1162 	case SMB_PRF_ZEN: return ("AMD Zen Processor Family");
1163 	case SMB_PRF_HOBBIT: return ("Hobbit");
1164 	case SMB_PRF_TM5000: return ("Crusoe TM5000");
1165 	case SMB_PRF_TM3000: return ("Crusoe TM3000");
1166 	case SMB_PRF_TM8000: return ("Efficeon TM8000");
1167 	case SMB_PRF_WEITEK: return ("Weitek");
1168 	case SMB_PRF_ITANIC: return ("Itanium");
1169 	case SMB_PRF_ATHLON64: return ("Athlon64");
1170 	case SMB_PRF_OPTERON: return ("Opteron");
1171 	case SMB_PRF_SEMPRON: return ("Sempron");
1172 	case SMB_PRF_TURION64_M: return ("Turion 64 Mobile");
1173 	case SMB_PRF_OPTERON_2C: return ("AMD Opteron Dual-Core");
1174 	case SMB_PRF_ATHLON64_X2_2C: return ("AMD Athlon 64 X2 Dual-Core");
1175 	case SMB_PRF_TURION64_X2_M: return ("AMD Turion 64 X2 Mobile");
1176 	case SMB_PRF_OPTERON_4C: return ("AMD Opteron Quad-Core");
1177 	case SMB_PRF_OPTERON_3G: return ("AMD Opteron 3rd Generation");
1178 	case SMB_PRF_PHENOM_FX_4C: return ("AMD Phenom FX Quad-Core");
1179 	case SMB_PRF_PHENOM_X4_4C: return ("AMD Phenom X4 Quad-Core");
1180 	case SMB_PRF_PHENOM_X2_2C: return ("AMD Phenom X2 Dual-Core");
1181 	case SMB_PRF_ATHLON_X2_2C: return ("AMD Athlon X2 Dual-Core");
1182 	case SMB_PRF_PA: return ("PA-RISC");
1183 	case SMB_PRF_PA8500: return ("PA-RISC 8500");
1184 	case SMB_PRF_PA8000: return ("PA-RISC 8000");
1185 	case SMB_PRF_PA7300LC: return ("PA-RISC 7300LC");
1186 	case SMB_PRF_PA7200: return ("PA-RISC 7200");
1187 	case SMB_PRF_PA7100LC: return ("PA-RISC 7100LC");
1188 	case SMB_PRF_PA7100: return ("PA-RISC 7100");
1189 	case SMB_PRF_V30: return ("V30");
1190 	case SMB_PRF_XEON_4C_3200: return ("Xeon Quad Core 3200");
1191 	case SMB_PRF_XEON_2C_3000: return ("Xeon Dual Core 3000");
1192 	case SMB_PRF_XEON_4C_5300: return ("Xeon Quad Core 5300");
1193 	case SMB_PRF_XEON_2C_5100: return ("Xeon Dual Core 5100");
1194 	case SMB_PRF_XEON_2C_5000: return ("Xeon Dual Core 5000");
1195 	case SMB_PRF_XEON_2C_LV: return ("Xeon Dual Core LV");
1196 	case SMB_PRF_XEON_2C_ULV: return ("Xeon Dual Core ULV");
1197 	case SMB_PRF_XEON_2C_7100: return ("Xeon Dual Core 7100");
1198 	case SMB_PRF_XEON_4C_5400: return ("Xeon Quad Core 5400");
1199 	case SMB_PRF_XEON_4C: return ("Xeon Quad Core");
1200 	case SMB_PRF_XEON_2C_5200: return ("Xeon Dual Core 5200");
1201 	case SMB_PRF_XEON_2C_7200: return ("Xeon Dual Core 7200");
1202 	case SMB_PRF_XEON_4C_7300: return ("Xeon Quad Core 7300");
1203 	case SMB_PRF_XEON_4C_7400: return ("Xeon Quad Core 7400");
1204 	case SMB_PRF_XEON_XC_7400: return ("Xeon Multi Core 7400");
1205 	case SMB_PRF_PENTIUMIII_XEON: return ("Pentium III Xeon");
1206 	case SMB_PRF_PENTIUMIII_SS: return ("Pentium III with SpeedStep");
1207 	case SMB_PRF_P4: return ("Pentium 4");
1208 	case SMB_PRF_XEON: return ("Intel Xeon");
1209 	case SMB_PRF_AS400: return ("AS400");
1210 	case SMB_PRF_XEON_MP: return ("Intel Xeon MP");
1211 	case SMB_PRF_ATHLON_XP: return ("AMD Athlon XP");
1212 	case SMB_PRF_ATHLON_MP: return ("AMD Athlon MP");
1213 	case SMB_PRF_ITANIC2: return ("Itanium 2");
1214 	case SMB_PRF_PENTIUM_M: return ("Pentium M");
1215 	case SMB_PRF_CELERON_D: return ("Celeron D");
1216 	case SMB_PRF_PENTIUM_D: return ("Pentium D");
1217 	case SMB_PRF_PENTIUM_EE: return ("Pentium Extreme Edition");
1218 	case SMB_PRF_CORE_SOLO: return ("Intel Core Solo");
1219 	case SMB_PRF_CORE2_DUO: return ("Intel Core 2 Duo");
1220 	case SMB_PRF_CORE2_SOLO: return ("Intel Core 2 Solo");
1221 	case SMB_PRF_CORE2_EX: return ("Intel Core 2 Extreme");
1222 	case SMB_PRF_CORE2_QUAD: return ("Intel Core 2 Quad");
1223 	case SMB_PRF_CORE2_EX_M: return ("Intel Core 2 Extreme mobile");
1224 	case SMB_PRF_CORE2_DUO_M: return ("Intel Core 2 Duo mobile");
1225 	case SMB_PRF_CORE2_SOLO_M: return ("Intel Core 2 Solo mobile");
1226 	case SMB_PRF_CORE_I7: return ("Intel Core i7");
1227 	case SMB_PRF_CELERON_2C: return ("Celeron Dual-Core");
1228 	case SMB_PRF_IBM390: return ("IBM 390");
1229 	case SMB_PRF_G4: return ("G4");
1230 	case SMB_PRF_G5: return ("G5");
1231 	case SMB_PRF_ESA390: return ("ESA390");
1232 	case SMB_PRF_ZARCH: return ("z/Architecture");
1233 	case SMB_PRF_CORE_I5: return ("Intel Core i5");
1234 	case SMB_PRF_CORE_I3: return ("Intel Core i3");
1235 	case SMB_PRF_CORE_I9: return ("Intel Core i9");
1236 	case SMB_PRF_C7M: return ("VIA C7-M");
1237 	case SMB_PRF_C7D: return ("VIA C7-D");
1238 	case SMB_PRF_C7: return ("VIA C7");
1239 	case SMB_PRF_EDEN: return ("VIA Eden");
1240 	case SMB_PRF_XEON_XC: return ("Intel Xeon Multi-Core");
1241 	case SMB_PRF_XEON_2C_3XXX: return ("Intel Xeon Dual-Core 3xxx");
1242 	case SMB_PRF_XEON_4C_3XXX: return ("Intel Xeon Quad-Core 3xxx");
1243 	case SMB_PRF_VIA_NANO: return ("VIA Nano");
1244 	case SMB_PRF_XEON_2C_5XXX: return ("Intel Xeon Dual-Core 5xxx");
1245 	case SMB_PRF_XEON_4C_5XXX: return ("Intel Xeon Quad-Core 5xxx");
1246 	case SMB_PRF_XEON_2C_7XXX: return ("Intel Xeon Dual-Core 7xxx");
1247 	case SMB_PRF_XEON_4C_7XXX: return ("Intel Xeon Quad-Core 7xxx");
1248 	case SMB_PRF_XEON_XC_7XXX: return ("Intel Xeon Multi-Core 7xxx");
1249 	case SMB_PRF_XEON_XC_3400: return ("Intel Xeon Multi-Core 3400");
1250 	case SMB_PRF_OPTERON_3000: return ("AMD Opteron 3000");
1251 	case SMB_PRF_SEMPRON_II: return ("AMD Sempron II");
1252 	case SMB_PRF_OPTERON_4C_EM: return ("AMD Opteron Quad-Core embedded");
1253 	case SMB_PRF_PHENOM_3C: return ("AMD Phenom Triple-Core");
1254 	case SMB_PRF_TURIONU_2C_M: return ("AMD Turion Ultra Dual-Core mobile");
1255 	case SMB_PRF_TURION_2C_M: return ("AMD Turion Dual-Core mobile");
1256 	case SMB_PRF_ATHLON_2C: return ("AMD Athlon Dual-Core");
1257 	case SMB_PRF_SEMPRON_SI: return ("AMD Sempron SI");
1258 	case SMB_PRF_PHENOM_II: return ("AMD Phenom II");
1259 	case SMB_PRF_ATHLON_II: return ("AMD Athlon II");
1260 	case SMB_PRF_OPTERON_6C: return ("AMD Opteron Six-Core");
1261 	case SMB_PRF_SEMPRON_M: return ("AMD Sempron M");
1262 	case SMB_PRF_I860: return ("i860");
1263 	case SMB_PRF_I960: return ("i960");
1264 	case SMB_PRF_ARMv7: return ("ARMv7");
1265 	case SMB_PRF_ARMv8: return ("ARMv8");
1266 	case SMB_PRF_SH3: return ("SH-3");
1267 	case SMB_PRF_SH4: return ("SH-4");
1268 	case SMB_PRF_ARM: return ("ARM");
1269 	case SMB_PRF_SARM: return ("StrongARM");
1270 	case SMB_PRF_6X86: return ("6x86");
1271 	case SMB_PRF_MEDIAGX: return ("MediaGX");
1272 	case SMB_PRF_MII: return ("MII");
1273 	case SMB_PRF_WINCHIP: return ("WinChip");
1274 	case SMB_PRF_DSP: return ("DSP");
1275 	case SMB_PRF_VIDEO: return ("Video Processor");
1276 	}
1277 	return (NULL);
1278 }
1279 
1280 const char *
1281 smbios_processor_status_desc(uint_t x)
1282 {
1283 	switch (x) {
1284 	case SMB_PRS_UNKNOWN: return ("unknown");
1285 	case SMB_PRS_ENABLED: return ("enabled");
1286 	case SMB_PRS_BDISABLED: return ("disabled in bios user setup");
1287 	case SMB_PRS_PDISABLED: return ("disabled in bios from post error");
1288 	case SMB_PRS_IDLE: return ("waiting to be enabled");
1289 	case SMB_PRS_OTHER: return ("other");
1290 	}
1291 	return (NULL);
1292 }
1293 
1294 const char *
1295 smbios_processor_type_desc(uint_t x)
1296 {
1297 	switch (x) {
1298 	case SMB_PRT_OTHER: return ("other");
1299 	case SMB_PRT_UNKNOWN: return ("unknown");
1300 	case SMB_PRT_CENTRAL: return ("central processor");
1301 	case SMB_PRT_MATH: return ("math processor");
1302 	case SMB_PRT_DSP: return ("DSP processor");
1303 	case SMB_PRT_VIDEO: return ("video processor");
1304 	}
1305 	return (NULL);
1306 }
1307 
1308 const char *
1309 smbios_processor_upgrade_desc(uint_t x)
1310 {
1311 	switch (x) {
1312 	case SMB_PRU_OTHER: return ("other");
1313 	case SMB_PRU_UNKNOWN: return ("unknown");
1314 	case SMB_PRU_DAUGHTER: return ("daughter board");
1315 	case SMB_PRU_ZIF: return ("ZIF socket");
1316 	case SMB_PRU_PIGGY: return ("replaceable piggy back");
1317 	case SMB_PRU_NONE: return ("none");
1318 	case SMB_PRU_LIF: return ("LIF socket");
1319 	case SMB_PRU_SLOT1: return ("slot 1");
1320 	case SMB_PRU_SLOT2: return ("slot 2");
1321 	case SMB_PRU_370PIN: return ("370-pin socket");
1322 	case SMB_PRU_SLOTA: return ("slot A");
1323 	case SMB_PRU_SLOTM: return ("slot M");
1324 	case SMB_PRU_423: return ("socket 423");
1325 	case SMB_PRU_A: return ("socket A (socket 462)");
1326 	case SMB_PRU_478: return ("socket 478");
1327 	case SMB_PRU_754: return ("socket 754");
1328 	case SMB_PRU_940: return ("socket 940");
1329 	case SMB_PRU_939: return ("socket 939");
1330 	case SMB_PRU_MPGA604: return ("mPGA604");
1331 	case SMB_PRU_LGA771: return ("LGA771");
1332 	case SMB_PRU_LGA775: return ("LGA775");
1333 	case SMB_PRU_S1: return ("socket S1");
1334 	case SMB_PRU_AM2: return ("socket AM2");
1335 	case SMB_PRU_F: return ("socket F");
1336 	case SMB_PRU_LGA1366: return ("LGA1366");
1337 	case SMB_PRU_G34: return ("socket G34");
1338 	case SMB_PRU_AM3: return ("socket AM3");
1339 	case SMB_PRU_C32: return ("socket C32");
1340 	case SMB_PRU_LGA1156: return ("LGA1156");
1341 	case SMB_PRU_LGA1567: return ("LGA1567");
1342 	case SMB_PRU_PGA988A: return ("PGA988A");
1343 	case SMB_PRU_BGA1288: return ("BGA1288");
1344 	case SMB_PRU_RPGA988B: return ("rPGA988B");
1345 	case SMB_PRU_BGA1023: return ("BGA1023");
1346 	case SMB_PRU_BGA1224: return ("BGA1224");
1347 	case SMB_PRU_LGA1155: return ("LGA1155");
1348 	case SMB_PRU_LGA1356: return ("LGA1356");
1349 	case SMB_PRU_LGA2011: return ("LGA2011");
1350 	case SMB_PRU_FS1: return ("socket FS1");
1351 	case SMB_PRU_FS2: return ("socket FS2");
1352 	case SMB_PRU_FM1: return ("socket FM1");
1353 	case SMB_PRU_FM2: return ("socket FM2");
1354 	case SMB_PRU_LGA20113: return ("LGA2011-3");
1355 	case SMB_PRU_LGA13563: return ("LGA1356-3");
1356 	case SMB_PRU_LGA1150: return ("LGA1150");
1357 	case SMB_PRU_BGA1168: return ("BGA1168");
1358 	case SMB_PRU_BGA1234: return ("BGA1234");
1359 	case SMB_PRU_BGA1364: return ("BGA1364");
1360 	case SMB_PRU_AM4: return ("socket AM4");
1361 	case SMB_PRU_LGA1151: return ("LGA1151");
1362 	case SMB_PRU_BGA1356: return ("BGA1356");
1363 	case SMB_PRU_BGA1440: return ("BGA1440");
1364 	case SMB_PRU_BGA1515: return ("BGA1515");
1365 	case SMB_PRU_LGA36471: return ("LGA3647-1");
1366 	case SMB_PRU_SP3: return ("socket SP3");
1367 	case SMB_PRU_SP3r2: return ("socket SP3r2");
1368 	case SMB_PRU_LGA2066: return ("Socket LGA2066");
1369 	case SMB_PRU_BGA1392: return ("Socket BGA1392");
1370 	case SMB_PRU_BGA1510: return ("Socket BGA1510");
1371 	case SMB_PRU_BGA1528: return ("Socket BGA1528");
1372 	}
1373 	return (NULL);
1374 }
1375 
1376 const char *
1377 smbios_slot_ch1_desc(uint_t x)
1378 {
1379 	switch (x) {
1380 	case SMB_SLCH1_UNKNOWN: return ("characteristics unknown");
1381 	case SMB_SLCH1_5V: return ("provides 5.0V");
1382 	case SMB_SLCH1_33V: return ("provides 3.3V");
1383 	case SMB_SLCH1_SHARED: return ("opening shared with other slot");
1384 	case SMB_SLCH1_PC16: return ("slot supports PC Card-16");
1385 	case SMB_SLCH1_PCCB: return ("slot supports CardBus");
1386 	case SMB_SLCH1_PCZV: return ("slot supports Zoom Video");
1387 	case SMB_SLCH1_PCMRR: return ("slot supports Modem Ring Resume");
1388 	}
1389 	return (NULL);
1390 }
1391 
1392 const char *
1393 smbios_slot_ch2_desc(uint_t x)
1394 {
1395 	switch (x) {
1396 	case SMB_SLCH2_PME: return ("slot supports PME# signal");
1397 	case SMB_SLCH2_HOTPLUG: return ("slot supports hot-plug devices");
1398 	case SMB_SLCH2_SMBUS: return ("slot supports SMBus signal");
1399 	case SMB_SLCH2_BIFUR: return ("slot supports PCIe bifurcation");
1400 	}
1401 	return (NULL);
1402 }
1403 
1404 const char *
1405 smbios_slot_length_desc(uint_t x)
1406 {
1407 	switch (x) {
1408 	case SMB_SLL_OTHER: return ("other");
1409 	case SMB_SLL_UNKNOWN: return ("unknown");
1410 	case SMB_SLL_SHORT: return ("short length");
1411 	case SMB_SLL_LONG: return ("long length");
1412 	}
1413 	return (NULL);
1414 }
1415 
1416 const char *
1417 smbios_slot_type_desc(uint_t x)
1418 {
1419 	switch (x) {
1420 	case SMB_SLT_OTHER: return ("other");
1421 	case SMB_SLT_UNKNOWN: return ("unknown");
1422 	case SMB_SLT_ISA: return ("ISA");
1423 	case SMB_SLT_MCA: return ("MCA");
1424 	case SMB_SLT_EISA: return ("EISA");
1425 	case SMB_SLT_PCI: return ("PCI");
1426 	case SMB_SLT_PCMCIA: return ("PCMCIA");
1427 	case SMB_SLT_VLVESA: return ("VL-VESA");
1428 	case SMB_SLT_PROPRIETARY: return ("proprietary");
1429 	case SMB_SLT_PROC: return ("processor card slot");
1430 	case SMB_SLT_MEM: return ("proprietary memory card slot");
1431 	case SMB_SLT_IOR: return ("I/O riser card slot");
1432 	case SMB_SLT_NUBUS: return ("NuBus");
1433 	case SMB_SLT_PCI66: return ("PCI (66MHz capable)");
1434 	case SMB_SLT_AGP: return ("AGP");
1435 	case SMB_SLT_AGP2X: return ("AGP 2X");
1436 	case SMB_SLT_AGP4X: return ("AGP 4X");
1437 	case SMB_SLT_PCIX: return ("PCI-X");
1438 	case SMB_SLT_AGP8X: return ("AGP 8X");
1439 	case SMB_SLT_M2_1DP: return ("M.2 Socket 1-DP (Mechanical Key A)");
1440 	case SMB_SLT_M2_1SD: return ("M.2 Socket 1-SD (Mechanical Key E)");
1441 	case SMB_SLT_M2_2: return ("M.2 Socket 2 (Mechanical Key B)");
1442 	case SMB_SLT_M2_3: return ("M.2 Socket 3 (Mechanical Key M)");
1443 	case SMB_SLT_MXM_I: return ("MXM Type I");
1444 	case SMB_SLT_MXM_II: return ("MXM Type II");
1445 	case SMB_SLT_MXM_III: return ("MXM Type III (standard connector)");
1446 	case SMB_SLT_MXM_III_HE: return ("MXM Type III (HE connector)");
1447 	case SMB_SLT_MXM_V: return ("MXM Type IV");
1448 	case SMB_SLT_MXM3_A: return ("MXM 3.0 Type A");
1449 	case SMB_SLT_MXM3_B: return ("MXM 3.0 Type B");
1450 	case SMB_SLT_PCIEG2_SFF: return ("PCI Express Gen 2 SFF-8639");
1451 	case SMB_SLT_PCIEG3_SFF: return ("PCI Express Gen 3 SFF-8639");
1452 	case SMB_SLT_PCIE_M52_WBSKO: return ("PCI Express Mini 52-pin with bottom-side keep-outs");
1453 	case SMB_SLT_PCIE_M52_WOBSKO: return ("PCI Express Mini 52-pin without bottom-side keep-outs");
1454 	case SMB_SLT_PCIE_M76: return ("PCI Express Mini 72-pin");
1455 	case SMB_SLT_PC98_C20: return ("PC-98/C20");
1456 	case SMB_SLT_PC98_C24: return ("PC-98/C24");
1457 	case SMB_SLT_PC98_E: return ("PC-98/E");
1458 	case SMB_SLT_PC98_LB: return ("PC-98/Local Bus");
1459 	case SMB_SLT_PC98_C: return ("PC-98/Card");
1460 	case SMB_SLT_PCIE: return ("PCI Express");
1461 	case SMB_SLT_PCIE1: return ("PCI Express x1");
1462 	case SMB_SLT_PCIE2: return ("PCI Express x2");
1463 	case SMB_SLT_PCIE4: return ("PCI Express x4");
1464 	case SMB_SLT_PCIE8: return ("PCI Express x8");
1465 	case SMB_SLT_PCIE16: return ("PCI Express x16");
1466 	case SMB_SLT_PCIE2G: return ("PCI Exp. Gen 2");
1467 	case SMB_SLT_PCIE2G1: return ("PCI Exp. Gen 2 x1");
1468 	case SMB_SLT_PCIE2G2: return ("PCI Exp. Gen 2 x2");
1469 	case SMB_SLT_PCIE2G4: return ("PCI Exp. Gen 2 x4");
1470 	case SMB_SLT_PCIE2G8: return ("PCI Exp. Gen 2 x8");
1471 	case SMB_SLT_PCIE2G16: return ("PCI Exp. Gen 2 x16");
1472 	case SMB_SLT_PCIE3G: return ("PCI Exp. Gen 3");
1473 	case SMB_SLT_PCIE3G1: return ("PCI Exp. Gen 3 x1");
1474 	case SMB_SLT_PCIE3G2: return ("PCI Exp. Gen 3 x2");
1475 	case SMB_SLT_PCIE3G4: return ("PCI Exp. Gen 3 x4");
1476 	case SMB_SLT_PCIE3G8: return ("PCI Exp. Gen 3 x8");
1477 	case SMB_SLT_PCIE3G16: return ("PCI Exp. Gen 3 x16");
1478 	}
1479 	return (NULL);
1480 }
1481 
1482 const char *
1483 smbios_slot_usage_desc(uint_t x)
1484 {
1485 	switch (x) {
1486 	case SMB_SLU_OTHER: return ("other");
1487 	case SMB_SLU_UNKNOWN: return ("unknown");
1488 	case SMB_SLU_AVAIL: return ("available");
1489 	case SMB_SLU_INUSE: return ("in use");
1490 	}
1491 	return (NULL);
1492 }
1493 
1494 const char *
1495 smbios_slot_width_desc(uint_t x)
1496 {
1497 	switch (x) {
1498 	case SMB_SLW_OTHER: return ("other");
1499 	case SMB_SLW_UNKNOWN: return ("unknown");
1500 	case SMB_SLW_8: return ("8 bit");
1501 	case SMB_SLW_16: return ("16 bit");
1502 	case SMB_SLW_32: return ("32 bit");
1503 	case SMB_SLW_64: return ("64 bit");
1504 	case SMB_SLW_128: return ("128 bit");
1505 	case SMB_SLW_1X: return ("1x or x1");
1506 	case SMB_SLW_2X: return ("2x or x2");
1507 	case SMB_SLW_4X: return ("4x or x4");
1508 	case SMB_SLW_8X: return ("8x or x8");
1509 	case SMB_SLW_12X: return ("12x or x12");
1510 	case SMB_SLW_16X: return ("16x or x16");
1511 	case SMB_SLW_32X: return ("32x or x32");
1512 	}
1513 	return (NULL);
1514 }
1515 
1516 const char *
1517 smbios_tprobe_loc_desc(uint_t x)
1518 {
1519 	switch (x) {
1520 	case SMB_TPROBE_L_OTHER: return ("other");
1521 	case SMB_TPROBE_L_UNKNOWN: return ("unknown");
1522 	case SMB_TPROBE_L_PROC: return ("processor");
1523 	case SMB_TPROBE_L_DISK: return ("disk");
1524 	case SMB_TPROBE_L_PBAY: return ("peripheral bay");
1525 	case SMB_TPROBE_L_MGMT: return ("system management module");
1526 	case SMB_TPROBE_L_MOBO: return ("motherboard");
1527 	case SMB_TPROBE_L_MEMMOD: return ("memory module");
1528 	case SMB_TPROBE_L_PROCMOD: return ("processor module");
1529 	case SMB_TPROBE_L_POWER: return ("power unit");
1530 	case SMB_TPROBE_L_AIC: return ("add-in card");
1531 	case SMB_TPROBE_L_FPBOARD: return ("front panel board");
1532 	case SMB_TPROBE_L_BPBOARD: return ("rear panel board");
1533 	case SMB_TPROBE_L_PSBOARD: return ("power system board");
1534 	case SMB_TPROBE_L_DBPANE: return ("drive back plane");
1535 	}
1536 	return (NULL);
1537 }
1538 
1539 const char *
1540 smbios_tprobe_status_desc(uint_t x)
1541 {
1542 	switch (x) {
1543 	case SMB_TPROBE_S_OTHER: return ("other");
1544 	case SMB_TPROBE_S_UNKNOWN: return ("unknown");
1545 	case SMB_TPROBE_S_OK: return ("OK");
1546 	case SMB_TPROBE_S_NONCRIT: return ("non-critical");
1547 	case SMB_TPROBE_S_CRIT: return ("critical");
1548 	case SMB_TPROBE_S_NONRECOV: return ("non-recoverable");
1549 	}
1550 	return (NULL);
1551 }
1552 
1553 const char *
1554 smbios_type_desc(uint_t x)
1555 {
1556 	switch (x) {
1557 	case SMB_TYPE_BIOS: return ("BIOS information");
1558 	case SMB_TYPE_SYSTEM: return ("system information");
1559 	case SMB_TYPE_BASEBOARD: return ("base board");
1560 	case SMB_TYPE_CHASSIS: return ("system enclosure or chassis");
1561 	case SMB_TYPE_PROCESSOR: return ("processor");
1562 	case SMB_TYPE_MEMCTL: return ("memory controller");
1563 	case SMB_TYPE_MEMMOD: return ("memory module");
1564 	case SMB_TYPE_CACHE: return ("processor cache");
1565 	case SMB_TYPE_PORT: return ("port connector");
1566 	case SMB_TYPE_SLOT: return ("upgradeable system slot");
1567 	case SMB_TYPE_OBDEVS: return ("on-board devices");
1568 	case SMB_TYPE_OEMSTR: return ("OEM string table");
1569 	case SMB_TYPE_SYSCONFSTR: return ("system configuration string table");
1570 	case SMB_TYPE_LANG: return ("BIOS language information");
1571 	case SMB_TYPE_GROUP: return ("group associations");
1572 	case SMB_TYPE_EVENTLOG: return ("system event log");
1573 	case SMB_TYPE_MEMARRAY: return ("physical memory array");
1574 	case SMB_TYPE_MEMDEVICE: return ("memory device");
1575 	case SMB_TYPE_MEMERR32: return ("32-bit memory error information");
1576 	case SMB_TYPE_MEMARRAYMAP: return ("memory array mapped address");
1577 	case SMB_TYPE_MEMDEVICEMAP: return ("memory device mapped address");
1578 	case SMB_TYPE_POINTDEV: return ("built-in pointing device");
1579 	case SMB_TYPE_BATTERY: return ("portable battery");
1580 	case SMB_TYPE_RESET: return ("system reset settings");
1581 	case SMB_TYPE_SECURITY: return ("hardware security settings");
1582 	case SMB_TYPE_POWERCTL: return ("system power controls");
1583 	case SMB_TYPE_VPROBE: return ("voltage probe");
1584 	case SMB_TYPE_COOLDEV: return ("cooling device");
1585 	case SMB_TYPE_TPROBE: return ("temperature probe");
1586 	case SMB_TYPE_IPROBE: return ("current probe");
1587 	case SMB_TYPE_OOBRA: return ("out-of-band remote access facility");
1588 	case SMB_TYPE_BIS: return ("boot integrity services");
1589 	case SMB_TYPE_BOOT: return ("system boot status");
1590 	case SMB_TYPE_MEMERR64: return ("64-bit memory error information");
1591 	case SMB_TYPE_MGMTDEV: return ("management device");
1592 	case SMB_TYPE_MGMTDEVCP: return ("management device component");
1593 	case SMB_TYPE_MGMTDEVDATA: return ("management device threshold data");
1594 	case SMB_TYPE_MEMCHAN: return ("memory channel");
1595 	case SMB_TYPE_IPMIDEV: return ("IPMI device information");
1596 	case SMB_TYPE_POWERSUP: return ("system power supply");
1597 	case SMB_TYPE_ADDINFO: return ("additional information");
1598 	case SMB_TYPE_OBDEVEXT: return ("on-board device extended info");
1599 	case SMB_TYPE_MCHI: return ("mgmt controller host interface");
1600 	case SMB_TYPE_TPM: return ("TPM device");
1601 	case SMB_TYPE_INACTIVE: return ("inactive table entry");
1602 	case SMB_TYPE_EOT: return ("end of table");
1603 	case SMB_TYPE_OEM_LO: return ("start of OEM-specific type range");
1604 	case SMB_TYPE_OEM_HI: return ("end of OEM-specific type range");
1605 	}
1606 	return (NULL);
1607 }
1608 
1609 const char *
1610 smbios_vprobe_loc_desc(uint_t x)
1611 {
1612 	switch (x) {
1613 	case SMB_VPROBE_L_OTHER: return ("other");
1614 	case SMB_VPROBE_L_UNKNOWN: return ("unknown");
1615 	case SMB_VPROBE_L_PROC: return ("processor");
1616 	case SMB_VPROBE_L_DISK: return ("disk");
1617 	case SMB_VPROBE_L_PBAY: return ("peripheral bay");
1618 	case SMB_VPROBE_L_MGMT: return ("system management module");
1619 	case SMB_VPROBE_L_MOBO: return ("motherboard");
1620 	case SMB_VPROBE_L_MEMMOD: return ("memory module");
1621 	case SMB_VPROBE_L_PROCMOD: return ("processor module");
1622 	case SMB_VPROBE_L_POWER: return ("power unit");
1623 	case SMB_VPROBE_L_AIC: return ("add-in card");
1624 	}
1625 	return (NULL);
1626 }
1627 
1628 const char *
1629 smbios_vprobe_status_desc(uint_t x)
1630 {
1631 	switch (x) {
1632 	case SMB_VPROBE_S_OTHER: return ("other");
1633 	case SMB_VPROBE_S_UNKNOWN: return ("unknown");
1634 	case SMB_VPROBE_S_OK: return ("OK");
1635 	case SMB_VPROBE_S_NONCRIT: return ("non-critical");
1636 	case SMB_VPROBE_S_CRIT: return ("critical");
1637 	case SMB_VPROBE_S_NONRECOV: return ("non-recoverable");
1638 	}
1639 	return (NULL);
1640 }
1641 
1642 const char *
1643 smbios_system_wakeup_desc(uint_t x)
1644 {
1645 	switch (x) {
1646 	case SMB_WAKEUP_RSV0: return ("reserved");
1647 	case SMB_WAKEUP_OTHER: return ("other");
1648 	case SMB_WAKEUP_UNKNOWN: return ("unknown");
1649 	case SMB_WAKEUP_APM: return ("APM timer");
1650 	case SMB_WAKEUP_MODEM: return ("modem ring");
1651 	case SMB_WAKEUP_LAN: return ("LAN remote");
1652 	case SMB_WAKEUP_SWITCH: return ("power switch");
1653 	case SMB_WAKEUP_PCIPME: return ("PCI PME#");
1654 	case SMB_WAKEUP_AC: return ("AC power restored");
1655 	}
1656 	return (NULL);
1657 }
1658