[RFC PATCH V2 09/11] hw/block/nvme: support for multi-controller in subsystem

2021-01-17 Thread Minwoo Im
e attached controllers to the subsystem with a limit(32). This patch didn't take list for the controllers to make it seamless with nvme-ns device. Signed-off-by: Minwoo Im --- hw/block/nvme-subsys.c | 21 + hw/block/nvme-subsys.h | 4 +++

[RFC PATCH V2 08/11] hw/block/nvme: add CMIC enum value for Identify Controller

2021-01-17 Thread Minwoo Im
Added Controller Multi-path I/O and Namespace Sharing Capabilities (CMIC) field to support multi-controller in the following patches. This field is in Identify Controller data structure in [76]. Signed-off-by: Minwoo Im --- include/block/nvme.h | 4 1 file changed, 4 insertions(+) diff

[RFC PATCH V2 07/11] hw/block/nvme: support to map controller to a subsystem

2021-01-17 Thread Minwoo Im
' in above example). Signed-off-by: Minwoo Im --- hw/block/nvme.c | 30 ++ hw/block/nvme.h | 3 +++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index dde83aafc33d..af5b2162e2b5 100644 --- a/hw/block/nvm

[RFC PATCH V2 03/11] hw/block/nvme: remove unused argument in nvme_ns_init_blk

2021-01-17 Thread Minwoo Im
Removed no longer used aregument NvmeCtrl object in nvme_ns_init_blk(). Signed-off-by: Minwoo Im --- hw/block/nvme-ns.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c index c403cd36b6bd..fc42ae184e01 100644 --- a/hw/block/nvme

[RFC PATCH V2 06/11] hw/block/nvme: introduce nvme-subsys device

2021-01-17 Thread Minwoo Im
) -device nvme-subsys,id=subsys0: nqn.2019-08.org.qemu:subsys0 Signed-off-by: Minwoo Im --- hw/block/meson.build | 2 +- hw/block/nvme-subsys.c | 63 ++ hw/block/nvme-subsys.h | 25 + hw/block/nvme.c| 3 ++ 4 files changed, 92

[RFC PATCH V2 04/11] hw/block/nvme: split setup and register for namespace

2021-01-17 Thread Minwoo Im
especially for multi-path. In that case, it should be split into two to make namespace independent from a controller. Signed-off-by: Minwoo Im --- hw/block/nvme-ns.c | 11 +++ 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c index fc42ae184e01

[RFC PATCH V2 05/11] hw/block/nvme: remove unused argument in nvme_ns_setup

2021-01-17 Thread Minwoo Im
nvme_ns_setup() finally does not have nothing to do with NvmeCtrl instance. Signed-off-by: Minwoo Im --- hw/block/nvme-ns.c | 4 ++-- hw/block/nvme-ns.h | 2 +- hw/block/nvme.c| 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c

[RFC PATCH V2 02/11] hw/block/nvme: open code for volatile write cache

2021-01-17 Thread Minwoo Im
. Also, it open coded the Get Features for VWC to check all namespaces attached to the controller, and if false detected, return directly false. Signed-off-by: Minwoo Im --- hw/block/nvme-ns.c | 4 hw/block/nvme.c| 15 --- hw/block/nvme.h| 1 - 3 files changed, 12

[RFC PATCH V2 01/11] hw/block/nvme: remove unused argument in nvme_ns_init_zoned

2021-01-17 Thread Minwoo Im
nvme_ns_init_zoned() has no use for given NvmeCtrl object. Signed-off-by: Minwoo Im --- hw/block/nvme-ns.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c index 274eaf61b721..32662230130b 100644 --- a/hw/block/nvme-ns.c +++ b/hw

[RFC PATCH V2 00/11] hw/block/nvme: support multi-path for ctrl/ns

2021-01-17 Thread Minwoo Im
-subsys hierarchy. [10/11 - 11/11] Since RFC V1: - Updated namespace sharing scheme to be based on nvme-subsys hierarchy. Thanks, [1] https://lists.gnu.org/archive/html/qemu-block/2021-01/msg00425.html Minwoo Im (11): hw/block/nvme: remove unused argument in nvme_ns_init_zoned hw/bl

Re: [RFC PATCH 0/5] hw/block/nvme: support multi-path for ctrl/ns

2021-01-15 Thread Minwoo Im
On 21-01-15 18:47:20, Klaus Jensen wrote: > On Jan 15 09:35, Keith Busch wrote: > > On Fri, Jan 15, 2021 at 02:57:45PM +0100, Klaus Jensen wrote: > > > > > > As you already mentioned, the problem I see with this approach is that > > > we have separate namespaces attached to separate controllers. S

