Lines Matching +full:library +full:- +full:sel

40  *	smb_info_bcopy(stp->smbst_hdr, &foo, sizeof (foo));
53 * other words, if someone passes an older library handle that doesn't support a
239 const uint8_t *sp = (const uint8_t *)(uintptr_t)stp->smbst_hdr; in smb_info_strptr()
241 if (off != 0 && sp + off < stp->smbst_end) { in smb_info_strptr()
253 if (offset >= hp->smbh_len) { in smb_info_bcopy_offset()
255 } else if (offset + dstlen > hp->smbh_len) { in smb_info_bcopy_offset()
256 size_t nvalid = MIN(hp->smbh_len - offset, dstlen); in smb_info_bcopy_offset()
258 bzero((char *)dst + nvalid, dstlen - nvalid); in smb_info_bcopy_offset()
273 bcopy(&shp->sh_ent, ep, sizeof (smbios_entry_t)); in smbios_info_smbios()
274 return (shp->sh_ent_type); in smbios_info_smbios()
280 v->smbv_major = SMB_MAJOR(shp->sh_smbvers); in smbios_info_smbios_version()
281 v->smbv_minor = SMB_MINOR(shp->sh_smbvers); in smbios_info_smbios_version()
297 return (-1); /* errno is set for us */ in smbios_info_common()
299 for (isp = _smb_infospecs; isp->is_type != SMB_TYPE_EOT; isp++) { in smbios_info_common()
300 if (isp->is_type == stp->smbst_hdr->smbh_type) in smbios_info_common()
304 ip->smbi_manufacturer = smb_info_strptr(stp, isp->is_manu, &n); in smbios_info_common()
305 ip->smbi_product = smb_info_strptr(stp, isp->is_product, &n); in smbios_info_common()
306 ip->smbi_version = smb_info_strptr(stp, isp->is_version, &n); in smbios_info_common()
307 ip->smbi_serial = smb_info_strptr(stp, isp->is_serial, &n); in smbios_info_common()
308 ip->smbi_asset = smb_info_strptr(stp, isp->is_asset, &n); in smbios_info_common()
309 ip->smbi_location = smb_info_strptr(stp, isp->is_location, &n); in smbios_info_common()
310 ip->smbi_part = smb_info_strptr(stp, isp->is_part, &n); in smbios_info_common()
318 if (isp->is_type == SMB_TYPE_SYSTEM) { in smbios_info_common()
323 sizeof (smbios_product_override) - 1); in smbios_info_common()
330 ip->smbi_product = smbios_product_override; in smbios_info_common()
338 if (isp->is_type == SMB_TYPE_PORT && ip->smbi_location[0] == '\0') { in smbios_info_common()
339 ip->smbi_location = smb_info_strptr(stp, in smbios_info_common()
349 * idc - number of contained objects
350 * idv - returned array of contained objects
363 return (-1); /* errno is set for us */ in smbios_info_contains()
366 for (isp = _smb_infospecs; isp->is_type != SMB_TYPE_EOT; isp++) { in smbios_info_contains()
367 if (isp->is_type == stp->smbst_hdr->smbh_type) in smbios_info_contains()
370 if (isp->is_type == SMB_TYPE_EOT) in smbios_info_contains()
373 size = isp->is_contsz; in smbios_info_contains()
374 cnt = *((uint8_t *)(uintptr_t)stp->smbst_hdr + isp->is_contc); in smbios_info_contains()
375 cp = (id_t *)((uintptr_t)stp->smbst_hdr + isp->is_contv); in smbios_info_contains()
395 return (-1); /* errno is set for us */ in smbios_info_bios()
397 if (stp->smbst_hdr->smbh_len < sizeof (smb_bios_t) - sizeof (uint8_t)) in smbios_info_bios()
400 bip = (smb_bios_t *)(uintptr_t)stp->smbst_hdr; in smbios_info_bios()
403 bp->smbb_extromsize = 0; in smbios_info_bios()
406 bp->smbb_vendor = smb_strptr(stp, bip->smbbi_vendor); in smbios_info_bios()
407 bp->smbb_version = smb_strptr(stp, bip->smbbi_version); in smbios_info_bios()
408 bp->smbb_segment = bip->smbbi_segment; in smbios_info_bios()
409 bp->smbb_reldate = smb_strptr(stp, bip->smbbi_reldate); in smbios_info_bios()
410 bp->smbb_romsize = 64 * 1024 * ((uint32_t)bip->smbbi_romsize + 1); in smbios_info_bios()
411 bp->smbb_runsize = 16 * (0x10000 - (uint32_t)bip->smbbi_segment); in smbios_info_bios()
412 bp->smbb_cflags = bip->smbbi_cflags; in smbios_info_bios()
418 if (stp->smbst_hdr->smbh_len >= sizeof (smb_bios_t)) { in smbios_info_bios()
419 bp->smbb_xcflags = bip->smbbi_xcflags; in smbios_info_bios()
420 bp->smbb_nxcflags = stp->smbst_hdr->smbh_len - in smbios_info_bios()
423 if (bp->smbb_nxcflags > SMB_BIOSXB_ECFW_MIN && in smbios_info_bios()
425 bp->smbb_biosv.smbv_major = in smbios_info_bios()
426 bip->smbbi_xcflags[SMB_BIOSXB_BIOS_MAJ]; in smbios_info_bios()
427 bp->smbb_biosv.smbv_minor = in smbios_info_bios()
428 bip->smbbi_xcflags[SMB_BIOSXB_BIOS_MIN]; in smbios_info_bios()
429 bp->smbb_ecfwv.smbv_major = in smbios_info_bios()
430 bip->smbbi_xcflags[SMB_BIOSXB_ECFW_MAJ]; in smbios_info_bios()
431 bp->smbb_ecfwv.smbv_minor = in smbios_info_bios()
432 bip->smbbi_xcflags[SMB_BIOSXB_ECFW_MIN]; in smbios_info_bios()
435 if (bp->smbb_nxcflags > SMB_BIOSXB_EXTROM + 1 && in smbios_info_bios()
443 * endian-aware way to access it, we don't include it in in smbios_info_bios()
447 bp->smbb_nxcflags -= sizeof (uint16_t); in smbios_info_bios()
448 bcopy(&bip->smbbi_xcflags[SMB_BIOSXB_EXTROM], &val, in smbios_info_bios()
471 bp->smbb_extromsize = rs; in smbios_info_bios()
476 if (smb_libgteq(shp, SMB_VERSION_31) && bp->smbb_extromsize == 0) { in smbios_info_bios()
477 bp->smbb_extromsize = bp->smbb_romsize; in smbios_info_bios()
480 return (stp->smbst_hdr->smbh_hdl); in smbios_info_bios()
490 return (-1); /* errno is set for us */ in smbios_info_system()
492 smb_info_bcopy(stp->smbst_hdr, &si, sizeof (si)); in smbios_info_system()
495 sip->smbs_uuid = ((smb_system_t *)stp->smbst_hdr)->smbsi_uuid; in smbios_info_system()
496 sip->smbs_uuidlen = sizeof (si.smbsi_uuid); in smbios_info_system()
497 sip->smbs_wakeup = si.smbsi_wakeup; in smbios_info_system()
498 sip->smbs_sku = smb_strptr(stp, si.smbsi_sku); in smbios_info_system()
499 sip->smbs_family = smb_strptr(stp, si.smbsi_family); in smbios_info_system()
501 return (stp->smbst_hdr->smbh_hdl); in smbios_info_system()
511 return (-1); /* errno is set for us */ in smbios_info_bboard()
513 if (stp->smbst_hdr->smbh_type != SMB_TYPE_BASEBOARD) in smbios_info_bboard()
516 smb_info_bcopy(stp->smbst_hdr, &bb, sizeof (bb)); in smbios_info_bboard()
519 bbp->smbb_chassis = bb.smbbb_chassis; in smbios_info_bboard()
520 bbp->smbb_flags = bb.smbbb_flags; in smbios_info_bboard()
521 bbp->smbb_type = bb.smbbb_type; in smbios_info_bboard()
522 bbp->smbb_contn = bb.smbbb_cn; in smbios_info_bboard()
536 return (-1); /* errno is set for us */ in smbios_info_chassis()
539 if (stp->smbst_hdr->smbh_type != SMB_TYPE_CHASSIS) { in smbios_info_chassis()
548 if (stp->smbst_hdr->smbh_len < offsetof(smb_chassis_t, smbch_oemdata)) { in smbios_info_chassis()
552 smb_info_bcopy(stp->smbst_hdr, &ch, sizeof (ch)); in smbios_info_chassis()
561 chp->smbc_sku = smb_strptr(stp, 0); in smbios_info_chassis()
564 bzero(p35->smbc_sku, sizeof (p35->smbc_sku)); in smbios_info_chassis()
569 * this if the library is new enough. in smbios_info_chassis()
572 chp->smbc_rtype = 0; in smbios_info_chassis()
573 chp->smbc_rheight = 0; in smbios_info_chassis()
575 chp->smbc_oemdata = ch.smbch_oemdata; in smbios_info_chassis()
576 chp->smbc_lock = (ch.smbch_type & SMB_CHT_LOCK) != 0; in smbios_info_chassis()
577 chp->smbc_type = ch.smbch_type & ~SMB_CHT_LOCK; in smbios_info_chassis()
578 chp->smbc_bustate = ch.smbch_bustate; in smbios_info_chassis()
579 chp->smbc_psstate = ch.smbch_psstate; in smbios_info_chassis()
580 chp->smbc_thstate = ch.smbch_thstate; in smbios_info_chassis()
581 chp->smbc_security = ch.smbch_security; in smbios_info_chassis()
582 chp->smbc_uheight = ch.smbch_uheight; in smbios_info_chassis()
583 chp->smbc_cords = ch.smbch_cords; in smbios_info_chassis()
584 chp->smbc_elems = ch.smbch_cn; in smbios_info_chassis()
585 chp->smbc_elemlen = ch.smbch_cm; in smbios_info_chassis()
599 smb_info_bcopy_offset(stp->smbst_hdr, &b, sizeof (b), skuoff); in smbios_info_chassis()
602 * In the library versions between 2.7 and 3.4, we opted to embed the in smbios_info_chassis()
613 (void) strlcpy(p35->smbc_sku, str, sizeof (p35->smbc_sku)); in smbios_info_chassis()
617 chp->smbc_sku = smb_strptr(stp, b.smbcb_sku); in smbios_info_chassis()
621 chp->smbc_rtype = b.smbcb_rtype; in smbios_info_chassis()
622 chp->smbc_rheight = b.smbcb_rheight; in smbios_info_chassis()
639 return (-1); /* errno is set for us */ in smbios_info_chassis_elts()
642 if (stp->smbst_hdr->smbh_type != SMB_TYPE_CHASSIS) { in smbios_info_chassis_elts()
651 smb_info_bcopy(stp->smbst_hdr, &ch, sizeof (ch)); in smbios_info_chassis_elts()
663 if (stp->smbst_hdr->smbh_len < sizeof (ch) + entlen) { in smbios_info_chassis_elts()
675 smb_info_bcopy_offset(stp->smbst_hdr, &e, sizeof (e), off); in smbios_info_chassis_elts()
678 * while the lower 7-bits indicate the actual type. in smbios_info_chassis_elts()
714 return (-1); /* errno is set for us */ in smbios_info_processor()
716 if (stp->smbst_hdr->smbh_type != SMB_TYPE_PROCESSOR) in smbios_info_processor()
719 smb_info_bcopy(stp->smbst_hdr, &p, sizeof (p)); in smbios_info_processor()
722 pp->smbp_cpuid = p.smbpr_cpuid; in smbios_info_processor()
723 pp->smbp_type = p.smbpr_type; in smbios_info_processor()
724 pp->smbp_family = p.smbpr_family; in smbios_info_processor()
725 pp->smbp_voltage = p.smbpr_voltage; in smbios_info_processor()
726 pp->smbp_clkspeed = p.smbpr_clkspeed; in smbios_info_processor()
727 pp->smbp_maxspeed = p.smbpr_maxspeed; in smbios_info_processor()
728 pp->smbp_curspeed = p.smbpr_curspeed; in smbios_info_processor()
729 pp->smbp_status = p.smbpr_status; in smbios_info_processor()
730 pp->smbp_upgrade = p.smbpr_upgrade; in smbios_info_processor()
731 pp->smbp_l1cache = p.smbpr_l1cache; in smbios_info_processor()
732 pp->smbp_l2cache = p.smbpr_l2cache; in smbios_info_processor()
733 pp->smbp_l3cache = p.smbpr_l3cache; in smbios_info_processor()
736 pp->smbp_corecount = p.smbpr_corecount; in smbios_info_processor()
737 pp->smbp_coresenabled = p.smbpr_coresenabled; in smbios_info_processor()
738 pp->smbp_threadcount = p.smbpr_threadcount; in smbios_info_processor()
739 pp->smbp_cflags = p.smbpr_cflags; in smbios_info_processor()
743 if (pp->smbp_family == 0xfe) { in smbios_info_processor()
744 pp->smbp_family = p.smbpr_family2; in smbios_info_processor()
749 if (pp->smbp_corecount == 0xff) { in smbios_info_processor()
750 pp->smbp_corecount = p.smbpr_corecount2; in smbios_info_processor()
752 if (pp->smbp_coresenabled == 0xff) { in smbios_info_processor()
753 pp->smbp_coresenabled = p.smbpr_coresenabled2; in smbios_info_processor()
755 if (pp->smbp_threadcount == 0xff) { in smbios_info_processor()
756 pp->smbp_threadcount = p.smbpr_threadcount2; in smbios_info_processor()
761 pp->smbp_threadsenabled = p.smbpr_threaden; in smbios_info_processor()
771 pp->smbp_socktype = smb_strptr(stp, p.smbpr_socktype); in smbios_info_processor()
784 return (-1); /* errno is set for us */ in smbios_info_cache()
786 if (stp->smbst_hdr->smbh_type != SMB_TYPE_CACHE) in smbios_info_cache()
789 smb_info_bcopy(stp->smbst_hdr, &c, sizeof (c)); in smbios_info_cache()
792 cap->smba_maxsize = SMB_CACHE_SIZE(c.smbca_maxsize); in smbios_info_cache()
793 cap->smba_size = SMB_CACHE_SIZE(c.smbca_size); in smbios_info_cache()
794 cap->smba_stype = c.smbca_stype; in smbios_info_cache()
795 cap->smba_ctype = c.smbca_ctype; in smbios_info_cache()
796 cap->smba_speed = c.smbca_speed; in smbios_info_cache()
797 cap->smba_etype = c.smbca_etype; in smbios_info_cache()
798 cap->smba_ltype = c.smbca_ltype; in smbios_info_cache()
799 cap->smba_assoc = c.smbca_assoc; in smbios_info_cache()
800 cap->smba_level = SMB_CACHE_CFG_LEVEL(c.smbca_config); in smbios_info_cache()
801 cap->smba_mode = SMB_CACHE_CFG_MODE(c.smbca_config); in smbios_info_cache()
802 cap->smba_location = SMB_CACHE_CFG_LOCATION(c.smbca_config); in smbios_info_cache()
805 cap->smba_flags |= SMB_CAF_ENABLED; in smbios_info_cache()
808 cap->smba_flags |= SMB_CAF_SOCKETED; in smbios_info_cache()
811 cap->smba_maxsize2 = SMB_CACHE_EXT_SIZE(c.smbca_maxsize2); in smbios_info_cache()
812 cap->smba_size2 = SMB_CACHE_EXT_SIZE(c.smbca_size2); in smbios_info_cache()
814 if (cap->smba_maxsize2 == 0) { in smbios_info_cache()
815 cap->smba_maxsize2 = cap->smba_maxsize; in smbios_info_cache()
818 if (cap->smba_size2 == 0) { in smbios_info_cache()
819 cap->smba_size2 = cap->smba_size; in smbios_info_cache()
833 return (-1); /* errno is set for us */ in smbios_info_port()
835 if (stp->smbst_hdr->smbh_type != SMB_TYPE_PORT) in smbios_info_port()
838 smb_info_bcopy(stp->smbst_hdr, &p, sizeof (p)); in smbios_info_port()
841 pop->smbo_iref = smb_strptr(stp, p.smbpo_iref); in smbios_info_port()
842 pop->smbo_eref = smb_strptr(stp, p.smbpo_eref); in smbios_info_port()
844 pop->smbo_itype = p.smbpo_itype; in smbios_info_port()
845 pop->smbo_etype = p.smbpo_etype; in smbios_info_port()
846 pop->smbo_ptype = p.smbpo_ptype; in smbios_info_port()
860 return (-1); /* errno is set for us */ in smbios_info_slot()
862 if (stp->smbst_hdr->smbh_type != SMB_TYPE_SLOT) in smbios_info_slot()
865 smb_info_bcopy(stp->smbst_hdr, &s, sizeof (s)); in smbios_info_slot()
868 sp->smbl_name = smb_strptr(stp, s.smbsl_name); in smbios_info_slot()
869 sp->smbl_type = s.smbsl_type; in smbios_info_slot()
870 sp->smbl_width = s.smbsl_width; in smbios_info_slot()
871 sp->smbl_usage = s.smbsl_usage; in smbios_info_slot()
872 sp->smbl_length = s.smbsl_length; in smbios_info_slot()
873 sp->smbl_id = s.smbsl_id; in smbios_info_slot()
874 sp->smbl_ch1 = s.smbsl_ch1; in smbios_info_slot()
875 sp->smbl_ch2 = s.smbsl_ch2; in smbios_info_slot()
876 sp->smbl_sg = s.smbsl_sg; in smbios_info_slot()
877 sp->smbl_bus = s.smbsl_bus; in smbios_info_slot()
878 sp->smbl_df = s.smbsl_df; in smbios_info_slot()
881 sp->smbl_dbw = s.smbsl_dbw; in smbios_info_slot()
882 sp->smbl_npeers = s.smbsl_npeers; in smbios_info_slot()
898 smb_info_bcopy_offset(stp->smbst_hdr, &cont, sizeof (cont), off); in smbios_info_slot()
899 sp->smbl_info = cont.smbsl_info; in smbios_info_slot()
900 sp->smbl_pwidth = cont.smbsl_pwidth; in smbios_info_slot()
901 sp->smbl_pitch = cont.smbsl_pitch; in smbios_info_slot()
904 sp->smbl_height = cont.smbsl_height; in smbios_info_slot()
935 return (-1); /* errno is set for us */ in smbios_info_slot_peers()
937 slotp = (const smb_slot_t *)stp->smbst_hdr; in smbios_info_slot_peers()
939 if (stp->smbst_hdr->smbh_type != SMB_TYPE_SLOT) in smbios_info_slot_peers()
942 if (stp->smbst_hdr->smbh_len <= offsetof(smb_slot_t, smbsl_npeers) || in smbios_info_slot_peers()
943 slotp->smbsl_npeers == 0) { in smbios_info_slot_peers()
953 minlen = slotp->smbsl_npeers * sizeof (smb_slot_peer_t) + in smbios_info_slot_peers()
955 if (stp->smbst_hdr->smbh_len < minlen) { in smbios_info_slot_peers()
959 if ((peer = smb_alloc(slotp->smbsl_npeers * in smbios_info_slot_peers()
964 for (i = 0; i < slotp->smbsl_npeers; i++) { in smbios_info_slot_peers()
965 peer[i].smblp_group = slotp->smbsl_peers[i].smbspb_group_no; in smbios_info_slot_peers()
966 peer[i].smblp_bus = slotp->smbsl_peers[i].smbspb_bus; in smbios_info_slot_peers()
967 peer[i].smblp_device = slotp->smbsl_peers[i].smbspb_df >> 3; in smbios_info_slot_peers()
968 peer[i].smblp_function = slotp->smbsl_peers[i].smbspb_df & 0x7; in smbios_info_slot_peers()
969 peer[i].smblp_data_width = slotp->smbsl_peers[i].smbspb_width; in smbios_info_slot_peers()
972 *npeers = slotp->smbsl_npeers; in smbios_info_slot_peers()
985 return (-1); /* errno is set for us */ in smbios_info_obdevs_ext()
987 if (stp->smbst_hdr->smbh_type != SMB_TYPE_OBDEVEXT) in smbios_info_obdevs_ext()
990 smb_info_bcopy(stp->smbst_hdr, &obe, sizeof (obe)); in smbios_info_obdevs_ext()
993 oep->smboe_name = smb_strptr(stp, obe.smbobe_name); in smbios_info_obdevs_ext()
994 oep->smboe_dtype = obe.smbobe_dtype; in smbios_info_obdevs_ext()
995 oep->smboe_dti = obe.smbobe_dti; in smbios_info_obdevs_ext()
996 oep->smboe_sg = obe.smbobe_sg; in smbios_info_obdevs_ext()
997 oep->smboe_bus = obe.smbobe_bus; in smbios_info_obdevs_ext()
998 oep->smboe_df = obe.smbobe_df; in smbios_info_obdevs_ext()
1011 return (-1); /* errno is set for us */ in smbios_info_obdevs()
1013 if (stp->smbst_hdr->smbh_type != SMB_TYPE_OBDEVS) in smbios_info_obdevs()
1016 op = (smb_obdev_t *)((uintptr_t)stp->smbst_hdr + sizeof (smb_header_t)); in smbios_info_obdevs()
1017 m = (stp->smbst_hdr->smbh_len - sizeof (smb_header_t)) / sizeof (*op); in smbios_info_obdevs()
1021 obp->smbd_name = smb_strptr(stp, op->smbob_name); in smbios_info_obdevs()
1022 obp->smbd_type = op->smbob_type & ~SMB_OBT_ENABLED; in smbios_info_obdevs()
1023 obp->smbd_enabled = (op->smbob_type & SMB_OBT_ENABLED) != 0; in smbios_info_obdevs()
1043 return (-1); /* errno is set for us */ in smbios_info_strtab()
1045 if (stp->smbst_hdr->smbh_type != SMB_TYPE_OEMSTR && in smbios_info_strtab()
1046 stp->smbst_hdr->smbh_type != SMB_TYPE_SYSCONFSTR && in smbios_info_strtab()
1047 stp->smbst_hdr->smbh_type != SMB_TYPE_LANG) in smbios_info_strtab()
1050 smb_info_bcopy(stp->smbst_hdr, &s, sizeof (s)); in smbios_info_strtab()
1066 return (-1); /* errno is set for us */ in smbios_info_lang()
1068 smb_info_bcopy(stp->smbst_hdr, &l, sizeof (l)); in smbios_info_lang()
1071 lp->smbla_cur = smb_strptr(stp, l.smblang_cur); in smbios_info_lang()
1072 lp->smbla_fmt = l.smblang_flags & 1; in smbios_info_lang()
1073 lp->smbla_num = l.smblang_num; in smbios_info_lang()
1075 return (stp->smbst_hdr->smbh_hdl); in smbios_info_lang()
1082 const smb_sel_t *sel; in smbios_info_eventlog() local
1086 return (-1); /* errno is set for us */ in smbios_info_eventlog()
1088 if (stp->smbst_hdr->smbh_len < sizeof (smb_sel_t) - sizeof (uint8_t)) in smbios_info_eventlog()
1091 sel = (smb_sel_t *)(uintptr_t)stp->smbst_hdr; in smbios_info_eventlog()
1092 len = stp->smbst_hdr->smbh_len - sizeof (smb_sel_t) + sizeof (uint8_t); in smbios_info_eventlog()
1095 if (len < sel->smbsel_typec * sel->smbsel_typesz) in smbios_info_eventlog()
1098 evp->smbev_size = sel->smbsel_len; in smbios_info_eventlog()
1099 evp->smbev_hdr = sel->smbsel_hdroff; in smbios_info_eventlog()
1100 evp->smbev_data = sel->smbsel_dataoff; in smbios_info_eventlog()
1101 evp->smbev_method = sel->smbsel_method; in smbios_info_eventlog()
1102 evp->smbev_flags = sel->smbsel_status; in smbios_info_eventlog()
1103 evp->smbev_format = sel->smbsel_format; in smbios_info_eventlog()
1104 evp->smbev_token = sel->smbsel_token; in smbios_info_eventlog()
1105 evp->smbev_addr.eva_addr = sel->smbsel_addr; in smbios_info_eventlog()
1107 if (sel->smbsel_typesz == sizeof (smbios_evtype_t)) { in smbios_info_eventlog()
1108 evp->smbev_typec = sel->smbsel_typec; in smbios_info_eventlog()
1109 evp->smbev_typev = (void *)(uintptr_t)sel->smbsel_typev; in smbios_info_eventlog()
1112 return (stp->smbst_hdr->smbh_hdl); in smbios_info_eventlog()
1122 return (-1); /* errno is set for us */ in smbios_info_memarray()
1124 if (stp->smbst_hdr->smbh_type != SMB_TYPE_MEMARRAY) in smbios_info_memarray()
1127 smb_info_bcopy(stp->smbst_hdr, &m, sizeof (m)); in smbios_info_memarray()
1130 map->smbma_location = m.smbmarr_loc; in smbios_info_memarray()
1131 map->smbma_use = m.smbmarr_use; in smbios_info_memarray()
1132 map->smbma_ecc = m.smbmarr_ecc; in smbios_info_memarray()
1133 map->smbma_ndevs = m.smbmarr_ndevs; in smbios_info_memarray()
1134 map->smbma_err = m.smbmarr_err; in smbios_info_memarray()
1137 map->smbma_size = (uint64_t)m.smbmarr_cap * 1024; in smbios_info_memarray()
1139 map->smbma_size = m.smbmarr_extcap; in smbios_info_memarray()
1141 map->smbma_size = 0; /* unknown */ in smbios_info_memarray()
1153 return (-1); /* errno is set for us */ in smbios_info_memarrmap()
1155 if (stp->smbst_hdr->smbh_type != SMB_TYPE_MEMARRAYMAP) in smbios_info_memarrmap()
1158 smb_info_bcopy(stp->smbst_hdr, &m, sizeof (m)); in smbios_info_memarrmap()
1161 map->smbmam_array = m.smbamap_array; in smbios_info_memarrmap()
1162 map->smbmam_width = m.smbamap_width; in smbios_info_memarrmap()
1165 map->smbmam_addr = (uint64_t)m.smbamap_start * 1024; in smbios_info_memarrmap()
1166 map->smbmam_size = (uint64_t) in smbios_info_memarrmap()
1167 (m.smbamap_end - m.smbamap_start + 1) * 1024; in smbios_info_memarrmap()
1169 map->smbmam_addr = m.smbamap_extstart; in smbios_info_memarrmap()
1170 map->smbmam_size = m.smbamap_extend - m.smbamap_extstart + 1; in smbios_info_memarrmap()
1183 return (-1); /* errno is set for us */ in smbios_info_memdevice()
1185 if (stp->smbst_hdr->smbh_type != SMB_TYPE_MEMDEVICE) in smbios_info_memdevice()
1188 smb_info_bcopy(stp->smbst_hdr, &m, sizeof (m)); in smbios_info_memdevice()
1191 mdp->smbmd_array = m.smbmdev_array; in smbios_info_memdevice()
1192 mdp->smbmd_error = m.smbmdev_error; in smbios_info_memdevice()
1193 mdp->smbmd_twidth = m.smbmdev_twidth == 0xFFFF ? -1U : m.smbmdev_twidth; in smbios_info_memdevice()
1194 mdp->smbmd_dwidth = m.smbmdev_dwidth == 0xFFFF ? -1U : m.smbmdev_dwidth; in smbios_info_memdevice()
1197 mdp->smbmd_size = (uint64_t)m.smbmdev_extsize; in smbios_info_memdevice()
1198 mdp->smbmd_size *= 1024 * 1024; /* convert MB to bytes */ in smbios_info_memdevice()
1200 mdp->smbmd_size = (uint64_t)(m.smbmdev_size & ~SMB_MDS_KBYTES); in smbios_info_memdevice()
1202 mdp->smbmd_size *= 1024; in smbios_info_memdevice()
1204 mdp->smbmd_size *= 1024 * 1024; in smbios_info_memdevice()
1206 mdp->smbmd_size = -1ULL; /* size unknown */ in smbios_info_memdevice()
1208 mdp->smbmd_form = m.smbmdev_form; in smbios_info_memdevice()
1209 mdp->smbmd_set = m.smbmdev_set; in smbios_info_memdevice()
1210 mdp->smbmd_type = m.smbmdev_type; in smbios_info_memdevice()
1211 mdp->smbmd_speed = m.smbmdev_speed; in smbios_info_memdevice()
1212 mdp->smbmd_flags = m.smbmdev_flags; in smbios_info_memdevice()
1213 mdp->smbmd_dloc = smb_strptr(stp, m.smbmdev_dloc); in smbios_info_memdevice()
1214 mdp->smbmd_bloc = smb_strptr(stp, m.smbmdev_bloc); in smbios_info_memdevice()
1217 mdp->smbmd_rank = m.smbmdev_attrs & 0x0F; in smbios_info_memdevice()
1221 mdp->smbmd_clkspeed = m.smbmdev_clkspeed; in smbios_info_memdevice()
1225 mdp->smbmd_minvolt = m.smbmdev_minvolt; in smbios_info_memdevice()
1226 mdp->smbmd_maxvolt = m.smbmdev_maxvolt; in smbios_info_memdevice()
1227 mdp->smbmd_confvolt = m.smbmdev_confvolt; in smbios_info_memdevice()
1231 mdp->smbmd_memtech = m.smbmdev_memtech; in smbios_info_memdevice()
1232 mdp->smbmd_opcap_flags = m.smbmdev_opmode; in smbios_info_memdevice()
1233 mdp->smbmd_firmware_rev = smb_strptr(stp, in smbios_info_memdevice()
1235 mdp->smbmd_modmfg_id = m.smbmdev_modulemfgid; in smbios_info_memdevice()
1236 mdp->smbmd_modprod_id = m.smbmdev_moduleprodid; in smbios_info_memdevice()
1237 mdp->smbmd_cntrlmfg_id = m.smbmdev_memsysmfgid; in smbios_info_memdevice()
1238 mdp->smbmd_cntrlprod_id = m.smbmdev_memsysprodid; in smbios_info_memdevice()
1239 mdp->smbmd_nvsize = m.smbmdev_nvsize; in smbios_info_memdevice()
1240 mdp->smbmd_volatile_size = m.smbmdev_volsize; in smbios_info_memdevice()
1241 mdp->smbmd_cache_size = m.smbmdev_cachesize; in smbios_info_memdevice()
1242 mdp->smbmd_logical_size = m.smbmdev_logicalsize; in smbios_info_memdevice()
1247 mdp->smbmd_extspeed = m.smbmdev_extspeed; in smbios_info_memdevice()
1249 mdp->smbmd_extspeed = m.smbmdev_speed; in smbios_info_memdevice()
1253 mdp->smbmd_extclkspeed = m.smbmdev_extclkspeed; in smbios_info_memdevice()
1255 mdp->smbmd_extclkspeed = m.smbmdev_clkspeed; in smbios_info_memdevice()
1274 mdp->smbmd_pmic0_mfgid = m.smbmdev_pmic0mfgid; in smbios_info_memdevice()
1275 mdp->smbmd_pmic0_rev = m.smbmdev_pmic0rev; in smbios_info_memdevice()
1276 mdp->smbmd_rcd_mfgid = m.smbmdev_rcdmfgid; in smbios_info_memdevice()
1277 mdp->smbmd_rcd_rev = m.smbmdev_rcdrev; in smbios_info_memdevice()
1290 return (-1); /* errno is set for us */ in smbios_info_memdevmap()
1292 if (stp->smbst_hdr->smbh_type != SMB_TYPE_MEMDEVICEMAP) in smbios_info_memdevmap()
1295 smb_info_bcopy(stp->smbst_hdr, &m, sizeof (m)); in smbios_info_memdevmap()
1298 mdp->smbmdm_device = m.smbdmap_device; in smbios_info_memdevmap()
1299 mdp->smbmdm_arrmap = m.smbdmap_array; in smbios_info_memdevmap()
1300 mdp->smbmdm_rpos = m.smbdmap_rpos; in smbios_info_memdevmap()
1301 mdp->smbmdm_ipos = m.smbdmap_ipos; in smbios_info_memdevmap()
1302 mdp->smbmdm_idepth = m.smbdmap_idepth; in smbios_info_memdevmap()
1305 mdp->smbmdm_addr = (uint64_t)m.smbdmap_start * 1024; in smbios_info_memdevmap()
1306 mdp->smbmdm_size = (uint64_t) in smbios_info_memdevmap()
1307 (m.smbdmap_end - m.smbdmap_start + 1) * 1024; in smbios_info_memdevmap()
1309 mdp->smbmdm_addr = m.smbdmap_extstart; in smbios_info_memdevmap()
1310 mdp->smbmdm_size = m.smbdmap_extend - m.smbdmap_extstart + 1; in smbios_info_memdevmap()
1323 return (-1); /* errno is set for us */ in smbios_info_hwsec()
1325 smb_info_bcopy(stp->smbst_hdr, &hs, sizeof (hs)); in smbios_info_hwsec()
1328 hsp->smbh_pwr_ps = SMB_HWS_PWR_PS(hs.smbhs_settings); in smbios_info_hwsec()
1329 hsp->smbh_kbd_ps = SMB_HWS_KBD_PS(hs.smbhs_settings); in smbios_info_hwsec()
1330 hsp->smbh_adm_ps = SMB_HWS_ADM_PS(hs.smbhs_settings); in smbios_info_hwsec()
1331 hsp->smbh_pan_ps = SMB_HWS_PAN_PS(hs.smbhs_settings); in smbios_info_hwsec()
1333 return (stp->smbst_hdr->smbh_hdl); in smbios_info_hwsec()
1343 return (-1); /* errno is set for us */ in smbios_info_boot()
1347 b = (smb_boot_t *)(uintptr_t)stp->smbst_hdr; in smbios_info_boot()
1349 bp->smbt_status = b->smbbo_status[0]; in smbios_info_boot()
1350 bp->smbt_size = stp->smbst_hdr->smbh_len - sizeof (smb_boot_t); in smbios_info_boot()
1351 bp->smbt_data = bp->smbt_size ? &b->smbbo_status[1] : NULL; in smbios_info_boot()
1353 return (stp->smbst_hdr->smbh_hdl); in smbios_info_boot()
1363 return (-1); /* errno is set for us */ in smbios_info_ipmi()
1365 smb_info_bcopy(stp->smbst_hdr, &i, sizeof (i)); in smbios_info_ipmi()
1368 ip->smbip_type = i.smbipm_type; in smbios_info_ipmi()
1369 ip->smbip_vers.smbv_major = SMB_IPM_SPEC_MAJOR(i.smbipm_spec); in smbios_info_ipmi()
1370 ip->smbip_vers.smbv_minor = SMB_IPM_SPEC_MINOR(i.smbipm_spec); in smbios_info_ipmi()
1371 ip->smbip_i2c = i.smbipm_i2c; in smbios_info_ipmi()
1372 ip->smbip_addr = i.smbipm_addr & ~SMB_IPM_ADDR_IO; in smbios_info_ipmi()
1373 ip->smbip_intr = i.smbipm_intr; in smbios_info_ipmi()
1375 if (i.smbipm_bus != (uint8_t)-1) in smbios_info_ipmi()
1376 ip->smbip_bus = i.smbipm_bus; in smbios_info_ipmi()
1378 ip->smbip_bus = -1u; in smbios_info_ipmi()
1381 ip->smbip_addr |= 1; /* turn on least-significant bit of addr */ in smbios_info_ipmi()
1386 ip->smbip_regspacing = 1; in smbios_info_ipmi()
1389 ip->smbip_regspacing = 4; in smbios_info_ipmi()
1392 ip->smbip_regspacing = 16; in smbios_info_ipmi()
1395 ip->smbip_regspacing = 1; in smbios_info_ipmi()
1397 ip->smbip_flags |= SMB_IPMI_F_IOADDR; in smbios_info_ipmi()
1401 ip->smbip_flags |= SMB_IPMI_F_INTRSPEC; in smbios_info_ipmi()
1404 ip->smbip_flags |= SMB_IPMI_F_INTRHIGH; in smbios_info_ipmi()
1407 ip->smbip_flags |= SMB_IPMI_F_INTREDGE; in smbios_info_ipmi()
1409 return (stp->smbst_hdr->smbh_hdl); in smbios_info_ipmi()
1415 const smb_struct_t *stp = shp->sh_structs; in smbios_has_oemstr()
1419 for (i = 0; i < shp->sh_nstructs; i++, stp++) { in smbios_has_oemstr()
1420 if (stp->smbst_hdr->smbh_type != SMB_TYPE_OEMSTR) in smbios_has_oemstr()
1423 smb_info_bcopy(stp->smbst_hdr, &s, sizeof (s)); in smbios_has_oemstr()
1475 smbios_info_common(shp, stp->smbst_hdr->smbh_hdl, &s1) == SMB_ERR) in smb_get_sn()
1480 smbios_info_common(shp, stp->smbst_hdr->smbh_hdl, &s3) == SMB_ERR) in smb_get_sn()
1517 return (-1); /* errno is set for us */ in smbios_info_extprocessor()
1519 if (stp->smbst_hdr->smbh_type != SUN_OEM_EXT_PROCESSOR) in smbios_info_extprocessor()
1522 exp = (smb_processor_ext_t *)(uintptr_t)stp->smbst_hdr; in smbios_info_extprocessor()
1525 epp->smbpe_processor = exp->smbpre_processor; in smbios_info_extprocessor()
1526 epp->smbpe_fru = exp->smbpre_fru; in smbios_info_extprocessor()
1527 epp->smbpe_n = exp->smbpre_n; in smbios_info_extprocessor()
1528 epp->smbpe_apicid = exp->smbpre_apicid; in smbios_info_extprocessor()
1540 return (-1); /* errno is set for us */ in smbios_info_extport()
1542 if (stp->smbst_hdr->smbh_type != SUN_OEM_EXT_PORT) in smbios_info_extport()
1545 ep = (smb_port_ext_t *)(uintptr_t)stp->smbst_hdr; in smbios_info_extport()
1548 eportp->smbporte_chassis = ep->smbpoe_chassis; in smbios_info_extport()
1549 eportp->smbporte_port = ep->smbpoe_port; in smbios_info_extport()
1550 eportp->smbporte_dtype = ep->smbpoe_dtype; in smbios_info_extport()
1551 eportp->smbporte_devhdl = ep->smbpoe_devhdl; in smbios_info_extport()
1552 eportp->smbporte_phy = ep->smbpoe_phy; in smbios_info_extport()
1565 return (-1); /* errno is set for us */ in smbios_info_pciexrc()
1567 if (stp->smbst_hdr->smbh_type != SUN_OEM_PCIEXRC) in smbios_info_pciexrc()
1570 smb_info_bcopy(stp->smbst_hdr, &rc, sizeof (rc)); in smbios_info_pciexrc()
1573 rcp->smbpcie_bb = rc.smbpciexrc_bboard; in smbios_info_pciexrc()
1574 rcp->smbpcie_bdf = rc.smbpciexrc_bdf; in smbios_info_pciexrc()
1586 return (-1); /* errno is set for us */ in smbios_info_extmemarray()
1588 if (stp->smbst_hdr->smbh_type != SUN_OEM_EXT_MEMARRAY) in smbios_info_extmemarray()
1591 smb_info_bcopy(stp->smbst_hdr, &exma, sizeof (exma)); in smbios_info_extmemarray()
1594 emap->smbmae_ma = exma.smbmarre_ma; in smbios_info_extmemarray()
1595 emap->smbmae_comp = exma.smbmarre_component; in smbios_info_extmemarray()
1596 emap->smbmae_bdf = exma.smbmarre_bdf; in smbios_info_extmemarray()
1609 return (-1); /* errno is set for us */ in smbios_info_extmemdevice()
1611 if (stp->smbst_hdr->smbh_type != SUN_OEM_EXT_MEMDEVICE) in smbios_info_extmemdevice()
1614 smb_info_bcopy(stp->smbst_hdr, &exmd, sizeof (exmd)); in smbios_info_extmemdevice()
1617 emdp->smbmdeve_md = exmd.smbmdeve_mdev; in smbios_info_extmemdevice()
1618 emdp->smbmdeve_drch = exmd.smbmdeve_dchan; in smbios_info_extmemdevice()
1619 emdp->smbmdeve_ncs = exmd.smbmdeve_ncs; in smbios_info_extmemdevice()
1634 return (-1); /* errno is set for us */ in smbios_info_extmemdevice_cs()
1636 if (stp->smbst_hdr->smbh_type != SUN_OEM_EXT_MEMDEVICE) in smbios_info_extmemdevice_cs()
1639 smb_info_bcopy(stp->smbst_hdr, &exmd, sizeof (exmd)); in smbios_info_extmemdevice_cs()
1648 if (stp->smbst_hdr->smbh_len < sizeof (exmd) + size) in smbios_info_extmemdevice_cs()
1654 smb_info_bcopy_offset(stp->smbst_hdr, buf, size, sizeof (exmd)); in smbios_info_extmemdevice_cs()
1681 return (-1); /* errno is set for us */ in smbios_info_powersup()
1683 if (stp->smbst_hdr->smbh_type != SMB_TYPE_POWERSUP) in smbios_info_powersup()
1687 if (stp->smbst_hdr->smbh_len < 0x10) in smbios_info_powersup()
1691 smb_info_bcopy(stp->smbst_hdr, &psu, sizeof (psu)); in smbios_info_powersup()
1692 psup->smbps_group = psu.smbpsup_group; in smbios_info_powersup()
1693 psup->smbps_maxout = psu.smbpsup_max; in smbios_info_powersup()
1696 psup->smbps_flags |= SMB_POWERSUP_F_HOT; in smbios_info_powersup()
1698 psup->smbps_flags |= SMB_POWERSUP_F_PRESENT; in smbios_info_powersup()
1700 psup->smbps_flags |= SMB_POWERSUP_F_UNPLUG; in smbios_info_powersup()
1702 psup->smbps_ivrs = SMB_PSU_CHARS_IVRS(psu.smbpsup_char); in smbios_info_powersup()
1703 psup->smbps_status = SMB_PSU_CHARS_STATUS(psu.smbpsup_char); in smbios_info_powersup()
1704 psup->smbps_pstype = SMB_PSU_CHARS_TYPE(psu.smbpsup_char); in smbios_info_powersup()
1706 if (stp->smbst_hdr->smbh_len >= 0x12) { in smbios_info_powersup()
1707 psup->smbps_vprobe = psu.smbpsup_vprobe; in smbios_info_powersup()
1709 psup->smbps_vprobe = 0xffff; in smbios_info_powersup()
1712 if (stp->smbst_hdr->smbh_len >= 0x14) { in smbios_info_powersup()
1713 psup->smbps_cooldev = psu.smbpsup_cooldev; in smbios_info_powersup()
1715 psup->smbps_cooldev = 0xffff; in smbios_info_powersup()
1718 if (stp->smbst_hdr->smbh_len >= 0x16) { in smbios_info_powersup()
1719 psup->smbps_iprobe = psu.smbpsup_iprobe; in smbios_info_powersup()
1721 psup->smbps_iprobe = 0xffff; in smbios_info_powersup()
1734 return (-1); /* errno is set for us */ in smbios_info_vprobe()
1736 if (stp->smbst_hdr->smbh_type != SMB_TYPE_VPROBE) in smbios_info_vprobe()
1739 if (stp->smbst_hdr->smbh_len < SMB_VPROBE_MINLEN) in smbios_info_vprobe()
1743 smb_info_bcopy(stp->smbst_hdr, &vp, sizeof (vp)); in smbios_info_vprobe()
1744 vprobe->smbvp_description = smb_strptr(stp, vp.smbvpr_descr); in smbios_info_vprobe()
1745 vprobe->smbvp_location = SMB_VPROBE_LOCATION(vp.smbvpr_locstat); in smbios_info_vprobe()
1746 vprobe->smbvp_status = SMB_VPROBE_STATUS(vp.smbvpr_locstat); in smbios_info_vprobe()
1747 vprobe->smbvp_maxval = vp.smbvpr_maxval; in smbios_info_vprobe()
1748 vprobe->smbvp_minval = vp.smbvpr_minval; in smbios_info_vprobe()
1749 vprobe->smbvp_resolution = vp.smbvpr_resolution; in smbios_info_vprobe()
1750 vprobe->smbvp_tolerance = vp.smbvpr_tolerance; in smbios_info_vprobe()
1751 vprobe->smbvp_accuracy = vp.smbvpr_accuracy; in smbios_info_vprobe()
1753 if (stp->smbst_hdr->smbh_len >= SMB_VPROBE_NOMINAL_MINLEN) { in smbios_info_vprobe()
1754 vprobe->smbvp_nominal = vp.smbvpr_nominal; in smbios_info_vprobe()
1756 vprobe->smbvp_nominal = SMB_PROBE_UNKNOWN_VALUE; in smbios_info_vprobe()
1769 return (-1); /* errno is set for us */ in smbios_info_cooldev()
1771 if (stp->smbst_hdr->smbh_type != SMB_TYPE_COOLDEV) in smbios_info_cooldev()
1774 if (stp->smbst_hdr->smbh_len < SMB_COOLDEV_MINLEN) in smbios_info_cooldev()
1778 smb_info_bcopy(stp->smbst_hdr, &cd, sizeof (cd)); in smbios_info_cooldev()
1779 cooldev->smbcd_tprobe = cd.smbcdev_tprobe; in smbios_info_cooldev()
1780 cooldev->smbcd_type = SMB_COOLDEV_TYPE(cd.smbcdev_typstat); in smbios_info_cooldev()
1781 cooldev->smbcd_status = SMB_COOLDEV_STATUS(cd.smbcdev_typstat); in smbios_info_cooldev()
1782 cooldev->smbcd_group = cd.smbcdev_group; in smbios_info_cooldev()
1783 cooldev->smbcd_oem = cd.smbcdev_oem; in smbios_info_cooldev()
1785 if (stp->smbst_hdr->smbh_len >= SMB_COOLDEV_NOMINAL_MINLEN) { in smbios_info_cooldev()
1786 cooldev->smbcd_nominal = cd.smbcdev_nominal; in smbios_info_cooldev()
1788 cooldev->smbcd_nominal = SMB_PROBE_UNKNOWN_VALUE; in smbios_info_cooldev()
1800 stp->smbst_hdr->smbh_len >= SMB_COOLDEV_DESCR_MINLEN) { in smbios_info_cooldev()
1801 cooldev->smbcd_descr = smb_strptr(stp, cd.smbcdev_descr); in smbios_info_cooldev()
1803 cooldev->smbcd_descr = NULL; in smbios_info_cooldev()
1816 return (-1); /* errno is set for us */ in smbios_info_tprobe()
1818 if (stp->smbst_hdr->smbh_type != SMB_TYPE_TPROBE) in smbios_info_tprobe()
1821 if (stp->smbst_hdr->smbh_len < SMB_TPROBE_MINLEN) in smbios_info_tprobe()
1825 smb_info_bcopy(stp->smbst_hdr, &tp, sizeof (tp)); in smbios_info_tprobe()
1826 tprobe->smbtp_description = smb_strptr(stp, tp.smbtpr_descr); in smbios_info_tprobe()
1827 tprobe->smbtp_location = SMB_TPROBE_LOCATION(tp.smbtpr_locstat); in smbios_info_tprobe()
1828 tprobe->smbtp_status = SMB_TPROBE_STATUS(tp.smbtpr_locstat); in smbios_info_tprobe()
1829 tprobe->smbtp_maxval = tp.smbtpr_maxval; in smbios_info_tprobe()
1830 tprobe->smbtp_minval = tp.smbtpr_minval; in smbios_info_tprobe()
1831 tprobe->smbtp_resolution = tp.smbtpr_resolution; in smbios_info_tprobe()
1832 tprobe->smbtp_tolerance = tp.smbtpr_tolerance; in smbios_info_tprobe()
1833 tprobe->smbtp_accuracy = tp.smbtpr_accuracy; in smbios_info_tprobe()
1835 if (stp->smbst_hdr->smbh_len >= SMB_TPROBE_NOMINAL_MINLEN) { in smbios_info_tprobe()
1836 tprobe->smbtp_nominal = tp.smbtpr_nominal; in smbios_info_tprobe()
1838 tprobe->smbtp_nominal = SMB_PROBE_UNKNOWN_VALUE; in smbios_info_tprobe()
1851 return (-1); /* errno is set for us */ in smbios_info_iprobe()
1853 if (sip->smbst_hdr->smbh_type != SMB_TYPE_IPROBE) in smbios_info_iprobe()
1856 if (sip->smbst_hdr->smbh_len < SMB_IPROBE_MINLEN) in smbios_info_iprobe()
1860 smb_info_bcopy(sip->smbst_hdr, &ip, sizeof (ip)); in smbios_info_iprobe()
1861 iprobe->smbip_description = smb_strptr(sip, ip.smbipr_descr); in smbios_info_iprobe()
1862 iprobe->smbip_location = SMB_IPROBE_LOCATION(ip.smbipr_locstat); in smbios_info_iprobe()
1863 iprobe->smbip_status = SMB_IPROBE_STATUS(ip.smbipr_locstat); in smbios_info_iprobe()
1864 iprobe->smbip_maxval = ip.smbipr_maxval; in smbios_info_iprobe()
1865 iprobe->smbip_minval = ip.smbipr_minval; in smbios_info_iprobe()
1866 iprobe->smbip_resolution = ip.smbipr_resolution; in smbios_info_iprobe()
1867 iprobe->smbip_tolerance = ip.smbipr_tolerance; in smbios_info_iprobe()
1868 iprobe->smbip_accuracy = ip.smbipr_accuracy; in smbios_info_iprobe()
1870 if (sip->smbst_hdr->smbh_len >= SMB_IPROBE_NOMINAL_MINLEN) { in smbios_info_iprobe()
1871 iprobe->smbip_nominal = ip.smbipr_nominal; in smbios_info_iprobe()
1873 iprobe->smbip_nominal = SMB_PROBE_UNKNOWN_VALUE; in smbios_info_iprobe()
1887 return (-1); /* errno is set for us */ in smbios_info_processor_info()
1889 if (stp->smbst_hdr->smbh_type != SMB_TYPE_PROCESSOR_INFO) in smbios_info_processor_info()
1892 if (stp->smbst_hdr->smbh_len < sizeof (pi)) in smbios_info_processor_info()
1896 smb_info_bcopy(stp->smbst_hdr, &pi, sizeof (pi)); in smbios_info_processor_info()
1898 if (sizeof (pi) + pi.smbpai_len > stp->smbst_hdr->smbh_len) in smbios_info_processor_info()
1901 proc->smbpi_processor = pi.smbpai_proc; in smbios_info_processor_info()
1902 proc->smbpi_ptype = pi.smbpai_type; in smbios_info_processor_info()
1916 return (-1); /* errno is set for us */ in smbios_info_processor_riscv()
1919 if (stp->smbst_hdr->smbh_type != SMB_TYPE_PROCESSOR_INFO) { in smbios_info_processor_riscv()
1923 if (stp->smbst_hdr->smbh_len < sizeof (*proc)) { in smbios_info_processor_riscv()
1927 proc = (const smb_processor_info_t *)stp->smbst_hdr; in smbios_info_processor_riscv()
1928 if (sizeof (*proc) + proc->smbpai_len > stp->smbst_hdr->smbh_len) { in smbios_info_processor_riscv()
1932 switch (proc->smbpai_type) { in smbios_info_processor_riscv()
1941 if (stp->smbst_hdr->smbh_len < sizeof (*proc) + sizeof (*rv)) { in smbios_info_processor_riscv()
1944 rv = (const smb_processor_info_riscv_t *)&proc->smbpai_data[0]; in smbios_info_processor_riscv()
1945 if (rv->smbpairv_len != sizeof (*rv)) { in smbios_info_processor_riscv()
1949 bcopy(rv->smbpairv_hartid, riscv->smbpirv_hartid, in smbios_info_processor_riscv()
1950 sizeof (riscv->smbpirv_hartid)); in smbios_info_processor_riscv()
1951 bcopy(rv->smbpairv_vendid, riscv->smbpirv_vendid, in smbios_info_processor_riscv()
1952 sizeof (riscv->smbpirv_vendid)); in smbios_info_processor_riscv()
1953 bcopy(rv->smbpairv_archid, riscv->smbpirv_archid, in smbios_info_processor_riscv()
1954 sizeof (riscv->smbpirv_archid)); in smbios_info_processor_riscv()
1955 bcopy(rv->smbpairv_machid, riscv->smbpirv_machid, in smbios_info_processor_riscv()
1956 sizeof (riscv->smbpirv_machid)); in smbios_info_processor_riscv()
1957 bcopy(rv->smbpairv_metdi, riscv->smbpirv_metdi, in smbios_info_processor_riscv()
1958 sizeof (riscv->smbpirv_metdi)); in smbios_info_processor_riscv()
1959 bcopy(rv->smbpairv_mitdi, riscv->smbpirv_mitdi, in smbios_info_processor_riscv()
1960 sizeof (riscv->smbpirv_mitdi)); in smbios_info_processor_riscv()
1961 riscv->smbpirv_isa = rv->smbpairv_isa; in smbios_info_processor_riscv()
1962 riscv->smbpirv_privlvl = rv->smbpairv_privlvl; in smbios_info_processor_riscv()
1963 riscv->smbpirv_boothart = rv->smbpairv_boot; in smbios_info_processor_riscv()
1964 riscv->smbpirv_xlen = rv->smbpairv_xlen; in smbios_info_processor_riscv()
1965 riscv->smbpirv_mxlen = rv->smbpairv_mxlen; in smbios_info_processor_riscv()
1966 riscv->smbpirv_sxlen = rv->smbpairv_sxlen; in smbios_info_processor_riscv()
1967 riscv->smbpirv_uxlen = rv->smbpairv_uxlen; in smbios_info_processor_riscv()
1979 return (-1); /* errno is set for us */ in smbios_info_pointdev()
1982 if (stp->smbst_hdr->smbh_type != SMB_TYPE_POINTDEV) { in smbios_info_pointdev()
1986 if (stp->smbst_hdr->smbh_len < sizeof (point)) { in smbios_info_pointdev()
1991 smb_info_bcopy(stp->smbst_hdr, &point, sizeof (point)); in smbios_info_pointdev()
1993 pd->smbpd_type = point.smbpdev_type; in smbios_info_pointdev()
1994 pd->smbpd_iface = point.smbpdev_iface; in smbios_info_pointdev()
1995 pd->smbpd_nbuttons = point.smbpdev_nbuttons; in smbios_info_pointdev()
2007 return (-1); /* errno is set for us */ in smbios_info_battery()
2010 if (stp->smbst_hdr->smbh_type != SMB_TYPE_BATTERY) { in smbios_info_battery()
2014 if (stp->smbst_hdr->smbh_len < sizeof (bat)) { in smbios_info_battery()
2019 smb_info_bcopy(stp->smbst_hdr, &bat, sizeof (bat)); in smbios_info_battery()
2025 bp->smbb_date = smb_strptr(stp, bat.smbbat_date); in smbios_info_battery()
2027 bp->smbb_date = NULL; in smbios_info_battery()
2034 bp->smbb_serial = smb_strptr(stp, bat.smbbat_serial); in smbios_info_battery()
2036 bp->smbb_serial = NULL; in smbios_info_battery()
2039 bp->smbb_chem = bat.smbbat_chem; in smbios_info_battery()
2040 bp->smbb_cap = bat.smbbat_cap; in smbios_info_battery()
2042 bp->smbb_cap *= bat.smbbat_mult; in smbios_info_battery()
2044 bp->smbb_volt = bat.smbbat_volt; in smbios_info_battery()
2045 bp->smbb_version = smb_strptr(stp, bat.smbbat_version); in smbios_info_battery()
2046 bp->smbb_err = bat.smbbat_err; in smbios_info_battery()
2047 bp->smbb_ssn = bat.smbbat_ssn; in smbios_info_battery()
2048 bp->smbb_syear = 1980 + (bat.smbbat_sdate >> 9); in smbios_info_battery()
2049 bp->smbb_smonth = (bat.smbbat_sdate >> 5) & 0xf; in smbios_info_battery()
2050 bp->smbb_sday = bat.smbbat_sdate & 0x1f; in smbios_info_battery()
2051 bp->smbb_schem = smb_strptr(stp, bat.smbbat_schem); in smbios_info_battery()
2052 bp->smbb_oemdata = bat.smbbat_oemdata; in smbios_info_battery()
2064 return (-1); /* errno is set for us */ in smbios_info_strprop()
2067 if (stp->smbst_hdr->smbh_type != SMB_TYPE_STRPROP) { in smbios_info_strprop()
2071 if (stp->smbst_hdr->smbh_len < sizeof (prop)) { in smbios_info_strprop()
2075 if (stp->smbst_hdr->smbh_len > sizeof (prop)) { in smbios_info_strprop()
2080 smb_info_bcopy(stp->smbst_hdr, &prop, sizeof (prop)); in smbios_info_strprop()
2082 str->smbsp_parent = prop.smbstrp_phdl; in smbios_info_strprop()
2083 str->smbsp_prop_id = prop.smbstrp_prop_id; in smbios_info_strprop()
2084 str->smbsp_prop_val = smb_strptr(stp, prop.smbstrp_prop_val); in smbios_info_strprop()
2096 return (-1); /* errno is set for us */ in smbios_info_fwinfo()
2099 if (stp->smbst_hdr->smbh_type != SMB_TYPE_FWINFO) { in smbios_info_fwinfo()
2103 if (stp->smbst_hdr->smbh_len < sizeof (fw)) { in smbios_info_fwinfo()
2111 smb_info_bcopy(stp->smbst_hdr, &fw, sizeof (fw)); in smbios_info_fwinfo()
2112 fwinfo->smbfw_name = smb_strptr(stp, fw.smbfwii_name); in smbios_info_fwinfo()
2113 fwinfo->smbfw_id = smb_strptr(stp, fw.smbfwii_id); in smbios_info_fwinfo()
2114 fwinfo->smbfw_reldate = smb_strptr(stp, fw.smbfwii_reldate); in smbios_info_fwinfo()
2115 fwinfo->smbfw_lsv = smb_strptr(stp, fw.smbfwii_lsv); in smbios_info_fwinfo()
2116 fwinfo->smbfw_imgsz = fw.smbfwii_imgsz; in smbios_info_fwinfo()
2117 fwinfo->smbfw_chars = fw.smbfwii_chars; in smbios_info_fwinfo()
2118 fwinfo->smbfw_state = fw.smbfwii_state; in smbios_info_fwinfo()
2119 fwinfo->smbfw_ncomps = fw.smbfwii_ncomps; in smbios_info_fwinfo()
2120 fwinfo->smbfw_vers_fmt = fw.smbfwii_vers_fmt; in smbios_info_fwinfo()
2121 fwinfo->smbfw_id_fmt = fw.smbfwii_id_fmt; in smbios_info_fwinfo()
2137 return (-1); /* errno is set for us */ in smbios_info_fwinfo_comps()
2140 if (stp->smbst_hdr->smbh_type != SMB_TYPE_FWINFO) { in smbios_info_fwinfo_comps()
2144 if (stp->smbst_hdr->smbh_len < sizeof (fw)) { in smbios_info_fwinfo_comps()
2148 smb_info_bcopy(stp->smbst_hdr, &fw, sizeof (fw)); in smbios_info_fwinfo_comps()
2156 if (stp->smbst_hdr->smbh_len < need) { in smbios_info_fwinfo_comps()
2168 smb_info_bcopy_offset(stp->smbst_hdr, &id, sizeof (id), off); in smbios_info_fwinfo_comps()
2199 return (-1); /* errno is set for us */ in smbios_info_addinfo_nents()
2202 if (stp->smbst_hdr->smbh_type != SMB_TYPE_ADDINFO) { in smbios_info_addinfo_nents()
2206 if (stp->smbst_hdr->smbh_len < sizeof (add)) { in smbios_info_addinfo_nents()
2210 smb_info_bcopy(stp->smbst_hdr, &add, sizeof (add)); in smbios_info_addinfo_nents()
2219 if (ent->smbai_dlen > 0) { in smbios_info_addinfo_ent_free()
2220 ASSERT3P(ent->smbai_data, !=, NULL); in smbios_info_addinfo_ent_free()
2221 smb_free(ent->smbai_data, ent->smbai_dlen); in smbios_info_addinfo_ent_free()
2239 return (-1); /* errno is set for us */ in smbios_info_addinfo_ent()
2242 if (stp->smbst_hdr->smbh_type != SMB_TYPE_ADDINFO) { in smbios_info_addinfo_ent()
2246 if (stp->smbst_hdr->smbh_len < sizeof (add)) { in smbios_info_addinfo_ent()
2250 smb_info_bcopy(stp->smbst_hdr, &add, sizeof (add)); in smbios_info_addinfo_ent()
2257 if (off + sizeof (ent) > stp->smbst_hdr->smbh_len) { in smbios_info_addinfo_ent()
2261 smb_info_bcopy_offset(stp->smbst_hdr, &ent, sizeof (ent), off); in smbios_info_addinfo_ent()
2266 if (ent.smbaie_len + off > stp->smbst_hdr->smbh_len) { in smbios_info_addinfo_ent()
2280 entry->smbai_ref = ent.smbaie_rhdl; in smbios_info_addinfo_ent()
2281 entry->smbai_ref_off = ent.smbaie_off; in smbios_info_addinfo_ent()
2283 entry->smbai_str = smb_strptr(stp, ent.smbaie_str); in smbios_info_addinfo_ent()
2285 entry->smbai_str = NULL; in smbios_info_addinfo_ent()
2287 entry->smbai_dlen = ent.smbaie_len - sizeof (ent); in smbios_info_addinfo_ent()
2288 if (entry->smbai_dlen > 0) { in smbios_info_addinfo_ent()
2289 entry->smbai_data = smb_alloc(entry->smbai_dlen); in smbios_info_addinfo_ent()
2290 if (entry->smbai_data == NULL) { in smbios_info_addinfo_ent()
2294 smb_info_bcopy_offset(stp->smbst_hdr, entry->smbai_data, in smbios_info_addinfo_ent()
2295 entry->smbai_dlen, off + offsetof(smb_addinfo_ent_t, in smbios_info_addinfo_ent()
2298 entry->smbai_data = NULL; in smbios_info_addinfo_ent()
2312 return (-1); /* errno is set for us */ in smbios_info_tpm()
2315 if (stp->smbst_hdr->smbh_type != SMB_TYPE_TPM) { in smbios_info_tpm()
2319 if (stp->smbst_hdr->smbh_len < sizeof (t)) { in smbios_info_tpm()
2324 smb_info_bcopy(stp->smbst_hdr, &t, sizeof (t)); in smbios_info_tpm()
2325 bcopy(t.smbtpm_vid, tpm->smbtpm_vid, sizeof (t.smbtpm_vid)); in smbios_info_tpm()
2326 tpm->smbtpm_major = t.smbtpm_major; in smbios_info_tpm()
2327 tpm->smbtpm_minor = t.smbtpm_minor; in smbios_info_tpm()
2328 tpm->smbtpm_fwv1 = t.smbtpm_fwv1; in smbios_info_tpm()
2329 tpm->smbtpm_fwv2 = t.smbtpm_fwv2; in smbios_info_tpm()
2330 tpm->smbtpm_desc = smb_strptr(stp, t.smbtpm_desc); in smbios_info_tpm()
2331 tpm->smbtpm_chars = t.smbtpm_chars; in smbios_info_tpm()
2332 tpm->smbtpm_oem = t.smbtpm_oem; in smbios_info_tpm()
2344 return (-1); /* errno is set for us */ in smbios_info_mgmtdev()
2347 if (stp->smbst_hdr->smbh_type != SMB_TYPE_MGMTDEV) { in smbios_info_mgmtdev()
2351 if (stp->smbst_hdr->smbh_len < sizeof (md)) { in smbios_info_mgmtdev()
2356 smb_info_bcopy(stp->smbst_hdr, &md, sizeof (md)); in smbios_info_mgmtdev()
2357 mgmt->smbmd_desc = smb_strptr(stp, md.smbmgd_desc); in smbios_info_mgmtdev()
2358 mgmt->smbmd_dtype = md.smbmgd_dtype; in smbios_info_mgmtdev()
2359 mgmt->smbmd_atype = md.smbmgd_atype; in smbios_info_mgmtdev()
2360 mgmt->smbmd_addr = md.smbmgd_addr; in smbios_info_mgmtdev()
2372 return (-1); /* errno is set for us */ in smbios_info_mgmtcomp()
2375 if (stp->smbst_hdr->smbh_type != SMB_TYPE_MGMTDEVCP) { in smbios_info_mgmtcomp()
2379 if (stp->smbst_hdr->smbh_len < sizeof (mc)) { in smbios_info_mgmtcomp()
2384 smb_info_bcopy(stp->smbst_hdr, &mc, sizeof (mc)); in smbios_info_mgmtcomp()
2385 mgmt->smbmc_desc = smb_strptr(stp, mc.smbmgc_desc); in smbios_info_mgmtcomp()
2386 mgmt->smbmc_mgmtdev = mc.smbmgc_mgmtdev; in smbios_info_mgmtcomp()
2387 mgmt->smbmc_comp = mc.smbmgc_comp; in smbios_info_mgmtcomp()
2388 mgmt->smbmc_thresh = mc.smbmgc_thresh; in smbios_info_mgmtcomp()