[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 1/6] block/nvme: don't touch the completion entri
From: |
Maxim Levitsky |
Subject: |
[Qemu-devel] [PATCH v3 1/6] block/nvme: don't touch the completion entries |
Date: |
Wed, 3 Jul 2019 18:59:39 +0300 |
Completion entries are meant to be only read by the host and written by the
device.
The driver is supposed to scan the completions from the last point where it
left,
and until it sees a completion with non flipped phase bit.
Signed-off-by: Maxim Levitsky <address@hidden>
---
block/nvme.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/block/nvme.c b/block/nvme.c
index 73ed5fa75f..6d4e7f3d83 100644
--- a/block/nvme.c
+++ b/block/nvme.c
@@ -315,7 +315,7 @@ static bool nvme_process_completion(BDRVNVMeState *s,
NVMeQueuePair *q)
while (q->inflight) {
int16_t cid;
c = (NvmeCqe *)&q->cq.queue[q->cq.head * NVME_CQ_ENTRY_BYTES];
- if (!c->cid || (le16_to_cpu(c->status) & 0x1) == q->cq_phase) {
+ if ((le16_to_cpu(c->status) & 0x1) == q->cq_phase) {
break;
}
q->cq.head = (q->cq.head + 1) % NVME_QUEUE_SIZE;
@@ -339,10 +339,7 @@ static bool nvme_process_completion(BDRVNVMeState *s,
NVMeQueuePair *q)
qemu_mutex_unlock(&q->lock);
req.cb(req.opaque, nvme_translate_error(c));
qemu_mutex_lock(&q->lock);
- c->cid = cpu_to_le16(0);
q->inflight--;
- /* Flip Phase Tag bit. */
- c->status = cpu_to_le16(le16_to_cpu(c->status) ^ 0x1);
progress = true;
}
if (progress) {
--
2.17.2
- [Qemu-devel] [PATCH v3 0/6] Few fixes for userspace NVME driver, Maxim Levitsky, 2019/07/03
- [Qemu-devel] [PATCH v3 1/6] block/nvme: don't touch the completion entries,
Maxim Levitsky <=
- Re: [Qemu-devel] [PATCH v3 1/6] block/nvme: don't touch the completion entries, Max Reitz, 2019/07/05
- Re: [Qemu-devel] [PATCH v3 1/6] block/nvme: don't touch the completion entries, Maxim Levitsky, 2019/07/07
- Re: [Qemu-devel] [PATCH v3 1/6] block/nvme: don't touch the completion entries, Max Reitz, 2019/07/08
- Re: [Qemu-devel] [PATCH v3 1/6] block/nvme: don't touch the completion entries, Maxim Levitsky, 2019/07/08
- Re: [Qemu-devel] [PATCH v3 1/6] block/nvme: don't touch the completion entries, Max Reitz, 2019/07/08
- Re: [Qemu-devel] [PATCH v3 1/6] block/nvme: don't touch the completion entries, Maxim Levitsky, 2019/07/08
[Qemu-devel] [PATCH v3 3/6] block/nvme: support larger that 512 bytes sector devices, Maxim Levitsky, 2019/07/03
[Qemu-devel] [PATCH v3 2/6] block/nvme: fix doorbell stride, Maxim Levitsky, 2019/07/03