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