Hot-Plug(三)
对于热插拔,Spec对于所谓插槽(插卡)的ON、OFF状态都做了比较清晰的定义,如下:
ON(上电)状态的属性:
• Power is applied to the slot.
• REFCLK is on.
• The link is active or in the standby (LOs or Ll ) low power state due to Active State Power Management.
• The PERST# signal is deasserted.
简而言之:电源打开、时钟开启、链路link、复位信号拉高。
OFF(上电)状态的属性:
• Power to the slot is turned off.
• REFCLK is off.
• The link is inactive. (Driver at the root of switch port is in Hi Z state)
• The PERST# signal is asserted.
简而言之:电源关闭、时钟关闭、链路断开、复位信号拉低生效。
热插拔的插入、拔出过程大致如下流程。先看卡的拔出过程:(注意,我们这里的插拔不是暴力的拔出,所谓暴力,是指不通知系统和软件,直接暴力的、突然的把PCIe卡从系统槽位中拔出!Spec定义的热插拔是有严格的顺序要求和处理过程的)
卡拔出流程如下:
- 按Attention Button按钮或者通过软件的命令。通知热插拔控制器开始进行热拔出操作。
- 闪烁LED灯,表示这张卡准备从系统中移除。五秒内没有其他异常,流程继续。五秒内可以取消此次操作。
- 系统把这个PCIe设备在系统中拥有的资源删除,如总线资源、Memory资源等。确保再没有流程访问这种卡。
- 关闭这个卡所在槽位的电源。关闭LED灯,表示该卡可以从系统中拔出了。
- (可选操作)打开MRL。
- 用户移除这张卡。
如果过程中有错误,则跳出移除过程,可以点LED红灯表示错误。需要人工干预处理。
卡插入流程基本与上述流程相反:
- PCIe插插入槽位,触发硬件检测到Present在位。
- (可选操作)关闭MRL。
- 按Attention Button按钮或者通过软件命令,通知热插拔控制器开始进行热插入操作。
- 闪烁LED灯,表示这张卡准备在这个槽位插入。五秒内可以取消此次操作。否则继续。
- 打开这个槽位的电源。
- 时钟打开、复位信号生效。插入的PCIe设备硬件可以正常工作,链路link up。
- 系统重新枚举插入槽位的总线,分配相应的资源。系统可以正常识别新插入的PCIe设备。
- 插入PCIe设备对应的驱动进行相关的配置和初始化。PCIe设备对应功能初始化完成,可以正常工作。
如果过程中有错误,则跳出插入过程,可以点LED灯表示错误。