PCIE Hot Plug Process
Hot plug是现在服务器必不可少的一个特性,它允许在不重启系统的情况下更换、挪动已经插入的PCIE卡。PCI hot plug规范里定义了两种操作:hot ×××ertion 和hot removal.根据GHE提供的建议, 需要用不同的步骤来分别实现hot ×××ertion 和hot removal。
最近在调试Hot Plug,尽管是基于一款较新的X86平台进行的,但通过学习了解之后,发现基本上可以提炼出共同的步骤。
Hot removal
实现hot removal的推荐步骤如下:
1.1 mask related error reporting registers
1.2 power off PCI/PCIE Card
1.3 clear related Error register 和 unmask error reporting registers
Hot ×××ertion
实现hot ×××ertion的推荐步骤比实现Hot removal多一些,主要包括:
2.1 mask error reporting registers
2.2 power on PCI/PCIE Card
2.3 link Re-training
2.4 Clear error status and enable error report
2.5 Restore BAR of PCI/PCIE Card
了解这个流程后,可以先开发响应的脚本来验证上面的流程,确保:
1. 卡掉电之后,不会有UE/CE出现进而导致系统重启;
2.卡上电之后,链路重新训练后link speed 和link width都是期望的值;
3.链路训练完了之后,新产生的UE/CE都会被清掉。