As we want to use more than one single IRQ, add a check that the device accept our request to use multiple IRQs.
Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> --- util/vfio-helpers.c | 6 ++++++ util/trace-events | 1 + 2 files changed, 7 insertions(+) diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index bad60076f3..b81d4c70c2 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -335,6 +335,12 @@ static int qemu_vfio_init_pci(QEMUVFIOState *s, const char *device, ret = -errno; goto fail; } + trace_qemu_vfio_init_pci(device_info.num_irqs); + if (device_info.num_irqs < irq_count) { + error_setg(errp, "Invalid device IRQ count"); + ret = -EINVAL; + goto fail; + } s->irq_type = irq_type; s->irq_count = irq_count; diff --git a/util/trace-events b/util/trace-events index 0ce42822eb..2e85555be3 100644 --- a/util/trace-events +++ b/util/trace-events @@ -83,3 +83,4 @@ qemu_vfio_new_mapping(void *s, void *host, size_t size, int index, uint64_t iova qemu_vfio_do_mapping(void *s, void *host, size_t size, uint64_t iova) "s %p host %p size %zu iova 0x%"PRIx64 qemu_vfio_dma_map(void *s, void *host, size_t size, bool temporary, uint64_t *iova) "s %p host %p size %zu temporary %d iova %p" qemu_vfio_dma_unmap(void *s, void *host) "s %p host %p" +qemu_vfio_init_pci(uint32_t count) "device interrupt count: %"PRIu32 -- 2.21.3