Message ID | 20200204095208.269131-15-k.jensen@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | nvme: support NVMe v1.3d, SGLs and multiple namespaces | expand |
On Tue, 2020-02-04 at 10:51 +0100, Klaus Jensen wrote: > 0xffff is not an allowed value for NCQR and NSQR in Set Features on > Number of Queues. > > Signed-off-by: Klaus Jensen <k.jensen@samsung.com> > --- > hw/block/nvme.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/hw/block/nvme.c b/hw/block/nvme.c > index 30c5b3e7a67d..900732bb2f38 100644 > --- a/hw/block/nvme.c > +++ b/hw/block/nvme.c > @@ -1133,6 +1133,10 @@ static uint16_t nvme_set_feature(NvmeCtrl *n, NvmeCmd *cmd, NvmeRequest *req) > blk_set_enable_write_cache(n->conf.blk, dw11 & 1); > break; > case NVME_NUMBER_OF_QUEUES: > + if ((dw11 & 0xffff) == 0xffff || ((dw11 >> 16) & 0xffff) == 0xffff) { > + return NVME_INVALID_FIELD | NVME_DNR; > + } Very minor nitpick: since this spec requirement is not obvious, a quote/reference to the spec would be nice to have here. > + > trace_nvme_dev_setfeat_numq((dw11 & 0xFFFF) + 1, > ((dw11 >> 16) & 0xFFFF) + 1, n->params.num_queues - 1, > n->params.num_queues - 1); Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Best regards, Maxim Levitsky
On Feb 12 12:30, Maxim Levitsky wrote: > On Tue, 2020-02-04 at 10:51 +0100, Klaus Jensen wrote: > > 0xffff is not an allowed value for NCQR and NSQR in Set Features on > > Number of Queues. > > > > Signed-off-by: Klaus Jensen <k.jensen@samsung.com> > > --- > > hw/block/nvme.c | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/hw/block/nvme.c b/hw/block/nvme.c > > index 30c5b3e7a67d..900732bb2f38 100644 > > --- a/hw/block/nvme.c > > +++ b/hw/block/nvme.c > > @@ -1133,6 +1133,10 @@ static uint16_t nvme_set_feature(NvmeCtrl *n, NvmeCmd *cmd, NvmeRequest *req) > > blk_set_enable_write_cache(n->conf.blk, dw11 & 1); > > break; > > case NVME_NUMBER_OF_QUEUES: > > + if ((dw11 & 0xffff) == 0xffff || ((dw11 >> 16) & 0xffff) == 0xffff) { > > + return NVME_INVALID_FIELD | NVME_DNR; > > + } > Very minor nitpick: since this spec requirement is not obvious, a quote/reference to the spec > would be nice to have here. > Added. > > + > > trace_nvme_dev_setfeat_numq((dw11 & 0xFFFF) + 1, > > ((dw11 >> 16) & 0xFFFF) + 1, n->params.num_queues - 1, > > n->params.num_queues - 1); > > Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> > > Best regards, > Maxim Levitsky >
On Mon, 2020-03-16 at 00:48 -0700, Klaus Birkelund Jensen wrote: > On Feb 12 12:30, Maxim Levitsky wrote: > > On Tue, 2020-02-04 at 10:51 +0100, Klaus Jensen wrote: > > > 0xffff is not an allowed value for NCQR and NSQR in Set Features on > > > Number of Queues. > > > > > > Signed-off-by: Klaus Jensen <k.jensen@samsung.com> > > > --- > > > hw/block/nvme.c | 4 ++++ > > > 1 file changed, 4 insertions(+) > > > > > > diff --git a/hw/block/nvme.c b/hw/block/nvme.c > > > index 30c5b3e7a67d..900732bb2f38 100644 > > > --- a/hw/block/nvme.c > > > +++ b/hw/block/nvme.c > > > @@ -1133,6 +1133,10 @@ static uint16_t nvme_set_feature(NvmeCtrl *n, NvmeCmd *cmd, NvmeRequest *req) > > > blk_set_enable_write_cache(n->conf.blk, dw11 & 1); > > > break; > > > case NVME_NUMBER_OF_QUEUES: > > > + if ((dw11 & 0xffff) == 0xffff || ((dw11 >> 16) & 0xffff) == 0xffff) { > > > + return NVME_INVALID_FIELD | NVME_DNR; > > > + } > > > > Very minor nitpick: since this spec requirement is not obvious, a quote/reference to the spec > > would be nice to have here. > > > > Added. Thanks! > > > > + > > > trace_nvme_dev_setfeat_numq((dw11 & 0xFFFF) + 1, > > > ((dw11 >> 16) & 0xFFFF) + 1, n->params.num_queues - 1, > > > n->params.num_queues - 1); > > > > Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> > > > > Best regards, > > Maxim Levitsky > > > > Best regards, Maxim Levitsky
diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 30c5b3e7a67d..900732bb2f38 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1133,6 +1133,10 @@ static uint16_t nvme_set_feature(NvmeCtrl *n, NvmeCmd *cmd, NvmeRequest *req) blk_set_enable_write_cache(n->conf.blk, dw11 & 1); break; case NVME_NUMBER_OF_QUEUES: + if ((dw11 & 0xffff) == 0xffff || ((dw11 >> 16) & 0xffff) == 0xffff) { + return NVME_INVALID_FIELD | NVME_DNR; + } + trace_nvme_dev_setfeat_numq((dw11 & 0xFFFF) + 1, ((dw11 >> 16) & 0xFFFF) + 1, n->params.num_queues - 1, n->params.num_queues - 1);
0xffff is not an allowed value for NCQR and NSQR in Set Features on Number of Queues. Signed-off-by: Klaus Jensen <k.jensen@samsung.com> --- hw/block/nvme.c | 4 ++++ 1 file changed, 4 insertions(+)