c.common.nsid = cpu_to_le32(cmd.nsid);
        c.common.cdw2[0] = cpu_to_le32(cmd.cdw2);
        c.common.cdw2[1] = cpu_to_le32(cmd.cdw3);
-       c.common.cdw10[0] = cpu_to_le32(cmd.cdw10);
-       c.common.cdw10[1] = cpu_to_le32(cmd.cdw11);
-       c.common.cdw10[2] = cpu_to_le32(cmd.cdw12);
-       c.common.cdw10[3] = cpu_to_le32(cmd.cdw13);
-       c.common.cdw10[4] = cpu_to_le32(cmd.cdw14);
-       c.common.cdw10[5] = cpu_to_le32(cmd.cdw15);
+       c.common.cdw10 = cpu_to_le32(cmd.cdw10);
+       c.common.cdw11 = cpu_to_le32(cmd.cdw11);
+       c.common.cdw12 = cpu_to_le32(cmd.cdw12);
+       c.common.cdw13 = cpu_to_le32(cmd.cdw13);
+       c.common.cdw14 = cpu_to_le32(cmd.cdw14);
+       c.common.cdw15 = cpu_to_le32(cmd.cdw15);
 
        if (cmd.timeout_ms)
                timeout = msecs_to_jiffies(cmd.timeout_ms);
        memset(&c, 0, sizeof(c));
        c.common.opcode = op;
        c.common.nsid = cpu_to_le32(ns->head->ns_id);
-       c.common.cdw10[0] = cpu_to_le32(cdw10);
+       c.common.cdw10 = cpu_to_le32(cdw10);
 
        ret = nvme_submit_sync_cmd(ns->queue, &c, data, 16);
        nvme_put_ns_from_disk(head, srcu_idx);
        else
                cmd.common.opcode = nvme_admin_security_recv;
        cmd.common.nsid = 0;
-       cmd.common.cdw10[0] = cpu_to_le32(((u32)secp) << 24 | ((u32)spsp) << 8);
-       cmd.common.cdw10[1] = cpu_to_le32(len);
+       cmd.common.cdw10 = cpu_to_le32(((u32)secp) << 24 | ((u32)spsp) << 8);
+       cmd.common.cdw11 = cpu_to_le32(len);
 
        return __nvme_submit_sync_cmd(ctrl->admin_q, &cmd, NULL, buffer, len,
                                      ADMIN_TIMEOUT, NVME_QID_ANY, 1, 0);
 
        /* cdw11-12 */
        c.ph_rw.length = cpu_to_le16(vcmd.nppas);
        c.ph_rw.control  = cpu_to_le16(vcmd.control);
-       c.common.cdw10[3] = cpu_to_le32(vcmd.cdw13);
-       c.common.cdw10[4] = cpu_to_le32(vcmd.cdw14);
-       c.common.cdw10[5] = cpu_to_le32(vcmd.cdw15);
+       c.common.cdw13 = cpu_to_le32(vcmd.cdw13);
+       c.common.cdw14 = cpu_to_le32(vcmd.cdw14);
+       c.common.cdw15 = cpu_to_le32(vcmd.cdw15);
 
        if (vcmd.timeout_ms)
                timeout = msecs_to_jiffies(vcmd.timeout_ms);
 
                __entry->nsid = le32_to_cpu(cmd->common.nsid);
                __entry->metadata = le64_to_cpu(cmd->common.metadata);
                __assign_disk_name(__entry->disk, req->rq_disk);
-               memcpy(__entry->cdw10, cmd->common.cdw10,
-                      sizeof(__entry->cdw10));
+               memcpy(__entry->cdw10, &cmd->common.cdw10,
+                       6 * sizeof(__entry->cdw10));
            ),
            TP_printk("nvme%d: %sqid=%d, cmdid=%u, nsid=%u, flags=0x%x, meta=0x%llx, cmd=(%s %s)",
                      __entry->ctrl_id, __print_disk_name(__entry->disk),
 
 
 static u16 nvmet_set_feat_write_protect(struct nvmet_req *req)
 {
-       u32 write_protect = le32_to_cpu(req->cmd->common.cdw10[1]);
+       u32 write_protect = le32_to_cpu(req->cmd->common.cdw11);
        struct nvmet_subsys *subsys = req->sq->ctrl->subsys;
        u16 status = NVME_SC_FEATURE_NOT_CHANGEABLE;
 
 
 u16 nvmet_set_feat_kato(struct nvmet_req *req)
 {
-       u32 val32 = le32_to_cpu(req->cmd->common.cdw10[1]);
+       u32 val32 = le32_to_cpu(req->cmd->common.cdw11);
 
        req->sq->ctrl->kato = DIV_ROUND_UP(val32, 1000);
 
 
 u16 nvmet_set_feat_async_event(struct nvmet_req *req, u32 mask)
 {
-       u32 val32 = le32_to_cpu(req->cmd->common.cdw10[1]);
+       u32 val32 = le32_to_cpu(req->cmd->common.cdw11);
 
        if (val32 & ~mask)
                return NVME_SC_INVALID_FIELD | NVME_SC_DNR;
 static void nvmet_execute_set_features(struct nvmet_req *req)
 {
        struct nvmet_subsys *subsys = req->sq->ctrl->subsys;
-       u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10[0]);
+       u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10);
        u16 status = 0;
 
        switch (cdw10 & 0xff) {
 static void nvmet_execute_get_features(struct nvmet_req *req)
 {
        struct nvmet_subsys *subsys = req->sq->ctrl->subsys;
-       u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10[0]);
+       u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10);
        u16 status = 0;
 
        switch (cdw10 & 0xff) {
                break;
        case NVME_FEAT_HOST_ID:
                /* need 128-bit host identifier flag */
-               if (!(req->cmd->common.cdw10[1] & cpu_to_le32(1 << 0))) {
+               if (!(req->cmd->common.cdw11 & cpu_to_le32(1 << 0))) {
                        status = NVME_SC_INVALID_FIELD | NVME_SC_DNR;
                        break;
                }
 
 
 static void nvmet_execute_disc_set_features(struct nvmet_req *req)
 {
-       u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10[0]);
+       u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10);
        u16 stat;
 
        switch (cdw10 & 0xff) {
 
 static void nvmet_execute_disc_get_features(struct nvmet_req *req)
 {
-       u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10[0]);
+       u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10);
        u16 stat = 0;
 
        switch (cdw10 & 0xff) {
 
 
 static inline void nvmet_clear_aen_bit(struct nvmet_req *req, u32 bn)
 {
-       int rae = le32_to_cpu(req->cmd->common.cdw10[0]) & 1 << 15;
+       int rae = le32_to_cpu(req->cmd->common.cdw10) & 1 << 15;
 
        if (!rae)
                clear_bit(bn, &req->sq->ctrl->aen_masked);
 
        __le32                  cdw2[2];
        __le64                  metadata;
        union nvme_data_ptr     dptr;
-       __le32                  cdw10[6];
+       __le32                  cdw10;
+       __le32                  cdw11;
+       __le32                  cdw12;
+       __le32                  cdw13;
+       __le32                  cdw14;
+       __le32                  cdw15;
 };
 
 struct nvme_rw_command {