x86: make pci irqs runtime configurable
Add a variable to x86 machine state instead of hard-coding the PCI interrupts. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-id: 20201016113835.17465-4-kraxel@redhat.com
This commit is contained in:
parent
e6b5a0718a
commit
1b2802c49f
|
@ -115,8 +115,7 @@ void acpi_build_madt(GArray *table_data, BIOSLinker *linker,
|
||||||
|
|
||||||
if (has_pci) {
|
if (has_pci) {
|
||||||
for (i = 1; i < 16; i++) {
|
for (i = 1; i < 16; i++) {
|
||||||
#define ACPI_BUILD_PCI_IRQS ((1<<5) | (1<<9) | (1<<10) | (1<<11))
|
if (!(x86ms->pci_irq_mask & (1 << i))) {
|
||||||
if (!(ACPI_BUILD_PCI_IRQS & (1 << i))) {
|
|
||||||
/* No need for a INT source override structure. */
|
/* No need for a INT source override structure. */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1178,6 +1178,7 @@ static void x86_machine_initfn(Object *obj)
|
||||||
x86ms->smm = ON_OFF_AUTO_AUTO;
|
x86ms->smm = ON_OFF_AUTO_AUTO;
|
||||||
x86ms->acpi = ON_OFF_AUTO_AUTO;
|
x86ms->acpi = ON_OFF_AUTO_AUTO;
|
||||||
x86ms->smp_dies = 1;
|
x86ms->smp_dies = 1;
|
||||||
|
x86ms->pci_irq_mask = ACPI_BUILD_PCI_IRQS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void x86_machine_class_init(ObjectClass *oc, void *data)
|
static void x86_machine_class_init(ObjectClass *oc, void *data)
|
||||||
|
|
|
@ -58,6 +58,7 @@ struct X86MachineState {
|
||||||
|
|
||||||
/* CPU and apic information: */
|
/* CPU and apic information: */
|
||||||
bool apic_xrupt_override;
|
bool apic_xrupt_override;
|
||||||
|
unsigned pci_irq_mask;
|
||||||
unsigned apic_id_limit;
|
unsigned apic_id_limit;
|
||||||
uint16_t boot_cpus;
|
uint16_t boot_cpus;
|
||||||
unsigned smp_dies;
|
unsigned smp_dies;
|
||||||
|
@ -114,6 +115,7 @@ bool x86_machine_is_acpi_enabled(const X86MachineState *x86ms);
|
||||||
/* Global System Interrupts */
|
/* Global System Interrupts */
|
||||||
|
|
||||||
#define GSI_NUM_PINS IOAPIC_NUM_PINS
|
#define GSI_NUM_PINS IOAPIC_NUM_PINS
|
||||||
|
#define ACPI_BUILD_PCI_IRQS ((1<<5) | (1<<9) | (1<<10) | (1<<11))
|
||||||
|
|
||||||
typedef struct GSIState {
|
typedef struct GSIState {
|
||||||
qemu_irq i8259_irq[ISA_NUM_IRQS];
|
qemu_irq i8259_irq[ISA_NUM_IRQS];
|
||||||
|
|
Loading…
Reference in a new issue