Re: [PATCH] hw/block/nvme: add zoned I/O commands to nvme_io_opc_str()

2021-01-15 Thread Minwoo Im
Oh, I think I missed that one :-). Thanks!

[PATCH] hw/block/nvme: add zoned I/O commands to nvme_io_opc_str()

2021-01-15 Thread Minwoo Im
Currently, Zoned I/O commands are parsed as unknown: pci_nvme_io_cmd cid 768 nsid 1 sqid 4 opc 0x79 opname 'NVME_NVM_CMD_UNKNOWN' Parse zoned I/O commands along with other I/O commands to print. Signed-off-by: Minwoo Im --- hw/block/nvme.h | 3 +++ 1 file changed, 3 insertions(+)

[PATCH] hw/block/nvme: error if drive less than a zone size

2021-01-15 Thread Minwoo Im
If a user gives backing device file less than a single zone size, the namespace capacity will be reported to 0 and the kerenl will fail to allocate namespace silently. This patch errors in case that num_zones are 0 which is backing device is less than a single zone size. Signed-off-by: Minwoo Im

[RFC PATCH 5/5] hw/block/nvme: add namespace sharing param for mpath

2021-01-15 Thread Minwoo Im
=,bus=nvme0,nsid=1,... -device nvme-ns,uuid=,bus=nvme1,nsid=1,... Signed-off-by: Minwoo Im --- hw/block/nvme-ns.c | 14 -- hw/block/nvme-ns.h | 2 ++ hw/block/nvme.c| 6 ++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/hw/block/nvme-ns.c b/hw/block/nvme

[RFC PATCH 3/5] hw/block/nvme: add multi-controller param for mpath

2021-01-15 Thread Minwoo Im
. Signed-off-by: Minwoo Im --- hw/block/nvme.c | 10 ++ hw/block/nvme.h | 1 + 2 files changed, 11 insertions(+) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 132e61c0ee7b..50b349cf9ea3 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -57,6 +57,11 @@ * This value will be

[RFC PATCH 2/5] nvme: add CMIC enum value for Identify Controller

2021-01-15 Thread Minwoo Im
Added Controller Multi-path I/O and Namespace Sharing Capabilities (CMIC) field to support multi-controller in the following patches. This field is in Identify Controller data structure in [76]. Signed-off-by: Minwoo Im --- include/block/nvme.h | 4 1 file changed, 4 insertions(+) diff

[RFC PATCH 4/5] nvme: add NMIC enum value for Identify Namespace

2021-01-15 Thread Minwoo Im
Added Namespace Multi-path I/O and Namespace Sharing Capabilities (NMIC) field to support shared namespace from controller(s). This field is in Identify Namespace data structure in [30]. Signed-off-by: Minwoo Im --- include/block/nvme.h | 4 1 file changed, 4 insertions(+) diff --git a

[RFC PATCH 1/5] hw/block/nvme: add controller id parameter

2021-01-15 Thread Minwoo Im
user wants to set up multi-controller in a NVM subsystem. Signed-off-by: Minwoo Im --- hw/block/nvme.c | 10 ++ hw/block/nvme.h | 1 + 2 files changed, 11 insertions(+) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index cf0fe28fe6eb..132e61c0ee7b 100644 --- a/hw/block/nvme.c +++ b/hw

[RFC PATCH 0/5] hw/block/nvme: support multi-path for ctrl/ns

2021-01-15 Thread Minwoo Im
sure this is a good start for this feature, so I put the RFC tag here. Please kindly review! Thanks, Minwoo Im (5): hw/block/nvme: add controller id parameter nvme: add CMIC enum value for Identify Controller hw/block/nvme: add multi-controller param for mpath nvme: add NMIC enum value for

Re: [PATCH] hw/block/nvme: fix bad clearing of CAP

2020-12-09 Thread Minwoo Im
Hello, Reviewed-by: Minwoo Im

Re: [PATCH v2] hw/block/nvme: add compare command

2020-11-26 Thread Minwoo Im
lu Appalanaidu > [k.jensen: rebased] > Signed-off-by: Klaus Jensen Reviewed-by: Minwoo Im

Re: [PATCH 1/2] nvme: updated shared header for copy command

