162306a36Sopenharmony_ciWhat: /dev/wmi/dell-smbios 262306a36Sopenharmony_ciDate: November 2017 362306a36Sopenharmony_ciKernelVersion: 4.15 462306a36Sopenharmony_ciContact: Dell.Client.Kernel@dell.com 562306a36Sopenharmony_ciDescription: 662306a36Sopenharmony_ci Perform SMBIOS calls on supported Dell machines. 762306a36Sopenharmony_ci through the Dell ACPI-WMI interface. 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci IOCTL's and buffer formats are defined in: 1062306a36Sopenharmony_ci <uapi/linux/wmi.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci 1) To perform an SMBIOS call from userspace, you'll need to 1362306a36Sopenharmony_ci first determine the minimum size of the calling interface 1462306a36Sopenharmony_ci buffer for your machine. 1562306a36Sopenharmony_ci Platforms that contain larger buffers can return larger 1662306a36Sopenharmony_ci objects from the system firmware. 1762306a36Sopenharmony_ci Commonly this size is either 4k or 32k. 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci To determine the size of the buffer read() a u64 dword from 2062306a36Sopenharmony_ci the WMI character device /dev/wmi/dell-smbios. 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci 2) After you've determined the minimum size of the calling 2362306a36Sopenharmony_ci interface buffer, you can allocate a structure that represents 2462306a36Sopenharmony_ci the structure documented above. 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci 3) In the 'length' object store the size of the buffer you 2762306a36Sopenharmony_ci determined above and allocated. 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci 4) In this buffer object, prepare as necessary for the SMBIOS 3062306a36Sopenharmony_ci call you're interested in. Typically SMBIOS buffers have 3162306a36Sopenharmony_ci "class", "select", and "input" defined to values that coincide 3262306a36Sopenharmony_ci with the data you are interested in. 3362306a36Sopenharmony_ci Documenting class/select/input values is outside of the scope 3462306a36Sopenharmony_ci of this documentation. Check with the libsmbios project for 3562306a36Sopenharmony_ci further documentation on these values. 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci 6) Run the call by using ioctl() as described in the header. 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci 7) The output will be returned in the buffer object. 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci 8) Be sure to free up your allocated object. 42