]> git.baikalelectronics.ru Git - kernel.git/commit
Revert "PCI: tegra: Do not allocate MSI target memory"
authorThierry Reding <treding@nvidia.com>
Mon, 9 Oct 2017 10:29:35 +0000 (12:29 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 11 Oct 2017 00:06:16 +0000 (19:06 -0500)
commitf3db8c62997d72d42c5fafd7a35489bb3e95282e
treea1067961418857364c8cbd3e10e667f8545e7c52
parent27d2d36860a8f9447b1fc43d1bc69947f7f45546
Revert "PCI: tegra: Do not allocate MSI target memory"

This reverts commit 6abbaf3e76fed0911eaf4d143a97f97fcb42a05b.

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: 6abbaf3e76fe ("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
drivers/pci/host/pci-tegra.c