]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
PCI: Adjust the position of reading the Link Control 2 register
authorJiwei Sun <sunjw10@lenovo.com>
Thu, 23 Jan 2025 05:51:55 +0000 (13:51 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 24 Jun 2025 20:54:26 +0000 (15:54 -0500)
commitb85af48de3ece4e5bbdb2248a5360a409991cf67
treec2e49b607b680692eb49d4eac78b85dfb382058a
parent9989e0ca7462c62f93dbc62f684448aa2efb9226
PCI: Adjust the position of reading the Link Control 2 register

In a89c82249c37 ("PCI: Work around PCIe link training failures"), if the
speed limit is set to 2.5 GT/s and the retraining is successful, an attempt
will be made to lift the speed limit. One condition for lifting the speed
limit is to check whether the link speed field of the Link Control 2
register is PCI_EXP_LNKCTL2_TLS_2_5GT.

However, since de9a6c8d5dbf ("PCI/bwctrl: Add pcie_set_target_speed() to
set PCIe Link Speed"), the `lnkctl2` local variable does not undergo any
changes during the speed limit setting and retraining process. As a result,
the code intended to lift the speed limit is not executed.

To address this issue, adjust the position of the Link Control 2 register
read operation in the code and place it before its use.

Fixes: de9a6c8d5dbf ("PCI/bwctrl: Add pcie_set_target_speed() to set PCIe Link Speed")
Suggested-by: Maciej W. Rozycki <macro@orcam.me.uk>
Suggested-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Jiwei Sun <sunjw10@lenovo.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://patch.msgid.link/20250123055155.22648-3-sjiwei@163.com
drivers/pci/quirks.c