On 5/7/24 10:05, Vincent Fu wrote:
On 5/6/24 04:06, Klaus Jensen wrote:
The Management Operation field of I/O Management Send is only 8 bits,
not 16.

Fixes: 73064edfb864 ("hw/nvme: flexible data placement emulation")
Signed-off-by: Klaus Jensen <k.jen...@samsung.com>
---
  hw/nvme/ctrl.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index 9e7bbebc8bb0..ede5f281dd7c 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -4387,7 +4387,7 @@ static uint16_t nvme_io_mgmt_send(NvmeCtrl *n, NvmeRequest *req)
  {
      NvmeCmd *cmd = &req->cmd;
      uint32_t cdw10 = le32_to_cpu(cmd->cdw10);
-    uint8_t mo = (cdw10 & 0xff);
+    uint8_t mo = cdw10 & 0xf;
      switch (mo) {
      case NVME_IOMS_MO_NOP:

---
base-commit: 84b0eb1826f690aa8d51984644318ee6c810f5bf
change-id: 20240506-fix-ioms-mo-97098c6c5396

Best regards,

Reviewed-by: Vincent Fu <vincent...@samsung.com>

Klaus, upon taking a second look, the original code is correct. The proposed change would only keep the least significant 4 bits of the MO field. The original code gives you the 8 bits needed.

Let me withdraw my Reviewed-by.

Vincent

Reply via email to