LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Akinobu Mita <akinobu.mita@gmail.com> To: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Akinobu Mita <akinobu.mita@gmail.com>, Johannes Berg <johannes@sipsolutions.net>, Keith Busch <keith.busch@intel.com>, Jens Axboe <axboe@fb.com>, Christoph Hellwig <hch@lst.de>, Sagi Grimberg <sagi@grimberg.me>, Minwoo Im <minwoo.im.dev@gmail.com>, Kenneth Heitke <kenneth.heitke@intel.com> Subject: [PATCH v3 4/7] nvme: add basic facility to get telemetry log page Date: Mon, 13 May 2019 00:54:14 +0900 [thread overview] Message-ID: <1557676457-4195-5-git-send-email-akinobu.mita@gmail.com> (raw) In-Reply-To: <1557676457-4195-1-git-send-email-akinobu.mita@gmail.com> This adds the required definisions to get telemetry log page. The telemetry log page structure and identifier are copied from nvme-cli. We also need a facility to check log page attributes in order to know the controller supports the telemetry log pages and log page offset field for the Get Log Page command. The telemetry data area could be larger than maximum data transfer size, so we may need to split into multiple transfers with incremental page offset. Cc: Johannes Berg <johannes@sipsolutions.net> Cc: Keith Busch <keith.busch@intel.com> Cc: Jens Axboe <axboe@fb.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Sagi Grimberg <sagi@grimberg.me> Cc: Minwoo Im <minwoo.im.dev@gmail.com> Cc: Kenneth Heitke <kenneth.heitke@intel.com> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> --- * v3 - Merge 'add telemetry log page definisions' patch and 'add facility to check log page attributes' patch - Copy struct nvme_telemetry_log_page_hdr from the latest nvme-cli - Add BUILD_BUG_ON for the size of struct nvme_telemetry_log_page_hdr drivers/nvme/host/core.c | 2 ++ drivers/nvme/host/nvme.h | 1 + include/linux/nvme.h | 17 +++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index a6644a2..0cea2a8 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -2585,6 +2585,7 @@ int nvme_init_identify(struct nvme_ctrl *ctrl) } else ctrl->shutdown_timeout = shutdown_timeout; + ctrl->lpa = id->lpa; ctrl->npss = id->npss; ctrl->apsta = id->apsta; prev_apst_enabled = ctrl->apst_enabled; @@ -3898,6 +3899,7 @@ static inline void _nvme_check_size(void) BUILD_BUG_ON(sizeof(struct nvme_id_ctrl) != NVME_IDENTIFY_DATA_SIZE); BUILD_BUG_ON(sizeof(struct nvme_id_ns) != NVME_IDENTIFY_DATA_SIZE); BUILD_BUG_ON(sizeof(struct nvme_lba_range_type) != 64); + BUILD_BUG_ON(sizeof(struct nvme_telemetry_log_page_hdr) != 512); BUILD_BUG_ON(sizeof(struct nvme_smart_log) != 512); BUILD_BUG_ON(sizeof(struct nvme_dbbuf) != 64); BUILD_BUG_ON(sizeof(struct nvme_directive_cmd) != 64); diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h index 5ee75b5..7f6f1fc 100644 --- a/drivers/nvme/host/nvme.h +++ b/drivers/nvme/host/nvme.h @@ -195,6 +195,7 @@ struct nvme_ctrl { u32 vs; u32 sgls; u16 kas; + u8 lpa; u8 npss; u8 apsta; u32 oaes; diff --git a/include/linux/nvme.h b/include/linux/nvme.h index c40720c..8c0b29d 100644 --- a/include/linux/nvme.h +++ b/include/linux/nvme.h @@ -294,6 +294,8 @@ enum { NVME_CTRL_OACS_DIRECTIVES = 1 << 5, NVME_CTRL_OACS_DBBUF_SUPP = 1 << 8, NVME_CTRL_LPA_CMD_EFFECTS_LOG = 1 << 1, + NVME_CTRL_LPA_EXTENDED_DATA = 1 << 2, + NVME_CTRL_LPA_TELEMETRY_LOG = 1 << 3, }; struct nvme_lbaf { @@ -396,6 +398,20 @@ enum { NVME_NIDT_UUID = 0x03, }; +struct nvme_telemetry_log_page_hdr { + __u8 lpi; /* Log page identifier */ + __u8 rsvd[4]; + __u8 iee_oui[3]; + __le16 dalb1; /* Data area 1 last block */ + __le16 dalb2; /* Data area 2 last block */ + __le16 dalb3; /* Data area 3 last block */ + __u8 rsvd1[368]; + __u8 ctrlavail; /* Controller initiated data avail?*/ + __u8 ctrldgn; /* Controller initiated telemetry Data Gen # */ + __u8 rsnident[128]; + __u8 telemetry_dataarea[0]; +}; + struct nvme_smart_log { __u8 critical_warning; __u8 temperature[2]; @@ -832,6 +848,7 @@ enum { NVME_LOG_FW_SLOT = 0x03, NVME_LOG_CHANGED_NS = 0x04, NVME_LOG_CMD_EFFECTS = 0x05, + NVME_LOG_TELEMETRY_CTRL = 0x08, NVME_LOG_ANA = 0x0c, NVME_LOG_DISC = 0x70, NVME_LOG_RESERVATION = 0x80, -- 2.7.4
next prev parent reply other threads:[~2019-05-12 15:54 UTC|newest] Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-05-12 15:54 [PATCH v3 0/7] nvme-pci: support device coredump Akinobu Mita 2019-05-12 15:54 ` [PATCH v3 1/7] devcoredump: use memory_read_from_buffer Akinobu Mita 2019-05-13 15:28 ` Chaitanya Kulkarni 2019-05-12 15:54 ` [PATCH v3 2/7] devcoredump: fix typo in comment Akinobu Mita 2019-05-13 15:24 ` Chaitanya Kulkarni 2019-05-12 15:54 ` [PATCH v3 3/7] devcoredump: allow to create several coredump files in one device Akinobu Mita 2019-05-12 15:54 ` Akinobu Mita [this message] 2019-05-13 15:34 ` [PATCH v3 4/7] nvme: add basic facility to get telemetry log page Chaitanya Kulkarni 2019-05-14 14:04 ` Akinobu Mita 2019-05-12 15:54 ` [PATCH v3 5/7] nvme-pci: add device coredump infrastructure Akinobu Mita 2019-05-13 13:50 ` Keith Busch 2019-05-13 15:01 ` Akinobu Mita 2019-05-13 14:02 ` Christoph Hellwig 2019-05-13 15:01 ` Akinobu Mita 2019-05-12 15:54 ` [PATCH v3 6/7] nvme-pci: trigger device coredump on command timeout Akinobu Mita 2019-05-13 13:52 ` Keith Busch 2019-05-12 15:54 ` [PATCH v3 7/7] nvme-pci: enable to trigger device coredump by hand Akinobu Mita [not found] ` <CGME20190512155533epcas4p110edff15ebf5b2efae32e43f0f10ab59@epcms2p5> 2019-05-13 7:41 ` [PATCH v3 6/7] nvme-pci: trigger device coredump on command timeout Minwoo Im 2019-05-13 14:59 ` Akinobu Mita [not found] ` <CGME20190512155540epcas4p14c15eb86b08dcd281e9a93a4fc190800@epcms2p1> 2019-05-13 7:46 ` [PATCH v3 5/7] nvme-pci: add device coredump infrastructure Minwoo Im 2019-05-13 15:23 ` Chaitanya Kulkarni 2019-05-14 14:06 ` Akinobu Mita
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1557676457-4195-5-git-send-email-akinobu.mita@gmail.com \ --to=akinobu.mita@gmail.com \ --cc=axboe@fb.com \ --cc=hch@lst.de \ --cc=johannes@sipsolutions.net \ --cc=keith.busch@intel.com \ --cc=kenneth.heitke@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-nvme@lists.infradead.org \ --cc=minwoo.im.dev@gmail.com \ --cc=sagi@grimberg.me \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).