^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) What: /dev/wmi/dell-smbios
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) Date: November 2017
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) KernelVersion: 4.15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) Contact: "Mario Limonciello" <mario.limonciello@dell.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) Description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) Perform SMBIOS calls on supported Dell machines.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) through the Dell ACPI-WMI interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) IOCTL's and buffer formats are defined in:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) <uapi/linux/wmi.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 1) To perform an SMBIOS call from userspace, you'll need to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) first determine the minimum size of the calling interface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) buffer for your machine.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) Platforms that contain larger buffers can return larger
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) objects from the system firmware.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) Commonly this size is either 4k or 32k.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) To determine the size of the buffer read() a u64 dword from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) the WMI character device /dev/wmi/dell-smbios.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 2) After you've determined the minimum size of the calling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) interface buffer, you can allocate a structure that represents
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) the structure documented above.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 3) In the 'length' object store the size of the buffer you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) determined above and allocated.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 4) In this buffer object, prepare as necessary for the SMBIOS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) call you're interested in. Typically SMBIOS buffers have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) "class", "select", and "input" defined to values that coincide
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) with the data you are interested in.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) Documenting class/select/input values is outside of the scope
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) of this documentation. Check with the libsmbios project for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) further documentation on these values.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 6) Run the call by using ioctl() as described in the header.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 7) The output will be returned in the buffer object.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 8) Be sure to free up your allocated object.