changeset caec4a7b8b74 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=caec4a7b8b74
description:
        config, x86: swap bus_id of ISA/PCI in X86 IntelMPTable

        This patch assign bus_id=0 to PCI bus and bus_id=1 to ISA bus for
        X86 platform. Because PCI device get config space address using
        Pc::calcPciConfigAddr() which requires "assert(bus==0)".
        This fixes PCI interrupt routing and discovery on Linux.

        Committed by: Nilay Vaish <[email protected]>

diffstat:

 configs/common/FSConfig.py |  19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)

diffs (49 lines):

diff -r bdb307e8be54 -r caec4a7b8b74 configs/common/FSConfig.py
--- a/configs/common/FSConfig.py        Sat Oct 11 15:02:22 2014 -0500
+++ b/configs/common/FSConfig.py        Thu Jul 17 11:00:12 2014 +0800
@@ -454,18 +454,21 @@
             address = 0xfec00000)
     self.pc.south_bridge.io_apic.apic_id = io_apic.id
     base_entries.append(io_apic)
-    isa_bus = X86IntelMPBus(bus_id = 0, bus_type='ISA')
+    # In gem5 Pc::calcPciConfigAddr(), it required "assert(bus==0)",
+    # but linux kernel cannot config PCI device if it was not connected to PCI 
bus,
+    # so we fix PCI bus id to 0, and ISA bus id to 1.
+    pci_bus = X86IntelMPBus(bus_id = 0, bus_type='PCI')
+    base_entries.append(pci_bus)
+    isa_bus = X86IntelMPBus(bus_id = 1, bus_type='ISA')
     base_entries.append(isa_bus)
-    pci_bus = X86IntelMPBus(bus_id = 1, bus_type='PCI')
-    base_entries.append(pci_bus)
-    connect_busses = X86IntelMPBusHierarchy(bus_id=0,
-            subtractive_decode=True, parent_bus=1)
+    connect_busses = X86IntelMPBusHierarchy(bus_id=1,
+            subtractive_decode=True, parent_bus=0)
     ext_entries.append(connect_busses)
     pci_dev4_inta = X86IntelMPIOIntAssignment(
             interrupt_type = 'INT',
             polarity = 'ConformPolarity',
             trigger = 'ConformTrigger',
-            source_bus_id = 1,
+            source_bus_id = 0,
             source_bus_irq = 0 + (4 << 2),
             dest_io_apic_id = io_apic.id,
             dest_io_apic_intin = 16)
@@ -475,7 +478,7 @@
                 interrupt_type = 'ExtInt',
                 polarity = 'ConformPolarity',
                 trigger = 'ConformTrigger',
-                source_bus_id = 0,
+                source_bus_id = 1,
                 source_bus_irq = irq,
                 dest_io_apic_id = io_apic.id,
                 dest_io_apic_intin = 0)
@@ -484,7 +487,7 @@
                 interrupt_type = 'INT',
                 polarity = 'ConformPolarity',
                 trigger = 'ConformTrigger',
-                source_bus_id = 0,
+                source_bus_id = 1,
                 source_bus_irq = irq,
                 dest_io_apic_id = io_apic.id,
                 dest_io_apic_intin = apicPin)
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to