Re: [PATCH v8 2/7] PCI: Export PCI link retrain timeout

Bjorn Helgaas
2023-05-04T22:21:39Z

On Thu, Apr 06, 2023 at 01:21:09AM +0100, Maciej W. Rozycki wrote:
> Rename LINK_RETRAIN_TIMEOUT to PCIE_LINK_RETRAIN_TIMEOUT and make it
> available via "pci.h" for PCI drivers to use.

> +#define PCIE_LINK_RETRAIN_TIMEOUT HZ

This is basically just a rename and move, but since we're touching it
anyway, can we make it "PCIE_LINK_RETRAIN_TIMEOUT_MS 1000" here and
use msecs_to_jiffies() below?

I know jiffies and HZ are probably idiomatic elsewhere in the kernel,
and this particular timeout is arbitrary and not based on anything in
the spec, but many of the delays in PCI *are* straight from a spec, so
I'd like to make the units more explicit.

> extern const unsigned char pcie_link_speed[];
> extern bool pci_early_dump;
>
> Index: linux-macro/drivers/pci/pcie/aspm.c
> ===================================================================
> --- linux-macro.orig/drivers/pci/pcie/aspm.c
> +++ linux-macro/drivers/pci/pcie/aspm.c
> @@ -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.
> @@ -213,7 +211,7 @@ static bool pcie_retrain_link(struct pci
> }
>
> /* Wait for link training end. Break out after waiting for timeout */
> - end_jiffies = jiffies + LINK_RETRAIN_TIMEOUT;
> + end_jiffies = jiffies + PCIE_LINK_RETRAIN_TIMEOUT;
> do {
> pcie_capability_read_word(parent, PCI_EXP_LNKSTA, &reg16);
> if (!(reg16 & PCI_EXP_LNKSTA_LT))