Skip to content

Commit

Permalink
PCI: Export PCIe link retrain timeout
Browse files Browse the repository at this point in the history
Convert LINK_RETRAIN_TIMEOUT from jiffies to milliseconds, accordingly
rename to PCIE_LINK_RETRAIN_TIMEOUT_MS, and make available via "pci.h" for
the PCI core to use.  Use in pcie_wait_for_link_delay().

Link: https://lore.kernel.org/r/alpine.DEB.2.21.2305310030280.59226@angie.orcam.me.uk
Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
  • Loading branch information
Maciej W. Rozycki authored and Bjorn Helgaas committed Jun 20, 2023
1 parent 07a8d69 commit 33a176a
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 5 deletions.
2 changes: 1 addition & 1 deletion drivers/pci/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -4867,7 +4867,7 @@ static int pci_pm_reset(struct pci_dev *dev, bool probe)
static bool pcie_wait_for_link_delay(struct pci_dev *pdev, bool active,
int delay)
{
int timeout = 1000;
int timeout = PCIE_LINK_RETRAIN_TIMEOUT_MS;
bool ret;
u16 lnk_status;

Expand Down
2 changes: 2 additions & 0 deletions drivers/pci/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

#define PCI_VSEC_ID_INTEL_TBT 0x1234 /* Thunderbolt */

#define PCIE_LINK_RETRAIN_TIMEOUT_MS 1000

extern const unsigned char pcie_link_speed[];
extern bool pci_early_dump;

Expand Down
6 changes: 2 additions & 4 deletions drivers/pci/pcie/aspm.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,6 @@ static const char *policy_str[] = {
[POLICY_POWER_SUPERSAVE] = "powersupersave"
};

#define LINK_RETRAIN_TIMEOUT HZ

/*
* The L1 PM substate capability is only implemented in function 0 in a
* multi function device.
Expand Down Expand Up @@ -198,14 +196,14 @@ static void pcie_clkpm_cap_init(struct pcie_link_state *link, int blacklist)
* @pdev: Device whose link to wait for.
*
* Return TRUE if successful, or FALSE if training has not completed
* within LINK_RETRAIN_TIMEOUT jiffies.
* within PCIE_LINK_RETRAIN_TIMEOUT_MS milliseconds.
*/
static bool pcie_wait_for_link_status(struct pci_dev *pdev)
{
unsigned long end_jiffies;
u16 lnksta;

end_jiffies = jiffies + LINK_RETRAIN_TIMEOUT;
end_jiffies = jiffies + msecs_to_jiffies(PCIE_LINK_RETRAIN_TIMEOUT_MS);
do {
pcie_capability_read_word(pdev, PCI_EXP_LNKSTA, &lnksta);
if (!(lnksta & PCI_EXP_LNKSTA_LT))
Expand Down

0 comments on commit 33a176a

Please sign in to comment.