Print this page
SKU fix for 5094
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. */ /*
*** 112,121 **** --- 113,125 ---- uint8_t smbch_cn; /* number of contained records */ uint8_t smbch_cm; /* size of contained records */ uint8_t smbch_cv[1]; /* array of contained records */ } smb_chassis_t; + /* WARNING: the argument is evaluated three times! */ + #define SMB_CH_SKU(smbcp) ((char *) \ + (smbcp)->smbch_cv + ((smbcp)->smbch_cn * (smbcp)->smbch_cm)) #define SMB_CHT_LOCK 0x80 /* lock bit within smbch_type */ typedef struct smb_processor { smb_header_t smbpr_hdr; /* structure header */ uint8_t smbpr_socket; /* socket designation */
*** 134,143 **** --- 138,152 ---- uint16_t smbpr_l2cache; /* L2 cache handle (if any) */ uint16_t smbpr_l3cache; /* L3 cache handle (if any) */ uint8_t smbpr_serial; /* serial number */ uint8_t smbpr_asset; /* asset tag */ uint8_t smbpr_part; /* part number */ + uint8_t smbpr_corecount; /* number of cores per socket */ + uint8_t smbpr_coresenabled; /* number of enabled cores per socket */ + uint8_t smbpr_threadcount; /* number of threads per socket */ + uint16_t smbpr_cflags; /* cpu characteristics (see <smbios.h>) */ + uint16_t smbpr_family2; /* processor family2 (see <smbios.h>) */ } smb_processor_t; typedef struct smb_cache { smb_header_t smbca_hdr; /* structure header */ uint8_t smbca_socket; /* socket designation */
*** 151,161 **** uint8_t smbca_ltype; /* logical cache type */ uint8_t smbca_assoc; /* associativity */ } smb_cache_t; /* ! * Convert encoded cache size to bytes: DSP0134 Section 3.3.8 explains the * encoding. The highest bit is 0 for 1k units, 1 for 64k units, and this * macro decodes the value into bytes for exporting to our clients. */ #define SMB_CACHE_SIZE(s) (((s) & 0x8000) ? \ ((uint32_t)((s) & 0x7FFF) * 64 * 1024) : ((uint32_t)(s) * 1024)) --- 160,170 ---- uint8_t smbca_ltype; /* logical cache type */ uint8_t smbca_assoc; /* associativity */ } smb_cache_t; /* ! * Convert encoded cache size to bytes: DSP0134 Section 7.8 explains the * encoding. The highest bit is 0 for 1k units, 1 for 64k units, and this * macro decodes the value into bytes for exporting to our clients. */ #define SMB_CACHE_SIZE(s) (((s) & 0x8000) ? \ ((uint32_t)((s) & 0x7FFF) * 64 * 1024) : ((uint32_t)(s) * 1024))
*** 190,200 **** uint8_t smbsl_df; /* device/function number */ } smb_slot_t; typedef struct smb_obdev { uint8_t smbob_type; /* encoded type and enable bit */ ! uint8_t smbob_name; /* descriptiong string */ } smb_obdev_t; #define SMB_OBT_ENABLED 0x80 /* enable bit within smbob_type */ typedef struct smb_strtab { --- 199,209 ---- uint8_t smbsl_df; /* device/function number */ } smb_slot_t; typedef struct smb_obdev { uint8_t smbob_type; /* encoded type and enable bit */ ! uint8_t smbob_name; /* description string */ } smb_obdev_t; #define SMB_OBT_ENABLED 0x80 /* enable bit within smbob_type */ typedef struct smb_strtab {
*** 231,248 **** --- 240,260 ---- uint8_t smbmarr_use; /* use */ uint8_t smbmarr_ecc; /* error detect/correct mechanism */ uint32_t smbmarr_cap; /* maximum capacity */ uint16_t smbmarr_err; /* error handle */ uint16_t smbmarr_ndevs; /* number of slots or sockets */ + uint64_t smbmarr_extcap; /* extended maximum capacity */ } smb_memarray_t; typedef struct smb_memarrmap { smb_header_t smbamap_hdr; /* structure header */ uint32_t smbamap_start; /* starting address in kilobytes */ uint32_t smbamap_end; /* ending address in kilobytes */ uint16_t smbamap_array; /* physical memory array handle */ uint8_t smbamap_width; /* partition width */ + uint64_t smbamap_extstart; /* extended starting address in bytes */ + uint64_t smbamap_extend; /* extended ending address in bytes */ } smb_memarrmap_t; typedef struct smb_memdevice { smb_header_t smbmdev_hdr; /* structure header */ uint16_t smbmdev_array; /* array handle */
*** 259,268 **** --- 271,286 ---- uint16_t smbmdev_speed; /* speed in MHz */ uint8_t smbmdev_manufacturer; /* manufacturer */ uint8_t smbmdev_serial; /* serial number */ uint8_t smbmdev_asset; /* asset tag */ uint8_t smbmdev_part; /* part number */ + uint8_t smbmdev_attrs; /* attributes */ + uint32_t smbmdev_extsize; /* extended size */ + uint16_t smbmdev_clkspeed; /* configured clock speed */ + uint16_t smbmdev_minvolt; /* minimum voltage */ + uint16_t smbmdev_maxvolt; /* maximum voltage */ + uint16_t smbmdev_confvolt; /* configured voltage */ } smb_memdevice_t; #define SMB_MDS_KBYTES 0x8000 /* size in specified in kilobytes */ typedef struct smb_memdevmap {
*** 272,281 **** --- 290,301 ---- uint16_t smbdmap_device; /* memory device handle */ uint16_t smbdmap_array; /* memory array mapped address handle */ uint8_t smbdmap_rpos; /* row position */ uint8_t smbdmap_ipos; /* interleave position */ uint8_t smbdmap_idepth; /* interleave depth */ + uint64_t smbdmap_extstart; /* extended starting address */ + uint64_t smbdmap_extend; /* extended ending address */ } smb_memdevmap_t; typedef struct smb_battery { smb_header_t smbbat_hdr; /* structure header */ uint8_t smbbat_loc; /* location */