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,27 ****
--- 18,28 ----
   *
   * 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,344 ****
--- 336,347 ----
          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,405 ****
--- 399,412 ----
          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,439 ****
--- 437,468 ----
          } 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,788 ****
          else if (md.smbmd_set == (uint8_t)-1u)
                  oprintf(fp, "  Set: Unknown\n");
          else
                  oprintf(fp, "  Set: %u\n", md.smbmd_set);
  
          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);
          else
                  oprintf(fp, "  Speed: Unknown\n");
  
          oprintf(fp, "  Device Locator: %s\n", md.smbmd_dloc);
          oprintf(fp, "  Bank Locator: %s\n", md.smbmd_bloc);
  }
  
  static void
  print_memarrmap(smbios_hdl_t *shp, id_t id, FILE *fp)
  {
--- 795,850 ----
          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: %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,990 ****
  
          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);
          else if (sp->smbstr_type > SMB_TYPE_OEM_LO &&
              sp->smbstr_type < SMB_TYPE_OEM_HI)
!                 oprintf(fp, " %s+%u", "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)
--- 1039,1052 ----
  
          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, " (%u) %s", sp->smbstr_type, s);
          else if (sp->smbstr_type > SMB_TYPE_OEM_LO &&
              sp->smbstr_type < SMB_TYPE_OEM_HI)
!                 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)