Updates to bhyve NVMe emulation

Chuck Tuffli chuck at freebsd.org
Mon May 18 21:13:07 UTC 2020


In an effort to provide better NVMe emulation in bhyve, I've started
running the NVM Express Compliance tests against the bhyve emulation
and fixing issues the tests find. The tests are part of the University
of New Hampshire (UNH) Interoperability Lab (IOL) suite.

I have posted a series of patches in Phabricator and would appreciate
any feedback people might have. And because there are a few changes,
the plan is to leave them up for review longer than I normally do.
Note that I've cross-posted to the SCSI list to possibly pickup NVMe
expertise. Summary of the patch series with links to differential
reviews:

bhyve: convert NVMe logging statements
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 157 insertions(+), 157 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24878

bhyve: refactor NVMe IO command handling
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 175 insertions(+), 180 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24879

bhyve: implement NVMe Flush command
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 43 insertions(+), 1 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24880

bhyve: add a comment explaining NVME dsm option
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 2 insertions(+), 1 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24881

bhyve: add locks around NVMe queue accesses
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 104 insertions(+), 61 deletions(-)
Differential Revision: https://reviews.freebsd.org/D19841

bhyve: Consolidate NVMe CQ update
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 51 insertions(+), 49 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24882

bhyve: implement NVMe Namespace Identification Descriptor
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 20 insertions(+), 11 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24884

bhyve: fix NVMe Get Log Page command
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 15 insertions(+), 5 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24885

bhyve: fix NVMe queue creation and deletion
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 89 insertions(+), 34 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24886

bhyve: add more compliant NVMe Get/Set Features
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 214 insertions(+), 152 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24887

bhyve: make unsupported NVMe commands a debug message
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 1 insertions(+), 1 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24888

bhyve: implement NVMe Format NVM command
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 78 insertions(+), 0 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24889

bhyve: refactor NVMe I/O read/write
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 108 insertions(+), 78 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24890

bhyve: base pci_nvme_ioreq size on advertised MDTS
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 60 insertions(+), 92 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24891

bhyve: validate NVMe deallocate range values
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 9 insertions(+), 0 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24893

bhyve: implement NVMe SMART data I/O statistics
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 71 insertions(+), 1 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24894

bhyve: validate the NVMe LBA start and count
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 54 insertions(+), 15 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24895

bhyve: Add AER support to NVMe emulation
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 115 insertions(+), 6 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24896

bhyve: add basic NVMe Firmware Commit support
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 9 insertions(+), 0 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24897

bhyve: add NVMe Feature Interrupt Vector Config
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 39 insertions(+), 0 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24898

bhyve: fix NVMe Get Features, Predictable Latency
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 4 insertions(+), 0 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24899

bhyve: NVMe handle zero length DSM ranges
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 45 insertions(+), 33 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24900

bhyve: fix NVMe Active Namespace list
 usr.sbin/bhyve/pci_nvme.c
 1 files changed, 2 insertions(+), 1 deletions(-)
Differential Revision: https://reviews.freebsd.org/D24901

--chuck


More information about the freebsd-scsi mailing list