Instead of initializing one MSIX IRQ with the generic
qemu_vfio_pci_init_irq() function, use the MSIX specific one which
ill allow us to use multiple IRQs. For now we provide an array of
a single IRQ.
Signed-off-by: Philippe Mathieu-Daudé
---
block/nvme.c | 9 +++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/block/nvme.c b/block/nvme.c
index f4f27b6da7d..e6dac027f72 100644
--- a/block/nvme.c
+++ b/block/nvme.c
@@ -694,6 +694,7 @@ static int nvme_init(BlockDriverState *bs, const char
*device, int namespace,
uint64_t timeout_ms;
uint64_t deadline, now;
Error *local_err = NULL;
+unsigned irq_count = MSIX_IRQ_COUNT;
qemu_co_mutex_init(>dma_map_lock);
qemu_co_queue_init(>dma_flush_queue);
@@ -779,9 +780,13 @@ static int nvme_init(BlockDriverState *bs, const char
*device, int namespace,
}
}
-ret = qemu_vfio_pci_init_irq(s->vfio, s->irq_notifier,
- VFIO_PCI_MSIX_IRQ_INDEX, errp);
+ret = qemu_vfio_pci_init_msix_irqs(s->vfio, s->irq_notifier,
+ _count, errp);
if (ret) {
+if (ret == -EOVERFLOW) {
+error_append_hint(errp, "%u IRQs requested but only %u
available\n",
+ MSIX_IRQ_COUNT, irq_count);
+}
goto out;
}
aio_set_event_notifier(bdrv_get_aio_context(bs),
--
2.26.2