mbox series

[v7,00/48] nvme: support NVMe v1.3d, SGLs and multiple namespaces

Message ID 20200415055140.466900-1-its@irrelevant.dk
Headers show
Series nvme: support NVMe v1.3d, SGLs and multiple namespaces | expand

Message

Klaus Jensen April 15, 2020, 5:50 a.m. UTC
From: Klaus Jensen <k.jensen@samsung.com>

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