[PATCH v3 0/2] Tango PCIe controller support
From: Mason <hidden>
Date: 2017-03-31 22:05:53
Also in:
linux-pci, lkml
From: Mason <hidden>
Date: 2017-03-31 22:05:53
Also in:
linux-pci, lkml
On 30/03/2017 22:56, Mason wrote:
I've run into an issue. If I boot the system with earlyprintk enabled (as I've been doing throughout my dev), things work as expected. But if I boot with earlyprintk disabled, then the system does not "see" the PCIe board, because reading the vendor ID returns 0xffffffff. What we think is happening, is that when earlyprintk is disabled, the system proceeds much faster through the various inits, and the PCIe init happens when PCIe link training has not completed yet. If that is the case, then it seems I would need to check the link state in my probe function.
I determined empirically that link training takes around 10-15 ms. Though I suppose this might depend on the specific PCIe board? (I'm only considering x1 link.) So I added an msleep(20); in the probe function, and in the config_read callback, I check the link status on the first read to the device. Should I msleep(40) to be safe? Regards.