[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v7 00/48] nvme: support NVMe v1.3d, SGLs and multiple namespaces
From: |
Klaus Jensen |
Subject: |
[PATCH v7 00/48] nvme: support NVMe v1.3d, SGLs and multiple namespaces |
Date: |
Wed, 15 Apr 2020 07:50:52 +0200 |
From: Klaus Jensen <address@hidden>
Hi,
v7 is mostly just changes proposed by Maxim. Also, Gollu's patch for the
bit bucket sgl descriptor has been added (patch #43), but it is of a
pretty manageable size.
Changes since v6
~~~~~~~~~~~~~~~~
* 01/48 ("nvme: rename trace events to nvme_dev")
- indentation nitpicks (Maxim)
* 04/48 ("nvme: bump spec data structures to v1.3")
- added defines for temperature threshold and sensor selection (Maxim)
- added defines for the EUI64 and NGUID NIDT types (Maxim)
* 09/48 ("nvme: add max_ioqpairs device parameter")
- hoisted a bugfix out (Maxim)
* 11/48 ("nvme: refactor device realization")
- pulled the removal of the duplicated cmbsz/cmbloc struct members to
separate patch (Maxim)
- fixed an incomplete error message (Maxim)
* 12/48 ("nvme: add temperature threshold feature")
- use the defines added in 04/48 (Maxim)
- remove the addition of the unused 'temperature' NvmeCtrl member
* 13/48 ("nvme: add support for the get log page command")
- use the already defined NvmeErrorLog type (Maxim)
- add the 'temperature' NvmeCtrl member here instead (Maxim)
* 15/48 ("nvme: add missing mandatory features")
- fix off-by-one when validating dw11 for the interrupt vector config
feature (Maxim)
- some nitpicks (Maxim)
* 16/48 ("nvme: additional tracing")
- moved some traces (that was added in later patches) to here
* 19/48 ("nvme: support identify namespace descriptor list")
- refactored for the nth time; I think I'm finally kind of happy with
it
* 20/48 ("nvme: enforce valid queue creation sequence")
- added a comment (Maxim)
* 24/48 ("nvme: add mapping helpers")
- fixed an off-by-one error that would cause valid read/writes to the
CMB to be rejected (Maxim)
- add a check on len so we don't add 0 sized elements to the iovec
(Maxim)
* 26/48 ("nvme: remove redundant has_sg member")
- pulled the s/dma_acct/block_acct change to a separate patch (Maxim)
* 36/48 ("nvme: allow multiple aios per command")
- renamed nvme_req_register_aio to nvme_req_add_aio and added some
comments (Maxim)
- killed the prinfo patch
- pulled a bunch of refactoring stuff into other patches to make this
one easier to read (Maxim)
* 42/48 ("nvme: add support for scatter gather lists")
- pulled the nvme_addr_read hardening into its own patch (Maxim)
- refactored the logic around allowed sgl descriptor types (Maxim)
- additional comments (Maxim)
* 45/48 ("nvme: support multiple namespaces")
- fix an inconsistent return value
- fix an edge error case where all namespaces are allocated (Maxim)
git-backport-diff against rebased v6
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Key:
[----] : patches are identical
[####] : number of functional differences between upstream/downstream patch
[down] : patch is downstream-only
The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively
001/48:[0006] [FC] 'nvme: rename trace events to nvme_dev'
002/48:[----] [--] 'nvme: remove superfluous breaks'
003/48:[----] [--] 'nvme: move device parameters to separate struct'
004/48:[0017] [FC] 'nvme: bump spec data structures to v1.3'
005/48:[down] 'nvme: use constants in identify'
006/48:[----] [--] 'nvme: refactor nvme_addr_read'
007/48:[----] [--] 'nvme: add support for the abort command'
008/48:[down] 'nvme: fix pci doorbell size calculation'
009/48:[0002] [FC] 'nvme: add max_ioqpairs device parameter'
010/48:[down] 'nvme: remove redundant cmbloc/cmbsz members'
011/48:[0022] [FC] 'nvme: refactor device realization'
012/48:[0013] [FC] 'nvme: add temperature threshold feature'
013/48:[0007] [FC] 'nvme: add support for the get log page command'
014/48:[----] [-C] 'nvme: add support for the asynchronous event request
command'
015/48:[0002] [FC] 'nvme: add missing mandatory features'
016/48:[0014] [FC] 'nvme: additional tracing'
017/48:[----] [--] 'nvme: make sure ncqr and nsqr is valid'
018/48:[----] [--] 'nvme: add log specific field to trace events'
019/48:[0029] [FC] 'nvme: support identify namespace descriptor list'
020/48:[0005] [FC] 'nvme: enforce valid queue creation sequence'
021/48:[----] [--] 'nvme: provide the mandatory subnqn field'
022/48:[----] [--] 'nvme: bump supported version to v1.3'
023/48:[----] [--] 'nvme: memset preallocated requests structures'
024/48:[0010] [FC] 'nvme: add mapping helpers'
025/48:[down] 'nvme: replace dma_acct with blk_acct equivalent'
026/48:[0007] [FC] 'nvme: remove redundant has_sg member'
027/48:[0011] [FC] 'nvme: refactor dma read/write'
028/48:[0004] [FC] 'nvme: pass request along for tracing'
029/48:[----] [--] 'nvme: add request mapping helper'
030/48:[----] [--] 'nvme: verify validity of prp lists in the cmb'
031/48:[----] [-C] 'nvme: refactor request bounds checking'
032/48:[----] [--] 'nvme: add check for mdts'
033/48:[down] 'nvme: be consistent about zeros vs zeroes'
034/48:[down] 'nvme: refactor NvmeRequest'
035/48:[down] 'nvme: remove NvmeCmd parameter'
036/48:[0218] [FC] 'nvme: allow multiple aios per command'
037/48:[down] 'nvme: add nvme_check_rw helper'
038/48:[----] [--] 'nvme: use preallocated qsg/iov in nvme_dma_prp'
039/48:[----] [--] 'pci: pass along the return value of dma_memory_rw'
040/48:[----] [-C] 'nvme: handle dma errors'
041/48:[down] 'nvme: harden cmb access'
042/48:[0102] [FC] 'nvme: add support for scatter gather lists'
043/48:[down] 'nvme: add support for sgl bit bucket descriptor'
044/48:[----] [-C] 'nvme: refactor identify active namespace id list'
045/48:[0036] [FC] 'nvme: support multiple namespaces'
046/48:[----] [--] 'pci: allocate pci id for nvme'
047/48:[----] [--] 'nvme: change controller pci id'
048/48:[----] [-C] 'nvme: make lba data size configurable'
Gollu Appalanaidu (1):
nvme: add support for sgl bit bucket descriptor
Klaus Jensen (47):
nvme: rename trace events to nvme_dev
nvme: remove superfluous breaks
nvme: move device parameters to separate struct
nvme: bump spec data structures to v1.3
nvme: use constants in identify
nvme: refactor nvme_addr_read
nvme: add support for the abort command
nvme: fix pci doorbell size calculation
nvme: add max_ioqpairs device parameter
nvme: remove redundant cmbloc/cmbsz members
nvme: refactor device realization
nvme: add temperature threshold feature
nvme: add support for the get log page command
nvme: add support for the asynchronous event request command
nvme: add missing mandatory features
nvme: additional tracing
nvme: make sure ncqr and nsqr is valid
nvme: add log specific field to trace events
nvme: support identify namespace descriptor list
nvme: enforce valid queue creation sequence
nvme: provide the mandatory subnqn field
nvme: bump supported version to v1.3
nvme: memset preallocated requests structures
nvme: add mapping helpers
nvme: replace dma_acct with blk_acct equivalent
nvme: remove redundant has_sg member
nvme: refactor dma read/write
nvme: pass request along for tracing
nvme: add request mapping helper
nvme: verify validity of prp lists in the cmb
nvme: refactor request bounds checking
nvme: add check for mdts
nvme: be consistent about zeros vs zeroes
nvme: refactor NvmeRequest
nvme: remove NvmeCmd parameter
nvme: allow multiple aios per command
nvme: add nvme_check_rw helper
nvme: use preallocated qsg/iov in nvme_dma_prp
pci: pass along the return value of dma_memory_rw
nvme: handle dma errors
nvme: harden cmb access
nvme: add support for scatter gather lists
nvme: refactor identify active namespace id list
nvme: support multiple namespaces
pci: allocate pci id for nvme
nvme: change controller pci id
nvme: make lba data size configurable
MAINTAINERS | 1 +
block/nvme.c | 22 +-
docs/specs/nvme.txt | 25 +
docs/specs/pci-ids.txt | 1 +
hw/block/Makefile.objs | 2 +-
hw/block/nvme-ns.c | 162 +++
hw/block/nvme-ns.h | 62 ++
hw/block/nvme.c | 2139 ++++++++++++++++++++++++++++++++--------
hw/block/nvme.h | 177 +++-
hw/block/trace-events | 206 ++--
hw/core/machine.c | 1 +
include/block/nvme.h | 190 +++-
include/hw/pci/pci.h | 4 +-
13 files changed, 2413 insertions(+), 579 deletions(-)
create mode 100644 docs/specs/nvme.txt
create mode 100644 hw/block/nvme-ns.c
create mode 100644 hw/block/nvme-ns.h
--
2.26.0
- [PATCH v7 00/48] nvme: support NVMe v1.3d, SGLs and multiple namespaces,
Klaus Jensen <=
- [PATCH v7 02/48] nvme: remove superfluous breaks, Klaus Jensen, 2020/04/15
- [PATCH v7 06/48] nvme: refactor nvme_addr_read, Klaus Jensen, 2020/04/15
- [PATCH v7 07/48] nvme: add support for the abort command, Klaus Jensen, 2020/04/15
- [PATCH v7 03/48] nvme: move device parameters to separate struct, Klaus Jensen, 2020/04/15
- [PATCH v7 05/48] nvme: use constants in identify, Klaus Jensen, 2020/04/15