lkml.org 
[lkml]   [2021]   [Mar]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH] PCI: Disallow retraining link for Atheros QCA98xx chips on non-Gen1 PCIe bridges
    Date
    Pali Rohár <pali@kernel.org> writes:

    > Atheros QCA9880 and QCA9890 chips do not behave after a bus reset and also
    > after retrain link when PCIe bridge is not in GEN1 mode at 2.5 GT/s speed.
    > The device will throw a Link Down error and config space is not accessible
    > again. Retrain link can be called only when using GEN1 PCIe bridge or when
    > PCIe bridge has forced link speed to 2.5 GT/s via PCI_EXP_LNKCTL2 register.
    >
    > This issue was reproduced with more Compex WLE900VX cards (QCA9880 based)
    > on Armada 385 with pci-mvebu.c driver and also on Armada 3720 with
    > pci-aardvark.c driver. Also this issue was reproduced with some "noname"
    > card with QCA9890 WiFi chip on Armada 3720. All problematic cards with
    > these QCA chips have PCI device id 0x003c.
    >
    > Tests showed that other WiFi cards based on AR93xx (PCI device id 0x0030)
    > and AR9287 (PCI device id 0x002e) chips do not have these problems.
    >
    > To workaround this issue, this change introduces a new PCI quirk called
    > PCI_DEV_FLAGS_NO_RETRAIN_LINK_WHEN_NOT_GEN1 for PCI device id 0x003c.
    >
    > When this quirk is set then kernel disallows triggering PCI_EXP_LNKCTL_RL
    > bit in config space of PCIe Bridge in case PCIe Bridge is capable of higher
    > speed than 2.5 GT/s and higher speed is already allowed. When PCIe Bridge
    > has accessible LNKCTL2 register then kernel tries to force target link
    > speed via PCI_EXP_LNKCTL2_TLS* bits to 2.5 GT/s. After this change it is
    > possible to trigger PCI_EXP_LNKCTL_RL bit without causing issues on
    > problematic Atheros QCA98xx cards.
    >
    > Currently only PCIe ASPM kernel code triggers this PCI_EXP_LNKCTL_RL bit,
    > so quirk check is added only into pcie/aspm.c file.
    >
    > Signed-off-by: Pali Rohár <pali@kernel.org>
    > Reported-by: Toke Høiland-Jørgensen <toke@redhat.com>
    > Tested-by: Marek Behún <kabel@kernel.org>
    > Link: https://lore.kernel.org/linux-pci/87h7l8axqp.fsf@toke.dk/
    > Cc: stable@vger.kernel.org # c80851f6ce63a ("PCI: Add
    > PCI_EXP_LNKCTL2_TLS* macros")

    Thanks!

    Tested-by: Toke Høiland-Jørgensen <toke@redhat.com>

    \
     
     \ /
      Last update: 2021-03-26 19:14    [W:3.390 / U:0.176 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site