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