summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMarc Zyngier <marc.zyngier@arm.com>2015-12-04 10:28:14 -0600
committerBjorn Helgaas <bhelgaas@google.com>2015-12-04 10:28:14 -0600
commit3845d2953aacf00ad069806ba8d1495675069f23 (patch)
treee4a59cf0a6466c449ebbf58ba2da95474cd63237 /lib
parent7c7a0e945349a3d0d497d7f32db6ed33d4031110 (diff)
PCI/MSI: Only use the generic MSI layer when domain is hierarchical
Since d8a1cb757550 ("PCI/MSI: Let pci_msi_get_domain use struct device::msi_domain"), we use the MSI domain associated with the PCI device. But finding an MSI domain doesn't mean that the domain is implemented using the generic MSI domain API, and a number of MSI controllers are still using arch_setup_msi_irq() and arch_teardown_msi_irqs(). Check that the domain we just obtained is hierarchical. If it is, we can use the new generic MSI stuff. Otherwise we have to fall back to the old arch_setup_msi_irq() and arch_teardown_msi_irqs() interfaces. This avoids an oops in msi_domain_alloc_irqs() on systems with R-Car, Tegra, Armada 370, and probably other DesignWare-based host controllers. Fixes: d8a1cb757550 ("PCI/MSI: Let pci_msi_get_domain use struct device::msi_domain") Reported-by: Phil Edworthy <phil.edworthy@renesas.com> Tested-by: Phil Edworthy <phil.edworthy@renesas.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Thomas Gleixner <tglx@linutronix.de> CC: stable@vger.kernel.org # v4.3+
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions