drm/atomic-helpers: Make encoder picking more robust
[linux-2.6-block.git] / Documentation / misc-devices / mei / mei.txt
CommitLineData
463ac7f7 1Intel(R) Management Engine Interface (Intel(R) MEI)
cfba6784 2===================================================
6624fc23
OW
3
4Introduction
cfba6784 5============
6624fc23 6
5f9092f3 7The Intel Management Engine (Intel ME) is an isolated and protected computing
463ac7f7
OW
8resource (Co-processor) residing inside certain Intel chipsets. The Intel ME
9provides support for computer/IT management features. The feature set
10depends on the Intel chipset SKU.
6624fc23 11
463ac7f7
OW
12The Intel Management Engine Interface (Intel MEI, previously known as HECI)
13is the interface between the Host and Intel ME. This interface is exposed
14to the host as a PCI device. The Intel MEI Driver is in charge of the
15communication channel between a host application and the Intel ME feature.
6624fc23 16
463ac7f7
OW
17Each Intel ME feature (Intel ME Client) is addressed by a GUID/UUID and
18each client has its own protocol. The protocol is message-based with a
19header and payload up to 512 bytes.
6624fc23 20
463ac7f7 21Prominent usage of the Intel ME Interface is to communicate with Intel(R)
ccd7b014 22Active Management Technology (Intel AMT) implemented in firmware running on
463ac7f7 23the Intel ME.
6624fc23
OW
24
25Intel AMT provides the ability to manage a host remotely out-of-band (OOB)
463ac7f7
OW
26even when the operating system running on the host processor has crashed or
27is in a sleep state.
6624fc23
OW
28
29Some examples of Intel AMT usage are:
30 - Monitoring hardware state and platform components
463ac7f7
OW
31 - Remote power off/on (useful for green computing or overnight IT
32 maintenance)
6624fc23
OW
33 - OS updates
34 - Storage of useful platform information such as software assets
463ac7f7
OW
35 - Built-in hardware KVM
36 - Selective network isolation of Ethernet and IP protocol flows based
37 on policies set by a remote management console
6624fc23
OW
38 - IDE device redirection from remote management console
39
40Intel AMT (OOB) communication is based on SOAP (deprecated
463ac7f7
OW
41starting with Release 6.0) over HTTP/S or WS-Management protocol over
42HTTP/S that are received from a remote management console application.
6624fc23
OW
43
44For more information about Intel AMT:
463ac7f7 45http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
6624fc23 46
cfba6784 47
463ac7f7 48Intel MEI Driver
cfba6784 49================
6624fc23 50
463ac7f7 51The driver exposes a misc device called /dev/mei.
6624fc23 52
463ac7f7 53An application maintains communication with an Intel ME feature while
f6a4e494 54/dev/mei is open. The binding to a specific feature is performed by calling
463ac7f7
OW
55MEI_CONNECT_CLIENT_IOCTL, which passes the desired UUID.
56The number of instances of an Intel ME feature that can be opened
57at the same time depends on the Intel ME feature, but most of the
6624fc23
OW
58features allow only a single instance.
59
463ac7f7 60The Intel AMT Host Interface (Intel AMTHI) feature supports multiple
f6a4e494
TW
61simultaneous user connected applications. The Intel MEI driver
62handles this internally by maintaining request queues for the applications.
6624fc23 63
f6a4e494 64The driver is transparent to data that are passed between firmware feature
463ac7f7 65and host application.
6624fc23 66
463ac7f7
OW
67Because some of the Intel ME features can change the system
68configuration, the driver by default allows only a privileged
6624fc23
OW
69user to access it.
70
f6a4e494
TW
71A code snippet for an application communicating with Intel AMTHI client:
72
6624fc23
OW
73 struct mei_connect_client_data data;
74 fd = open(MEI_DEVICE);
75
76 data.d.in_client_uuid = AMTHI_UUID;
77
78 ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &data);
79
463ac7f7 80 printf("Ver=%d, MaxLen=%ld\n",
6624fc23
OW
81 data.d.in_client_uuid.protocol_version,
82 data.d.in_client_uuid.max_msg_length);
83
84 [...]
85
86 write(fd, amthi_req_data, amthi_req_data_len);
87
88 [...]
89
90 read(fd, &amthi_res_data, amthi_res_data_len);
91
92 [...]
93 close(fd);
94
cfba6784
JB
95
96IOCTL
97=====
98
463ac7f7
OW
99The Intel MEI Driver supports the following IOCTL command:
100 IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client).
101
102 usage:
103 struct mei_connect_client_data clientData;
104 ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &clientData);
105
106 inputs:
107 mei_connect_client_data struct contain the following
108 input field:
109
110 in_client_uuid - UUID of the FW Feature that needs
111 to connect to.
112 outputs:
113 out_client_properties - Client Properties: MTU and Protocol Version.
114
115 error returns:
116 EINVAL Wrong IOCTL Number
117 ENODEV Device or Connection is not initialized or ready.
118 (e.g. Wrong UUID)
119 ENOMEM Unable to allocate memory to client internal data.
120 EFAULT Fatal Error (e.g. Unable to access user input data)
121 EBUSY Connection Already Open
122
123 Notes:
124 max_msg_length (MTU) in client properties describes the maximum
125 data that can be sent or received. (e.g. if MTU=2K, can send
f884ab15 126 requests up to bytes 2k and received responses up to 2k bytes).
463ac7f7 127
cfba6784
JB
128
129Intel ME Applications
130=====================
6624fc23 131
21ef5673
JB
132 1) Intel Local Management Service (Intel LMS)
133
134 Applications running locally on the platform communicate with Intel AMT Release
135 2.0 and later releases in the same way that network applications do via SOAP
136 over HTTP (deprecated starting with Release 6.0) or with WS-Management over
137 SOAP over HTTP. This means that some Intel AMT features can be accessed from a
138 local application using the same network interface as a remote application
139 communicating with Intel AMT over the network.
140
141 When a local application sends a message addressed to the local Intel AMT host
142 name, the Intel LMS, which listens for traffic directed to the host name,
143 intercepts the message and routes it to the Intel MEI.
144 For more information:
145 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
146 Under "About Intel AMT" => "Local Access"
147
148 For downloading Intel LMS:
149 http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/
150
151 The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS
152 firmware feature using a defined UUID and then communicates with the feature
153 using a protocol called Intel AMT Port Forwarding Protocol (Intel APF protocol).
154 The protocol is used to maintain multiple sessions with Intel AMT from a
155 single application.
156
157 See the protocol specification in the Intel AMT Software Development Kit (SDK)
158 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
159 Under "SDK Resources" => "Intel(R) vPro(TM) Gateway (MPS)"
160 => "Information for Intel(R) vPro(TM) Gateway Developers"
161 => "Description of the Intel AMT Port Forwarding (APF) Protocol"
162
163 2) Intel AMT Remote configuration using a Local Agent
164
165 A Local Agent enables IT personnel to configure Intel AMT out-of-the-box
166 without requiring installing additional data to enable setup. The remote
167 configuration process may involve an ISV-developed remote configuration
168 agent that runs on the host.
169 For more information:
170 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
171 Under "Setup and Configuration of Intel AMT" =>
172 "SDK Tools Supporting Setup and Configuration" =>
173 "Using the Local Agent Sample"
174
175 An open source Intel AMT configuration utility, implementing a local agent
176 that accesses the Intel MEI driver, can be found here:
177 http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/
6624fc23 178
6624fc23 179
cfba6784
JB
180Intel AMT OS Health Watchdog
181============================
182
6624fc23
OW
183The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog.
184Whenever the OS hangs or crashes, Intel AMT will send an event
5f9092f3
JM
185to any subscriber to this event. This mechanism means that
186IT knows when a platform crashes even when there is a hard failure on the host.
6624fc23 187
463ac7f7
OW
188The Intel AMT Watchdog is composed of two parts:
189 1) Firmware feature - receives the heartbeats
190 and sends an event when the heartbeats stop.
191 2) Intel MEI driver - connects to the watchdog feature, configures the
192 watchdog and sends the heartbeats.
6624fc23 193
f6a4e494 194The Intel MEI driver uses the kernel watchdog API to configure the Intel AMT
463ac7f7
OW
195Watchdog and to send heartbeats to it. The default timeout of the
196watchdog is 120 seconds.
6624fc23 197
463ac7f7
OW
198If the Intel AMT Watchdog feature does not exist (i.e. the connection failed),
199the Intel MEI driver will disable the sending of heartbeats.
6624fc23 200
cfba6784
JB
201
202Supported Chipsets
6624fc23 203==================
cfba6784 204
6624fc23
OW
2057 Series Chipset Family
2066 Series Chipset Family
2075 Series Chipset Family
2084 Series Chipset Family
209Mobile 4 Series Chipset Family
210ICH9
21182946GZ/GL
21282G35 Express
21382Q963/Q965
21482P965/G965
215Mobile PM965/GM965
216Mobile GME965/GLE960
21782Q35 Express
21882G33/G31/P35/P31 Express
21982Q33 Express
22082X38/X48 Express
221
222---
223linux-mei@linux.intel.com