[PATCH v6 28/42] nvme: verify validity of prp lists in the cmb

2020-03-16 Thread Klaus Jensen
From: Klaus Jensen Before this patch the device already supported this, but it did not check for the validity of it nor announced the support in the LISTS field. If some of the PRPs in a PRP list are in the CMB, then ALL entries must be there. This patch makes sure that is verified as well as

[PATCH v6 24/42] nvme: remove redundant has_sg member

2020-03-16 Thread Klaus Jensen
From: Klaus Jensen Remove the has_sg member from NvmeRequest since it's redundant. Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 18 -- hw/block/nvme.h | 1 - 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c

[PATCH v6 19/42] nvme: enforce valid queue creation sequence

2020-03-16 Thread Klaus Jensen
From: Klaus Jensen Support returning Command Sequence Error if Set Features on Number of Queues is called after queues have been created. Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 7 +++ hw/block/nvme.h | 1 + 2 files changed, 8 insertions(+) diff --git a/hw/block/nvme.c b/hw

[PATCH v6 35/42] nvme: handle dma errors

2020-03-16 Thread Klaus Jensen
From: Klaus Jensen Handling DMA errors gracefully is required for the device to pass the block/011 test ("disable PCI device while doing I/O") in the blktests suite. With this patch the device passes the test by retrying "critical" transfers (posting of completion entri

[PATCH v6 32/42] nvme: allow multiple aios per command

2020-03-16 Thread Klaus Jensen
From: Klaus Jensen This refactors how the device issues asynchronous block backend requests. The NvmeRequest now holds a queue of NvmeAIOs that are associated with the command. This allows multiple aios to be issued for a command. Only when all requests have been completed will the device post a

[PATCH v6 39/42] pci: allocate pci id for nvme

2020-03-16 Thread Klaus Jensen
From: Klaus Jensen The emulated nvme device (hw/block/nvme.c) is currently using an internal Intel device id. Prepare to change that by allocating a device id under the 1b36 (Red Hat, Inc.) vendor id. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky

[PATCH v6 37/42] nvme: refactor identify active namespace id list

2020-03-16 Thread Klaus Jensen
From: Klaus Jensen Prepare to support inactive namespaces. Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index b89b96990f52..bf9fb500842a 100644 --- a/hw/block/nvme.c +++ b/hw/block

[PATCH v6 42/42] nvme: make lba data size configurable

2020-03-16 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Acked-by: Keith Busch --- hw/block/nvme-ns.c | 7 ++- hw/block/nvme-ns.h | 4 +++- hw/block/nvme.c| 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c index 6d975104171d

[PATCH v6 38/42] nvme: support multiple namespaces

2020-03-16 Thread Klaus Jensen
From: Klaus Jensen This adds support for multiple namespaces by introducing a new 'nvme-ns' device model. The nvme device creates a bus named from the device name ('id'). The nvme-ns devices then connect to this and registers themselves with the nvme device. This changes h

[PATCH v6 41/42] nvme: remove redundant NvmeCmd pointer parameter

2020-03-16 Thread Klaus Jensen
From: Klaus Jensen The command struct is available in the NvmeRequest that we generally pass around anyway. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 164 +++- 1 file changed, 78 insertions

[PATCH v7 02/48] nvme: remove superfluous breaks

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen These break statements was left over when commit 3036a626e9ef ("nvme: add Get/Set Feature Timestamp support") was merged. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 4 1 file changed, 4 deletions(-)

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

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen 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")

[PATCH v7 03/48] nvme: move device parameters to separate struct

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Move device configuration parameters to separate struct to make it explicit what is configurable and what is set internally. Signed-off-by: Klaus Jensen Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 44

[PATCH v7 06/48] nvme: refactor nvme_addr_read

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Pull the controller memory buffer check to its own function. The check will be used on its own in later patches. Signed-off-by: Klaus Jensen Acked-by: Keith Busch --- hw/block/nvme.c | 16 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/hw

[PATCH v7 08/48] nvme: fix pci doorbell size calculation

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen The size of the BAR is 0x1000 (main registers) + 8 bytes for each queue. Currently, the size of the BAR is calculated like so: n->reg_size = pow2ceil(0x1004 + 2 * (n->params.num_queues + 1) * 4); Since the 'num_queues' parameter already accounts for the a

[PATCH v7 10/48] nvme: remove redundant cmbloc/cmbsz members

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 7 ++- hw/block/nvme.h | 2 -- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index f45909dad480..123539a5d0ae 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -63,7

[PATCH v7 04/48] nvme: bump spec data structures to v1.3

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Add missing fields in the Identify Controller and Identify Namespace data structures to bring them in line with NVMe v1.3. This also adds data structures and defines for SGL support which requires a couple of trivial changes to the nvme block driver as well. Signed-off-by

[PATCH v7 01/48] nvme: rename trace events to nvme_dev

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Change the prefix of all nvme device related trace events to 'nvme_dev' to not clash with trace events from the nvme block driver. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky --- hw/block/nvme.c

[PATCH v7 05/48] nvme: use constants in identify

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 088668f28bae..622103c42d0a 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c

[PATCH v7 07/48] nvme: add support for the abort command

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Required for compliance with NVMe revision 1.2.1. See NVM Express 1.2.1, Section 5.1 ("Abort command"). The Abort command is a best effort command; for now, the device always fails to abort the given command. Signed-off-by: Klaus Jensen Signed-off-by: Klaus Jensen

[PATCH v7 09/48] nvme: add max_ioqpairs device parameter

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen The num_queues device paramater has a slightly confusing meaning because it accounts for the admin queue pair which is not really optional. Secondly, it is really a maximum value of queues allowed. Add a new max_ioqpairs parameter that only accounts for I/O queue pairs, but

[PATCH v7 15/48] nvme: add missing mandatory features

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Add support for returning a resonable response to Get/Set Features of mandatory features. Signed-off-by: Klaus Jensen Signed-off-by: Klaus Jensen Acked-by: Keith Busch --- hw/block/nvme.c | 60 ++- hw/block/trace-events | 2

[PATCH v7 12/48] nvme: add temperature threshold feature

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen It might seem wierd to implement this feature for an emulated device, but it is mandatory to support and the feature is useful for testing asynchronous event request support, which will be added in a later patch. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by

[PATCH v7 18/48] nvme: add log specific field to trace events

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen The LSP field is not used directly now, but include it in the trace. Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 3 ++- hw/block/trace-events | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/block/nvme.c b/hw

[PATCH v7 13/48] nvme: add support for the get log page command

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Add support for the Get Log Page command and basic implementations of the mandatory Error Information, SMART / Health Information and Firmware Slot Information log pages. In violation of the specification, the SMART / Health Information log page does not persist information

[PATCH v7 11/48] nvme: refactor device realization

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen This patch splits up nvme_realize into multiple individual functions, each initializing a different subset of the device. Signed-off-by: Klaus Jensen Signed-off-by: Klaus Jensen Acked-by: Keith Busch --- hw/block/nvme.c | 178

[PATCH v7 17/48] nvme: make sure ncqr and nsqr is valid

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen 0x is not an allowed value for NCQR and NSQR in Set Features on Number of Queues. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 8 1 file changed, 8 insertions(+) diff --git a/hw/block/nvme.c b/hw/block

[PATCH v7 16/48] nvme: additional tracing

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Also, streamline nvme_identify_ns and nvme_identify_ns_list. They do not need to repeat the command, it is already in the trace name. Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 20 hw/block/trace-events | 13 +++-- 2 files changed

[PATCH v7 19/48] nvme: support identify namespace descriptor list

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Since we are not providing the NGUID or EUI64 fields, we must support the Namespace UUID. We do not have any way of storing a persistent unique identifier, so conjure up a UUID that is just the namespace id. Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 39

[PATCH v7 14/48] nvme: add support for the asynchronous event request command

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Required for compliance with NVMe revision 1.2.1. See NVM Express 1.2.1, Section 5.2 ("Asynchronous Event Request command"). Mostly imported from Keith's qemu-nvme tree. Modified with a max number of queued events (controllable with the aer_max_queued device

[PATCH v7 25/48] nvme: replace dma_acct with blk_acct equivalent

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen The QSG isn't always initialized, so accounting could be wrong. Issue a call to blk_acct_start instead with the size taken from the QSG or IOV depending on the kind of I/O. Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 5 - 1

[PATCH v7 29/48] nvme: add request mapping helper

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Introduce the nvme_map helper to remove some noise in the main nvme_rw function. Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 13 ++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c

[PATCH v7 24/48] nvme: add mapping helpers

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Add nvme_map_addr, nvme_map_addr_cmb and nvme_addr_to_cmb helpers and use them in nvme_map_prp. This fixes a bug where in the case of a CMB transfer, the device would map to the buffer with a wrong length. Fixes: b2b2b67a00574 ("nvme: Add support for Read Data and Write

[PATCH v7 22/48] nvme: bump supported version to v1.3

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index d5c293476411..59935d4641a6 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -44,6

[PATCH v7 32/48] nvme: add check for mdts

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Add 'mdts' device parameter to control the Maximum Data Transfer Size of the controller and check that it is respected. Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 29 - hw/block/nvme.h |

[PATCH v7 20/48] nvme: enforce valid queue creation sequence

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Support returning Command Sequence Error if Set Features on Number of Queues is called after queues have been created. Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 12 hw/block/nvme.h | 1 + 2 files changed, 13 insertions

[PATCH v7 31/48] nvme: refactor request bounds checking

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 28 ++-- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 3e5e99644a4e..7528d75905d4 100644 --- a/hw/block/nvme.c

[PATCH v7 34/48] nvme: refactor NvmeRequest

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Add a reference to the NvmeNamespace and move clearing of the structure from "clear before use" to "clear after use". Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 38 +- hw/block/nvme.h | 1 + 2 files changed,

[PATCH v7 38/48] nvme: use preallocated qsg/iov in nvme_dma_prp

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Since clean up of the request qsg/iov has been moved to the common nvme_enqueue_req_completion function, there is no need to use a stack allocated qsg/iov in nvme_dma_prp. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky --- hw/block/nvme.c

[PATCH v7 26/48] nvme: remove redundant has_sg member

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Remove the has_sg member from NvmeRequest since it's redundant. Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 11 ++- hw/block/nvme.h | 1 - 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/hw/block/nvme.c b/hw/

[PATCH v7 37/48] nvme: add nvme_check_rw helper

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 26 -- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index c123be10fd0d..ffc49985321b 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -651,6

[PATCH v7 30/48] nvme: verify validity of prp lists in the cmb

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Before this patch the device already supported this, but it did not check for the validity of it nor announced the support in the LISTS field. If some of the PRPs in a PRP list are in the CMB, then ALL entries must be there. This patch makes sure that is verified as well as

[PATCH v7 23/48] nvme: memset preallocated requests structures

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen This is preparatory to subsequent patches that change how QSGs/IOVs are handled. It is important that the qsg and iov members of the NvmeRequest are initially zeroed. Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 2 +- 1 file changed, 1

[PATCH v7 21/48] nvme: provide the mandatory subnqn field

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index d88e21a14b77..d5c293476411 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1940,6 +1940,9

[PATCH v7 27/48] nvme: refactor dma read/write

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Refactor the nvme_dma_{read,write}_prp functions into a common function taking a DMADirection parameter. Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 88 - 1 file changed, 43 insertions(+), 45

[PATCH v7 39/48] pci: pass along the return value of dma_memory_rw

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen The nvme device needs to know the return value of dma_memory_rw to pass block/011 from blktests. So pass it along instead of ignoring it. There are no existing users of the return value, so this patch should be safe. Signed-off-by: Klaus Jensen Reviewed-by: Philippe Mathieu

[PATCH v7 33/48] nvme: be consistent about zeros vs zeroes

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen The spec in general uses 'zeroes' and not 'zeros'. Now, according to the Oxford dictionary, 'zeroes' is the action of zeroing something, i.e. "he zeroes the range" and 'zeros' is the plural of zero. Thus, Write Zeroes shoul

[PATCH v7 28/48] nvme: pass request along for tracing

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 67 +-- hw/block/trace-events | 2 +- 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index

[PATCH v7 40/48] nvme: handle dma errors

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Handling DMA errors gracefully is required for the device to pass the block/011 test ("disable PCI device while doing I/O") in the blktests suite. With this patch the device passes the test by retrying "critical" transfers (posting of completion entri

[PATCH v7 35/48] nvme: remove NvmeCmd parameter

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Keep a copy of the raw nvme command in the NvmeRequest and remove the now redundant NvmeCmd parameter. Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 177 +--- hw/block/nvme.h | 1 + 2 files changed, 93 insertions(+), 85

[PATCH v7 36/48] nvme: allow multiple aios per command

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen This refactors how the device issues asynchronous block backend requests. The NvmeRequest now holds a queue of NvmeAIOs that are associated with the command. This allows multiple aios to be issued for a command. Only when all requests have been completed will the device post a

[PATCH v7 45/48] nvme: support multiple namespaces

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen This adds support for multiple namespaces by introducing a new 'nvme-ns' device model. The nvme device creates a bus named from the device name ('id'). The nvme-ns devices then connect to this and registers themselves with the nvme device. This changes h

[PATCH v7 46/48] pci: allocate pci id for nvme

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen The emulated nvme device (hw/block/nvme.c) is currently using an internal Intel device id. Prepare to change that by allocating a device id under the 1b36 (Red Hat, Inc.) vendor id. Signed-off-by: Klaus Jensen Cc: Gerd Hoffmann Acked-by: Keith Busch Reviewed-by: Maxim

[PATCH v7 44/48] nvme: refactor identify active namespace id list

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Prepare to support inactive namespaces. Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky --- hw/block/nvme.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index f295f027b8e2..05a6fa334a70 100644 --- a

[PATCH v7 47/48] nvme: change controller pci id

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen There are two reasons for changing this: 1. The nvme device currently uses an internal Intel device id. 2. Since commits "nvme: fix write zeroes offset and count" and "nvme: support multiple namespaces" the controller device no longer has

[PATCH v7 42/48] nvme: add support for scatter gather lists

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen For now, support the Data Block, Segment and Last Segment descriptor types. See NVM Express 1.3d, Section 4.4 ("Scatter Gather List (SGL)"). Signed-off-by: Klaus Jensen Signed-off-by: Klaus Jensen Acked-by: Keith Busch --- hw/block/nvme.c

[PATCH v7 43/48] nvme: add support for sgl bit bucket descriptor

2020-04-14 Thread Klaus Jensen
From: Gollu Appalanaidu This adds support for SGL descriptor type 0x1 (bit bucket descriptor). See the NVM Express v1.3d specification, Section 4.4 ("Scatter Gather List (SGL)"). Signed-off-by: Gollu Appalanaidu Signed-off-by: Klaus Jensen --- hw/block/n

[PATCH v7 48/48] nvme: make lba data size configurable

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky --- hw/block/nvme-ns.c | 7 ++- hw/block/nvme-ns.h | 4 +++- hw/block/nvme.c| 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c

[PATCH v7 41/48] nvme: harden cmb access

2020-04-14 Thread Klaus Jensen
From: Klaus Jensen Since the controller has only supported PRPs so far it has not been required to check the ending address (addr + len - 1) of the CMB access for validity since it has been guaranteed to be in range of the CMB. This changes when the controller adds support for SGLs (next patch

[PATCH 00/16] nvme: refactoring and cleanups

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Philippe suggested that I split up this already way too huge series (more than 50 patches now), so here goes. The first patch in this series fixes a small bug in the pci doorbell size calculation. Please consider cherry-picking this. The rest are refactorings. The "nvme

[PATCH 03/16] nvme: remove superfluous breaks

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen These break statements was left over when commit 3036a626e9ef ("nvme: add Get/Set Feature Timestamp support") was merged. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c |

[PATCH 01/16] nvme: fix pci doorbell size calculation

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen The size of the BAR is 0x1000 (main registers) + 8 bytes for each queue. Currently, the size of the BAR is calculated like so: n->reg_size = pow2ceil(0x1004 + 2 * (n->params.num_queues + 1) * 4); Since the 'num_queues' parameter already accounts for the a

[PATCH 09/16] nvme: factor out property/constraint checks

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 52 ++--- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index ea613213bd57..635292d6fac4 100644 --- a/hw/block/nvme.c +++ b/hw

[PATCH 07/16] nvme: add max_ioqpairs device parameter

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen The num_queues device paramater has a slightly confusing meaning because it accounts for the admin queue pair which is not really optional. Secondly, it is really a maximum value of queues allowed. Add a new max_ioqpairs parameter that only accounts for I/O queue pairs, but

[PATCH 10/16] nvme: factor out device state setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 17 +++-- 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 635292d6fac4..e67f578fbf79 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1339,6 +1339,15

[PATCH 04/16] nvme: move device parameters to separate struct

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Move device configuration parameters to separate struct to make it explicit what is configurable and what is set internally. Signed-off-by: Klaus Jensen Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky Reviewed-by: Philippe Mathieu-Daudé

[PATCH 08/16] nvme: remove redundant cmbloc/cmbsz members

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 7 ++- hw/block/nvme.h | 2 -- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 9383d2cb0b38..ea613213bd57 100644 --- a/hw/block

[PATCH 15/16] nvme: factor out cmb setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 50 +++-- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 16d01af53a07..7387cf409f96 100644 --- a/hw/block/nvme.c +++ b/hw

[PATCH 16/16] nvme: factor out controller identify setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 42 -- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 7387cf409f96..d1566b56381d 100644 --- a/hw/block/nvme.c +++ b/hw/block

[PATCH 14/16] nvme: factor out pci setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 32 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 08f7ae0a48b3..16d01af53a07 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c

[PATCH 05/16] nvme: use constants in identify

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 8 include/block/nvme.h | 8 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index

[PATCH 06/16] nvme: refactor nvme_addr_read

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Pull the controller memory buffer check to its own function. The check will be used on its own in later patches. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 16 1 file changed, 12 insertions

[PATCH 13/16] nvme: factor out namespace setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 47 ++- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index f0989cbb4335..08f7ae0a48b3 100644 --- a/hw/block/nvme.c +++ b/hw

[PATCH 12/16] nvme: add namespace helpers

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Introduce some small helpers to make the next patches easier on the eye. Signed-off-by: Klaus Jensen --- hw/block/nvme.h | 16 1 file changed, 16 insertions(+) diff --git a/hw/block/nvme.h b/hw/block/nvme.h index ad1786953be9..d9900bed957c 100644 --- a/hw

[PATCH 11/16] nvme: factor out block backend setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 15 --- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index e67f578fbf79..f0989cbb4335 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1348,6 +1348,17

[PATCH 02/16] nvme: rename trace events to nvme_dev

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Change the prefix of all nvme device related trace events to 'nvme_dev' to not clash with trace events from the nvme block driver. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky --- hw/block/nvme.c

[PATCH v2 10/16] nvme: factor out device state setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 22 +- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 5f9ebbd6a1d5..45a352b63d89 100644 --- a/hw/block/nvme.c

[PATCH v2 00/16] nvme: refactoring and cleanups

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Changes since v1 * nvme: fix pci doorbell size calculation - added some defines and a better comment (Philippe) * nvme: rename trace events to pci_nvme - changed the prefix from nvme_dev to pci_nvme (Philippe) * nvme: add max_ioqpairs device parameter

[PATCH v2 06/16] nvme: refactor nvme_addr_read

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Pull the controller memory buffer check to its own function. The check will be used on its own in later patches. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 16 1 file changed, 12 insertions

[PATCH v2 03/16] nvme: remove superfluous breaks

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen These break statements was left over when commit 3036a626e9ef ("nvme: add Get/Set Feature Timestamp support") was merged. Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c |

[PATCH v2 08/16] nvme: remove redundant cmbloc/cmbsz members

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 7 ++- hw/block/nvme.h | 2 -- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 8092c1b46eb1..44856e873fd1 100644 --- a/hw/block

[PATCH v2 09/16] nvme: factor out property/constraint checks

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 43 --- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 44856e873fd1..5f9ebbd6a1d5 100644 --- a/hw/block/nvme.c +++ b/hw/block

[PATCH v2 04/16] nvme: move device parameters to separate struct

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Move device configuration parameters to separate struct to make it explicit what is configurable and what is set internally. Signed-off-by: Klaus Jensen Signed-off-by: Klaus Jensen Acked-by: Keith Busch Reviewed-by: Maxim Levitsky Reviewed-by: Philippe Mathieu-Daudé

[PATCH v2 05/16] nvme: use constants in identify

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 8 include/block/nvme.h | 8 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index

[PATCH v2 02/16] nvme: rename trace events to pci_nvme

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Change the prefix of all nvme device related trace events to 'pci_nvme' to not clash with trace events from the nvme block driver. Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 190 +- hw/block/trace-ev

[PATCH v2 07/16] nvme: add max_ioqpairs device parameter

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen The num_queues device paramater has a slightly confusing meaning because it accounts for the admin queue pair which is not really optional. Secondly, it is really a maximum value of queues allowed. Add a new max_ioqpairs parameter that only accounts for I/O queue pairs, but

[PATCH v2 01/16] nvme: fix pci doorbell size calculation

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen The size of the BAR is 0x1000 (main registers) + 8 bytes for each queue. Currently, the size of the BAR is calculated like so: n->reg_size = pow2ceil(0x1004 + 2 * (n->num_queues + 1) * 4); Since the 'num_queues' parameter already accounts for the admin qu

[PATCH v2 11/16] nvme: factor out block backend setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 13 ++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 45a352b63d89..80da0825d295 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1351,6 +1351,13

[PATCH v2 15/16] nvme: factor out cmb setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 49 +++-- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 906ae595025a..4c28d75e0fc8

[PATCH v2 12/16] nvme: add namespace helpers

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Introduce some small helpers to make the next patches easier on the eye. Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 3 +-- hw/block/nvme.h | 16 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index

[PATCH v2 13/16] nvme: factor out namespace setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 46 ++ 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index d5244102252c..2b007115c302 100644 --- a/hw/block/nvme.c +++ b/hw/block

[PATCH v2 16/16] nvme: factor out controller identify setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Philippe Mathieu-Daudé --- hw/block/nvme.c | 52 +++-- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 4c28d75e0fc8..804f24719dce

[PATCH v2 14/16] nvme: factor out pci setup

2020-04-15 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 30 ++ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 2b007115c302..906ae595025a 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c

[PATCH v3 03/16] nvme: remove superfluous breaks

2020-04-22 Thread Klaus Jensen
From: Klaus Jensen These break statements was left over when commit 3036a626e9ef ("nvme: add Get/Set Feature Timestamp support") was merged. Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Keith Busch --- hw/block/nvme.c |

[PATCH v3 08/16] nvme: remove redundant cmbloc/cmbsz members

2020-04-22 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Maxim Levitsky Reviewed-by: Keith Busch --- hw/block/nvme.c | 7 ++- hw/block/nvme.h | 2 -- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c

[PATCH v3 05/16] nvme: use constants in identify

2020-04-22 Thread Klaus Jensen
From: Klaus Jensen Signed-off-by: Klaus Jensen Reviewed-by: Maxim Levitsky Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Keith Busch --- hw/block/nvme.c | 8 include/block/nvme.h | 8 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme.c b

[PATCH v3 06/16] nvme: refactor nvme_addr_read

2020-04-22 Thread Klaus Jensen
From: Klaus Jensen Pull the controller memory buffer check to its own function. The check will be used on its own in later patches. Signed-off-by: Klaus Jensen Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Maxim Levitsky Reviewed-by: Keith Busch --- hw/block/nvme.c | 16

[PATCH v3 01/16] nvme: fix pci doorbell size calculation

2020-04-22 Thread Klaus Jensen
From: Klaus Jensen The size of the BAR is 0x1000 (main registers) + 8 bytes for each queue. Currently, the size of the BAR is calculated like so: n->reg_size = pow2ceil(0x1004 + 2 * (n->num_queues + 1) * 4); Since the 'num_queues' parameter already accounts for the admin qu

[PATCH v3 04/16] nvme: move device parameters to separate struct

2020-04-22 Thread Klaus Jensen
From: Klaus Jensen Move device configuration parameters to separate struct to make it explicit what is configurable and what is set internally. Signed-off-by: Klaus Jensen Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 49 - hw/block/nvme.h

[PATCH v3 07/16] nvme: add max_ioqpairs device parameter

2020-04-22 Thread Klaus Jensen
From: Klaus Jensen The num_queues device paramater has a slightly confusing meaning because it accounts for the admin queue pair which is not really optional. Secondly, it is really a maximum value of queues allowed. Add a new max_ioqpairs parameter that only accounts for I/O queue pairs, but

<    1   2   3   4   5   6   7   8   9   10   >