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)
This commit is contained in:
Andreas Sandberg
2016-01-15 11:30:06 +00:00
parent 8406a54907
commit 6d058a63b0
4 changed files with 160 additions and 0 deletions

View File

@@ -62,6 +62,7 @@ if env['TARGET_ISA'] == 'arm':
Source('kmi.cc')
Source('timer_sp804.cc')
Source('gpu_nomali.cc')
Source('pci_host.cc')
Source('rv_ctrl.cc')
Source('realview.cc')
Source('rtc_pl031.cc')