Project

General

Profile

Actions

Feature #12133

closed

Want support for SMBIOS 3.3

Added by Robert Mustacchi almost 2 years ago. Updated almost 2 years ago.

Status:
Closed
Priority:
Normal
Category:
lib - userland libraries
Start date:
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

Description

SMBIOS 3.3 added a few additional features. The most notable of which include:

  • A new type, 'Processor Additional Information' with a detailed RISC-V subsection
  • Extended clock speeds for memory devices
  • Additional definitions for PCIe Gen 4 and high bandwidth memory (HBM)

As part of this, I also went and extended the test suite to cover this and cleaned up a few parts of the smbios_processor_t to be more in line with how we're handling extensions to structure members when both old values and new values fit.

To test this I manually constructed a RISC-V table and dumped it with the smbios command:

ID    SIZE TYPE
1     121  SMB_TYPE_PROCESSOR_INFO (type 44) (Processor Additional Information)

  Processor Handle: 1
  Processor Type: 7 (64-bit RISC-V (RV64))
  RISC-V Additional Processor Information:
    Boot Hart
    Hart ID:  91 ec 02 09 d7 4f fa 01 01 36 0c fb 40 11 72 47
    Vendor ID:  9b 52 9d e3 2e ef 2e 90 b2 ef 25 7d 9d c0 30 0b
    Architecture ID:  96 a9 00 1f da 83 03 6e 3c 3a 14 32 26 7e 5c 42
    Implementation ID:  00 b2 85 4f 1f e8 2b 0b 46 a5 94 d1 98 c8 21 ac
    ISA: 0x4010d
        SMB_RV_ISA_A (Atomic)
        SMB_RV_ISA_C (Compressed)
        SMB_RV_ISA_D (Double-precision floating-point)
        SMB_RV_ISA_I (Integer base ISA)
        SMB_RV_ISA_S (Supervisor mode)
    Privilege Levels: 0x5
        SMB_RV_PRIV_M (Machine Mode)
        SMB_RV_PRIV_S (Supervisor Mode)
    Machine Exception Trap Delegation:  9a 37 b3 b7 2c dd 90 ce 6f 67 cb 5c 7e 32 28 45
    Machine Interrupt Trap Delegation:  75 c1 fa c2 ae 15 42 a6 89 7f 35 92 2c 32 5f c1
    Register Width: 0x2 (64-bit)
    M-Mode Register Width: 0x2 (64-bit)
    S-Mode Register Width: 0x3 (128-bit)
    U-Mode Register Width: 0x1 (32-bit)

I also ran through the updated test suite which covers validation of these new tables and extensions:

$ dmake install && LD_PRELOAD_32=/ws/rm/smbios/usr/src/lib/libsmbios/i386/libsmbios.so.1 ./smbios 
TEST PASSED: slot tests
TEST PASSED: bad library version
TEST PASSED: memory device 3.2 / 3.2
TEST PASSED: memory device 3.2 / 3.3
TEST PASSED: memory device 3.3
TEST PASSED: memory device 3.3
TEST PASSED: processor additional information - amd64
TEST PASSED: processor additional information - riscv
TEST PASSED: processor additional information - bad table length 1
TEST PASSED: processor additional information - bad table length 2
TEST PASSED: processor additional information - bad table length 3
TEST PASSED: processor additional information - bad table length 4
TEST PASSED: processor additional information - bad type
Actions #1

Updated by Robert Mustacchi almost 2 years ago

I also tested this by running the smbios command before and after the change on a system. The only change was that the 'Extended Family' label went away in cmd/smbios, because it now takes that into account.

Actions #2

Updated by Electric Monk almost 2 years ago

  • Status changed from New to Closed
  • % Done changed from 90 to 100

git commit 176a9270a1856e0e2fddcbc3c7d35aa1f750c6b9

commit  176a9270a1856e0e2fddcbc3c7d35aa1f750c6b9
Author: Robert Mustacchi <rm@fingolfin.org>
Date:   2020-01-11T07:43:21.000Z

    12133 Want support for SMBIOS 3.3
    Reviewed by: Richard Lowe <richlowe@richlowe.net>
    Approved by: Dan McDonald <danmcd@joyent.com>

Actions

Also available in: Atom PDF