Commit 463ac7f7 authored by Oren Weil's avatar Oren Weil Committed by Greg Kroah-Hartman

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: default avatarOren Weil <oren.jer.weil@intel.com>
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent e8cd29d8
Intel MEI Intel(R) Management Engine Interface (Intel(R) MEI)
======================= =======================
Introduction Introduction
======================= =======================
The Intel Management Engine (Intel ME) is an isolated and The Intel Management Engine (Intel ME) is an isolated andprotected computing
protected computing resource (Coprocessor) residing inside resource (Co-processor) residing inside certain Intel chipsets. The Intel ME
Intel chipsets. The Intel ME provides support for computer/IT provides support for computer/IT management features. The feature set
management features. depends on the Intel chipset SKU.
The Feature set depends on the Intel chipset SKU.
The Intel Management Engine Interface (Intel MEI, previously known The Intel Management Engine Interface (Intel MEI, previously known as HECI)
as HECI) is the interface between the Host and Intel ME. is the interface between the Host and Intel ME. This interface is exposed
This interface is exposed to the host as a PCI device. to the host as a PCI device. The Intel MEI Driver is in charge of the
The Intel MEI Driver is in charge of the communication channel communication channel between a host application and the Intel ME feature.
between a host application and the ME feature.
Each Intel ME feature (Intel ME Client) is addressed by Each Intel ME feature (Intel ME Client) is addressed by a GUID/UUID and
GUID/UUID and each feature defines its own protocol. each client has its own protocol. The protocol is message-based with a
The protocol is message-based with a header and payload up to header and payload up to 512 bytes.
512 bytes.
[place holder to URL to protocol definitions] Prominent usage of the Intel ME Interface is to communicate with Intel(R)
Active Management Technology (Intel AMT)implemented in firmware running on
Prominent usage of the Interface is to communicate with the Intel ME.
Intel Active Management Technology (Intel AMT)
implemented in firmware running on the Intel ME.
Intel AMT provides the ability to manage a host remotely out-of-band (OOB) Intel AMT provides the ability to manage a host remotely out-of-band (OOB)
even when the host processor has crashed or is in a sleep state. even when the operating system running on the host processor has crashed or
is in a sleep state.
Some examples of Intel AMT usage are: Some examples of Intel AMT usage are:
- Monitoring hardware state and platform components - Monitoring hardware state and platform components
- Remote power off/on (useful for green computing or overnight IT maintenance) - Remote power off/on (useful for green computing or overnight IT
maintenance)
- OS updates - OS updates
- Storage of useful platform information such as software assets - Storage of useful platform information such as software assets
- built-in hardware KVM - Built-in hardware KVM
- selective network isolation of Ethernet and IP protocol flows based on - Selective network isolation of Ethernet and IP protocol flows based
policies set by a remote management console on policies set by a remote management console
- IDE device redirection from remote management console - IDE device redirection from remote management console
Intel AMT (OOB) communication is based on SOAP (deprecated Intel AMT (OOB) communication is based on SOAP (deprecated
starting with Release 6.0) over HTTP/HTTPS or WS-Management protocol starting with Release 6.0) over HTTP/S or WS-Management protocol over
over HTTP and HTTPS that are received from a remote HTTP/S that are received from a remote management console application.
management console application.
For more information about Intel AMT: For more information about Intel AMT:
http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/WordDocuments/aboutintelamt.htm http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
MEI Driver Intel MEI Driver
======================= =======================
The driver exposes a character device called /dev/mei. The driver exposes a misc device called /dev/mei.
An application maintains communication with an ME feature while An application maintains communication with an Intel ME feature while
/dev/mei is open. The binding to a specific features is performed /dev/mei is open. The binding to a specific features is performed by calling
by calling MEI_CONNECT_CLIENT_IOCTL, which passes the desired UUID. MEI_CONNECT_CLIENT_IOCTL, which passes the desired UUID.
The number of instances of an ME feature that can be opened The number of instances of an Intel ME feature that can be opened
at the same time depends on the ME feature, but most of the at the same time depends on the Intel ME feature, but most of the
features allow only a single instance. features allow only a single instance.
The Intel AMT Host Interface (Intel AMTHI) feature supports multiple
The Intel AMT Host Interface (AMTHI) feature requires multiple simultaneous user applications. Therefore, the Intel MEI driver handles
simultaneous user applications, therefore the MEI driver handles
this internally by maintaining request queues for the applications. this internally by maintaining request queues for the applications.
The driver is oblivious to data that are passed between The driver is oblivious to data that is passed between firmware feature
and host application.
Because some of the ME features can change the system Because some of the Intel ME features can change the system
configuration, the driver by default allows only privileged configuration, the driver by default allows only a privileged
user to access it. user to access it.
A Code snippet for application communicating with AMTHI client: A code snippet for an application communicating with
Intel AMTHI client:
struct mei_connect_client_data data; struct mei_connect_client_data data;
fd = open(MEI_DEVICE); fd = open(MEI_DEVICE);
...@@ -80,7 +76,7 @@ A Code snippet for application communicating with AMTHI client: ...@@ -80,7 +76,7 @@ A Code snippet for application communicating with AMTHI client:
ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &data); ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &data);
printf(“Ver=%d, MaxLen=%ld\n”, printf("Ver=%d, MaxLen=%ld\n",
data.d.in_client_uuid.protocol_version, data.d.in_client_uuid.protocol_version,
data.d.in_client_uuid.max_msg_length); data.d.in_client_uuid.max_msg_length);
...@@ -95,76 +91,106 @@ A Code snippet for application communicating with AMTHI client: ...@@ -95,76 +91,106 @@ A Code snippet for application communicating with AMTHI client:
[...] [...]
close(fd); close(fd);
ME Applications: IOCTL:
======
The Intel MEI Driver supports the following IOCTL command:
IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client).
usage:
struct mei_connect_client_data clientData;
ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &clientData);
inputs:
mei_connect_client_data struct contain the following
input field:
in_client_uuid - UUID of the FW Feature that needs
to connect to.
outputs:
out_client_properties - Client Properties: MTU and Protocol Version.
error returns:
EINVAL Wrong IOCTL Number
ENODEV Device or Connection is not initialized or ready.
(e.g. Wrong UUID)
ENOMEM Unable to allocate memory to client internal data.
EFAULT Fatal Error (e.g. Unable to access user input data)
EBUSY Connection Already Open
Notes:
max_msg_length (MTU) in client properties describes the maximum
data that can be sent or received. (e.g. if MTU=2K, can send
requests up to bytes 2k and received responses upto 2k bytes).
Intel ME Applications:
============== ==============
1) Intel Local Management Service (Intel LMS) 1) Intel Local Management Service (Intel LMS)
Applications running locally on the platform communicate with
Intel AMT Release 2.0 and later releases in the same way Applications running locally on the platform communicate with Intel AMT Release
that network applications do via SOAP over HTTP (deprecated 2.0 and later releases in the same way that network applications do via SOAP
starting with Release 6.0) or with WS-Management over SOAP over over HTTP (deprecated starting with Release 6.0) or with WS-Management over
HTTP. which means that some Intel AMT feature can be access SOAP over HTTP. This means that some Intel AMT features can be accessed from a
from a local application using same Network interface as for local application using the same network interface as a remote application
remote application. communicating with Intel AMT over the network.
When a local application sends a message addressed to the local When a local application sends a message addressed to the local Intel AMT host
Intel AMT host name, the Local Manageability Service (LMS), name, the Intel LMS, which listens for traffic directed to the host name,
which listens for traffic directed to the host name, intercepts intercepts the message and routes it to the Intel MEI.
the message and routes it to the Intel Management Engine Interface.
For more information: For more information:
http://software.intel.com/sites/manageability/AMT_Implementation_and_ http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
Reference_Guide/WordDocuments/localaccess1.htm Under "About Intel AMT" => "Local Access"
The LMS opens a connection using the MEI driver to the LMS For downloading Intel LMS:
FW feature using a defined UUID and then communicates with the http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/
feature using a protocol
called Intel(R) AMT Port Forwarding Protocol (APF protocol). The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS
The protocol is used to maintain multiple sessions with firmware feature using a defined UUID and then communicates with the feature
Intel AMT from a single application. using a protocol called Intel AMT Port Forwarding Protocol(Intel APF protocol).
See the protocol specification in The protocol is used to maintain multiple sessions with Intel AMT from a
the Intel(R) AMT Implementation and Reference Guide single application.
http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/HTMLDocuments/MPSDocuments/Intel%20AMT%20Port%20Forwarding%20Protocol%20Reference%20Manual.pdf
See the protocol specification in the Intel AMT Software Development Kit(SDK)
2) Intel AMT Remote configuration using a Local Agent: http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
Under "SDK Resources" => "Intel(R) vPro(TM) Gateway(MPS)"
=> "Information for Intel(R) vPro(TM) Gateway Developers"
=> "Description of the Intel AMT Port Forwarding (APF)Protocol"
2) Intel AMT Remote configuration using a Local Agent
A Local Agent enables IT personnel to configure Intel AMT out-of-the-box A Local Agent enables IT personnel to configure Intel AMT out-of-the-box
without requiring installing additional data to enable setup. without requiring installing additional data to enable setup. The remote
The remote configuration process may involve an ISV-developed remote configuration process may involve an ISV-developed remote configuration
configuration agent that runs on the host. agent that runs on the host.
For more information: For more information:
http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/WordDocuments/remoteconfigurationwithalocalagent.htm http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
Under "Setup and Configuration of Intel AMT" =>
"SDK Tools Supporting Setup and Configuration" =>
"Using the Local Agent Sample"
An open source Intel AMT configuration utility, implementing a local agent
that accesses the Intel MEI driver, can be found here:
http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/
How the Local Agent Works (including Command structs):
http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/WordDocuments/howthelocalagentsampleworks.htm
Intel AMT OS Health Watchdog: Intel AMT OS Health Watchdog:
============================= =============================
The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog. The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog.
Whenever the OS hangs or crashes, Intel AMT will send an event Whenever the OS hangs or crashes, Intel AMT will send an event
to whoever subscribed to this event. This mechanism means that to any subsciber to this event. This mechanism means that
IT knows when a platform crashes even when there is a hard failure IT knows when a platform crashes even when there is a hard failureon the host.
on the host.
The AMT Watchdog is composed of two parts:
1) FW Feature - that receives the heartbeats
and sends an event when the heartbeats stop.
2) MEI driver – connects to the watchdog (WD) feature,
configures the watchdog and sends the heartbeats.
The MEI driver configures the Watchdog to expire by default
every 120sec unless set by the user using module parameters.
The Driver then sends heartbeats every 2sec.
If WD feature does not exist (i.e. the connection failed), The Intel AMT Watchdog is composed of two parts:
the MEI driver will disable the sending of heartbeats. 1) Firmware feature - receives the heartbeats
and sends an event when the heartbeats stop.
2) Intel MEI driver - connects to the watchdog feature, configures the
watchdog and sends the heartbeats.
Module Parameters The Intel MEI driver uses the kernel watchdog to configure the Intel AMT
================= Watchdog and to send heartbeats to it. The default timeout of the
watchdog_timeout - the user can use this module parameter watchdog is 120 seconds.
to change the watchdog timeout setting.
This value sets the Intel AMT watchdog timeout interval in seconds; If the Intel AMT Watchdog feature does not exist (i.e. the connection failed),
the default value is 120sec. the Intel MEI driver will disable the sending of heartbeats.
in order to disable the watchdog activites set the value to 0.
Normal values should be between 120 and 65535
Supported Chipsets: Supported Chipsets:
================== ==================
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment