microvm: make pcie irq base runtime changeable
Allows to move them in case we have enough irq lines available. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Sergio Lopez <slp@redhat.com> Message-id: 20201203105423.10431-6-kraxel@redhat.com
This commit is contained in:
parent
c214a7bcb6
commit
3d09c00704
|
@ -181,6 +181,7 @@ static void microvm_devices_init(MicrovmMachineState *mms)
|
||||||
mms->virtio_irq_base = 5;
|
mms->virtio_irq_base = 5;
|
||||||
mms->virtio_num_transports = 8;
|
mms->virtio_num_transports = 8;
|
||||||
if (x86_machine_is_acpi_enabled(x86ms)) {
|
if (x86_machine_is_acpi_enabled(x86ms)) {
|
||||||
|
mms->pcie_irq_base = 12;
|
||||||
mms->virtio_irq_base = 16;
|
mms->virtio_irq_base = 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,12 +227,12 @@ static void microvm_devices_init(MicrovmMachineState *mms)
|
||||||
mms->gpex.mmio32.size = PCIE_MMIO_SIZE;
|
mms->gpex.mmio32.size = PCIE_MMIO_SIZE;
|
||||||
mms->gpex.ecam.base = PCIE_ECAM_BASE;
|
mms->gpex.ecam.base = PCIE_ECAM_BASE;
|
||||||
mms->gpex.ecam.size = PCIE_ECAM_SIZE;
|
mms->gpex.ecam.size = PCIE_ECAM_SIZE;
|
||||||
mms->gpex.irq = PCIE_IRQ_BASE;
|
mms->gpex.irq = mms->pcie_irq_base;
|
||||||
create_gpex(mms);
|
create_gpex(mms);
|
||||||
x86ms->pci_irq_mask = ((1 << (PCIE_IRQ_BASE + 0)) |
|
x86ms->pci_irq_mask = ((1 << (mms->pcie_irq_base + 0)) |
|
||||||
(1 << (PCIE_IRQ_BASE + 1)) |
|
(1 << (mms->pcie_irq_base + 1)) |
|
||||||
(1 << (PCIE_IRQ_BASE + 2)) |
|
(1 << (mms->pcie_irq_base + 2)) |
|
||||||
(1 << (PCIE_IRQ_BASE + 3)));
|
(1 << (mms->pcie_irq_base + 3)));
|
||||||
} else {
|
} else {
|
||||||
x86ms->pci_irq_mask = 0;
|
x86ms->pci_irq_mask = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,6 @@
|
||||||
#define PCIE_MMIO_SIZE 0x20000000
|
#define PCIE_MMIO_SIZE 0x20000000
|
||||||
#define PCIE_ECAM_BASE 0xe0000000
|
#define PCIE_ECAM_BASE 0xe0000000
|
||||||
#define PCIE_ECAM_SIZE 0x10000000
|
#define PCIE_ECAM_SIZE 0x10000000
|
||||||
#define PCIE_IRQ_BASE 12
|
|
||||||
|
|
||||||
/* Machine type options */
|
/* Machine type options */
|
||||||
#define MICROVM_MACHINE_PIT "pit"
|
#define MICROVM_MACHINE_PIT "pit"
|
||||||
|
@ -96,6 +95,7 @@ struct MicrovmMachineState {
|
||||||
bool auto_kernel_cmdline;
|
bool auto_kernel_cmdline;
|
||||||
|
|
||||||
/* Machine state */
|
/* Machine state */
|
||||||
|
uint32_t pcie_irq_base;
|
||||||
uint32_t virtio_irq_base;
|
uint32_t virtio_irq_base;
|
||||||
uint32_t virtio_num_transports;
|
uint32_t virtio_num_transports;
|
||||||
bool kernel_cmdline_fixed;
|
bool kernel_cmdline_fixed;
|
||||||
|
|
Loading…
Reference in a new issue