Commit 4bae1efe authored by Richard Henderson's avatar Richard Henderson Committed by Avi Kivity
Browse files

pc: Re-order pc_init1 to initialize the ISA bus before ISA devices



In particular, the i8259 was being initialized before the ISA bus,
leading to a crash.

Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent 78e20593
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -130,17 +130,7 @@ static void pc_init1(MemoryRegion *system_memory,
                       pci_enabled ? rom_memory : system_memory, &ram_memory);
    }

    if (!xen_enabled()) {
        cpu_irq = pc_allocate_cpu_irq();
        i8259 = i8259_init(cpu_irq[0]);
    } else {
        i8259 = xen_interrupt_controller_init();
    }
    isa_irq_state = g_malloc0(sizeof(*isa_irq_state));
    isa_irq_state->i8259 = i8259;
    if (pci_enabled) {
        ioapic_init(isa_irq_state);
    }
    isa_irq = qemu_allocate_irqs(isa_irq_handler, isa_irq_state, 24);

    if (pci_enabled) {
@@ -161,6 +151,18 @@ static void pc_init1(MemoryRegion *system_memory,
    }
    isa_bus_irqs(isa_irq);

    if (!xen_enabled()) {
        cpu_irq = pc_allocate_cpu_irq();
        i8259 = i8259_init(cpu_irq[0]);
    } else {
        i8259 = xen_interrupt_controller_init();
    }

    isa_irq_state->i8259 = i8259;
    if (pci_enabled) {
        ioapic_init(isa_irq_state);
    }

    pc_register_ferr_irq(isa_get_irq(13));

    pc_vga_init(pci_enabled? pci_bus: NULL);