From: Gerd Hoffmann Date: Thu, 3 Dec 2020 10:54:15 +0000 (+0100) Subject: microvm: make number of virtio transports runtime changeable X-Git-Tag: v6.0.0-rc0~193^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c214a7bcb6320c37777a662f38aea2a7c6919148;p=thirdparty%2Fqemu.git 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 --- diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 5428448b705..e92f236bf44 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 0fc21600777..c5d60bacb5e 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;