NVMe controller emulator for bhyve

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

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.

3. Implement NVMe Commands

  • mandatory commands
    • read
    • write
    • flush

test:

  • write and read data via NVMe
  • construct file system on backing file.

usr.sbin/bhyve/pci_nvme.c

  • summerofcode2017/nvmecontrolleremulatorforbhyve.txt
  • Last modified: 2018/01/20 12:14
  • by ShunsukeMie