[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 21/33] block/nvme: Change size and alignment of IDENTIFY response
From: |
Stefan Hajnoczi |
Subject: |
[PULL 21/33] block/nvme: Change size and alignment of IDENTIFY response buffer |
Date: |
Wed, 4 Nov 2020 15:18:16 +0000 |
From: Eric Auger <eric.auger@redhat.com>
In preparation of 64kB host page support, let's change the size
and alignment of the IDENTIFY command response buffer so that
the VFIO DMA MAP succeeds. We align on the host page size.
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20201029093306.1063879-20-philmd@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
---
block/nvme.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/block/nvme.c b/block/nvme.c
index bd3860ac4e..7628623c05 100644
--- a/block/nvme.c
+++ b/block/nvme.c
@@ -522,19 +522,20 @@ static bool nvme_identify(BlockDriverState *bs, int
namespace, Error **errp)
.opcode = NVME_ADM_CMD_IDENTIFY,
.cdw10 = cpu_to_le32(0x1),
};
+ size_t id_size = QEMU_ALIGN_UP(sizeof(*id), qemu_real_host_page_size);
- id = qemu_try_memalign(s->page_size, sizeof(*id));
+ id = qemu_try_memalign(qemu_real_host_page_size, id_size);
if (!id) {
error_setg(errp, "Cannot allocate buffer for identify response");
goto out;
}
- r = qemu_vfio_dma_map(s->vfio, id, sizeof(*id), true, &iova);
+ r = qemu_vfio_dma_map(s->vfio, id, id_size, true, &iova);
if (r) {
error_setg(errp, "Cannot map buffer for DMA");
goto out;
}
- memset(id, 0, sizeof(*id));
+ memset(id, 0, id_size);
cmd.dptr.prp1 = cpu_to_le64(iova);
if (nvme_admin_cmd_sync(bs, &cmd)) {
error_setg(errp, "Failed to identify controller");
@@ -556,7 +557,7 @@ static bool nvme_identify(BlockDriverState *bs, int
namespace, Error **errp)
s->supports_write_zeroes = !!(oncs & NVME_ONCS_WRITE_ZEROES);
s->supports_discard = !!(oncs & NVME_ONCS_DSM);
- memset(id, 0, sizeof(*id));
+ memset(id, 0, id_size);
cmd.cdw10 = 0;
cmd.nsid = cpu_to_le32(namespace);
if (nvme_admin_cmd_sync(bs, &cmd)) {
--
2.28.0
- [PULL 12/33] block/nvme: Make nvme_identify() return boolean indicating error, (continued)
- [PULL 12/33] block/nvme: Make nvme_identify() return boolean indicating error, Stefan Hajnoczi, 2020/11/04
- [PULL 13/33] block/nvme: Make nvme_init_queue() return boolean indicating error, Stefan Hajnoczi, 2020/11/04
- [PULL 14/33] block/nvme: Introduce Completion Queue definitions, Stefan Hajnoczi, 2020/11/04
- [PULL 15/33] block/nvme: Use definitions instead of magic values in add_io_queue(), Stefan Hajnoczi, 2020/11/04
- [PULL 16/33] block/nvme: Correctly initialize Admin Queue Attributes, Stefan Hajnoczi, 2020/11/04
- [PULL 17/33] block/nvme: Simplify ADMIN queue access, Stefan Hajnoczi, 2020/11/04
- [PULL 18/33] block/nvme: Simplify nvme_cmd_sync(), Stefan Hajnoczi, 2020/11/04
- [PULL 19/33] block/nvme: Set request_alignment at initialization, Stefan Hajnoczi, 2020/11/04
- [PULL 20/33] block/nvme: Correct minimum device page size, Stefan Hajnoczi, 2020/11/04
- [PULL 22/33] block/nvme: Change size and alignment of queue, Stefan Hajnoczi, 2020/11/04
- [PULL 21/33] block/nvme: Change size and alignment of IDENTIFY response buffer,
Stefan Hajnoczi <=
- [PULL 23/33] block/nvme: Change size and alignment of prp_list_pages, Stefan Hajnoczi, 2020/11/04
- [PULL 24/33] block/nvme: Align iov's va and size on host page size, Stefan Hajnoczi, 2020/11/04
- [PULL 26/33] block/nvme: Fix nvme_submit_command() on big-endian host, Stefan Hajnoczi, 2020/11/04
- [PULL 25/33] block/nvme: Fix use of write-only doorbells page on Aarch64 arch, Stefan Hajnoczi, 2020/11/04
- [PULL 27/33] util/vfio-helpers: Improve reporting unsupported IOMMU type, Stefan Hajnoczi, 2020/11/04
- [PULL 29/33] util/vfio-helpers: Trace PCI BAR region info, Stefan Hajnoczi, 2020/11/04
- [PULL 28/33] util/vfio-helpers: Trace PCI I/O config accesses, Stefan Hajnoczi, 2020/11/04
- [PULL 31/33] util/vfio-helpers: Improve DMA trace events, Stefan Hajnoczi, 2020/11/04
- [PULL 30/33] util/vfio-helpers: Trace where BARs are mapped, Stefan Hajnoczi, 2020/11/04
- [PULL 32/33] util/vfio-helpers: Convert vfio_dump_mapping to trace events, Stefan Hajnoczi, 2020/11/04