PCI/MSI: Assume MSIs use real Requester ID, not an alias
authorRobin Murphy <robin.murphy@arm.com>
Tue, 1 Aug 2017 17:59:08 +0000 (18:59 +0100)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 14 Aug 2017 21:01:27 +0000 (16:01 -0500)
commit235b2c776bc3c69016329914a3c085e7084bbaa9
tree4c7ac214945a84ad9117c5da2e7f215a377a0feb
parent16f73eb02d7e1765ccab3d2018e0bd98eb93d973
PCI/MSI: Assume MSIs use real Requester ID, not an alias

Currently, we handle all DMA aliases equally when calculating MSI requester
IDs for the generic infrastructure. This turns out to be the wrong thing to
do in the face of pure DMA quirks like those of Marvell SATA cards, where
in the usual case the last thing seen in the alias walk is the DMA phantom
function: we end up configuring the MSI doorbell to expect that alias, then
find we have no interrupts since the MSI writes still come from the 'real'
RID, thus get filtered out and ignored.

Improve the alias walk to only account for the topological aliases that
matter, based on the logic from the Intel IRQ remapping code.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
drivers/pci/msi.c