summaryrefslogtreecommitdiffstats
path: root/include/block
diff options
context:
space:
mode:
authorKlaus Jensen2020-07-06 08:12:52 +0200
committerKlaus Jensen2020-09-02 08:48:50 +0200
commit94a7897c41db0596c544af1bd27eedb833eae496 (patch)
tree8ac6eb2dcc30955805871cb1b2f451fb2d44c602 /include/block
parenthw/block/nvme: mark fw slot 1 as read-only (diff)
downloadqemu-94a7897c41db0596c544af1bd27eedb833eae496.tar.gz
qemu-94a7897c41db0596c544af1bd27eedb833eae496.tar.xz
qemu-94a7897c41db0596c544af1bd27eedb833eae496.zip
hw/block/nvme: add support for the get log page command
Add support for the Get Log Page command and basic implementations of the mandatory Error Information, SMART / Health Information and Firmware Slot Information log pages. In violation of the specification, the SMART / Health Information log page does not persist information over the lifetime of the controller because the device has no place to store such persistent state. Note that the LPA field in the Identify Controller data structure intentionally has bit 0 cleared because there is no namespace specific information in the SMART / Health information log page. Required for compliance with NVMe revision 1.3d. See NVM Express 1.3d, Section 5.14 ("Get Log Page command"). Signed-off-by: Klaus Jensen <klaus.jensen@cnexlabs.com> Signed-off-by: Klaus Jensen <k.jensen@samsung.com> Acked-by: Keith Busch <kbusch@kernel.org> Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com> Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> Message-Id: <20200706061303.246057-8-its@irrelevant.dk>
Diffstat (limited to 'include/block')
-rw-r--r--include/block/nvme.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/block/nvme.h b/include/block/nvme.h
index f3fdb5bf11..9ec9f7d7a3 100644
--- a/include/block/nvme.h
+++ b/include/block/nvme.h
@@ -707,7 +707,7 @@ typedef struct QEMU_PACKED NvmeErrorLog {
typedef struct QEMU_PACKED NvmeSmartLog {
uint8_t critical_warning;
- uint8_t temperature[2];
+ uint16_t temperature;
uint8_t available_spare;
uint8_t available_spare_threshold;
uint8_t percentage_used;
@@ -847,6 +847,10 @@ enum NvmeIdCtrlFrmw {
NVME_FRMW_SLOT1_RO = 1 << 0,
};
+enum NvmeIdCtrlLpa {
+ NVME_LPA_EXTENDED = 1 << 2,
+};
+
#define NVME_CTRL_SQES_MIN(sqes) ((sqes) & 0xf)
#define NVME_CTRL_SQES_MAX(sqes) (((sqes) >> 4) & 0xf)
#define NVME_CTRL_CQES_MIN(cqes) ((cqes) & 0xf)