From: Klaus Jensen <k.jen...@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 -- 2.26.0