Skip to content

Commit 9ff9e34

Browse files
committed
mi: Add initial mi document
Add a base `mi.rst.in` document, for some background information on the NVMe-MI interface, alongside the new mi API doc. Signed-off-by: Jeremy Kerr <[email protected]>
1 parent 5b94914 commit 9ff9e34

4 files changed

Lines changed: 32 additions & 0 deletions

File tree

doc/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ and utilities to connect, scan, and manage nvme devices on a Linux system.
1212

1313
installation.rst
1414
quickstart.rst
15+
mi.rst
1516
api.rst
1617

1718
Indices and tables

doc/index.rst.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ and utilities to connect, scan, and manage nvme devices on a Linux system.
1212

1313
installation.rst
1414
quickstart.rst
15+
mi.rst
1516
api.rst
1617

1718
Indices and tables

doc/meson.build

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ sphinx_sources = [
2626
'index.rst',
2727
'quickstart.rst',
2828
'installation.rst',
29+
'mi.rst',
2930
'config-schema.json'
3031
]
3132

doc/mi.rst.in

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
NVMe Management Interface (NVMe-MI) support
2+
===========================================
3+
4+
This libnvme project also includes support for the NVMe Management Interface
5+
(NVMe-MI), currently over a Management Component Transport (MCTP)
6+
protocol link. This MCTP link will typically use i2c/SMBus as the
7+
hardware transport, enabling out-of-band management and control over NVMe
8+
devices using a simple SMBus interface.
9+
10+
The MI interface is compiled into a separate shared object, ``libnvme-mi.so``.
11+
12+
Most of the MI API is transport-agnostic, except for the endpoint constructor
13+
functions. Once an endpoint object (``nvme_mi_ep_t``) is created, the generic
14+
functions can be used to manage it.
15+
16+
MCTP Transport
17+
--------------
18+
19+
The MI API is generally transport-agnostic, but the only currently-supported
20+
transport is MCTP, using the kernel ``AF_MCTP`` socket interface.
21+
22+
MCTP endpoints are addressed by a (network-id, endpoint-id) pair. Endpoint
23+
IDs (EIDs) are defined by the MCTP standard as an 8-bit value. Since the
24+
address space is somewhat limited, the Linux `AF_MCTP` support allows for
25+
separate MCTP "networks", which provide separate address spaces. These networks
26+
each have a unique ``unsigned int`` as their ID.
27+
28+
The default Network ID is 1; unless you have configured otherwise, MCTP
29+
endpoints will appear on this network.

0 commit comments

Comments
 (0)