[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 14/38] hw/block/nvme: improve invalid zasl value reporting
From: |
Klaus Jensen |
Subject: |
[PULL v2 14/38] hw/block/nvme: improve invalid zasl value reporting |
Date: |
Tue, 9 Mar 2021 12:44:48 +0100 |
From: Klaus Jensen <k.jensen@samsung.com>
The Zone Append Size Limit (ZASL) must be at least 4096 bytes, so
improve the user experience by adding an early parameter check in
nvme_check_constraints.
When ZASL is still too small due to the host configuring the device for
an even larger page size, convert the trace point in nvme_start_ctrl to
an NVME_GUEST_ERR such that this is logged by QEMU instead of only
traced.
Reported-by: Corne <info@dantalion.nl>
Cc: Dmitry Fomichev <Dmitry.Fomichev@wdc.com>
Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
hw/block/nvme.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index 56ef07b74d27..2addaf7c4f70 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -3997,8 +3997,10 @@ static int nvme_start_ctrl(NvmeCtrl *n)
n->zasl = n->params.mdts;
} else {
if (n->params.zasl_bs < n->page_size) {
- trace_pci_nvme_err_startfail_zasl_too_small(n->params.zasl_bs,
- n->page_size);
+ NVME_GUEST_ERR(pci_nvme_err_startfail_zasl_too_small,
+ "Zone Append Size Limit (ZASL) of %d bytes is too "
+ "small; must be at least %d bytes",
+ n->params.zasl_bs, n->page_size);
return -1;
}
n->zasl = 31 - clz32(n->params.zasl_bs / n->page_size);
@@ -4517,6 +4519,12 @@ static void nvme_check_constraints(NvmeCtrl *n, Error
**errp)
error_setg(errp, "zone append size limit has to be a power of 2");
return;
}
+
+ if (n->params.zasl_bs < 4096) {
+ error_setg(errp, "zone append size limit must be at least "
+ "4096 bytes");
+ return;
+ }
}
}
--
2.30.1
- [PULL v2 07/38] hw/block/nvme: remove unused parameter in check zone write, (continued)
- [PULL v2 07/38] hw/block/nvme: remove unused parameter in check zone write, Klaus Jensen, 2021/03/09
- [PULL v2 06/38] hw/block/nvme: support for shared namespace in subsystem, Klaus Jensen, 2021/03/09
- [PULL v2 04/38] hw/block/nvme: support for multi-controller in subsystem, Klaus Jensen, 2021/03/09
- [PULL v2 09/38] hw/block/nvme: pull write pointer advancement to separate function, Klaus Jensen, 2021/03/09
- [PULL v2 08/38] hw/block/nvme: refactor zone resource management, Klaus Jensen, 2021/03/09
- [PULL v2 10/38] nvme: updated shared header for copy command, Klaus Jensen, 2021/03/09
- [PULL v2 11/38] hw/block/nvme: add simple copy command, Klaus Jensen, 2021/03/09
- [PULL v2 12/38] hw/block/nvme: fix Close Zone, Klaus Jensen, 2021/03/09
- [PULL v2 13/38] hw/block/nvme: add missing mor/mar constraint checks, Klaus Jensen, 2021/03/09
- [PULL v2 15/38] hw/block/nvme: use locally assigned QEMU IEEE OUI, Klaus Jensen, 2021/03/09
- [PULL v2 14/38] hw/block/nvme: improve invalid zasl value reporting,
Klaus Jensen <=
- [PULL v2 16/38] hw/block/nvme: add broadcast nsid support flush command, Klaus Jensen, 2021/03/09
- [PULL v2 18/38] hw/block/nvme: deduplicate bad mdts trace event, Klaus Jensen, 2021/03/09
- [PULL v2 19/38] hw/block/nvme: align zoned.zasl with mdts, Klaus Jensen, 2021/03/09
- [PULL v2 20/38] hw/block/nvme: remove unnecessary endian conversion, Klaus Jensen, 2021/03/09
- [PULL v2 17/38] hw/block/nvme: document 'mdts' nvme device parameter, Klaus Jensen, 2021/03/09
- [PULL v2 29/38] hw/block/nvme: remove the req dependency in map functions, Klaus Jensen, 2021/03/09
- [PULL v2 28/38] hw/block/nvme: try to deal with the iov/qsg duality, Klaus Jensen, 2021/03/09
- [PULL v2 30/38] hw/block/nvme: refactor nvme_dma, Klaus Jensen, 2021/03/09