From: Klaus Jensen <[email protected]> Number of ZRWA Resources should be initialized to Max Active Resources, and not the total number of zones.
Signed-off-by: Klaus Jensen <[email protected]> --- hw/nvme/ctrl.c | 8 ++------ hw/nvme/ns.c | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 6f217c3951bd..b47289ecf16a 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1778,9 +1778,7 @@ static uint16_t nvme_zrm_finish(NvmeNamespace *ns, NvmeZone *zone) if (zone->d.za & NVME_ZA_ZRWA_VALID) { zone->d.za &= ~NVME_ZA_ZRWA_VALID; - if (ns->params.numzrwa) { - ns->zns.numzrwa++; - } + ns->zns.numzrwa++; } /* fallthrough */ @@ -1820,9 +1818,7 @@ static uint16_t nvme_zrm_reset(NvmeNamespace *ns, NvmeZone *zone) nvme_aor_dec_active(ns); if (zone->d.za & NVME_ZA_ZRWA_VALID) { - if (ns->params.numzrwa) { - ns->zns.numzrwa++; - } + ns->zns.numzrwa++; } /* fallthrough */ diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c index 62a1f97be010..6beeacca94ea 100644 --- a/hw/nvme/ns.c +++ b/hw/nvme/ns.c @@ -286,7 +286,7 @@ static void nvme_ns_init_zoned(NvmeNamespace *ns) if (ns->params.zrwas) { ns->zns.numzrwa = ns->params.numzrwa ? - ns->params.numzrwa : ns->num_zones; + ns->params.numzrwa : ns->params.max_active_zones; ns->zns.zrwas = ns->params.zrwas >> ns->lbaf.ds; ns->zns.zrwafg = ns->params.zrwafg >> ns->lbaf.ds; @@ -294,7 +294,7 @@ static void nvme_ns_init_zoned(NvmeNamespace *ns) id_ns_z->ozcs |= NVME_ID_NS_ZONED_OZCS_ZRWASUP; id_ns_z->zrwacap = NVME_ID_NS_ZONED_ZRWACAP_EXPFLUSHSUP; - id_ns_z->numzrwa = cpu_to_le32(ns->params.numzrwa); + id_ns_z->numzrwa = cpu_to_le32(ns->zns.numzrwa - 1); id_ns_z->zrwas = cpu_to_le16(ns->zns.zrwas); id_ns_z->zrwafg = cpu_to_le16(ns->zns.zrwafg); } -- 2.38.1
