Why do we check for "link-up" in *_pcie_valid_device()?

Bharat Kumar Gogada bharatku at xilinx.com
Fri Dec 22 05:02:28 PST 2017

Hi all,

In the PCI config access path, the *_pcie_valid_device() functions in the dwc, altera, rockchip, and xilinx drivers all check whether the link is up.

I think this is racy because the link may go down after we check but before we perform the config access.

What would blow up if we removed the *_pcie_link_up() checks?

I'd like to either remove the checks or add comments about why the race is acceptable.  If we've covered this before, I apologize.
Adding a comment will keep me from pestering you about this again in the future.

Hi Bjorn,

In both Xilinx driver cases when link is down, hardware responds by AXI DECERR/SLVERR status which 
causes an exception, synchronous external abort to CPU. 
This causes system to hang, so we need this check for both of our drivers.
We will add comments. 

We have shutdown, Please expect delay in response till 1st Jan, 2018.


More information about the Linux-rockchip mailing list