On 19.01.2018 12:10, Oza Pawandeep wrote:
> Clients such as pciehp, dpc are using pcie_wait_link_active, which waits
> till the link becomes active or inactive.
> 
> Made generic function and moved it to drivers/pci/pci.c
> 
> Signed-off-by: Oza Pawandeep <[email protected]>
> 
> diff --git a/drivers/pci/hotplug/pciehp_hpc.c 
> b/drivers/pci/hotplug/pciehp_hpc.c
> index 7bab060..26afeff 100644
> --- a/drivers/pci/hotplug/pciehp_hpc.c
> +++ b/drivers/pci/hotplug/pciehp_hpc.c
> @@ -245,25 +245,12 @@ bool pciehp_check_link_active(struct controller *ctrl)
>       return ret;
>   }
>   
> -static void __pcie_wait_link_active(struct controller *ctrl, bool active)
> +static bool pcie_wait_link_active(struct controller *ctrl)
>   {
> -     int timeout = 1000;
> -
> -     if (pciehp_check_link_active(ctrl) == active)
> -             return;
> -     while (timeout > 0) {
> -             msleep(10);
> -             timeout -= 10;
> -             if (pciehp_check_link_active(ctrl) == active)
> -                     return;
> -     }
> -     ctrl_dbg(ctrl, "Data Link Layer Link Active not %s in 1000 msec\n",
> -                     active ? "set" : "cleared");
> -}
> +     struct pci_dev *pdev = ctrl_dev(ctrl);
> +     bool active = true;
>   
> -static void pcie_wait_link_active(struct controller *ctrl)
> -{
> -     __pcie_wait_link_active(ctrl, true);
> +     return pci_wait_for_link(pdev, active);
>   }
>   
>   static bool pci_bus_check_dev(struct pci_bus *bus, int devfn)
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 4a7c686..0de83ea 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -2805,7 +2805,7 @@ static void pci_std_enable_acs(struct pci_dev *dev)
>       pci_read_config_word(dev, pos + PCI_ACS_CTRL, &ctrl);
>   
>       /* Source Validation */
> -     ctrl |= (cap & PCI_ACS_SV);
> +//   ctrl |= (cap & PCI_ACS_SV);

Could it be, that you missed to fix / clean something up here?

Thanks,
Stefan

Reply via email to