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 +++
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
' 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
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
) -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
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
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
. 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
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
-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
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
Oh, I think I missed that one :-).
Thanks!
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(+)
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
=,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
.
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
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
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
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
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
Hello,
Reviewed-by: Minwoo Im
lu Appalanaidu
> [k.jensen: rebased]
> Signed-off-by: Klaus Jensen
Reviewed-by: 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
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]
>
Stefan Hajnoczi
Reviewed-by: 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
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
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
wanted to make it clear to understand myself here.
Reviewed-by: 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(-)
>
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
iewed-by: Maxim Levitsky
Reviewed-by: 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)
> {
>
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
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
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
us Jensen
> Reviewed-by: Maxim Levitsky
Reviewed-by: 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
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
> -
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
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
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
Reviewed-by: Minwoo Im
Thanks,
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
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,
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
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
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
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
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,
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.
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,
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;
> }
> -
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
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
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
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
201 - 257 of 257 matches
Mail list logo