aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/nvme/host/trace.c
diff options
context:
space:
mode:
authorMinwoo Im <minwoo.im.dev@gmail.com>2019-08-04 16:50:49 +0900
committerSagi Grimberg <sagi@grimberg.me>2019-08-29 12:55:01 -0700
commit177b06ed0997bdaa9671c615a37649ab9aec889e (patch)
treeea6f2a868d3461f0d81e790a83042451260818ec /drivers/nvme/host/trace.c
parentnvme: trace: support for Get LBA Status opcode parsed (diff)
downloadlinux-dev-177b06ed0997bdaa9671c615a37649ab9aec889e.tar.xz
linux-dev-177b06ed0997bdaa9671c615a37649ab9aec889e.zip
nvme: trace: parse Get LBA Status command in detail
Four different fields are in CDWs of Get LBA Status command which means it would be great if we can see in detail when tracing. Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com> Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Diffstat (limited to 'drivers/nvme/host/trace.c')
-rw-r--r--drivers/nvme/host/trace.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/nvme/host/trace.c b/drivers/nvme/host/trace.c
index 9778eb0406b3..5c3cb6928f3c 100644
--- a/drivers/nvme/host/trace.c
+++ b/drivers/nvme/host/trace.c
@@ -86,6 +86,22 @@ static const char *nvme_trace_admin_get_features(struct trace_seq *p,
return ret;
}
+static const char *nvme_trace_get_lba_status(struct trace_seq *p,
+ u8 *cdw10)
+{
+ const char *ret = trace_seq_buffer_ptr(p);
+ u64 slba = get_unaligned_le64(cdw10);
+ u32 mndw = get_unaligned_le32(cdw10 + 8);
+ u16 rl = get_unaligned_le16(cdw10 + 12);
+ u8 atype = cdw10[15];
+
+ trace_seq_printf(p, "slba=0x%llx, mndw=0x%x, rl=0x%x, atype=%u",
+ slba, mndw, rl, atype);
+ trace_seq_putc(p, 0);
+
+ return ret;
+}
+
static const char *nvme_trace_read_write(struct trace_seq *p, u8 *cdw10)
{
const char *ret = trace_seq_buffer_ptr(p);
@@ -141,6 +157,8 @@ const char *nvme_trace_parse_admin_cmd(struct trace_seq *p,
return nvme_trace_admin_identify(p, cdw10);
case nvme_admin_get_features:
return nvme_trace_admin_get_features(p, cdw10);
+ case nvme_admin_get_lba_status:
+ return nvme_trace_get_lba_status(p, cdw10);
default:
return nvme_trace_common(p, cdw10);
}