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