Hi Lokesh,
I just googled and found the following information.
See if this helps.
The possibility of reading from an NVMe (Non-Volatile Memory Express)
device over I2C.
NVMe-MI (NVMe Management Interface):
The NVMe-MI specification defines an out-of-band management interface
for NVMe devices.
It allows management and control of NVMe devices independently of the
primary data path (such as PCIe).
NVMe-MI can use various physical interfaces for out-of-band
communication, including I2C (SMBus).
I2C (Inter-Integrated Circuit):
I2C is a two-wire serial communication protocol commonly used for
connecting low-speed peripherals and ICs.
It operates over a dedicated bus with SDA (data) and SCL (clock) lines.
I2C is often used for on-board communication between components like
sensors, EEPROMs, and real-time clocks.
NVMe Devices and I2C:
While NVMe devices primarily communicate over PCIe, the NVMe-MI
specification allows for out-of-band management.
Some NVMe devices expose management information via I2C (SMBus) for
tasks like firmware updates, health monitoring, and configuration.
The I2C interface is typically used for accessing Vital Product Data
(VPD) and other management-related information.
Implementation:
To read from an NVMe device over I2C, you’d need:
An NVMe device that supports NVMe-MI (check the device’s specifications).
A system with an I2C controller (often available on the motherboard).
The appropriate software tools (e.g., i2c-tools) to communicate with
the I2C bus.
Load the i2c-dev kernel module to create /dev/i2c-X devices.
Identify the correct I2C bus associated with your NVMe device (using
tools like i2cdetect or /sys/bus/i2c/devices).
Example:
Suppose you have an NVMe device that exposes management information over I2C.
You could use tools like i2cdetect to scan for I2C devices and
identify the relevant bus.
Then, you’d read from the appropriate I2C address to retrieve the
desired information (e.g., VPD).
References:
The NVMe-MI specification provides details on how to use I2C for
out-of-band management1.
Some software libraries (e.g., libnvme) support NVMe-MI over I2C2.
In summary, while NVMe devices primarily use PCIe for data transfer,
NVMe-MI allows management tasks over I2C. If your specific NVMe device
supports this feature, you can indeed read management information via
I2C. Keep in mind that not all NVMe devices expose management data
over I2C, so check the device documentation for details. 😊
Regards,
Anoop
> --
> You received this message because you are subscribed to the Google Groups "SysPlay's Inside Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
inside_linux...@googlegroups.com.
> To view this discussion on the web visit
https://groups.google.com/d/msgid/inside_linux/CABLJ_a4mOZoRs3pojPAdHpMVF-2CxYVv_N%3DEVfyLxxtYTkOFBg%40mail.gmail.com.