[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/6] hw/block/nvme: fix shutdown/reset logic
From: |
Klaus Jensen |
Subject: |
[PATCH 1/6] hw/block/nvme: fix shutdown/reset logic |
Date: |
Mon, 11 Jan 2021 13:32:18 +0100 |
From: Klaus Jensen <k.jensen@samsung.com>
A shutdown is only about flushing stuff. It is the host that should
delete any queues, so do not perform a reset here.
Also, on shutdown, make sure that the PMR is flushed if in use.
Fixes: 368f4e752cf9 ("hw/block/nvme: Process controller reset and shutdown
differently")
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
hw/block/nvme.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index 0854ee307227..cba509e90537 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -3413,7 +3413,7 @@ static void nvme_process_sq(void *opaque)
}
}
-static void nvme_clear_ctrl(NvmeCtrl *n)
+static void nvme_ctrl_reset(NvmeCtrl *n)
{
NvmeNamespace *ns;
int i;
@@ -3447,11 +3447,7 @@ static void nvme_clear_ctrl(NvmeCtrl *n)
n->aer_queued = 0;
n->outstanding_aers = 0;
n->qs_created = false;
-}
-static void nvme_ctrl_reset(NvmeCtrl *n)
-{
- nvme_clear_ctrl(n);
n->bar.cc = 0;
}
@@ -3460,7 +3456,9 @@ static void nvme_ctrl_shutdown(NvmeCtrl *n)
NvmeNamespace *ns;
int i;
- nvme_clear_ctrl(n);
+ if (n->pmrdev) {
+ memory_region_msync(&n->pmrdev->mr, 0, n->pmrdev->size);
+ }
for (i = 1; i <= n->num_namespaces; i++) {
ns = nvme_ns(n, i);
@@ -4303,7 +4301,7 @@ static void nvme_exit(PCIDevice *pci_dev)
NvmeNamespace *ns;
int i;
- nvme_ctrl_shutdown(n);
+ nvme_ctrl_reset(n);
for (i = 1; i <= n->num_namespaces; i++) {
ns = nvme_ns(n, i);
--
2.30.0
- [PATCH 0/6] hw/block/nvme: zoned misc fixes, Klaus Jensen, 2021/01/11
- [PATCH 1/6] hw/block/nvme: fix shutdown/reset logic,
Klaus Jensen <=
- [PATCH 2/6] hw/block/nvme: merge implicitly/explicitly opened processing masks, Klaus Jensen, 2021/01/11
- [PATCH 3/6] hw/block/nvme: enum style fix, Klaus Jensen, 2021/01/11
- [PATCH 4/6] hw/block/nvme: zero out zones on reset, Klaus Jensen, 2021/01/11
- [PATCH 5/6] hw/block/nvme: add missing string representations for commands, Klaus Jensen, 2021/01/11
- [PATCH 6/6] hw/block/nvme: remove unnecessary check for append, Klaus Jensen, 2021/01/11
- Re: [PATCH 0/6] hw/block/nvme: zoned misc fixes, Dmitry Fomichev, 2021/01/17