linux/drivers/pci/host
Thierry Reding 8c2b4e3c37 Revert "PCI: tegra: Do not allocate MSI target memory"
This reverts commit d7bd554f27.

It turns out that Tegra20 has a bug in the implementation of the MSI
target address register (which is worked around by the existence of the
struct tegra_pcie_soc.msi_base_shift parameter) that restricts the MSI
target memory to the lower 32 bits of physical memory on that particular
generation. The offending patch causes a regression on TrimSlice, which
is a Tegra20-based device and has a PCI network interface card.

An initial, simpler fix was to change the MSI target address for Tegra20
only, but it was pointed out that the offending commit also prevents the
use of 32-bit only MSI capable devices, even on later chips. Technically
this was never guaranteed to work with the prior code in the first place
because the allocated page could have resided beyond the 4 GiB boundary,
but it is still possible that this could've introduced a regression.

The proper fix that was settled on is to select a fixed address within
the lowest 32 bits of physical address space that is otherwise unused,
but testing of that patch has provided mixed results that are not fully
understood yet.

Given all of the above and the relative urgency to get this fixed in
v4.13, revert the offending commit until a universal fix is found.

Fixes: d7bd554f27 ("PCI: tegra: Do not allocate MSI target memory")
Reported-by: Tomasz Maciej Nowak <tmn505@gmail.com>
Reported-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: stable@vger.kernel.org	# 4.13.x
2017-10-10 19:06:16 -05:00
..
Kconfig Merge branch 'pci/host-xilinx' into next 2017-09-07 13:24:11 -05:00
Makefile Merge branch 'pci/host-tango' into next 2017-07-07 13:42:25 -05:00
pci-aardvark.c PCI: aardvark: Use PCI_NUM_INTX 2017-08-16 11:40:52 -05:00
pci-ftpci100.c PCI: faraday: Use PCI_NUM_INTX 2017-08-16 11:42:28 -05:00
pci-host-common.c PCI: generic: Drop pci_fixup_irqs() 2017-07-02 16:51:19 -05:00
pci-host-generic.c PCI: Don't allow unbinding host controllers that aren't prepared 2017-04-28 10:38:00 -05:00
pci-hyperv.c pci-v4.14-changes 2017-09-08 15:47:43 -07:00
pci-mvebu.c Merge branch 'pci/misc' into next 2017-09-07 13:24:16 -05:00
pci-rcar-gen2.c PCI: rcar-gen2: Make of_device_ids const 2017-07-02 18:45:31 -05:00
pci-tegra.c Revert "PCI: tegra: Do not allocate MSI target memory" 2017-10-10 19:06:16 -05:00
pci-thunder-ecam.c PCI: Don't allow unbinding host controllers that aren't prepared 2017-04-28 10:38:00 -05:00
pci-thunder-pem.c PCI: Don't allow unbinding host controllers that aren't prepared 2017-04-28 10:38:00 -05:00
pci-versatile.c PCI: versatile: Add local struct device pointers 2017-07-02 18:46:43 -05:00
pci-xgene-msi.c PCI: xgene: Fix platform_get_irq() error handling 2017-09-07 08:52:42 -05:00
pci-xgene.c PCI: xgene: Clean up whitespace 2017-09-07 08:52:43 -05:00
pcie-altera-msi.c PCI: altera: Fix platform_get_irq() error handling 2017-09-05 13:36:28 -05:00
pcie-altera.c PCI: altera: Fix platform_get_irq() error handling 2017-09-05 13:36:28 -05:00
pcie-iproc-bcma.c PCI: iproc: Convert PCI scan API to pci_scan_root_bus_bridge() 2017-07-02 16:14:24 -05:00
pcie-iproc-msi.c PCI: iproc: Remove unused struct iproc_pcie *pcie 2017-07-31 14:32:47 -05:00
pcie-iproc-platform.c PCI: iproc: Add 500ms delay during device shutdown 2017-09-05 12:27:03 -05:00
pcie-iproc.c PCI: iproc: Clean up whitespace 2017-09-05 12:33:33 -05:00
pcie-iproc.h PCI: iproc: Add 500ms delay during device shutdown 2017-09-05 12:27:03 -05:00
pcie-mediatek.c PCI: mediatek: Use PCI_NUM_INTX 2017-08-30 08:23:59 -05:00
pcie-rcar.c PCI: rcar: Fix memory leak when no PCIe card is inserted 2017-08-15 17:51:59 -05:00
pcie-rockchip.c Merge branch 'pci/trivial' into next 2017-09-07 13:24:20 -05:00
pcie-tango.c PCI: tango: Add Sigma Designs Tango SMP8759 PCIe host bridge support 2017-07-07 13:41:28 -05:00
pcie-xilinx-nwl.c PCI: xilinx-nwl: Fix platform_get_irq() error handling 2017-09-05 13:41:13 -05:00
pcie-xilinx.c Merge branch 'pci/trivial' into next 2017-09-07 13:24:20 -05:00
vmd.c PCI: vmd: Remove IRQ affinity so we can allocate more IRQs 2017-08-30 16:18:38 -05:00