2020-11-25 Thread Minwoo Im
< 5, > NVME_ONCS_TIMESTAMP = 1 << 6, > +NVME_ONCS_COPY = 1 << 8, > +}; > + > +enum NvmeIdCtrlOcfs { > +NVME_OCFS_COPY_FORMAT_0 = 1 << NVME_COPY_FORMAT_0, I'd prefer (1 << 0) to (1 << enum) which is more obvious and same style with enum NvmeIdCtrlOncs. But I'm fine with both cases. Please add: Reviewed-by: Minwoo Im

Re: [PATCH] hw/block/nvme: add compare command

2020-11-25 Thread Minwoo Im
Hello, On 20-11-24 08:37:14, Klaus Jensen wrote: > From: Gollu Appalanaidu > > Add the Compare command. > > This implementation uses a bounce buffer to read in the data from > storage and then compare with the host supplied buffer. > > Signed-off-by: Gollu Appalanaidu > [k.jensen: rebased] >

Re: [PATCH v8 4/5] nvme: add namespace I/O optimization fields to shared header

2020-11-16 Thread Minwoo Im
Stefan Hajnoczi Reviewed-by: Minwoo Im

Re: [PATCH v8 3/5] hw/block/nvme: add dulbe support

2020-11-16 Thread Minwoo Im
On 11/12 20:59, Klaus Jensen wrote: > From: Klaus Jensen > > Add support for reporting the Deallocated or Unwritten Logical Block > Error (DULBE). > > Rely on the block status flags reported by the block layer and consider > any block with the BDRV_BLOCK_ZERO flag to be deallocated. > > Multipl

Re: [PATCH v8 2/5] hw/block/nvme: pull aio error handling

2020-11-16 Thread Minwoo Im
On 11/12 20:59, Klaus Jensen wrote: > From: Klaus Jensen > > Add a new function, nvme_aio_err, to handle errors resulting from AIOs > and use this from the callbacks. > > Signed-off-by: Klaus Jensen > --- > hw/block/nvme.c | 61 + > 1 file change

Re: [PATCH v8 1/5] hw/block/nvme: remove superfluous NvmeCtrl parameter

2020-11-16 Thread Minwoo Im
On 11/12 20:59, Klaus Jensen wrote: > From: Klaus Jensen > > nvme_check_bounds has no use of the NvmeCtrl parameter; remove it. > > Signed-off-by: Klaus Jensen Reviewed-by: Minwoo Im

Re: [PATCH v2 14/16] hw/block/nvme: consolidate qsg/iov clearing

2020-07-30 Thread Minwoo Im
wanted to make it clear to understand myself here. Reviewed-by: Minwoo Im

Re: [PATCH v2 14/16] hw/block/nvme: consolidate qsg/iov clearing

2020-07-30 Thread Minwoo Im
On 20-07-30 00:06:36, Klaus Jensen wrote: > From: Klaus Jensen > > Always destroy the request qsg/iov at the end of request use. > > Signed-off-by: Klaus Jensen > --- > hw/block/nvme.c | 52 - > 1 file changed, 21 insertions(+), 31 deletions(-) >

Re: [PATCH v2 16/16] hw/block/nvme: remove explicit qsg/iov parameters

2020-07-30 Thread Minwoo Im
On 20-07-30 00:06:38, Klaus Jensen wrote: > From: Klaus Jensen > > Since nvme_map_prp always operate on the request-scoped qsg/iovs, just > pass a single pointer to the NvmeRequest instead of two for each of the > qsg and iov. > > Suggested-by: Minwoo Im > Sig

Re: [PATCH v2 15/16] hw/block/nvme: use preallocated qsg/iov in nvme_dma_prp

2020-07-30 Thread Minwoo Im
iewed-by: Maxim Levitsky Reviewed-by: Minwoo Im

Re: [PATCH v2 08/16] hw/block/nvme: add request mapping helper

2020-07-30 Thread Minwoo Im
;dptr.prp2); > + > +return nvme_map_prp(&req->qsg, &req->iov, prp1, prp2, len, n); > +} Let's do something for MPTR laster also when we are right in front of that. Looks good to me. Reviewed-by: Minwoo Im > + > static void nvme_post_cqes(void *opaque) > { >

Re: [PATCH v2 07/16] hw/block/nvme: add tracing to nvme_map_prp

2020-07-30 Thread Minwoo Im
s) + 1; > uint16_t status; > > +trace_pci_nvme_map_prp(trans_len, len, prp1, prp2, num_prps); Hmm.. Okay with this. But once QEMUSGList and QEMUIOVector instances are coming into the NvmeRequest, we just can pass the NvmeRequest instance here and print the cid as well l

Re: [PATCH v2 05/16] hw/block/nvme: destroy request iov before reuse

2020-07-30 Thread Minwoo Im
On Thu, Jul 30, 2020 at 7:06 AM Klaus Jensen wrote: > > From: Klaus Jensen > > Make sure the request iov is destroyed before reuse; fixing a memory > leak. > > Signed-off-by: Klaus Jensen Looks good to me and Thanks for splitting this up. Reviewed-by: Minwoo Im

