An interesting new driver set to premiere in the upcoming Linux 6.14 kernel is the NVMe PCI Endpoint Function Target code authored by Western Digital.
Queued up by way of the Linux block subsystem’s “for-next” branch ahead of the Linux 6.14 merge window opening is this new NVMe PCI target driver using the PCI endpoint framework. With hardware having a PCI controller capable of running in endpoint mode, PCIe NVMe controllers can be created.
The documentation patch goes into all of the interesting technical details on this NVMe target driver. This is intended primarily for testing purposes such as with small single board computers having a PCIe endpoint controller and then creating an NVMe target to loop files or block devices. TCP targets to remote NVMe devices can also be used.
Damien Le Moal of storage company Western Digital was the lead developer on this driver. The driver patch within block’s for-next branch comments:
“Implement a PCI target driver using the PCI endpoint framework. This requires hardware with a PCI controller capable of executing in endpoint mode.
…
Using a Rock5B board (Rockchip RK3588 SoC, PCI Gen3x4 endpoint controller) with a target PCI controller setup with 4 I/O queues and a null_blk block device as a namespace, the maximum performance using fio was measured at 131 KIOPS for random 4K reads and up to 2.8 GB/S throughput.
…
The NVMe PCI endpoint target driver is not intended for production use. It is a tool for learning NVMe, exploring existing features and testing implementations of new NVMe features.”
Barring any last minute issues coming about, this driver should premiere in the upcoming Linux 6.14 kernel cycle.