On 4/23/2018 3:10 PM, Alex Williamson wrote: >> But, we need to think about what to do about VFIO and other endpoint >> initiated reset cases. My suggestion was to move this into a single API and >> remove all other APIs from include/linux/pci.h. > I'm a little confused about the relation between reset and retrain. > AIUI we can retrain the link without any sort of endpoint reset and if > some sort of driver/firmware setup is required on the endpoint to > achieve the target link speed, then I'd think we only want to retrain. I'm guessing on why you may want to do a secondary bus reset instead of just retrain bit in the PCI Express Capabilities register... The maximum link speed is embedded into the TS1s that are exchanged during initial link training. If device only advertises gen1 during boot, no matter what you do with retrain bit link may not reach to gen3. A lot of guess here. -- Sinan Kaya Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.