dev, arm: Add support for automatic PCI interrupt routing
authorAndreas Sandberg <andreas.sandberg@arm.com>
Fri, 15 Jan 2016 11:30:06 +0000 (11:30 +0000)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Fri, 15 Jan 2016 11:30:06 +0000 (11:30 +0000)
commit6d058a63b0f6fde683de46ea27497bb34855c7d1
tree16edc42efa9e1083f443392f9b8eb060445b64eb
parent8406a54907a00e19389389f0b1497164a7bc637d
dev, arm: Add support for automatic PCI interrupt routing

Add support for automatic PCI interrupt routing using a device's ID on
the PCI bus. Our current DTBs typically tell the kernel that we do
this or something similar when declaring the PCI controller. This
changeset adds an option to make the simulator behave in the same way.

Interrupt routing can be selected by setting the int_policy parameter
in the GenericArmPciHost. The following values are supported:

  * ARM_PCI_INT_STATIC: Use the old static routing policy using the
    interrupt line from a device's configurtion space.

  * ARM_PCI_INT_DEV: Use device number on the PCI bus to map to an
    interrupt in the GIC. The interrupt is computed as:

    gic_int = int_base + (pci_dev % int_count)

  * ARM_PCI_INT_PIN: Use device interrupt pin on the PCI bus to map to
    an interrupt in the GIC. The PCI specification reserves pin ID 0
    for devices without interrupts, the interrupt therefore computed
    as:

    gic_int = int_base + ((pin - 1) % int_count)
src/dev/arm/RealView.py
src/dev/arm/SConscript
src/dev/arm/pci_host.cc [new file with mode: 0644]
src/dev/arm/pci_host.hh [new file with mode: 0644]