From c214a7bcb6320c37777a662f38aea2a7c6919148 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Thu, 3 Dec 2020 11:54:15 +0100 Subject: [PATCH] microvm: make number of virtio transports runtime changeable This will allow to increase the number of transports in case we have enough irq lines available for them all. Signed-off-by: Gerd Hoffmann Reviewed-by: Michael S. Tsirkin Reviewed-by: Igor Mammedov Reviewed-by: Sergio Lopez Message-id: 20201203105423.10431-5-kraxel@redhat.com --- hw/i386/microvm.c | 9 +++++++-- include/hw/i386/microvm.h | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 5428448b70..e92f236bf4 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -178,8 +178,13 @@ static void microvm_devices_init(MicrovmMachineState *mms) kvmclock_create(true); - mms->virtio_irq_base = x86_machine_is_acpi_enabled(x86ms) ? 16 : 5; - for (i = 0; i < VIRTIO_NUM_TRANSPORTS; i++) { + mms->virtio_irq_base = 5; + mms->virtio_num_transports = 8; + if (x86_machine_is_acpi_enabled(x86ms)) { + mms->virtio_irq_base = 16; + } + + for (i = 0; i < mms->virtio_num_transports; i++) { sysbus_create_simple("virtio-mmio", VIRTIO_MMIO_BASE + i * 512, x86ms->gsi[mms->virtio_irq_base + i]); diff --git a/include/hw/i386/microvm.h b/include/hw/i386/microvm.h index 0fc2160077..c5d60bacb5 100644 --- a/include/hw/i386/microvm.h +++ b/include/hw/i386/microvm.h @@ -52,7 +52,6 @@ /* Platform virtio definitions */ #define VIRTIO_MMIO_BASE 0xfeb00000 -#define VIRTIO_NUM_TRANSPORTS 8 #define VIRTIO_CMDLINE_MAXLEN 64 #define GED_MMIO_BASE 0xfea00000 @@ -98,6 +97,7 @@ struct MicrovmMachineState { /* Machine state */ uint32_t virtio_irq_base; + uint32_t virtio_num_transports; bool kernel_cmdline_fixed; Notifier machine_done; Notifier powerdown_req;