[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 15/25] block/nvme: Correctly initialize Admin Queue Attributes
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH 15/25] block/nvme: Correctly initialize Admin Queue Attributes |
Date: |
Tue, 27 Oct 2020 14:55:37 +0100 |
>From the specification chapter 3.1.8 "AQA - Admin Queue Attributes"
the Admin Submission Queue Size field is a 0’s based value:
Admin Submission Queue Size (ASQS):
Defines the size of the Admin Submission Queue in entries.
Enabling a controller while this field is cleared to 00h
produces undefined results. The minimum size of the Admin
Submission Queue is two entries. The maximum size of the
Admin Submission Queue is 4096 entries.
This is a 0’s based value.
This bug has never been hit because the device initialization
uses a single command synchronously :)
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
block/nvme.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/block/nvme.c b/block/nvme.c
index 2dfcf8c41d7..d5df30ec074 100644
--- a/block/nvme.c
+++ b/block/nvme.c
@@ -789,9 +789,9 @@ static int nvme_init(BlockDriverState *bs, const char
*device, int namespace,
goto out;
}
s->queue_count = 1;
- QEMU_BUILD_BUG_ON(NVME_QUEUE_SIZE & 0xF000);
- regs->aqa = cpu_to_le32((NVME_QUEUE_SIZE << AQA_ACQS_SHIFT) |
- (NVME_QUEUE_SIZE << AQA_ASQS_SHIFT));
+ QEMU_BUILD_BUG_ON((NVME_QUEUE_SIZE - 1) & 0xF000);
+ regs->aqa = cpu_to_le32(((NVME_QUEUE_SIZE - 1) << AQA_ACQS_SHIFT) |
+ ((NVME_QUEUE_SIZE - 1) << AQA_ASQS_SHIFT));
regs->asq = cpu_to_le64(s->queues[INDEX_ADMIN]->sq.iova);
regs->acq = cpu_to_le64(s->queues[INDEX_ADMIN]->cq.iova);
--
2.26.2
- [PATCH 14/25] block/nvme: Use definitions instead of magic values in add_io_queue(), (continued)
- [PATCH 14/25] block/nvme: Use definitions instead of magic values in add_io_queue(), Philippe Mathieu-Daudé, 2020/10/27
- [PATCH 16/25] block/nvme: Simplify ADMIN queue access, Philippe Mathieu-Daudé, 2020/10/27
- [PATCH 17/25] block/nvme: Simplify nvme_cmd_sync(), Philippe Mathieu-Daudé, 2020/10/27
- [PATCH 15/25] block/nvme: Correctly initialize Admin Queue Attributes,
Philippe Mathieu-Daudé <=
- [PATCH 18/25] block/nvme: Pass AioContext argument to nvme_add_io_queue(), Philippe Mathieu-Daudé, 2020/10/27
- [PATCH 19/25] block/nvme: Set request_alignment at initialization, Philippe Mathieu-Daudé, 2020/10/27
- [PATCH 20/25] block/nvme: Correct minimum device page size, Philippe Mathieu-Daudé, 2020/10/27
- [PATCH 21/25] block/nvme: Change size and alignment of IDENTIFY response buffer, Philippe Mathieu-Daudé, 2020/10/27
- [PATCH 22/25] block/nvme: Change size and alignment of queue, Philippe Mathieu-Daudé, 2020/10/27