Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging: mei: updating mei driver documentation

The following changes were made in the document:

1. Update URLs to working links
2. remove old information about module parameters
3. Add IOCTL information.
4. cleanups and fix spelling
5. driver changed from character device to misc character device

Signed-off-by: Oren Weil <oren.jer.weil@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by

Oren Weil and committed by
Greg Kroah-Hartman
463ac7f7 e8cd29d8

+123 -97
+123 -97
drivers/staging/mei/mei.txt
··· 1 - Intel MEI 1 + Intel(R) Management Engine Interface (Intel(R) MEI) 2 2 ======================= 3 3 4 4 Introduction 5 5 ======================= 6 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. 7 + The Intel Management Engine (Intel ME) is an isolated andprotected 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. 12 11 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. 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. 18 16 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. 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. 23 20 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. 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. 29 24 30 25 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. 26 + even when the operating system running on the host processor has crashed or 27 + is in a sleep state. 32 28 33 29 Some examples of Intel AMT usage are: 34 30 - Monitoring hardware state and platform components 35 - - Remote power off/on (useful for green computing or overnight IT maintenance) 31 + - Remote power off/on (useful for green computing or overnight IT 32 + maintenance) 36 33 - OS updates 37 34 - 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 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 41 38 - IDE device redirection from remote management console 42 39 43 40 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. 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. 47 43 48 44 For more information about Intel AMT: 49 - http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/WordDocuments/aboutintelamt.htm 45 + http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide 50 46 51 - 52 - MEI Driver 47 + Intel MEI Driver 53 48 ======================= 54 49 55 - The driver exposes a character device called /dev/mei. 50 + The driver exposes a misc device called /dev/mei. 56 51 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 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 62 57 features allow only a single instance. 63 58 64 - 65 - The Intel AMT Host Interface (AMTHI) feature requires multiple 66 - simultaneous user applications, therefore the MEI driver handles 59 + The Intel AMT Host Interface (Intel AMTHI) feature supports multiple 60 + simultaneous user applications. Therefore, the Intel MEI driver handles 67 61 this internally by maintaining request queues for the applications. 68 62 69 - The driver is oblivious to data that are passed between 63 + The driver is oblivious to data that is passed between firmware feature 64 + and host application. 70 65 71 - Because some of the ME features can change the system 72 - configuration, the driver by default allows only privileged 66 + Because some of the Intel ME features can change the system 67 + configuration, the driver by default allows only a privileged 73 68 user to access it. 74 69 75 - A Code snippet for application communicating with AMTHI client: 70 + A code snippet for an application communicating with 71 + Intel AMTHI client: 76 72 struct mei_connect_client_data data; 77 73 fd = open(MEI_DEVICE); 78 74 ··· 76 80 77 81 ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &data); 78 82 79 - printf(“Ver=%d, MaxLen=%ld\n”, 83 + printf("Ver=%d, MaxLen=%ld\n", 80 84 data.d.in_client_uuid.protocol_version, 81 85 data.d.in_client_uuid.max_msg_length); 82 86 ··· 91 95 [...] 92 96 close(fd); 93 97 94 - ME Applications: 98 + IOCTL: 99 + ====== 100 + The Intel MEI Driver supports the following IOCTL command: 101 + IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client). 102 + 103 + usage: 104 + struct mei_connect_client_data clientData; 105 + ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &clientData); 106 + 107 + inputs: 108 + mei_connect_client_data struct contain the following 109 + input field: 110 + 111 + in_client_uuid - UUID of the FW Feature that needs 112 + to connect to. 113 + outputs: 114 + out_client_properties - Client Properties: MTU and Protocol Version. 115 + 116 + error returns: 117 + EINVAL Wrong IOCTL Number 118 + ENODEV Device or Connection is not initialized or ready. 119 + (e.g. Wrong UUID) 120 + ENOMEM Unable to allocate memory to client internal data. 121 + EFAULT Fatal Error (e.g. Unable to access user input data) 122 + EBUSY Connection Already Open 123 + 124 + Notes: 125 + max_msg_length (MTU) in client properties describes the maximum 126 + data that can be sent or received. (e.g. if MTU=2K, can send 127 + requests up to bytes 2k and received responses upto 2k bytes). 128 + 129 + Intel ME Applications: 95 130 ============== 96 131 97 132 1) Intel Local Management Service (Intel LMS) 98 - Applications running locally on the platform communicate with 99 - Intel AMT Release 2.0 and later releases in the same way 100 - that network applications do via SOAP over HTTP (deprecated 101 - starting with Release 6.0) or with WS-Management over SOAP over 102 - HTTP. which means that some Intel AMT feature can be access 103 - from a local application using same Network interface as for 104 - remote application. 105 133 106 - When a local application sends a message addressed to the local 107 - Intel AMT host name, the Local Manageability Service (LMS), 108 - which listens for traffic directed to the host name, intercepts 109 - the message and routes it to the Intel Management Engine Interface. 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. 110 144 For more information: 111 - http://software.intel.com/sites/manageability/AMT_Implementation_and_ 112 - Reference_Guide/WordDocuments/localaccess1.htm 145 + http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide 146 + Under "About Intel AMT" => "Local Access" 113 147 114 - The LMS opens a connection using the MEI driver to the LMS 115 - FW feature using a defined UUID and then communicates with the 116 - feature using a protocol 117 - called Intel(R) AMT Port Forwarding Protocol (APF protocol). 118 - The protocol is used to maintain multiple sessions with 119 - Intel AMT from a single application. 120 - See the protocol specification in 121 - the Intel(R) AMT Implementation and Reference Guide 122 - http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/HTMLDocuments/MPSDocuments/Intel%20AMT%20Port%20Forwarding%20Protocol%20Reference%20Manual.pdf 148 + For downloading Intel LMS: 149 + http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ 123 150 124 - 2) Intel AMT Remote configuration using a Local Agent: 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 125 164 A Local Agent enables IT personnel to configure Intel AMT out-of-the-box 126 - without requiring installing additional data to enable setup. 127 - The remote configuration process may involve an ISV-developed remote 128 - configuration agent that runs on the host. 165 + without requiring installing additional data to enable setup. The remote 166 + configuration process may involve an ISV-developed remote configuration 167 + agent that runs on the host. 129 168 For more information: 130 - http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/WordDocuments/remoteconfigurationwithalocalagent.htm 169 + http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide 170 + Under "Setup and Configuration of Intel AMT" => 171 + "SDK Tools Supporting Setup and Configuration" => 172 + "Using the Local Agent Sample" 131 173 132 - How the Local Agent Works (including Command structs): 133 - http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/WordDocuments/howthelocalagentsampleworks.htm 174 + An open source Intel AMT configuration utility, implementing a local agent 175 + that accesses the Intel MEI driver, can be found here: 176 + http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/ 177 + 134 178 135 179 Intel AMT OS Health Watchdog: 136 180 ============================= 137 181 The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog. 138 182 Whenever the OS hangs or crashes, Intel AMT will send an event 139 - to whoever subscribed to this event. This mechanism means that 140 - IT knows when a platform crashes even when there is a hard failure 141 - on the host. 142 - The AMT Watchdog is composed of two parts: 143 - 1) FW Feature - that receives the heartbeats 183 + to any subsciber to this event. This mechanism means that 184 + IT knows when a platform crashes even when there is a hard failureon the host. 185 + 186 + The Intel AMT Watchdog is composed of two parts: 187 + 1) Firmware feature - receives the heartbeats 144 188 and sends an event when the heartbeats stop. 145 - 2) MEI driver – connects to the watchdog (WD) feature, 146 - configures the watchdog and sends the heartbeats. 189 + 2) Intel MEI driver - connects to the watchdog feature, configures the 190 + watchdog and sends the heartbeats. 147 191 148 - The MEI driver configures the Watchdog to expire by default 149 - every 120sec unless set by the user using module parameters. 150 - The Driver then sends heartbeats every 2sec. 192 + The Intel MEI driver uses the kernel watchdog to configure the Intel AMT 193 + Watchdog and to send heartbeats to it. The default timeout of the 194 + watchdog is 120 seconds. 151 195 152 - If WD feature does not exist (i.e. the connection failed), 153 - the MEI driver will disable the sending of heartbeats. 154 - 155 - Module Parameters 156 - ================= 157 - watchdog_timeout - the user can use this module parameter 158 - to change the watchdog timeout setting. 159 - 160 - This value sets the Intel AMT watchdog timeout interval in seconds; 161 - the default value is 120sec. 162 - in order to disable the watchdog activites set the value to 0. 163 - Normal values should be between 120 and 65535 196 + If the Intel AMT Watchdog feature does not exist (i.e. the connection failed), 197 + the Intel MEI driver will disable the sending of heartbeats. 164 198 165 199 Supported Chipsets: 166 200 ==================