summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGollu Appalanaidu2021-02-21 19:39:36 +0100
committerKlaus Jensen2021-03-09 11:00:57 +0100
commit67ce28a1fdcf73e2c026dbc43bb8fb6dc9a56aed (patch)
tree1815efe22696f8ec46b8379bd791c106a749a006 /include
parenthw/block/nvme: add trace event for zone read check (diff)
downloadqemu-67ce28a1fdcf73e2c026dbc43bb8fb6dc9a56aed.tar.gz
qemu-67ce28a1fdcf73e2c026dbc43bb8fb6dc9a56aed.tar.xz
qemu-67ce28a1fdcf73e2c026dbc43bb8fb6dc9a56aed.zip
hw/block/nvme: report non-mdts command size limit for dsm
Dataset Management is not subject to MDTS, but exceeded a certain size per range causes internal looping. Report this limit (DMRSL) in the NVM command set specific identify controller data structure. Signed-off-by: Gollu Appalanaidu <anaidu.gollu@samsung.com> Signed-off-by: Klaus Jensen <k.jensen@samsung.com> Reviewed-by: Keith Busch <kbusch@kernel.org>
Diffstat (limited to 'include')
-rw-r--r--include/block/nvme.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/block/nvme.h b/include/block/nvme.h
index b23f3ae227..16d8c4c90f 100644
--- a/include/block/nvme.h
+++ b/include/block/nvme.h
@@ -1041,6 +1041,16 @@ typedef struct NvmeIdCtrlZoned {
uint8_t rsvd1[4095];
} NvmeIdCtrlZoned;
+typedef struct NvmeIdCtrlNvm {
+ uint8_t vsl;
+ uint8_t wzsl;
+ uint8_t wusl;
+ uint8_t dmrl;
+ uint32_t dmrsl;
+ uint64_t dmsl;
+ uint8_t rsvd16[4080];
+} NvmeIdCtrlNvm;
+
enum NvmeIdCtrlOacs {
NVME_OACS_SECURITY = 1 << 0,
NVME_OACS_FORMAT = 1 << 1,
@@ -1396,6 +1406,7 @@ static inline void _nvme_check_size(void)
QEMU_BUILD_BUG_ON(sizeof(NvmeEffectsLog) != 4096);
QEMU_BUILD_BUG_ON(sizeof(NvmeIdCtrl) != 4096);
QEMU_BUILD_BUG_ON(sizeof(NvmeIdCtrlZoned) != 4096);
+ QEMU_BUILD_BUG_ON(sizeof(NvmeIdCtrlNvm) != 4096);
QEMU_BUILD_BUG_ON(sizeof(NvmeLBAF) != 4);
QEMU_BUILD_BUG_ON(sizeof(NvmeLBAFE) != 16);
QEMU_BUILD_BUG_ON(sizeof(NvmeIdNs) != 4096);