Message ID | c9186dd4-01bd-b143-8708-41b03caadde7@samsung.com |
---|---|
State | New |
Headers | show |
Series | hw/nvme: Return error for fused operations | expand |
On Sep 10 16:50, Pankaj Raghav wrote: > Currently, FUSED operations are not supported by QEMU. As per the 1.4 SPEC, > controller should abort the command that requested a fused operation with > an INVALID FIELD error code if they are not supported. > > > Signed-off-by: Pankaj Raghav <p.raghav@samsung.com> > --- > hw/nvme/ctrl.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c > index dc0e7b0030..d15a80a054 100644 > --- a/hw/nvme/ctrl.c > +++ b/hw/nvme/ctrl.c > @@ -3893,6 +3893,10 @@ static uint16_t nvme_io_cmd(NvmeCtrl *n, NvmeRequest *req) > return ns->status; > } > > + if (NVME_CMD_FLAGS_FUSE(req->cmd.flags)) { > + return NVME_INVALID_FIELD; > + } > + > req->ns = ns; > > switch (req->cmd.opcode) { > -- > 2.25.1 > I think this should be done in nvme_admin_cmd() as well? You could hoist this to nvme_process_sq(), but I don't think it belongs there. So better to just copy it.
diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index dc0e7b0030..d15a80a054 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -3893,6 +3893,10 @@ static uint16_t nvme_io_cmd(NvmeCtrl *n, NvmeRequest *req) return ns->status; } + if (NVME_CMD_FLAGS_FUSE(req->cmd.flags)) { + return NVME_INVALID_FIELD; + } + req->ns = ns; switch (req->cmd.opcode) {
Currently, FUSED operations are not supported by QEMU. As per the 1.4 SPEC, controller should abort the command that requested a fused operation with an INVALID FIELD error code if they are not supported. Signed-off-by: Pankaj Raghav <p.raghav@samsung.com> --- hw/nvme/ctrl.c | 4 ++++ 1 file changed, 4 insertions(+)