NVMe controller emulator for bhyve
Student: Shunsuke Mie (<shunsuke@FreeBSD.org>)
Mentor: Edward Tomasz Napieral(<trasz@FreeBSD.org>)
Project description
This project is implementation of NVMe controller emulator for bhyve. NVMe has some advantage compared with another host interface, for example, scalable, small command, large command buffer and so on.
Goal of this project is guest FreeBSD, Linux and Windows can access data via this controller emulator and evaluate performance and compare with AHCI controller and virtio-block device.
Statues
- 2018/01/20
FreeBSD as guest can make fs by newfs and boot from a disk that is attached using the emulator.
Plan
May 30 (coding officially begins!)
1. Implement dummy PCIe device
- test: run FreeBSD as guest and detect our controller emulator using pciconf command.
2. Implement initializing step of NVMe controller
FreeBSD initialize NVMe driver in boot by nvme_ctrlr_construct() function in nvme_ctrlr.c.
- test: run FreeBSD as guest and confirm booting completely.
June 30 16:00 UTC (First evaluation deadline)
3. Implement NVMe Commands
- mandatory commands
- read
- write
- flush
- write and read data via NVMe
- construct file system on backing file.
July 28 16:00 UTC (Phase 2 Evaluation deadline)
September 5 16:00 UTC (Final evaluation deadline)
Code on project
usr.sbin/bhyve/pci_nvme.c
Project Link
Useful links
NVMe specification http://www.nvmexpress.org/specifications/