[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/16] nvme: support NVMe v1.3d, SGLs and multiple n
From: |
Klaus Birkelund Jensen |
Subject: |
[Qemu-devel] [PATCH 00/16] nvme: support NVMe v1.3d, SGLs and multiple namespaces |
Date: |
Fri, 5 Jul 2019 09:23:17 +0200 |
Matt Fitzpatrick's post ("[RFC,v1] Namespace Management Support") pushed
me to finally get my head out of my a** and post this series.
This is basically a follow-up to my previous series ("nvme: v1.3, sgls,
metadata and new 'ocssd' device"), but I'm not tagging it as a v2
because the patches for metadata and the ocssd device have been dropped.
Instead, this series also includes a patch that enables support for
multiple namespaces in a "proper" way by adding a new 'nvme-ns' device
model such that the "real" nvme device is composed of the 'nvme' device
model (the core controller) and multiple 'nvme-ns' devices that model
the namespaces.
All in all, the patches in this series should be less controversial, but
I know there is a lot to go through. I've kept commit 011de3d531b6
("nvme: refactor device realization") as a single commit, but I can chop
it up if any reviwers would prefer that, but the series is already at 16
patches. The refactor patch is basically just code movement.
At a glance, this series:
- generally fixes up the device to be as close to NVMe 1.3d compliant as
possible (in terms of 'mandatory' features) by:
- adding proper setting of the SUBNQN and VER fields
- supporting the Abort command
- supporting the Asynchronous Event Request command
- supporting the Get Log Page command
- providing reasonable stub responses to Get/Set Feature command of
mandatory features
- adds support for scatter gather lists (SGLs)
- simplifies DMA/CMB mappings and support PRPs/SGLs in the CMB
- adds support for multiple block requests per nvme request (this is
useful for future support for metadata, OCSSD 2.0 vector requests
and upcoming zoned namespaces)
- adds support for multiple namespaces
Thanks to everyone who chipped in on the discussion on multiple
namespaces! You're CC'ed ;)
Klaus Birkelund Jensen (16):
nvme: simplify namespace code
nvme: move device parameters to separate struct
nvme: fix lpa field
nvme: add missing fields in identify controller
nvme: populate the mandatory subnqn and ver fields
nvme: support completion queue in cmb
nvme: support Abort command
nvme: refactor device realization
nvme: support Asynchronous Event Request command
nvme: support Get Log Page command
nvme: add missing mandatory Features
nvme: bump supported NVMe revision to 1.3d
nvme: simplify dma/cmb mappings
nvme: support multiple block requests per request
nvme: support scatter gather lists
nvme: support multiple namespaces
block/nvme.c | 18 +-
hw/block/Makefile.objs | 2 +-
hw/block/nvme-ns.c | 139 ++++
hw/block/nvme-ns.h | 35 +
hw/block/nvme.c | 1629 ++++++++++++++++++++++++++++++++--------
hw/block/nvme.h | 99 ++-
hw/block/trace-events | 24 +-
include/block/nvme.h | 130 +++-
8 files changed, 1739 insertions(+), 337 deletions(-)
create mode 100644 hw/block/nvme-ns.c
create mode 100644 hw/block/nvme-ns.h
--
2.20.1
- [Qemu-devel] [PATCH 00/16] nvme: support NVMe v1.3d, SGLs and multiple namespaces,
Klaus Birkelund Jensen <=
- [Qemu-devel] [PATCH 06/16] nvme: support completion queue in cmb, Klaus Birkelund Jensen, 2019/07/05
- [Qemu-devel] [PATCH 05/16] nvme: populate the mandatory subnqn and ver fields, Klaus Birkelund Jensen, 2019/07/05
- [Qemu-devel] [PATCH 07/16] nvme: support Abort command, Klaus Birkelund Jensen, 2019/07/05
- [Qemu-devel] [PATCH 01/16] nvme: simplify namespace code, Klaus Birkelund Jensen, 2019/07/05
- [Qemu-devel] [PATCH 03/16] nvme: fix lpa field, Klaus Birkelund Jensen, 2019/07/05
- [Qemu-devel] [PATCH 08/16] nvme: refactor device realization, Klaus Birkelund Jensen, 2019/07/05
- [Qemu-devel] [PATCH 10/16] nvme: support Get Log Page command, Klaus Birkelund Jensen, 2019/07/05
- [Qemu-devel] [PATCH 04/16] nvme: add missing fields in identify controller, Klaus Birkelund Jensen, 2019/07/05
- [Qemu-devel] [PATCH 09/16] nvme: support Asynchronous Event Request command, Klaus Birkelund Jensen, 2019/07/05
- [Qemu-devel] [PATCH 12/16] nvme: bump supported NVMe revision to 1.3d, Klaus Birkelund Jensen, 2019/07/05