Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6
[pandora-kernel.git] / drivers / staging / mei / mei.txt
1 Intel MEI
2 =======================
3
4 Introduction
5 =======================
6
7 The Intel Management Engine (Intel ME) is an isolated and
8 protected computing resource (Coprocessor) residing inside
9 Intel chipsets. The Intel ME provides support for computer/IT
10 management features.
11 The Feature set depends on the Intel chipset SKU.
12
13 The Intel Management Engine Interface (Intel MEI, previously known
14 as HECI) is the interface between the Host and Intel ME.
15 This interface is exposed to the host as a PCI device.
16 The Intel MEI Driver is in charge of the communication channel
17 between a host application and the ME feature.
18
19 Each Intel ME feature (Intel ME Client) is addressed by
20 GUID/UUID and each feature defines its own protocol.
21 The protocol is message-based with a header and payload up to
22 512 bytes.
23
24 [place holder to URL to protocol definitions]
25
26 Prominent usage of the Interface is to communicate with
27 Intel Active Management Technology (Intel AMT)
28 implemented in firmware running on the Intel ME.
29
30 Intel AMT provides the ability to manage a host remotely out-of-band (OOB)
31 even when the host processor has crashed or is in a sleep state.
32
33 Some examples of Intel AMT usage are:
34    - Monitoring hardware state and platform components
35    - Remote power off/on (useful for green computing or overnight IT maintenance)
36    - OS updates
37    - Storage of useful platform information such as software assets
38    - built-in hardware KVM
39    - selective network isolation of Ethernet and IP protocol flows based on
40      policies set by a remote management console
41    - IDE device redirection from remote management console
42
43 Intel AMT (OOB) communication is based on SOAP (deprecated
44 starting with Release 6.0) over HTTP/HTTPS or WS-Management protocol
45 over HTTP and HTTPS that are received from a remote
46 management console application.
47
48 For more information about Intel AMT:
49 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/WordDocuments/aboutintelamt.htm
50
51
52 MEI Driver
53 =======================
54
55 The driver exposes a character device called /dev/mei.
56
57 An application maintains communication with an ME feature while
58 /dev/mei is open. The binding to a specific features is performed
59 by calling MEI_CONNECT_CLIENT_IOCTL, which passes the desired UUID.
60 The number of instances of an ME feature that can be opened
61 at the same time depends on the ME feature, but most of the
62 features allow only a single instance.
63
64
65 The Intel AMT Host Interface (AMTHI) feature requires multiple
66 simultaneous user applications, therefore the MEI driver handles
67 this internally by maintaining request queues for the applications.
68
69 The driver is oblivious to data that are passed between
70
71 Because some of the ME features can change the system
72 configuration, the driver by default allows only privileged
73 user to access it.
74
75 A Code snippet for application communicating with AMTHI client:
76         struct mei_connect_client_data data;
77         fd = open(MEI_DEVICE);
78
79         data.d.in_client_uuid = AMTHI_UUID;
80
81         ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &data);
82
83         printf(“Ver=%d, MaxLen=%ld\n”,
84                         data.d.in_client_uuid.protocol_version,
85                         data.d.in_client_uuid.max_msg_length);
86
87         [...]
88
89         write(fd, amthi_req_data, amthi_req_data_len);
90
91         [...]
92
93         read(fd, &amthi_res_data, amthi_res_data_len);
94
95         [...]
96         close(fd);
97
98 ME Applications:
99 ==============
100
101 1) Intel Local Management Service (Intel LMS)
102         Applications running locally on the platform communicate with
103         Intel AMT Release 2.0 and later releases in the same way
104         that network applications do via SOAP over HTTP (deprecated
105         starting with Release 6.0) or with WS-Management over SOAP over
106         HTTP. which means that some Intel AMT feature can be access
107         from a local application using same Network interface as for
108         remote application.
109
110         When a local application sends a message addressed to the local
111         Intel AMT host name, the Local Manageability Service (LMS),
112         which listens for traffic directed to the host name, intercepts
113         the message and routes it to the Intel Management Engine Interface.
114         For more information:
115         http://software.intel.com/sites/manageability/AMT_Implementation_and_
116         Reference_Guide/WordDocuments/localaccess1.htm
117
118         The LMS opens a connection using the MEI driver to the LMS
119         FW feature using a defined UUID and then communicates with the
120         feature using a protocol
121         called Intel(R) AMT Port Forwarding Protocol (APF protocol).
122         The protocol is used to maintain multiple sessions with
123         Intel AMT from a single application.
124         See the protocol specification in
125         the Intel(R) AMT Implementation and Reference Guide
126         http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/HTMLDocuments/MPSDocuments/Intel%20AMT%20Port%20Forwarding%20Protocol%20Reference%20Manual.pdf
127
128   2) Intel AMT Remote configuration using a Local Agent:
129         A Local Agent enables IT personnel to configure Intel AMT out-of-the-box
130         without requiring installing additional data to enable setup.
131         The remote configuration process may involve an ISV-developed remote
132         configuration agent that runs on the host.
133         For more information:
134         http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/WordDocuments/remoteconfigurationwithalocalagent.htm
135
136         How the Local Agent Works (including Command structs):
137         http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/WordDocuments/howthelocalagentsampleworks.htm
138
139 Intel AMT OS Health Watchdog:
140 =============================
141 The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog.
142 Whenever the OS hangs or crashes, Intel AMT will send an event
143 to whoever subscribed to this event. This mechanism means that
144 IT knows when a platform crashes even when there is a hard failure
145 on the host.
146 The AMT Watchdog is composed of two parts:
147         1) FW Feature - that receives the heartbeats
148            and sends an event when the heartbeats stop.
149         2) MEI driver – connects to the watchdog (WD) feature,
150            configures the watchdog and sends the heartbeats.
151
152 The MEI driver configures the Watchdog to expire by default
153 every 120sec unless set by the user using module parameters.
154 The Driver then sends heartbeats every 2sec.
155
156 If WD feature does not exist (i.e. the connection failed),
157 the MEI driver will disable the sending of heartbeats.
158
159 Module Parameters
160 =================
161 watchdog_timeout - the user can use this module parameter
162 to change the watchdog timeout setting.
163
164 This value sets the Intel AMT watchdog timeout interval in seconds;
165 the default value is 120sec.
166 in order to disable the watchdog activites set the value to 0.
167 Normal values should be between 120 and 65535
168
169 Supported Chipsets:
170 ==================
171 7 Series Chipset Family
172 6 Series Chipset Family
173 5 Series Chipset Family
174 4 Series Chipset Family
175 Mobile 4 Series Chipset Family
176 ICH9
177 82946GZ/GL
178 82G35 Express
179 82Q963/Q965
180 82P965/G965
181 Mobile PM965/GM965
182 Mobile GME965/GLE960
183 82Q35 Express
184 82G33/G31/P35/P31 Express
185 82Q33 Express
186 82X38/X48 Express
187
188 ---
189 linux-mei@linux.intel.com