PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken
authorSinan Kaya <okaya@codeaurora.org>
Wed, 12 Jul 2017 04:04:14 +0000 (00:04 -0400)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 31 Jul 2017 19:31:22 +0000 (14:31 -0500)
commit62ce94a7a5a54aac80975f5e6731707225d4077e
treeaf6e5d8fb778bb2fe51a14dcde3b0355b1035bf5
parent16f73eb02d7e1765ccab3d2018e0bd98eb93d973
PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken

Per PCIe r3.1, sec 2.2.6.2 and 7.8.4, a Requester may not use 8-bit Tags
unless its Extended Tag Field Enable is set, but all Receivers/Completers
must handle 8-bit Tags correctly regardless of their Extended Tag Field
Enable.

Some devices do not handle 8-bit Tags as Completers, so add a quirk for
them.  If we find such a device, we disable Extended Tags for the entire
hierarchy to make peer-to-peer DMA possible.

The Broadcom HT2100 seems to have issues with handling 8-bit tags.  Mark it
as broken.

The pci_walk_bus() in the quirk handles devices we've enumerated in the
past, and pci_configure_device() handles devices we enumerate in the
future.

Fixes: 60db3a4d8cc9 ("PCI: Enable PCIe Extended Tags if supported")
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1467674
Reported-and-tested-by: Wim ten Have <wim.ten.have@oracle.com>
Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
[bhelgaas: changelog, tweak messages, rename bit and quirk]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/pci.h
drivers/pci/probe.c
drivers/pci/quirks.c
include/linux/pci.h