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