]> Git Repo - qemu.git/commitdiff
pc: Re-order pc_init1 to initialize the ISA bus before ISA devices
authorRichard Henderson <[email protected]>
Wed, 10 Aug 2011 22:28:13 +0000 (15:28 -0700)
committerAvi Kivity <[email protected]>
Sun, 25 Sep 2011 11:58:36 +0000 (14:58 +0300)
In particular, the i8259 was being initialized before the ISA bus,
leading to a crash.

Signed-off-by: Richard Henderson <[email protected]>
Signed-off-by: Avi Kivity <[email protected]>
hw/pc_piix.c

index 1056cc79cc96b4949bf142c018068847ba29012c..ce1c87fba9ec2cdfe2d5344838464601c4136295 100644 (file)
@@ -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);
This page took 0.027499 seconds and 4 git commands to generate.