NVMe driver in Linux Kernel
Overview:
A client’s System Test Engineering team faced challenges in testing PCIe SSD devices due to limitations in the existing NVMe driver on Linux (Ubuntu 16.04 LTS). The project involved modifying and extending the NVMe driver to add debugging capabilities, optimize command flow, and support critical features like hot-plug, power state management, and diagnostics.
Solution:
Azure worked on modifying the Linux NVMe driver with key improvements:
- Debugging Enhancements: Introduced additional logging and debugging tools for development and troubleshooting.
- Command Flow Control: Refactored the driver to reduce bus traffic by removing automatic command retries and unnecessary command issues.
- Hot Plug & Hot Swap Support: Enabled dynamic NVMe drive insertion and removal without requiring a system rescan, streamlining test operations.
- Low Power State Management: Added support for L1, L2, and other low-power states, depending on HBA capabilities, improving energy efficiency during tests.
- Physical Enumeration Diagnostics: Provided access to out-of-band (OOB) link training, GX speeds, and error registers for enhanced status monitoring and debugging.
Testing & Deployment:
- The updated driver was tested using sDV and VDbench to validate performance and functionality.
- The modifications resolved key test inefficiencies, enabling more effective and accurate PCIe SSD validation.
Outcome:
The enhanced NVMe driver provided test engineers with better control, improved debugging, and critical features for PCIe SSD validation, resulting in higher testing efficiency and reliability.
Client: Embedded Storage Manufacturing MNC, USA
Technology Used
Linux device drivers
NVMe SSD
sg_utils
VDBench
IOMeter
Ubuntu (64 bit)