PCI: Fix Switchtec DMA aliasing quirk dmesg noise
authorLogan Gunthorpe <logang@deltatee.com>
Fri, 5 Oct 2018 15:49:40 +0000 (09:49 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 11 Oct 2018 16:28:53 +0000 (11:28 -0500)
commit742bbe1ee35b5699c092541f97c7cec326556bb1
treebea9a040e348fa1beddc68474bbccf3ad4578cf6
parent01d5d7fa8376c6b5acda86e16fcad22de6bba486
PCI: Fix Switchtec DMA aliasing quirk dmesg noise

Currently the Switchtec quirk runs on all endpoints in the switch,
including all the upstream and downstream ports.  These other functions do
not contain BARs, so the quirk fails when trying to map the BAR and prints
the error "Cannot iomap Switchtec device".  The user will see a few of
these useless and scary errors, one for each port in the switch.

At most, the quirk should only run on either a management endpoint
(PCI_CLASS_MEMORY_OTHER) or an NTB endpoint (PCI_CLASS_BRIDGE_OTHER).
However, the quirk is useless except in NTB applications, so we will
only run it when the class is PCI_CLASS_BRIDGE_OTHER.

Switch to using DECLARE_PCI_FIXUP_CLASS_FINAL and only match
PCI_CLASS_BRIDGE_OTHER.

Reported-by: Stephen Bates <sbates@raithlin.com>
Fixes: ad281ecf1c7d ("PCI: Add DMA alias quirk for Microsemi Switchtec NTB")
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
[bhelgaas: split SWITCHTEC_QUIRK() introduction to separate patch]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: Doug Meyer <dmeyer@gigaio.com>
Cc: Kurt Schwemmer <kurt.schwemmer@microsemi.com>
drivers/pci/quirks.c