Introduce device/iommu 'page_size_min' variables to make
the code clearer.
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
block/nvme.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/block/nvme.c b/block/nvme.c
index aa290996679..5abd7257cac 100644
--- a/block/nvme.c
+++ b/block/nvme.c
@@ -690,6 +690,8 @@ static int nvme_init(BlockDriverState *bs, const char
*device, int namespace,
uint64_t deadline, now;
Error *local_err = NULL;
volatile NvmeBar *regs = NULL;
+ size_t device_page_size_min;
+ size_t iommu_page_size_min = 4096;
qemu_co_mutex_init(&s->dma_map_lock);
qemu_co_queue_init(&s->dma_flush_queue);
@@ -724,7 +726,8 @@ static int nvme_init(BlockDriverState *bs, const char
*device, int namespace,
goto out;
}
- s->page_size = MAX(4096, 1u << (12 + NVME_CAP_MPSMIN(cap)));
+ device_page_size_min = 1u << (12 + NVME_CAP_MPSMIN(cap));
+ s->page_size = MAX(iommu_page_size_min, device_page_size_min);
s->doorbell_scale = (4 << NVME_CAP_DSTRD(cap)) / sizeof(uint32_t);
bs->bl.opt_mem_alignment = s->page_size;
bs->bl.request_alignment = s->page_size;
--
2.26.2