Print this page
5094 Update libsmbios with recent items
Reviewed by: Dan McDonald <danmcd@omniti.com>
Reviewed by: Josef 'Jeff' Sipek<jeffpc@josefsipek.net>
Reviewed by: Garrett D'Amore <garrett@damore.org>

@@ -18,10 +18,11 @@
  *
  * CDDL HEADER END
  */
 
 /*
+ * Copyright 2015 OmniTI Computer Consulting, Inc.  All rights reserved.
  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
 #include <sys/sysmacros.h>

@@ -335,10 +336,12 @@
         int elem_cnt;
 
         (void) smbios_info_chassis(shp, id, &c);
 
         oprintf(fp, "  OEM Data: 0x%x\n", c.smbc_oemdata);
+        oprintf(fp, "  SKU number: %s\n",
+            c.smbc_sku == NULL ? "<unknown>" : c.smbc_sku);
         oprintf(fp, "  Lock Present: %s\n", c.smbc_lock ? "Y" : "N");
 
         desc_printf(smbios_chassis_type_desc(c.smbc_type),
             fp, "  Chassis Type: 0x%x", c.smbc_type);
 

@@ -396,10 +399,14 @@
         status = SMB_PRSTATUS_STATUS(p.smbp_status);
 
         desc_printf(smbios_processor_family_desc(p.smbp_family),
             fp, "  Family: %u", p.smbp_family);
 
+        if (p.smbp_family2 != 0)
+                desc_printf(smbios_processor_family_desc(p.smbp_family2),
+                    fp, "  Family Ext: %u", p.smbp_family2);
+
         oprintf(fp, "  CPUID: 0x%llx\n", (u_longlong_t)p.smbp_cpuid);
 
         desc_printf(smbios_processor_type_desc(p.smbp_type),
             fp, "  Type: %u", p.smbp_type);
 

@@ -430,10 +437,32 @@
         } else {
                 oprintf(fp, "  Supported Voltages: %.1fV\n",
                     (float)SMB_PRV_VOLTAGE(p.smbp_voltage) / 10);
         }
 
+        if (p.smbp_corecount != 0)
+                oprintf(fp, "  Core Count: %u\n", p.smbp_corecount);
+        else
+                oprintf(fp, "  Core Count: Unknown\n");
+
+        if (p.smbp_coresenabled != 0)
+                oprintf(fp, "  Cores Enabled: %u\n", p.smbp_coresenabled);
+        else
+                oprintf(fp, "  Cores Enabled: Unknown\n");
+
+        if (p.smbp_threadcount != 0)
+                oprintf(fp, "  Thread Count: %u\n", p.smbp_threadcount);
+        else
+                oprintf(fp, "  Thread Count: Unknown\n");
+
+        if (p.smbp_cflags) {
+                flag_printf(fp, "Processor Characteristics",
+                    p.smbp_cflags, sizeof (p.smbp_cflags) * NBBY,
+                    smbios_processor_core_flag_name,
+                    smbios_processor_core_flag_desc);
+        }
+
         if (p.smbp_clkspeed != 0)
                 oprintf(fp, "  External Clock Speed: %uMHz\n", p.smbp_clkspeed);
         else
                 oprintf(fp, "  External Clock Speed: Unknown\n");
 

@@ -766,23 +795,56 @@
         else if (md.smbmd_set == (uint8_t)-1u)
                 oprintf(fp, "  Set: Unknown\n");
         else
                 oprintf(fp, "  Set: %u\n", md.smbmd_set);
 
+        if (md.smbmd_rank != 0) {
+                desc_printf(smbios_memdevice_rank_desc(md.smbmd_rank),
+                    fp, "  Rank: %u", md.smbmd_rank);
+        } else {
+                oprintf(fp, "  Rank: Unknown\n");
+        }
+
         desc_printf(smbios_memdevice_type_desc(md.smbmd_type),
             fp, "  Memory Type: %u", md.smbmd_type);
 
         flag_printf(fp, "Flags", md.smbmd_flags, sizeof (md.smbmd_flags) * NBBY,
             smbios_memdevice_flag_name, smbios_memdevice_flag_desc);
 
         if (md.smbmd_speed != 0)
-                oprintf(fp, "  Speed: %uns\n", md.smbmd_speed);
+                oprintf(fp, "  Speed: %u MHz\n", md.smbmd_speed);
         else
                 oprintf(fp, "  Speed: Unknown\n");
 
+        if (md.smbmd_clkspeed != 0)
+                oprintf(fp, "  Configured Speed: %u MHz\n", md.smbmd_clkspeed);
+        else
+                oprintf(fp, "  Configured Speed: Unknown\n");
+
         oprintf(fp, "  Device Locator: %s\n", md.smbmd_dloc);
         oprintf(fp, "  Bank Locator: %s\n", md.smbmd_bloc);
+
+        if (md.smbmd_minvolt != 0) {
+                oprintf(fp, "  Minimum Voltage: %.2fV\n",
+                    md.smbmd_minvolt / 1000.0);
+        } else {
+                oprintf(fp, "  Minimum Voltage: Unknown\n");
+        }
+
+        if (md.smbmd_maxvolt != 0) {
+                oprintf(fp, "  Maximum Voltage: %.2fV\n",
+                    md.smbmd_maxvolt / 1000.0);
+        } else {
+                oprintf(fp, "  Maximum Voltage: Unknown\n");
+        }
+
+        if (md.smbmd_confvolt != 0) {
+                oprintf(fp, "  Configured Voltage: %.2fV\n",
+                    md.smbmd_confvolt / 1000.0);
+        } else {
+                oprintf(fp, "  Configured Voltage: Unknown\n");
+        }
 }
 
 static void
 print_memarrmap(smbios_hdl_t *shp, id_t id, FILE *fp)
 {

@@ -977,14 +1039,14 @@
 
         oprintf(fp, "%-5u %-4lu",
             (uint_t)sp->smbstr_id, (ulong_t)sp->smbstr_size);
 
         if ((s = smbios_type_name(sp->smbstr_type)) != NULL)
-                oprintf(fp, " %s", s);
+                oprintf(fp, " (%u) %s", sp->smbstr_type, s);
         else if (sp->smbstr_type > SMB_TYPE_OEM_LO &&
             sp->smbstr_type < SMB_TYPE_OEM_HI)
-                oprintf(fp, " %s+%u", "SMB_TYPE_OEM_LO",
+                oprintf(fp, " (%u) %s+%u", sp->smbstr_type, "SMB_TYPE_OEM_LO",
                     sp->smbstr_type - SMB_TYPE_OEM_LO);
         else
                 oprintf(fp, " %u", sp->smbstr_type);
 
         if ((s = smbios_type_desc(sp->smbstr_type)) != NULL)