Re: [PATCH v2 04/16] hw/block/nvme: remove redundant has_sg member

2020-07-30 Thread Minwoo Im
On Thu, Jul 30, 2020 at 7:06 AM Klaus Jensen wrote: > > From: Klaus Jensen > > Remove the has_sg member from NvmeRequest since it's redundant. > > Signed-off-by: Klaus Jensen Looks better than the previous one to me. Reviewed-by: Minwoo Im

Re: [PATCH v2 01/16] hw/block/nvme: memset preallocated requests structures

2020-07-30 Thread Minwoo Im
us Jensen > Reviewed-by: Maxim Levitsky Reviewed-by: Minwoo Im

Re: [PATCH 04/16] hw/block/nvme: remove redundant has_sg member

2020-07-29 Thread Minwoo Im
> -Original Message- > From: Qemu-devel On > Behalf Of Klaus Jensen > Sent: Thursday, July 30, 2020 3:29 AM > To: Minwoo Im > Cc: Kevin Wolf ; qemu-bl...@nongnu.org; Klaus Jensen > ; qemu-devel@nongnu.org; Max Reitz ; > Keith Busch > Subject: Re: [PATCH 0

Re: [PATCH 16/16] hw/block/nvme: use preallocated qsg/iov in nvme_dma_prp

2020-07-29 Thread Minwoo Im
On 20-07-20 13:37:48, Klaus Jensen wrote: > From: Klaus Jensen > > Since clean up of the request qsg/iov is now always done post-use, 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 > -

Re: [PATCH 15/16] hw/block/nvme: remove NvmeCmd parameter

2020-07-29 Thread Minwoo Im
On 20-07-20 13:37:47, Klaus Jensen wrote: > 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 I would really have suggested this change from 13th patch! Revi

Re: [PATCH 14/16] hw/block/nvme: consolidate qsg/iov clearing

2020-07-29 Thread Minwoo Im
he previous patch in this series. And I also agree on starting to make focus on nvme_req_clear() for wrap-up. Looks good to me. Reviewed-by: Minwoo Im

Re: [PATCH 13/16] hw/block/nvme: add a namespace reference in NvmeRequest

2020-07-29 Thread Minwoo Im
On 20-07-20 13:37:45, Klaus Jensen wrote: > From: Klaus Jensen > > Instead of passing around the NvmeNamespace, add it as a member in the > NvmeRequest structure. > > Signed-off-by: Klaus Jensen Reviewed-by: Minwoo Im

Re: [PATCH 11/16] hw/block/nvme: be consistent about zeros vs zeroes

2020-07-29 Thread Minwoo Im
Reviewed-by: Minwoo Im Thanks,

Re: [PATCH 12/16] hw/block/nvme: refactor NvmeRequest clearing

2020-07-29 Thread Minwoo Im
On 20-07-20 13:37:44, Klaus Jensen wrote: > From: Klaus Jensen > > Move clearing of the structure from "clear before use" to "clear > after use". Yah, agree on this. Reviewed-by: Minwoo Im

Re: [PATCH 10/16] hw/block/nvme: add check for mdts

2020-07-29 Thread Minwoo Im
e-events > index 6d0cd588c786..5d7d4679650b 100644 > --- a/hw/block/trace-events > +++ b/hw/block/trace-events > @@ -85,6 +85,7 @@ pci_nvme_mmio_shutdown_set(void) "shutdown bit set" > pci_nvme_mmio_shutdown_cleared(void) "shutdown bit cleared" > > # nvme traces for error conditions > +pci_nvme_err_mdts(uint16_t cid, size_t len) "cid %"PRIu16" len %"PRIu64"" > pci_nvme_err_invalid_dma(void) "PRP/SGL is too small for transfer size" > pci_nvme_err_invalid_prplist_ent(uint64_t prplist) "PRP list entry is null > or not page aligned: 0x%"PRIx64"" > pci_nvme_err_invalid_prp2_align(uint64_t prp2) "PRP2 is not page aligned: > 0x%"PRIx64"" > -- > 2.27.0 > > Reviewed-by: Minwoo Im Thanks,

Re: [PATCH 09/16] hw/block/nvme: refactor request bounds checking

2020-07-29 Thread Minwoo Im
On 20-07-20 13:37:41, Klaus Jensen wrote: > From: Klaus Jensen > > Hoist bounds checking into its own function and check for wrap-around. > > Signed-off-by: Klaus Jensen > Reviewed-by: Maxim Levitsky Reviewed-by: Minwoo Im

Re: [PATCH 08/16] hw/block/nvme: verify validity of prp lists in the cmb

2020-07-29 Thread Minwoo Im
some of the PRPs in a PRP list are in the CMB, then ALL entries must > be there. This patch makes sure that requirement is verified as well as > properly announcing support for PRP lists in the CMB. > > Signed-off-by: Klaus Jensen > Reviewed-by: Maxim Levitsky Reviewed-by: Minwoo Im

Re: [PATCH 07/16] hw/block/nvme: add request mapping helper

2020-07-29 Thread Minwoo Im
Klaus, On 20-07-20 13:37:39, Klaus Jensen wrote: > 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 insertio

Re: [PATCH 06/16] hw/block/nvme: pass request along for tracing

2020-07-29 Thread Minwoo Im
Klaus, On 20-07-20 13:37:38, Klaus Jensen wrote: > From: Klaus Jensen > > Pass along the NvmeRequest in various functions since it is very useful > for tracing. One doubt here. This patch has put NvmeRequest argument to the nvme_map_prp() to trace the request's command id. But can we just

Re: [PATCH 05/16] hw/block/nvme: refactor dma read/write

2020-07-29 Thread Minwoo Im
Klaus, On 20-07-20 13:37:37, Klaus Jensen wrote: > 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 Reviewed-by: Minwoo Im Thanks,

Re: [PATCH 04/16] hw/block/nvme: remove redundant has_sg member

2020-07-29 Thread Minwoo Im
Klaus, On 20-07-20 13:37:36, Klaus Jensen wrote: > From: Klaus Jensen > > Remove the has_sg member from NvmeRequest since it's redundant. > > Also, make sure the request iov is destroyed at completion time. > > Signed-off-by: Klaus Jensen > Reviewed-by: Maxim Levitsky > --- > hw/block/nvme.

Re: [PATCH 03/16] hw/block/nvme: replace dma_acct with blk_acct equivalent

2020-07-29 Thread Minwoo Im
k_acct_start(blk_get_stats(n->conf.blk), &req->acct, > req->iov.size, > + acct); > req->aiocb = is_write ? > blk_aio_pwritev(n->conf.blk, data_offset, &req->iov, 0, > nvme_rw_cb, > req) : Reviewed-by: Minwoo Im Thanks,

Re: [PATCH 02/16] hw/block/nvme: add mapping helpers

2020-07-29 Thread Minwoo Im
tor *iov, uint64_t prp1, > } else { > if (unlikely(prp2 & (n->page_size - 1))) { > trace_pci_nvme_err_invalid_prp2_align(prp2); > +status = NVME_INVALID_FIELD | NVME_DNR; > goto unmap; > } > -

[PATCH] nvme: Print 'cqid' for nvme_del_cq

2020-03-24 Thread Minwoo Im
The given argument for this trace should be cqid, not sqid. Signed-off-by: Minwoo Im --- hw/block/trace-events | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/block/trace-events b/hw/block/trace-events index f78939fa9da1..bf6d11b58b85 100644 --- a/hw/block/trace-events

Re: [Qemu-devel] [Qemu-block] [PATCH] qemu-block: add support HMB with feature commands.

2017-10-28 Thread Minwoo Im
On Tue, Oct 24, 2017 at 1:18 AM, Stefan Hajnoczi wrote: > On Sat, Oct 21, 2017 at 03:54:16PM +0900, Minwoo Im wrote: >> Add support HMB(Host Memory Block) with feature commands(Get Feature, Set >> Feature). >> nvme-4.14 tree supports HMB features. >> This patch w

Re: [Qemu-devel] [Qemu-block][PATCH] qemu-block: add support HMB with feature commands.

2017-10-28 Thread Minwoo Im
I'll send a patch only when there is a clear real use case. Thanks for your reply. On Mon, Oct 23, 2017 at 11:30 PM, Keith Busch wrote: > On Sat, Oct 21, 2017 at 03:54:16PM +0900, Minwoo Im wrote: >> Add support HMB(Host Memory Block) with feature commands(Get Feature, Set >&g

[Qemu-devel] [Qemu-block][PATCH] qemu-block: add support HMB with feature commands.

2017-10-21 Thread Minwoo Im
Add support HMB(Host Memory Block) with feature commands(Get Feature, Set Feature). nvme-4.14 tree supports HMB features. This patch will make nvme controller to return 32MiB preferred size of HMB to host via identify command. Set Feature, Get Feature implemented for HMB. Signed-off-by: Minwoo

<    1   2   3