PCIE Hot Plug Process

Hot plug是现在服务器必不可少的一个特性,它允许在不重启系统的情况下更换、挪动已经插入的PCIE卡。PCI hot plug规范里定义了两种操作:hot ×××ertion 和hot removal.根据GHE提供的建议, 需要用不同的步骤来分别实现hot ×××ertion 和hot removal。


最近在调试Hot Plug,尽管是基于一款较新的X86平台进行的,但通过学习了解之后,发现基本上可以提炼出共同的步骤。

  1. 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都会被清掉。